Changeset 233
- Timestamp:
- 04/07/08 13:22:18 (4 years ago)
- Files:
-
- tools (added)
- tools/ana (added)
- tools/ana/dfl (added)
- tools/ana/dfl/dfl-all.ana (added)
- tools/ana/dfl/dfl-application.ana (added)
- tools/ana/dfl/dfl-base.ana (added)
- tools/ana/dfl/dfl-button.ana (added)
- tools/ana/dfl/dfl-clipboard.ana (added)
- tools/ana/dfl/dfl-collections.ana (added)
- tools/ana/dfl/dfl-colordialog.ana (added)
- tools/ana/dfl/dfl-com.ana (added)
- tools/ana/dfl/dfl-combobox.ana (added)
- tools/ana/dfl/dfl-commondialog.ana (added)
- tools/ana/dfl/dfl-control.ana (added)
- tools/ana/dfl/dfl-data.ana (added)
- tools/ana/dfl/dfl-drawing.ana (added)
- tools/ana/dfl/dfl-environment.ana (added)
- tools/ana/dfl/dfl-event.ana (added)
- tools/ana/dfl/dfl-filedialog.ana (added)
- tools/ana/dfl/dfl-folderdialog.ana (added)
- tools/ana/dfl/dfl-fontdialog.ana (added)
- tools/ana/dfl/dfl-form.ana (added)
- tools/ana/dfl/dfl-groupbox.ana (added)
- tools/ana/dfl/dfl-imagelist.ana (added)
- tools/ana/dfl/dfl-internal-_stdcwindows.ana (added)
- tools/ana/dfl/dfl-internal-clib.ana (added)
- tools/ana/dfl/dfl-internal-com.ana (added)
- tools/ana/dfl/dfl-internal-dlib.ana (added)
- tools/ana/dfl/dfl-internal-utf.ana (added)
- tools/ana/dfl/dfl-internal-winapi.ana (added)
- tools/ana/dfl/dfl-internal-wincom.ana (added)
- tools/ana/dfl/dfl-label.ana (added)
- tools/ana/dfl/dfl-listbox.ana (added)
- tools/ana/dfl/dfl-listview.ana (added)
- tools/ana/dfl/dfl-menu.ana (added)
- tools/ana/dfl/dfl-messagebox.ana (added)
- tools/ana/dfl/dfl-notifyicon.ana (added)
- tools/ana/dfl/dfl-panel.ana (added)
- tools/ana/dfl/dfl-picturebox.ana (added)
- tools/ana/dfl/dfl-progressbar.ana (added)
- tools/ana/dfl/dfl-registry.ana (added)
- tools/ana/dfl/dfl-resources.ana (added)
- tools/ana/dfl/dfl-richtextbox.ana (added)
- tools/ana/dfl/dfl-socket.ana (added)
- tools/ana/dfl/dfl-splitter.ana (added)
- tools/ana/dfl/dfl-statusbar.ana (added)
- tools/ana/dfl/dfl-tabcontrol.ana (added)
- tools/ana/dfl/dfl-textbox.ana (added)
- tools/ana/dfl/dfl-timer.ana (added)
- tools/ana/dfl/dfl-toolbar.ana (added)
- tools/ana/dfl/dfl-tooltip.ana (added)
- tools/ana/dfl/dfl-treeview.ana (added)
- tools/ana/dfl/dfl-usercontrol.ana (added)
- tools/ana/dfl/dfl-utf.ana (added)
- tools/ana/dfl/dfl-winapi.ana (added)
- tools/ana/dfl/dfl-wincom.ana (added)
- tools/ana/dwt (added)
- tools/ana/dwt/dwt-accessibility-acc.ana (added)
- tools/ana/dwt/dwt-accessibility-accessible.ana (added)
- tools/ana/dwt/dwt-accessibility-accevents.ana (added)
- tools/ana/dwt/dwt-all.ana (added)
- tools/ana/dwt/dwt-browser-browser.ana (added)
- tools/ana/dwt/dwt-browser-browseradapters.ana (added)
- tools/ana/dwt/dwt-browser-browserevents.ana (added)
- tools/ana/dwt/dwt-browser-browserlisteners.ana (added)
- tools/ana/dwt/dwt-browser-website.ana (added)
- tools/ana/dwt/dwt-custom-animatedprogress.ana (added)
- tools/ana/dwt/dwt-custom-busyindicator.ana (added)
- tools/ana/dwt/dwt-custom-cbanner.ana (added)
- tools/ana/dwt/dwt-custom-cbannerlayout.ana (added)
- tools/ana/dwt/dwt-custom-ccombo.ana (added)
- tools/ana/dwt/dwt-custom-clabel.ana (added)
- tools/ana/dwt/dwt-custom-clayoutdata.ana (added)
- tools/ana/dwt/dwt-custom-controleditor.ana (added)
- tools/ana/dwt/dwt-custom-ctabfolder.ana (added)
- tools/ana/dwt/dwt-custom-ctabfolderevents.ana (added)
- tools/ana/dwt/dwt-custom-ctabitem.ana (added)
- tools/ana/dwt/dwt-custom-popuplist.ana (added)
- tools/ana/dwt/dwt-custom-sashform.ana (added)
- tools/ana/dwt/dwt-custom-scrolledcomposite.ana (added)
- tools/ana/dwt/dwt-custom-stacklayout.ana (added)
- tools/ana/dwt/dwt-custom-styledtext.ana (added)
- tools/ana/dwt/dwt-custom-styledtexthelper.ana (added)
- tools/ana/dwt/dwt-custom-tablecursor.ana (added)
- tools/ana/dwt/dwt-custom-tableeditor.ana (added)
- tools/ana/dwt/dwt-custom-tabletree.ana (added)
- tools/ana/dwt/dwt-custom-tabletreeeditor.ana (added)
- tools/ana/dwt/dwt-custom-tabletreeitem.ana (added)
- tools/ana/dwt/dwt-custom-treeeditor.ana (added)
- tools/ana/dwt/dwt-custom-viewform.ana (added)
- tools/ana/dwt/dwt-dnd-bytearraytransfer.ana (added)
- tools/ana/dwt/dwt-dnd-clipboard.ana (added)
- tools/ana/dwt/dwt-dnd-dnd.ana (added)
- tools/ana/dwt/dwt-dnd-dndevent.ana (added)
- tools/ana/dwt/dwt-dnd-dndlistener.ana (added)
- tools/ana/dwt/dwt-dnd-dragsource.ana (added)
- tools/ana/dwt/dwt-dnd-dragsourceadapter.ana (added)
- tools/ana/dwt/dwt-dnd-dragsourceevent.ana (added)
- tools/ana/dwt/dwt-dnd-dragsourcelistener.ana (added)
- tools/ana/dwt/dwt-dnd-dragundereffect.ana (added)
- tools/ana/dwt/dwt-dnd-droptarget.ana (added)
- tools/ana/dwt/dwt-dnd-droptargetadapter.ana (added)
- tools/ana/dwt/dwt-dnd-droptargetevent.ana (added)
- tools/ana/dwt/dwt-dnd-droptargetlistener.ana (added)
- tools/ana/dwt/dwt-dnd-filetransfer.ana (added)
- tools/ana/dwt/dwt-dnd-nodragundereffect.ana (added)
- tools/ana/dwt/dwt-dnd-oleenumformatetc.ana (added)
- tools/ana/dwt/dwt-dnd-rtftransfer.ana (added)
- tools/ana/dwt/dwt-dnd-tabledragundereffect.ana (added)
- tools/ana/dwt/dwt-dnd-texttransfer.ana (added)
- tools/ana/dwt/dwt-dnd-transfer.ana (added)
- tools/ana/dwt/dwt-dnd-transferdata.ana (added)
- tools/ana/dwt/dwt-dnd-treedragundereffect.ana (added)
- tools/ana/dwt/dwt-dwt.ana (added)
- tools/ana/dwt/dwt-events-adapters.ana (added)
- tools/ana/dwt/dwt-events-events.ana (added)
- tools/ana/dwt/dwt-events-listeners.ana (added)
- tools/ana/dwt/dwt-events-typedevent.ana (added)
- tools/ana/dwt/dwt-extra-all.ana (added)
- tools/ana/dwt/dwt-extra-fileversion.ana (added)
- tools/ana/dwt/dwt-extra-scintilla.ana (added)
- tools/ana/dwt/dwt-graphics-color.ana (added)
- tools/ana/dwt/dwt-graphics-cursor.ana (added)
- tools/ana/dwt/dwt-graphics-device.ana (added)
- tools/ana/dwt/dwt-graphics-devicedata.ana (added)
- tools/ana/dwt/dwt-graphics-drawable.ana (added)
- tools/ana/dwt/dwt-graphics-font.ana (added)
- tools/ana/dwt/dwt-graphics-fontdata.ana (added)
- tools/ana/dwt/dwt-graphics-fontmetrics.ana (added)
- tools/ana/dwt/dwt-graphics-gc.ana (added)
- tools/ana/dwt/dwt-graphics-gcdata.ana (added)
- tools/ana/dwt/dwt-graphics-image.ana (added)
- tools/ana/dwt/dwt-graphics-imagedata.ana (added)
- tools/ana/dwt/dwt-graphics-imageloader.ana (added)
- tools/ana/dwt/dwt-graphics-imageloaderevent.ana (added)
- tools/ana/dwt/dwt-graphics-imageloaderlistener.ana (added)
- tools/ana/dwt/dwt-graphics-palettedata.ana (added)
- tools/ana/dwt/dwt-graphics-point.ana (added)
- tools/ana/dwt/dwt-graphics-rectangle.ana (added)
- tools/ana/dwt/dwt-graphics-region.ana (added)
- tools/ana/dwt/dwt-graphics-rgb.ana (added)
- tools/ana/dwt/dwt-graphics-textlayout.ana (added)
- tools/ana/dwt/dwt-graphics-textstyle.ana (added)
- tools/ana/dwt/dwt-internal-bidiutil.ana (added)
- tools/ana/dwt/dwt-internal-cloneablecompatibility.ana (added)
- tools/ana/dwt/dwt-internal-compatibility.ana (added)
- tools/ana/dwt/dwt-internal-converter.ana (added)
- tools/ana/dwt/dwt-internal-dwteventlistener.ana (added)
- tools/ana/dwt/dwt-internal-dwteventobject.ana (added)
- tools/ana/dwt/dwt-internal-image-fileformat.ana (added)
- tools/ana/dwt/dwt-internal-image-giffileformat.ana (added)
- tools/ana/dwt/dwt-internal-image-jpegfileformat.ana (added)
- tools/ana/dwt/dwt-internal-image-ledatainputstream.ana (added)
- tools/ana/dwt/dwt-internal-image-ledataoutputstream.ana (added)
- tools/ana/dwt/dwt-internal-image-lzwcodec.ana (added)
- tools/ana/dwt/dwt-internal-image-pngfileformat.ana (added)
- tools/ana/dwt/dwt-internal-image-tifffileformat.ana (added)
- tools/ana/dwt/dwt-internal-image-winbmpfileformat.ana (added)
- tools/ana/dwt/dwt-internal-image-winicofileformat.ana (added)
- tools/ana/dwt/dwt-internal-library.ana (added)
- tools/ana/dwt/dwt-internal-ole-win32-DOCOBJ.ana (added)
- tools/ana/dwt/dwt-internal-ole-win32-EXDISP.ana (added)
- tools/ana/dwt/dwt-internal-ole-win32-MSHTMHST.ana (added)
- tools/ana/dwt/dwt-internal-ole-win32-OAIDL.ana (added)
- tools/ana/dwt/dwt-internal-ole-win32-OBJIDL.ana (added)
- tools/ana/dwt/dwt-internal-ole-win32-OLEIDL.ana (added)
- tools/ana/dwt/dwt-internal-ole-win32-com.ana (added)
- tools/ana/dwt/dwt-internal-ole-win32-comapi.ana (added)
- tools/ana/dwt/dwt-internal-ole-win32-comtypes.ana (added)
- tools/ana/dwt/dwt-internal-ole-win32-extras.ana (added)
- tools/ana/dwt/dwt-internal-ole-win32-ifs.ana (added)
- tools/ana/dwt/dwt-internal-serializablecompatibility.ana (added)
- tools/ana/dwt/dwt-internal-win32-os.ana (added)
- tools/ana/dwt/dwt-internal-win32-winapi.ana (added)
- tools/ana/dwt/dwt-internal-win32-wintypes.ana (added)
- tools/ana/dwt/dwt-layout-filllayout.ana (added)
- tools/ana/dwt/dwt-layout-formlayout.ana (added)
- tools/ana/dwt/dwt-layout-gridlayout.ana (added)
- tools/ana/dwt/dwt-layout-rowlayout.ana (added)
- tools/ana/dwt/dwt-ole-win32-ole.ana (added)
- tools/ana/dwt/dwt-ole-win32-oleautomation.ana (added)
- tools/ana/dwt/dwt-ole-win32-oleclientsite.ana (added)
- tools/ana/dwt/dwt-ole-win32-olecontrolsite.ana (added)
- tools/ana/dwt/dwt-ole-win32-oleeventsink.ana (added)
- tools/ana/dwt/dwt-ole-win32-oleframe.ana (added)
- tools/ana/dwt/dwt-ole-win32-olemisc.ana (added)
- tools/ana/dwt/dwt-ole-win32-olepropertychangesink.ana (added)
- tools/ana/dwt/dwt-ole-win32-variant.ana (added)
- tools/ana/dwt/dwt-printing-printdialog.ana (added)
- tools/ana/dwt/dwt-printing-printer.ana (added)
- tools/ana/dwt/dwt-printing-printerdata.ana (added)
- tools/ana/dwt/dwt-program-program.ana (added)
- tools/ana/dwt/dwt-util-eventhandler.ana (added)
- tools/ana/dwt/dwt-util-eventobject.ana (added)
- tools/ana/dwt/dwt-util-hashtable.ana (added)
- tools/ana/dwt/dwt-util-javatypes.ana (added)
- tools/ana/dwt/dwt-util-resourcemanager.ana (added)
- tools/ana/dwt/dwt-util-util.ana (added)
- tools/ana/dwt/dwt-util-vector.ana (added)
- tools/ana/dwt/dwt-widgets-button.ana (added)
- tools/ana/dwt/dwt-widgets-canvas.ana (added)
- tools/ana/dwt/dwt-widgets-caret.ana (added)
- tools/ana/dwt/dwt-widgets-colordialog.ana (added)
- tools/ana/dwt/dwt-widgets-combo.ana (added)
- tools/ana/dwt/dwt-widgets-composite.ana (added)
- tools/ana/dwt/dwt-widgets-control.ana (added)
- tools/ana/dwt/dwt-widgets-coolbar.ana (added)
- tools/ana/dwt/dwt-widgets-coolitem.ana (added)
- tools/ana/dwt/dwt-widgets-decorations.ana (added)
- tools/ana/dwt/dwt-widgets-dialog.ana (added)
- tools/ana/dwt/dwt-widgets-directorydialog.ana (added)
- tools/ana/dwt/dwt-widgets-display.ana (added)
- tools/ana/dwt/dwt-widgets-event.ana (added)
- tools/ana/dwt/dwt-widgets-eventtable.ana (added)
- tools/ana/dwt/dwt-widgets-filedialog.ana (added)
- tools/ana/dwt/dwt-widgets-fontdialog.ana (added)
- tools/ana/dwt/dwt-widgets-group.ana (added)
- tools/ana/dwt/dwt-widgets-imagelist.ana (added)
- tools/ana/dwt/dwt-widgets-item.ana (added)
- tools/ana/dwt/dwt-widgets-label.ana (added)
- tools/ana/dwt/dwt-widgets-layout.ana (added)
- tools/ana/dwt/dwt-widgets-list.ana (added)
- tools/ana/dwt/dwt-widgets-listener.ana (added)
- tools/ana/dwt/dwt-widgets-menu.ana (added)
- tools/ana/dwt/dwt-widgets-menuitem.ana (added)
- tools/ana/dwt/dwt-widgets-messagebox.ana (added)
- tools/ana/dwt/dwt-widgets-monitor.ana (added)
- tools/ana/dwt/dwt-widgets-progressbar.ana (added)
- tools/ana/dwt/dwt-widgets-runnablelock.ana (added)
- tools/ana/dwt/dwt-widgets-sash.ana (added)
- tools/ana/dwt/dwt-widgets-scale.ana (added)
- tools/ana/dwt/dwt-widgets-scrollable.ana (added)
- tools/ana/dwt/dwt-widgets-scrollbar.ana (added)
- tools/ana/dwt/dwt-widgets-shell.ana (added)
- tools/ana/dwt/dwt-widgets-slider.ana (added)
- tools/ana/dwt/dwt-widgets-synchronizer.ana (added)
- tools/ana/dwt/dwt-widgets-tabfolder.ana (added)
- tools/ana/dwt/dwt-widgets-tabitem.ana (added)
- tools/ana/dwt/dwt-widgets-table.ana (added)
- tools/ana/dwt/dwt-widgets-tablecolumn.ana (added)
- tools/ana/dwt/dwt-widgets-tableitem.ana (added)
- tools/ana/dwt/dwt-widgets-text.ana (added)
- tools/ana/dwt/dwt-widgets-toolbar.ana (added)
- tools/ana/dwt/dwt-widgets-toolitem.ana (added)
- tools/ana/dwt/dwt-widgets-tracker.ana (added)
- tools/ana/dwt/dwt-widgets-tray.ana (added)
- tools/ana/dwt/dwt-widgets-trayitem.ana (added)
- tools/ana/dwt/dwt-widgets-tree.ana (added)
- tools/ana/dwt/dwt-widgets-treeitem.ana (added)
- tools/ana/dwt/dwt-widgets-typedlistener.ana (added)
- tools/ana/dwt/dwt-widgets-widget.ana (added)
- tools/ana/gl (added)
- tools/ana/gl/gl.ana (added)
- tools/ana/gl/glu.ana (added)
- tools/ana/std (added)
- tools/ana/std/std-array.ana (added)
- tools/ana/std/std-asserterror.ana (added)
- tools/ana/std/std-base64.ana (added)
- tools/ana/std/std-bind.ana (added)
- tools/ana/std/std-bitarray.ana (added)
- tools/ana/std/std-boxer.ana (added)
- tools/ana/std/std-c-fenv.ana (added)
- tools/ana/std/std-c-linux-linux.ana (added)
- tools/ana/std/std-c-linux-linuxextern.ana (added)
- tools/ana/std/std-c-linux-pthread.ana (added)
- tools/ana/std/std-c-linux-socket.ana (added)
- tools/ana/std/std-c-locale.ana (added)
- tools/ana/std/std-c-math.ana (added)
- tools/ana/std/std-c-process.ana (added)
- tools/ana/std/std-c-stdarg.ana (added)
- tools/ana/std/std-c-stddef.ana (added)
- tools/ana/std/std-c-stdio.ana (added)
- tools/ana/std/std-c-stdlib.ana (added)
- tools/ana/std/std-c-string.ana (added)
- tools/ana/std/std-c-time.ana (added)
- tools/ana/std/std-c-windows-com.ana (added)
- tools/ana/std/std-c-windows-stat.ana (added)
- tools/ana/std/std-c-windows-windows.ana (added)
- tools/ana/std/std-c-windows-winsock.ana (added)
- tools/ana/std/std-compiler.ana (added)
- tools/ana/std/std-conv.ana (added)
- tools/ana/std/std-cover.ana (added)
- tools/ana/std/std-cpuid.ana (added)
- tools/ana/std/std-cstream.ana (added)
- tools/ana/std/std-ctype.ana (added)
- tools/ana/std/std-date.ana (added)
- tools/ana/std/std-dateparse.ana (added)
- tools/ana/std/std-demangle.ana (added)
- tools/ana/std/std-file.ana (added)
- tools/ana/std/std-format.ana (added)
- tools/ana/std/std-gc.ana (added)
- tools/ana/std/std-intrinsic.ana (added)
- tools/ana/std/std-loader.ana (added)
- tools/ana/std/std-math.ana (added)
- tools/ana/std/std-math2.ana (added)
- tools/ana/std/std-md5.ana (added)
- tools/ana/std/std-metastrings.ana (added)
- tools/ana/std/std-mmfile.ana (added)
- tools/ana/std/std-moduleinit.ana (added)
- tools/ana/std/std-openrj.ana (added)
- tools/ana/std/std-outbuffer.ana (added)
- tools/ana/std/std-outofmemory.ana (added)
- tools/ana/std/std-path.ana (added)
- tools/ana/std/std-perf.ana (added)
- tools/ana/std/std-process.ana (added)
- tools/ana/std/std-random.ana (added)
- tools/ana/std/std-regexp.ana (added)
- tools/ana/std/std-signals.ana (added)
- tools/ana/std/std-socket.ana (added)
- tools/ana/std/std-socketstream.ana (added)
- tools/ana/std/std-stdarg.ana (added)
- tools/ana/std/std-stdint.ana (added)
- tools/ana/std/std-stdio.ana (added)
- tools/ana/std/std-stream.ana (added)
- tools/ana/std/std-string.ana (added)
- tools/ana/std/std-switcherr.ana (added)
- tools/ana/std/std-syserror.ana (added)
- tools/ana/std/std-system.ana (added)
- tools/ana/std/std-thread.ana (added)
- tools/ana/std/std-traits.ana (added)
- tools/ana/std/std-typeinfo-ti_AC.ana (added)
- tools/ana/std/std-typeinfo-ti_Acdouble.ana (added)
- tools/ana/std/std-typeinfo-ti_Acfloat.ana (added)
- tools/ana/std/std-typeinfo-ti_Acreal.ana (added)
- tools/ana/std/std-typeinfo-ti_Adouble.ana (added)
- tools/ana/std/std-typeinfo-ti_Afloat.ana (added)
- tools/ana/std/std-typeinfo-ti_Ag.ana (added)
- tools/ana/std/std-typeinfo-ti_Aint.ana (added)
- tools/ana/std/std-typeinfo-ti_Along.ana (added)
- tools/ana/std/std-typeinfo-ti_Areal.ana (added)
- tools/ana/std/std-typeinfo-ti_Ashort.ana (added)
- tools/ana/std/std-typeinfo-ti_C.ana (added)
- tools/ana/std/std-typeinfo-ti_byte.ana (added)
- tools/ana/std/std-typeinfo-ti_cdouble.ana (added)
- tools/ana/std/std-typeinfo-ti_cfloat.ana (added)
- tools/ana/std/std-typeinfo-ti_char.ana (added)
- tools/ana/std/std-typeinfo-ti_creal.ana (added)
- tools/ana/std/std-typeinfo-ti_dchar.ana (added)
- tools/ana/std/std-typeinfo-ti_delegate.ana (added)
- tools/ana/std/std-typeinfo-ti_double.ana (added)
- tools/ana/std/std-typeinfo-ti_float.ana (added)
- tools/ana/std/std-typeinfo-ti_idouble.ana (added)
- tools/ana/std/std-typeinfo-ti_ifloat.ana (added)
- tools/ana/std/std-typeinfo-ti_int.ana (added)
- tools/ana/std/std-typeinfo-ti_ireal.ana (added)
- tools/ana/std/std-typeinfo-ti_long.ana (added)
- tools/ana/std/std-typeinfo-ti_ptr.ana (added)
- tools/ana/std/std-typeinfo-ti_real.ana (added)
- tools/ana/std/std-typeinfo-ti_short.ana (added)
- tools/ana/std/std-typeinfo-ti_ubyte.ana (added)
- tools/ana/std/std-typeinfo-ti_uint.ana (added)
- tools/ana/std/std-typeinfo-ti_ulong.ana (added)
- tools/ana/std/std-typeinfo-ti_ushort.ana (added)
- tools/ana/std/std-typeinfo-ti_void.ana (added)
- tools/ana/std/std-typeinfo-ti_wchar.ana (added)
- tools/ana/std/std-typetuple.ana (added)
- tools/ana/std/std-uni.ana (added)
- tools/ana/std/std-uri.ana (added)
- tools/ana/std/std-utf.ana (added)
- tools/ana/std/std-windows-charset.ana (added)
- tools/ana/std/std-windows-iunknown.ana (added)
- tools/ana/std/std-windows-registry.ana (added)
- tools/ana/std/std-windows-syserror.ana (added)
- tools/ana/std/std-zip.ana (added)
- tools/ana/std/std-zlib.ana (added)
- tools/ana/tango (added)
- tools/ana/tango/object.ana (added)
- tools/ana/tango/std-c-stdarg.ana (added)
- tools/ana/tango/std-intrinsic.ana (added)
- tools/ana/tango/std-stdarg.ana (added)
- tools/ana/tango/tango-core-Array.ana (added)
- tools/ana/tango/tango-core-Atomic.ana (added)
- tools/ana/tango/tango-core-BitArray.ana (added)
- tools/ana/tango/tango-core-BitManip.ana (added)
- tools/ana/tango/tango-core-ByteSwap.ana (added)
- tools/ana/tango/tango-core-Exception.ana (added)
- tools/ana/tango/tango-core-Memory.ana (added)
- tools/ana/tango/tango-core-Runtime.ana (added)
- tools/ana/tango/tango-core-Signal.ana (added)
- tools/ana/tango/tango-core-Thread.ana (added)
- tools/ana/tango/tango-core-Traits.ana (added)
- tools/ana/tango/tango-core-Tuple.ana (added)
- tools/ana/tango/tango-core-Vararg.ana (added)
- tools/ana/tango/tango-core-Variant.ana (added)
- tools/ana/tango/tango-core-Version.ana (added)
- tools/ana/tango/tango-core-sync-Barrier.ana (added)
- tools/ana/tango/tango-core-sync-Condition.ana (added)
- tools/ana/tango/tango-core-sync-Config.ana (added)
- tools/ana/tango/tango-core-sync-Mutex.ana (added)
- tools/ana/tango/tango-core-sync-ReadWriteMutex.ana (added)
- tools/ana/tango/tango-core-sync-Semaphore.ana (added)
- tools/ana/tango/tango-group-collection.ana (added)
- tools/ana/tango/tango-group-convert.ana (added)
- tools/ana/tango/tango-group-digest.ana (added)
- tools/ana/tango/tango-group-file.ana (added)
- tools/ana/tango/tango-group-http.ana (added)
- tools/ana/tango/tango-group-log.ana (added)
- tools/ana/tango/tango-group-math.ana (added)
- tools/ana/tango/tango-group-net.ana (added)
- tools/ana/tango/tango-group-stream.ana (added)
- tools/ana/tango/tango-group-text.ana (added)
- tools/ana/tango/tango-group-time.ana (added)
- tools/ana/tango/tango-io-Buffer.ana (added)
- tools/ana/tango/tango-io-Conduit.ana (added)
- tools/ana/tango/tango-io-Console.ana (added)
- tools/ana/tango/tango-io-DeviceConduit.ana (added)
- tools/ana/tango/tango-io-File.ana (added)
- tools/ana/tango/tango-io-FileConduit.ana (added)
- tools/ana/tango/tango-io-FileConst.ana (added)
- tools/ana/tango/tango-io-FilePath.ana (added)
- tools/ana/tango/tango-io-FileRoots.ana (added)
- tools/ana/tango/tango-io-FileScan.ana (added)
- tools/ana/tango/tango-io-FileSystem.ana (added)
- tools/ana/tango/tango-io-GrowBuffer.ana (added)
- tools/ana/tango/tango-io-MappedBuffer.ana (added)
- tools/ana/tango/tango-io-Print.ana (added)
- tools/ana/tango/tango-io-Stdout.ana (added)
- tools/ana/tango/tango-io-TempFile.ana (added)
- tools/ana/tango/tango-io-UnicodeFile.ana (added)
- tools/ana/tango/tango-io-archive-Zip.ana (added)
- tools/ana/tango/tango-io-compress-BzipStream.ana (added)
- tools/ana/tango/tango-io-compress-ZlibStream.ana (added)
- tools/ana/tango/tango-io-compress-c-bzlib.ana (added)
- tools/ana/tango/tango-io-compress-c-zlib.ana (added)
- tools/ana/tango/tango-io-digest-Crc32.ana (added)
- tools/ana/tango/tango-io-digest-Digest.ana (added)
- tools/ana/tango/tango-io-digest-Md2.ana (added)
- tools/ana/tango/tango-io-digest-Md4.ana (added)
- tools/ana/tango/tango-io-digest-Md5.ana (added)
- tools/ana/tango/tango-io-digest-MerkleDamgard.ana (added)
- tools/ana/tango/tango-io-digest-Sha0.ana (added)
- tools/ana/tango/tango-io-digest-Sha01.ana (added)
- tools/ana/tango/tango-io-digest-Sha1.ana (added)
- tools/ana/tango/tango-io-digest-Sha256.ana (added)
- tools/ana/tango/tango-io-digest-Sha512.ana (added)
- tools/ana/tango/tango-io-digest-Tiger.ana (added)
- tools/ana/tango/tango-io-model-IBuffer.ana (added)
- tools/ana/tango/tango-io-model-IConduit.ana (added)
- tools/ana/tango/tango-io-model-IListener.ana (added)
- tools/ana/tango/tango-io-protocol-Allocator.ana (added)
- tools/ana/tango/tango-io-protocol-EndianProtocol.ana (added)
- tools/ana/tango/tango-io-protocol-NativeProtocol.ana (added)
- tools/ana/tango/tango-io-protocol-PickleProtocol.ana (added)
- tools/ana/tango/tango-io-protocol-Reader.ana (added)
- tools/ana/tango/tango-io-protocol-Writer.ana (added)
- tools/ana/tango/tango-io-protocol-model-IProtocol.ana (added)
- tools/ana/tango/tango-io-protocol-model-IReader.ana (added)
- tools/ana/tango/tango-io-protocol-model-IWriter.ana (added)
- tools/ana/tango/tango-io-selector-AbstractSelector.ana (added)
- tools/ana/tango/tango-io-selector-EpollSelector.ana (added)
- tools/ana/tango/tango-io-selector-PollSelector.ana (added)
- tools/ana/tango/tango-io-selector-SelectSelector.ana (added)
- tools/ana/tango/tango-io-selector-Selector.ana (added)
- tools/ana/tango/tango-io-selector-SelectorException.ana (added)
- tools/ana/tango/tango-io-selector-model-ISelector.ana (added)
- tools/ana/tango/tango-io-stream-BufferStream.ana (added)
- tools/ana/tango/tango-io-stream-DataFileStream.ana (added)
- tools/ana/tango/tango-io-stream-DataStream.ana (added)
- tools/ana/tango/tango-io-stream-DigestStream.ana (added)
- tools/ana/tango/tango-io-stream-EndianStream.ana (added)
- tools/ana/tango/tango-io-stream-FileStream.ana (added)
- tools/ana/tango/tango-io-stream-FormatStream.ana (added)
- tools/ana/tango/tango-io-stream-GreedyStream.ana (added)
- tools/ana/tango/tango-io-stream-LineStream.ana (added)
- tools/ana/tango/tango-io-stream-MapStream.ana (added)
- tools/ana/tango/tango-io-stream-SnoopStream.ana (added)
- tools/ana/tango/tango-io-stream-TextFileStream.ana (added)
- tools/ana/tango/tango-io-stream-TypedStream.ana (added)
- tools/ana/tango/tango-io-stream-UtfStream.ana (added)
- tools/ana/tango/tango-io-vfs-FileFolder.ana (added)
- tools/ana/tango/tango-io-vfs-LinkedFolder.ana (added)
- tools/ana/tango/tango-io-vfs-VirtualFolder.ana (added)
- tools/ana/tango/tango-io-vfs-ZipFolder.ana (added)
- tools/ana/tango/tango-io-vfs-model-Vfs.ana (added)
- tools/ana/tango/tango-math-Bessel.ana (added)
- tools/ana/tango/tango-math-Elliptic.ana (added)
- tools/ana/tango/tango-math-ErrorFunction.ana (added)
- tools/ana/tango/tango-math-GammaFunction.ana (added)
- tools/ana/tango/tango-math-IEEE.ana (added)
- tools/ana/tango/tango-math-Math.ana (added)
- tools/ana/tango/tango-math-Probability.ana (added)
- tools/ana/tango/tango-math-Random.ana (added)
- tools/ana/tango/tango-net-C-OpenSSL.ana (added)
- tools/ana/tango/tango-net-DatagramConduit.ana (added)
- tools/ana/tango/tango-net-InternetAddress.ana (added)
- tools/ana/tango/tango-net-MulticastConduit.ana (added)
- tools/ana/tango/tango-net-PKI.ana (added)
- tools/ana/tango/tango-net-SSLServerSocket.ana (added)
- tools/ana/tango/tango-net-SSLSocketConduit.ana (added)
- tools/ana/tango/tango-net-ServerSocket.ana (added)
- tools/ana/tango/tango-net-Socket.ana (added)
- tools/ana/tango/tango-net-SocketConduit.ana (added)
- tools/ana/tango/tango-net-SocketListener.ana (added)
- tools/ana/tango/tango-net-Uri.ana (added)
- tools/ana/tango/tango-net-cluster-CacheInvalidatee.ana (added)
- tools/ana/tango/tango-net-cluster-CacheInvalidator.ana (added)
- tools/ana/tango/tango-net-cluster-NetworkAlert.ana (added)
- tools/ana/tango/tango-net-cluster-NetworkCache.ana (added)
- tools/ana/tango/tango-net-cluster-NetworkCall.ana (added)
- tools/ana/tango/tango-net-cluster-NetworkClient.ana (added)
- tools/ana/tango/tango-net-cluster-NetworkMessage.ana (added)
- tools/ana/tango/tango-net-cluster-NetworkQueue.ana (added)
- tools/ana/tango/tango-net-cluster-NetworkRegistry.ana (added)
- tools/ana/tango/tango-net-cluster-NetworkTask.ana (added)
- tools/ana/tango/tango-net-cluster-QueuedCache.ana (added)
- tools/ana/tango/tango-net-cluster-model-ICache.ana (added)
- tools/ana/tango/tango-net-cluster-model-IChannel.ana (added)
- tools/ana/tango/tango-net-cluster-model-ICluster.ana (added)
- tools/ana/tango/tango-net-cluster-model-IConsumer.ana (added)
- tools/ana/tango/tango-net-cluster-model-IMessage.ana (added)
- tools/ana/tango/tango-net-cluster-tina-CacheServer.ana (added)
- tools/ana/tango/tango-net-cluster-tina-CacheThread.ana (added)
- tools/ana/tango/tango-net-cluster-tina-Cluster.ana (added)
- tools/ana/tango/tango-net-cluster-tina-ClusterCache.ana (added)
- tools/ana/tango/tango-net-cluster-tina-ClusterQueue.ana (added)
- tools/ana/tango/tango-net-cluster-tina-ClusterServer.ana (added)
- tools/ana/tango/tango-net-cluster-tina-ClusterTask.ana (added)
- tools/ana/tango/tango-net-cluster-tina-ClusterThread.ana (added)
- tools/ana/tango/tango-net-cluster-tina-ClusterTypes.ana (added)
- tools/ana/tango/tango-net-cluster-tina-CmdParser.ana (added)
- tools/ana/tango/tango-net-cluster-tina-ProtocolReader.ana (added)
- tools/ana/tango/tango-net-cluster-tina-ProtocolWriter.ana (added)
- tools/ana/tango/tango-net-cluster-tina-QueueFile.ana (added)
- tools/ana/tango/tango-net-cluster-tina-QueueServer.ana (added)
- tools/ana/tango/tango-net-cluster-tina-QueueThread.ana (added)
- tools/ana/tango/tango-net-cluster-tina-RollCall.ana (added)
- tools/ana/tango/tango-net-cluster-tina-TaskServer.ana (added)
- tools/ana/tango/tango-net-cluster-tina-TaskThread.ana (added)
- tools/ana/tango/tango-net-cluster-tina-util-AbstractServer.ana (added)
- tools/ana/tango/tango-net-cluster-tina-util-ServerThread.ana (added)
- tools/ana/tango/tango-net-cluster-tina-util-model-IServer.ana (added)
- tools/ana/tango/tango-net-ftp-FtpClient.ana (added)
- tools/ana/tango/tango-net-ftp-Telnet.ana (added)
- tools/ana/tango/tango-net-http-ChunkStream.ana (added)
- tools/ana/tango/tango-net-http-HttpClient.ana (added)
- tools/ana/tango/tango-net-http-HttpConst.ana (added)
- tools/ana/tango/tango-net-http-HttpCookies.ana (added)
- tools/ana/tango/tango-net-http-HttpGet.ana (added)
- tools/ana/tango/tango-net-http-HttpHeaders.ana (added)
- tools/ana/tango/tango-net-http-HttpParams.ana (added)
- tools/ana/tango/tango-net-http-HttpPost.ana (added)
- tools/ana/tango/tango-net-http-HttpStack.ana (added)
- tools/ana/tango/tango-net-http-HttpTokens.ana (added)
- tools/ana/tango/tango-net-http-HttpTriplet.ana (added)
- tools/ana/tango/tango-net-http-model-HttpParamsView.ana (added)
- tools/ana/tango/tango-net-model-UriView.ana (added)
- tools/ana/tango/tango-stdc-complex.ana (added)
- tools/ana/tango/tango-stdc-config.ana (added)
- tools/ana/tango/tango-stdc-ctype.ana (added)
- tools/ana/tango/tango-stdc-errno.ana (added)
- tools/ana/tango/tango-stdc-fenv.ana (added)
- tools/ana/tango/tango-stdc-inttypes.ana (added)
- tools/ana/tango/tango-stdc-limits.ana (added)
- tools/ana/tango/tango-stdc-locale.ana (added)
- tools/ana/tango/tango-stdc-math.ana (added)
- tools/ana/tango/tango-stdc-posix-arpa-inet.ana (added)
- tools/ana/tango/tango-stdc-posix-config.ana (added)
- tools/ana/tango/tango-stdc-posix-dirent.ana (added)
- tools/ana/tango/tango-stdc-posix-dlfcn.ana (added)
- tools/ana/tango/tango-stdc-posix-fcntl.ana (added)
- tools/ana/tango/tango-stdc-posix-inttypes.ana (added)
- tools/ana/tango/tango-stdc-posix-net-if_.ana (added)
- tools/ana/tango/tango-stdc-posix-netinet-in_.ana (added)
- tools/ana/tango/tango-stdc-posix-netinet-tcp.ana (added)
- tools/ana/tango/tango-stdc-posix-poll.ana (added)
- tools/ana/tango/tango-stdc-posix-pthread.ana (added)
- tools/ana/tango/tango-stdc-posix-pwd.ana (added)
- tools/ana/tango/tango-stdc-posix-sched.ana (added)
- tools/ana/tango/tango-stdc-posix-semaphore.ana (added)
- tools/ana/tango/tango-stdc-posix-setjmp.ana (added)
- tools/ana/tango/tango-stdc-posix-signal.ana (added)
- tools/ana/tango/tango-stdc-posix-stdio.ana (added)
- tools/ana/tango/tango-stdc-posix-stdlib.ana (added)
- tools/ana/tango/tango-stdc-posix-sys-ipc.ana (added)
- tools/ana/tango/tango-stdc-posix-sys-mman.ana (added)
- tools/ana/tango/tango-stdc-posix-sys-select.ana (added)
- tools/ana/tango/tango-stdc-posix-sys-shm.ana (added)
- tools/ana/tango/tango-stdc-posix-sys-socket.ana (added)
- tools/ana/tango/tango-stdc-posix-sys-stat.ana (added)
- tools/ana/tango/tango-stdc-posix-sys-time.ana (added)
- tools/ana/tango/tango-stdc-posix-sys-types.ana (added)
- tools/ana/tango/tango-stdc-posix-sys-uio.ana (added)
- tools/ana/tango/tango-stdc-posix-sys-wait.ana (added)
- tools/ana/tango/tango-stdc-posix-termios.ana (added)
- tools/ana/tango/tango-stdc-posix-time.ana (added)
- tools/ana/tango/tango-stdc-posix-ucontext.ana (added)
- tools/ana/tango/tango-stdc-posix-unistd.ana (added)
- tools/ana/tango/tango-stdc-posix-utime.ana (added)
- tools/ana/tango/tango-stdc-signal.ana (added)
- tools/ana/tango/tango-stdc-stdarg.ana (added)
- tools/ana/tango/tango-stdc-stddef.ana (added)
- tools/ana/tango/tango-stdc-stdint.ana (added)
- tools/ana/tango/tango-stdc-stdio.ana (added)
- tools/ana/tango/tango-stdc-stdlib.ana (added)
- tools/ana/tango/tango-stdc-string.ana (added)
- tools/ana/tango/tango-stdc-stringz.ana (added)
- tools/ana/tango/tango-stdc-tgmath.ana (added)
- tools/ana/tango/tango-stdc-time.ana (added)
- tools/ana/tango/tango-stdc-wctype.ana (added)
- tools/ana/tango/tango-sys-Common.ana (added)
- tools/ana/tango/tango-sys-Environment.ana (added)
- tools/ana/tango/tango-sys-Pipe.ana (added)
- tools/ana/tango/tango-sys-Process.ana (added)
- tools/ana/tango/tango-sys-SharedLib.ana (added)
- tools/ana/tango/tango-sys-darwin-darwin.ana (added)
- tools/ana/tango/tango-sys-freebsd-freebsd.ana (added)
- tools/ana/tango/tango-sys-linux-epoll.ana (added)
- tools/ana/tango/tango-sys-linux-linux.ana (added)
- tools/ana/tango/tango-sys-linux-socket.ana (added)
- tools/ana/tango/tango-sys-win32-CodePage.ana (added)
- tools/ana/tango/tango-sys-win32-IUnknown.ana (added)
- tools/ana/tango/tango-sys-win32-Macros.ana (added)
- tools/ana/tango/tango-sys-win32-Process.ana (added)
- tools/ana/tango/tango-sys-win32-Types.ana (added)
- tools/ana/tango/tango-sys-win32-UserGdi.ana (added)
- tools/ana/tango/tango-text-Ascii.ana (added)
- tools/ana/tango/tango-text-Properties.ana (added)
- tools/ana/tango/tango-text-Regex.ana (added)
- tools/ana/tango/tango-text-Text.ana (added)
- tools/ana/tango/tango-text-Unicode.ana (added)
- tools/ana/tango/tango-text-UnicodeData.ana (added)
- tools/ana/tango/tango-text-Util.ana (added)
- tools/ana/tango/tango-text-convert-Float.ana (added)
- tools/ana/tango/tango-text-convert-Format.ana (added)
- tools/ana/tango/tango-text-convert-Integer.ana (added)
- tools/ana/tango/tango-text-convert-Layout.ana (added)
- tools/ana/tango/tango-text-convert-Sprint.ana (added)
- tools/ana/tango/tango-text-convert-TimeStamp.ana (added)
- tools/ana/tango/tango-text-convert-UnicodeBom.ana (added)
- tools/ana/tango/tango-text-convert-Utf.ana (added)
- tools/ana/tango/tango-text-locale-Collation.ana (added)
- tools/ana/tango/tango-text-locale-Convert.ana (added)
- tools/ana/tango/tango-text-locale-Core.ana (added)
- tools/ana/tango/tango-text-locale-Data.ana (added)
- tools/ana/tango/tango-text-locale-Locale.ana (added)
- tools/ana/tango/tango-text-locale-Parse.ana (added)
- tools/ana/tango/tango-text-locale-Posix.ana (added)
- tools/ana/tango/tango-text-locale-Win32.ana (added)
- tools/ana/tango/tango-text-stream-LineIterator.ana (added)
- tools/ana/tango/tango-text-stream-QuoteIterator.ana (added)
- tools/ana/tango/tango-text-stream-RegexIterator.ana (added)
- tools/ana/tango/tango-text-stream-SimpleIterator.ana (added)
- tools/ana/tango/tango-text-stream-StreamIterator.ana (added)
- tools/ana/tango/tango-text-xml-Document.ana (added)
- tools/ana/tango/tango-text-xml-PullParser.ana (added)
- tools/ana/tango/tango-text-xml-SaxParser.ana (added)
- tools/ana/tango/tango-text-xml-XmlPrinter.ana (added)
- tools/ana/tango/tango-time-Clock.ana (added)
- tools/ana/tango/tango-time-ISO8601.ana (added)
- tools/ana/tango/tango-time-StopWatch.ana (added)
- tools/ana/tango/tango-time-Time.ana (added)
- tools/ana/tango/tango-time-WallClock.ana (added)
- tools/ana/tango/tango-time-chrono-Calendar.ana (added)
- tools/ana/tango/tango-time-chrono-Gregorian.ana (added)
- tools/ana/tango/tango-time-chrono-GregorianBased.ana (added)
- tools/ana/tango/tango-time-chrono-Hebrew.ana (added)
- tools/ana/tango/tango-time-chrono-Hijri.ana (added)
- tools/ana/tango/tango-time-chrono-Japanese.ana (added)
- tools/ana/tango/tango-time-chrono-Korean.ana (added)
- tools/ana/tango/tango-time-chrono-Taiwan.ana (added)
- tools/ana/tango/tango-time-chrono-ThaiBuddhist.ana (added)
- tools/ana/tango/tango-util-ArgParser.ana (added)
- tools/ana/tango/tango-util-Convert.ana (added)
- tools/ana/tango/tango-util-PathUtil.ana (added)
- tools/ana/tango/tango-util-collection-ArrayBag.ana (added)
- tools/ana/tango/tango-util-collection-ArraySeq.ana (added)
- tools/ana/tango/tango-util-collection-CircularSeq.ana (added)
- tools/ana/tango/tango-util-collection-HashMap.ana (added)
- tools/ana/tango/tango-util-collection-HashSet.ana (added)
- tools/ana/tango/tango-util-collection-LinkMap.ana (added)
- tools/ana/tango/tango-util-collection-LinkSeq.ana (added)
- tools/ana/tango/tango-util-collection-TreeBag.ana (added)
- tools/ana/tango/tango-util-collection-TreeMap.ana (added)
- tools/ana/tango/tango-util-collection-impl-AbstractIterator.ana (added)
- tools/ana/tango/tango-util-collection-impl-BagCollection.ana (added)
- tools/ana/tango/tango-util-collection-impl-CLCell.ana (added)
- tools/ana/tango/tango-util-collection-impl-Cell.ana (added)
- tools/ana/tango/tango-util-collection-impl-Collection.ana (added)
- tools/ana/tango/tango-util-collection-impl-DefaultComparator.ana (added)
- tools/ana/tango/tango-util-collection-impl-LLCell.ana (added)
- tools/ana/tango/tango-util-collection-impl-LLPair.ana (added)
- tools/ana/tango/tango-util-collection-impl-MapCollection.ana (added)
- tools/ana/tango/tango-util-collection-impl-RBCell.ana (added)
- tools/ana/tango/tango-util-collection-impl-RBPair.ana (added)
- tools/ana/tango/tango-util-collection-impl-SeqCollection.ana (added)
- tools/ana/tango/tango-util-collection-impl-SetCollection.ana (added)
- tools/ana/tango/tango-util-collection-iterator-ArrayIterator.ana (added)
- tools/ana/tango/tango-util-collection-iterator-FilteringIterator.ana (added)
- tools/ana/tango/tango-util-collection-iterator-InterleavingIterator.ana (added)
- tools/ana/tango/tango-util-collection-model-Bag.ana (added)
- tools/ana/tango/tango-util-collection-model-BagView.ana (added)
- tools/ana/tango/tango-util-collection-model-Comparator.ana (added)
- tools/ana/tango/tango-util-collection-model-Dispenser.ana (added)
- tools/ana/tango/tango-util-collection-model-GuardIterator.ana (added)
- tools/ana/tango/tango-util-collection-model-HashParams.ana (added)
- tools/ana/tango/tango-util-collection-model-Iterator.ana (added)
- tools/ana/tango/tango-util-collection-model-Map.ana (added)
- tools/ana/tango/tango-util-collection-model-MapView.ana (added)
- tools/ana/tango/tango-util-collection-model-Seq.ana (added)
- tools/ana/tango/tango-util-collection-model-SeqView.ana (added)
- tools/ana/tango/tango-util-collection-model-Set.ana (added)
- tools/ana/tango/tango-util-collection-model-SetView.ana (added)
- tools/ana/tango/tango-util-collection-model-Sortable.ana (added)
- tools/ana/tango/tango-util-collection-model-SortedKeys.ana (added)
- tools/ana/tango/tango-util-collection-model-SortedValues.ana (added)
- tools/ana/tango/tango-util-collection-model-View.ana (added)
- tools/ana/tango/tango-util-log-Appender.ana (added)
- tools/ana/tango/tango-util-log-Configurator.ana (added)
- tools/ana/tango/tango-util-log-ConsoleAppender.ana (added)
- tools/ana/tango/tango-util-log-DateLayout.ana (added)
- tools/ana/tango/tango-util-log-Event.ana (added)
- tools/ana/tango/tango-util-log-EventLayout.ana (added)
- tools/ana/tango/tango-util-log-FileAppender.ana (added)
- tools/ana/tango/tango-util-log-Hierarchy.ana (added)
- tools/ana/tango/tango-util-log-Log.ana (added)
- tools/ana/tango/tango-util-log-Log4Layout.ana (added)
- tools/ana/tango/tango-util-log-Logger.ana (added)
- tools/ana/tango/tango-util-log-MailAppender.ana (added)
- tools/ana/tango/tango-util-log-NullAppender.ana (added)
- tools/ana/tango/tango-util-log-PropertyConfigurator.ana (added)
- tools/ana/tango/tango-util-log-RollingFileAppender.ana (added)
- tools/ana/tango/tango-util-log-SocketAppender.ana (added)
- tools/ana/tango/tango-util-log-Trace.ana (added)
- tools/ana/tango/tango-util-log-model-IHierarchy.ana (added)
- tools/ana/tango/tango-util-log-model-ILevel.ana (added)
- trunk/current/poseidon/CodeAnalyzer/syntax/baseExpressions.d (modified) (1 diff)
- trunk/current/poseidon/CodeAnalyzer/syntax/decldefs.d (modified) (1 diff)
- trunk/current/poseidon/CodeAnalyzer/syntax/nodeHsu.d (modified) (3 diffs)
- trunk/current/poseidon/CodeAnalyzer/syntax/statements.d (modified) (22 diffs)
- trunk/current/poseidon/CodeAnalyzer/syntax/templates.d (modified) (3 diffs)
- trunk/current/poseidon/ana (deleted)
- trunk/current/poseidon/images/obj16/debug_spec_obj.gif (modified) (previous)
- trunk/current/poseidon/images/obj16/mixin_template_obj.gif (added)
- trunk/current/poseidon/images/obj16/version_spec_obj.gif (modified) (previous)
- trunk/current/poseidon/lexer/SCLEX_D.xml (modified) (1 diff)
- trunk/current/poseidon/nls/english.ini (modified) (1 diff)
- trunk/current/poseidon/poseidon.exe (modified) (previous)
- trunk/current/poseidon/poseidon/controller/dialog/aboutbox.d (modified) (1 diff)
- trunk/current/poseidon/poseidon/controller/edititem.d (modified) (2 diffs)
- trunk/current/poseidon/poseidon/controller/outline.d (modified) (4 diffs)
- trunk/current/poseidon/poseidon/controller/property/parserpage.d (modified) (13 diffs)
- trunk/current/poseidon/poseidon/globals.d (modified) (5 diffs)
- trunk/current/poseidon/poseidon/intellisense/autocomplete.d (modified) (18 diffs)
- trunk/current/poseidon/poseidon/intellisense/search.d (modified) (1 diff)
- trunk/current/poseidon/poseidon/style/dstyle.d (modified) (28 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/current/poseidon/CodeAnalyzer/syntax/baseExpressions.d
r223 r233 96 96 else 97 97 { 98 if( activeNode.DType & D_WITH ) 98 // Kuan Hsu 99 if( activeNode.DType & D_BLOCK ) 99 100 { 100 if( tokenText.length > 2 ) 101 if( tokenText[length-3..length] == "new" ) tokenText = tokenText[0..length-3]; 101 if( activeNode.baseClass == "with" ) 102 tokenText = tokenText ~ " "; 103 else 104 tokenText = ""; 102 105 } 103 106 else trunk/current/poseidon/CodeAnalyzer/syntax/decldefs.d
r213 r233 219 219 { 220 220 parseTerminal( TOK.Tinvariant ); 221 if( ts.next( TOK.Openparen, TOK.Closeparen ) ) 222 { 223 parseTerminal( TOK.Openparen ); 224 parseTerminal( TOK.Closeparen ); 225 } 221 226 activeNode = activeNode.addLeaf( globalProt, D_INVARIANT, "invariant", null, ts.peek().lineNumber ); // Kuan Hsu 222 227 parseR!(FunctionBody); trunk/current/poseidon/CodeAnalyzer/syntax/nodeHsu.d
r232 r233 25 25 const int D_UNITTEST = 512; 26 26 const int D_VARIABLE = 1024; //* 27 const int D_ WITH = 2048;//*27 const int D_ANONYMOUSBLOCK = 2048; //* 28 28 const int D_UNION = 4096; //* 29 29 const int D_INTERFACE = 8192; //* … … 65 65 66 66 const int D_ALL = 0 | D_CLASS | D_STRUCT | D_ENUM | D_ENUMMEMBER | D_ALIAS | D_TYPEDEF | D_CONDITIONSPEC | D_FUNLITERALS | 67 D_UNITTEST | D_VARIABLE | D_ WITH| D_UNION | D_INTERFACE | D_INVARIANT | D_VERSION | D_DEBUG |67 D_UNITTEST | D_VARIABLE | D_ANONYMOUSBLOCK | D_UNION | D_INTERFACE | D_INVARIANT | D_VERSION | D_DEBUG | 68 68 D_PARAMETER | D_PRAGMA | D_CTOR | D_DTOR | D_STATICCTOR | D_STATICDTOR | D_FUNCTION | D_TEMPLATE | 69 69 D_IMPORT | D_MIXIN | D_UNKNOWN | D_MODULE | D_MAINROOT | D_BLOCK; … … 89 89 case D_UNITTEST : return "D_UNITTEST"; 90 90 case D_VARIABLE : return "D_VARIABLE"; 91 case D_ WITH : return "D_WITH";91 case D_ANONYMOUSBLOCK : return "D_ANONYMOUSBLOCK"; 92 92 case D_UNION : return "D_UNION"; 93 93 case D_INTERFACE : return "D_INTERFACE"; trunk/current/poseidon/CodeAnalyzer/syntax/statements.d
r222 r233 90 90 parseTerminal( TOK.Tif ); 91 91 92 activeNode = activeNode.addLeaf( 0, D_BLOCK, "if", "if", ts.peek().lineNumber ); // Kuan Hsu92 activeNode = activeNode.addLeaf( 0, D_BLOCK, "if", "if", ts.peek().lineNumber, null, "if" ); // Kuan Hsu 93 93 94 94 parseTerminal( TOK.Openparen ); … … 112 112 { 113 113 activeNode = activeNode.getRoot(); // Kuan Hsu 114 activeNode = activeNode.addLeaf( 0, D_BLOCK, "else", "else", ts.peek().lineNumber ); // Kuan Hsu114 activeNode = activeNode.addLeaf( 0, D_BLOCK, "else", "else", ts.peek().lineNumber, null, "else" ); // Kuan Hsu 115 115 parseR!(Statement); 116 116 activeNode = activeNode.getRoot(); // Kuan Hsu … … 225 225 public void parse() 226 226 { 227 bool bAnonymous; 228 int prevAttribute = globalProt; // Kuan Hsu 229 230 TOK t = ts.peektype( 0 ); 231 232 if( t != TOK.Closeparen && t != TOK.Tdo && t != TOK.Telse && t != TOK.Ttry && t != TOK.Tcatch && 233 t != TOK.Tfinally && t != TOK.Tunittest && t != TOK.Tin && t != TOK.Tout && t != TOK.Tbody ) 234 { 235 bAnonymous = true; 236 globalProt = D_Private; 237 activeNode = activeNode.addLeaf( globalProt, D_ANONYMOUSBLOCK, null, null, ts.peek().lineNumber ); 238 } 239 227 240 parseTerminal( TOK.Opencurly ); 228 241 if( !ts.next( TOK.Closecurly ) ) … … 231 244 } 232 245 parseTerminal( TOK.Closecurly ); 246 247 if( bAnonymous ) 248 { 249 globalProt = prevAttribute; 250 activeNode = activeNode.getRoot(); 251 } 233 252 } 234 253 } … … 248 267 parseTerminal( TOK.Tdo ); 249 268 250 activeNode = activeNode.addLeaf( 0, D_BLOCK, "do", "do", ts.peek().lineNumber ); // Kuan Hsu269 activeNode = activeNode.addLeaf( 0, D_BLOCK, "do", "do", ts.peek().lineNumber, null, "do" ); // Kuan Hsu 251 270 parseR!(Statement); 252 271 activeNode = activeNode.getRoot(); // Kuan Hsu … … 276 295 parseTerminal( TOK.Closeparen ); 277 296 278 activeNode = activeNode.addLeaf( 0, D_BLOCK, "while", "while", ts.peek().lineNumber ); // Kuan Hsu297 activeNode = activeNode.addLeaf( 0, D_BLOCK, "while", "while", ts.peek().lineNumber, null, "while" ); // Kuan Hsu 279 298 parseR!(Statement); 280 299 activeNode = activeNode.getRoot(); // Kuan Hsu … … 313 332 parseTerminal( TOK.Tfor ); 314 333 parseTerminal( TOK.Openparen ); 315 activeNode = activeNode.addLeaf( 0, D_BLOCK, "for", "for", ts.peek().lineNumber ); // Kuan Hsu334 activeNode = activeNode.addLeaf( 0, D_BLOCK, "for", "for", ts.peek().lineNumber, null, "for" ); // Kuan Hsu 316 335 parseR!(ForParameters); 317 336 parseTerminal( TOK.Closeparen ); … … 340 359 parseTerminal(); 341 360 parseTerminal( TOK.Openparen ); 342 activeNode = activeNode.addLeaf( 0, D_BLOCK, "foreach", "foreach", ts.peek().lineNumber ); // Kuan Hsu361 activeNode = activeNode.addLeaf( 0, D_BLOCK, "foreach", "foreach", ts.peek().lineNumber, null, "foreach" ); // Kuan Hsu 343 362 parseR!(ForEachParameters); 344 363 parseTerminal( TOK.Closeparen ); … … 534 553 public void parse() 535 554 { 536 activeNode = activeNode.addLeaf( 0, D_BLOCK, "switch", "switch", ts.peek().lineNumber ); // Kuan Hsu555 activeNode = activeNode.addLeaf( 0, D_BLOCK, "switch", "switch", ts.peek().lineNumber, null, "switch" ); // Kuan Hsu 537 556 parseTerminal( TOK.Tswitch ); 538 557 parseTerminal( TOK.Openparen ); … … 543 562 // Kuan Hsu 544 563 if( activeNode.DType & D_BLOCK ) 545 if( activeNode. typeIdentifier== "case" ) activeNode = activeNode.getRoot();564 if( activeNode.baseClass == "case" ) activeNode = activeNode.getRoot(); 546 565 547 566 activeNode = activeNode.getRoot(); … … 587 606 // Kuan Hsu 588 607 if( activeNode.DType & D_BLOCK ) 589 if( activeNode. typeIdentifier== "case" ) activeNode = activeNode.getRoot();608 if( activeNode.baseClass == "case" ) activeNode = activeNode.getRoot(); 590 609 // End of Kuan Hsu 591 610 } … … 614 633 if( activeNode.DType & D_BLOCK ) 615 634 { 616 if( activeNode. typeIdentifier== "switch" )617 activeNode = activeNode.addLeaf( 0, D_BLOCK, "case", "case", ln );635 if( activeNode.baseClass == "switch" ) 636 activeNode = activeNode.addLeaf( 0, D_BLOCK, "case", "case", ln, null, "case" ); 618 637 else 619 638 { 620 if( activeNode. typeIdentifier== "case" )639 if( activeNode.baseClass == "case" ) 621 640 { 622 641 activeNode = activeNode.getRoot(); 623 activeNode = activeNode.addLeaf( 0, D_BLOCK, "case", "case", ln );642 activeNode = activeNode.addLeaf( 0, D_BLOCK, "case", "case", ln, null, "case" ); 624 643 } 625 644 } … … 650 669 if( activeNode.DType & D_BLOCK ) 651 670 { 652 if( activeNode. typeIdentifier== "switch" )653 activeNode = activeNode.addLeaf( 0, D_BLOCK, "case", "case", ln );671 if( activeNode.baseClass == "switch" ) 672 activeNode = activeNode.addLeaf( 0, D_BLOCK, "case", "case", ln, null, "case" ); 654 673 else 655 674 { 656 if( activeNode. typeIdentifier== "case" )675 if( activeNode.baseClass == "case" ) 657 676 { 658 677 activeNode = activeNode.getRoot(); 659 activeNode = activeNode.addLeaf( 0, D_BLOCK, "case", "case", ln );678 activeNode = activeNode.addLeaf( 0, D_BLOCK, "case", "case", ln, null, "case" ); 660 679 } 661 680 } … … 686 705 // Kuan Hsu 687 706 if( activeNode.DType == D_BLOCK ) 688 if( activeNode. typeIdentifier== "case" ) activeNode = activeNode.getRoot();707 if( activeNode.baseClass == "case" ) activeNode = activeNode.getRoot(); 689 708 // End of Kuan Hsu 690 709 } … … 713 732 // Kuan Hsu 714 733 if( activeNode.DType == D_BLOCK ) 715 if( activeNode. typeIdentifier== "case" ) activeNode = activeNode.getRoot();734 if( activeNode.baseClass == "case" ) activeNode = activeNode.getRoot(); 716 735 // End of Kuan Hsu 717 736 } … … 740 759 // Kuan Hsu 741 760 if( activeNode.DType == D_BLOCK ) 742 if( activeNode. typeIdentifier== "case" ) activeNode = activeNode.getRoot();761 if( activeNode.baseClass == "case" ) activeNode = activeNode.getRoot(); 743 762 // End of Kuan Hsu 744 763 } … … 785 804 // Kuan Hsu 786 805 if( activeNode.DType == D_BLOCK ) 787 if( activeNode. typeIdentifier== "case" ) activeNode = activeNode.getRoot();806 if( activeNode.baseClass == "case" ) activeNode = activeNode.getRoot(); 788 807 // End of Kuan Hsu 789 808 } … … 830 849 { 831 850 parseTerminal( TOK.Ttry ); 832 activeNode = activeNode.addLeaf( 0, D_BLOCK, "try", "try", ts.peek().lineNumber ); // Kuan Hsu851 activeNode = activeNode.addLeaf( 0, D_BLOCK, "try", "try", ts.peek().lineNumber, null, "try" ); // Kuan Hsu 833 852 parseR!(Statement); 834 853 activeNode = activeNode.getRoot(); // Kuan Hsu … … 864 883 ts.unwind(); 865 884 866 activeNode = activeNode.addLeaf( 0, D_BLOCK, "catch", "catch", ts.peek().lineNumber ); // Kuan Hsu885 activeNode = activeNode.addLeaf( 0, D_BLOCK, "catch", "catch", ts.peek().lineNumber, null, "catch" ); // Kuan Hsu 867 886 868 887 if( lastCatch ) … … 960 979 { 961 980 parseTerminal( TOK.Tfinally ); 962 activeNode = activeNode.addLeaf( 0, D_BLOCK, "finally", "finally", ts.peek().lineNumber ); // Kuan Hsu981 activeNode = activeNode.addLeaf( 0, D_BLOCK, "finally", "finally", ts.peek().lineNumber, null, "finally" ); // Kuan Hsu 963 982 parseR!(Statement); 964 983 activeNode = activeNode.getRoot(); // Kuan Hsu … … 1003 1022 tokenText = ""; 1004 1023 //activeNode = activeNode.addLeaf( 0, D_WITH, "with", "with", ts.peek().lineNumber ); 1005 activeNode = activeNode.addLeaf( 0, D_BLOCK, "with", "with", ts.peek().lineNumber );1024 activeNode = activeNode.addLeaf( 0, D_BLOCK, "with", "with", ts.peek().lineNumber, null, "with" ); 1006 1025 // End of Kuan Hsu 1007 1026 … … 1009 1028 1010 1029 // Kuan Hsu 1011 int assignPos = std.string.find( tokenText, "=" ); 1012 if( assignPos > 0 ) 1013 tokenText = tokenText[0..assignPos]; 1030 char[] ident, typeIdent; 1031 1032 char[][] nameAndType = std.string.split( tokenText, "new " ); 1033 if( nameAndType.length == 1 ) 1034 { 1035 ident = tokenText; 1036 } 1014 1037 else 1015 1038 { 1016 int openparenPos = std.string.find( tokenText, "(" ); 1017 if( openparenPos > 0 ) tokenText = tokenText[0..openparenPos]; 1039 ident = nameAndType[0]; 1040 if( nameAndType[0].length ) 1041 if( nameAndType[0][length-1] == '=' ) ident = nameAndType[0][0..length-1]; 1042 1043 typeIdent = nameAndType[1]; 1044 if( nameAndType[1].length ) 1045 { 1046 int openparenPos = std.string.find( nameAndType[1], "(" ); 1047 if( openparenPos > 0 ) typeIdent = nameAndType[1][0..openparenPos]; 1048 } 1018 1049 } 1019 1050 1020 activeNode.identifier = tokenText; 1051 activeNode.identifier = ident; 1052 activeNode.typeIdentifier = typeIdent; 1021 1053 // End of Kuan Hsu 1022 1054 trunk/current/poseidon/CodeAnalyzer/syntax/templates.d
r219 r233 416 416 public void parse() 417 417 { 418 int lineNum = ts.peek().lineNumber; // Kuan Hsu 419 418 420 parseTerminal( TOK.Tmixin ); 419 421 … … 424 426 else 425 427 { 428 tokenText = null; // Kuan Hsu 426 429 parseR!(IdentifierSequence); 430 431 int notPos = std.string.find( tokenText, "!(" ); 432 char[] ident = tokenText, params; 433 434 if( notPos > -1 ) 435 { 436 ident = tokenText[0..notPos]; 437 if( tokenText.length > notPos + 2 ) params = tokenText[notPos+2..length-1]; 438 } 439 440 activeNode.addLeaf( globalProt, D_MIXIN, ident, null, lineNum, params ); // Kuan Hsu 441 427 442 if( ts.next( TOK.Identifier ) ) 428 443 { 444 tokenText = null; // Kuan Hsu 429 445 parseR!(MixinIdentifier); 446 activeNode.getLeaf( activeNode.getLeafCount() - 1 ).typeIdentifier = tokenText; // Kuan Hsu 430 447 } 431 448 } … … 447 464 public void parse() 448 465 { 449 tokenText = null; // Kuan Hsu450 466 parseR!(Identifier); 451 activeNode.addLeaf( globalProt, D_MIXIN, tokenText ); // Kuan Hsu 452 } 453 } 467 } 468 } trunk/current/poseidon/lexer/SCLEX_D.xml
r201 r233 8 8 <keywords id="3" value="class struct interface enum new this null delete invariant super union template" /> 9 9 <keywords id="4" value="if for foreach while do assert return unittest try catch else throw switch case break continue default finally goto synchronized" /> 10 <keywords id="5" value="is import module alias typedef with cast package typeof typeid classinfo " />10 <keywords id="5" value="is import module alias typedef with cast package typeof typeid classinfo mixin" /> 11 11 <keywords id="6" value="in out const static inout lazy ref extern export auto align scope" /> 12 12 </keywords> trunk/current/poseidon/nls/english.ini
r231 r233 284 284 pap.update = Update Parser Live( In Testing ) 285 285 pap.show = Show All UDT Members 286 pap.showlisttype = Show AutoComplete List Member Type 286 287 pap.case = Case Sensitive 287 288 pap.load_default = Load Default Parser trunk/current/poseidon/poseidon/controller/dialog/aboutbox.d
r232 r233 38 38 with(label = new CLabel(top, DWT.CENTER)){ 39 39 //setText("Poseidon Editor for D v " ~ Globals.getVersionS()); 40 setText("Poseidon Editor for D rev.23 2" );40 setText("Poseidon Editor for D rev.233" ); 41 41 setForeground(color); 42 42 } trunk/current/poseidon/poseidon/controller/edititem.d
r232 r233 659 659 try 660 660 { 661 if( fileParser !is null ) delete fileParser;661 //if( fileParser !is null ) delete fileParser; 662 662 fileParser = syntax.core.parseTextHSU( scintilla.getText(), filePath ); 663 663 //fileParser = parsing.core.parseFileHSU( filePath ); … … 1174 1174 } 1175 1175 1176 private void _forceAutoComplete(){ DStyle.performAutoComplete( this.scintilla, true );}1176 private void _forceAutoComplete(){ /*DStyle.performAutoComplete( this.scintilla, true );*/ } 1177 1177 1178 1178 public void updateFileTime() trunk/current/poseidon/poseidon/controller/outline.d
r232 r233 53 53 break; 54 54 55 case D_MIXIN: 56 image = Globals.getImage( "D_MIXIN" ); 57 break; 58 59 case D_ANONYMOUSBLOCK: 60 image = Globals.getImage( "D_ANONYMOUSBLOCK" ); 61 break; 62 55 63 default: 56 64 image = Globals.getImage( dTypeToChars( l.DType ) ); … … 122 130 private void addTreeItem( CAnalyzerTreeNode analyzerNode, TreeItem treeItem ) 123 131 { 132 int skipDTYPE = D_MODULE | D_PARAMETER; 133 134 version( SHOWBLOCK ) 135 { 136 } 137 else 138 { 139 skipDTYPE = skipDTYPE | D_BLOCK; 140 } 141 124 142 // 有子節點 125 143 foreach( CAnalyzerTreeNode t; analyzerNode.getAllLeaf() ) 126 144 { 127 if( !( t.DType & ( D_MODULE | D_BLOCK | D_PARAMETER )) )145 if( !( t.DType & skipDTYPE ) ) 128 146 { 129 147 TreeItem tItem; … … 197 215 } 198 216 217 int skipDTYPE = D_MODULE | D_PARAMETER; 218 219 version( SHOWBLOCK ) 220 { 221 } 222 else 223 { 224 skipDTYPE = skipDTYPE | D_BLOCK; 225 } 226 199 227 foreach( CAnalyzerTreeNode t; newLeafs ) 200 228 { 201 if( !( t.DType & ( D_MODULE | D_BLOCK | D_PARAMETER )) )229 if( !( t.DType & skipDTYPE ) ) 202 230 { 203 231 TreeItem tItem; … … 269 297 title = ( l.typeIdentifier.length ? l.typeIdentifier ~ " = " : "" ) ~ l.identifier ~ 270 298 ( l.parameterString.length ? " : " ~ l.parameterString : "" ); 271 } 299 } 300 else if( t & D_MIXIN ) 301 { 302 title = l.identifier ~ ( l.parameterString.length ? " !(" ~ l.parameterString ~ ")" : "" ); 303 } 304 else if( t & D_ANONYMOUSBLOCK ) 305 { 306 title = "-anonymous-"; 307 } 272 308 else 273 309 { trunk/current/poseidon/poseidon/controller/property/parserpage.d
r231 r233 18 18 class ParserPage : AbstractPage 19 19 { 20 private Button btnUseCodeCompletion, btnOnlyClassBorwser, btnAutoAll, btnShowAllMember, btnUseDefaultParser,21 btnCaseSensitive, btnBackgroundLoad, btnUpdateParserLive;22 private Shell shell;23 private List listDefaultParsers;24 private Text txtLetters, txtMakeDefaultParser;20 private Button chkUseCodeCompletion, chkOnlyClassBorwser, chkAutoAll, chkShowAllMember, chkUseDefaultParser, 21 chkShowType, chkCaseSensitive, chkBackgroundLoad, chkUpdateParserLive; 22 private Shell shell; 23 private List listDefaultParsers; 24 private Text txtLetters, txtMakeDefaultParser; 25 25 26 26 this( Composite parent, IPropertyPage parentPage, void delegate(bool) dirtyListener ) … … 33 33 public void applyChanges() 34 34 { 35 Globals.useCodeCompletion = btnUseCodeCompletion.getSelection();35 Globals.useCodeCompletion = chkUseCodeCompletion.getSelection(); 36 36 if( !Globals.useCodeCompletion ) 37 37 { 38 38 Globals.parseAllModule = 0; 39 btnAutoAll.setSelection( false );39 chkAutoAll.setSelection( false ); 40 40 Globals.updateParseLive = 0; 41 btnUpdateParserLive.setSelection( false );41 chkUpdateParserLive.setSelection( false ); 42 42 Globals.useDefaultParser = 0; 43 btnUseDefaultParser.setSelection( false );43 chkUseDefaultParser.setSelection( false ); 44 44 } 45 45 else 46 46 { 47 Globals.parseAllModule = btnAutoAll.getSelection();48 Globals.updateParseLive = btnUpdateParserLive.getSelection();49 Globals.useDefaultParser = btnUseDefaultParser.getSelection();47 Globals.parseAllModule = chkAutoAll.getSelection(); 48 Globals.updateParseLive = chkUpdateParserLive.getSelection(); 49 Globals.useDefaultParser = chkUseDefaultParser.getSelection(); 50 50 } 51 51 … … 57 57 58 58 Globals.lanchLetterCount = count; 59 Globals.showOnlyClassBrowser = btnOnlyClassBorwser.getSelection(); 60 Globals.backLoadParser = btnBackgroundLoad.getSelection(); 61 Globals.parserCaseSensitive = btnCaseSensitive.getSelection(); 62 Globals.showAllMember = btnShowAllMember.getSelection(); 59 Globals.showOnlyClassBrowser = chkOnlyClassBorwser.getSelection(); 60 Globals.backLoadParser = chkBackgroundLoad.getSelection(); 61 Globals.parserCaseSensitive = chkCaseSensitive.getSelection(); 62 Globals.showAllMember = chkShowAllMember.getSelection(); 63 Globals.showType = chkShowType.getSelection(); 64 63 65 64 66 setDirty( false ); … … 98 100 setLayout( LayoutShop.createGridLayout( 1 ) ); 99 101 100 with( btnUseCodeCompletion = new Button( this, DWT.CHECK ) )102 with( chkUseCodeCompletion = new Button( this, DWT.CHECK ) ) 101 103 { 102 104 setData( LANG_ID, "pap.use" ); … … 106 108 } 107 109 108 with( btnOnlyClassBorwser = new Button( this, DWT.CHECK ) )110 with( chkOnlyClassBorwser = new Button( this, DWT.CHECK ) ) 109 111 { 110 112 setData( LANG_ID, "pap.only" ); … … 114 116 } 115 117 116 with( btnAutoAll = new Button( this, DWT.CHECK ) )118 with( chkAutoAll = new Button( this, DWT.CHECK ) ) 117 119 { 118 120 setData( LANG_ID, "pap.all" ); … … 122 124 } 123 125 124 with( btnUpdateParserLive = new Button( this, DWT.CHECK ) )126 with( chkUpdateParserLive = new Button( this, DWT.CHECK ) ) 125 127 { 126 128 setData( LANG_ID, "pap.update" ); … … 130 132 } 131 133 132 with( btnShowAllMember = new Button( this, DWT.CHECK ) )134 with( chkShowAllMember = new Button( this, DWT.CHECK ) ) 133 135 { 134 136 setData( LANG_ID, "pap.show" ); … … 138 140 } 139 141 140 with( btnCaseSensitive = new Button( this, DWT.CHECK ) ) 142 with( chkShowType = new Button( this, DWT.CHECK ) ) 143 { 144 setData( LANG_ID, "pap.showlisttype" ); 145 setSelection( Globals.showType ); 146 //setLayoutData( LayoutDataShop.createGridData( GridData.GRAB_HORIZONTAL, 1 ) ); 147 handleEvent(null, DWT.Selection, &onAction); 148 } 149 150 with( chkCaseSensitive = new Button( this, DWT.CHECK ) ) 141 151 { 142 152 setData( LANG_ID, "pap.case" ); … … 146 156 } 147 157 148 with( btnUseDefaultParser = new Button( this, DWT.CHECK ) )158 with( chkUseDefaultParser = new Button( this, DWT.CHECK ) ) 149 159 { 150 160 setData( LANG_ID, "pap.load_default" ); … … 154 164 } 155 165 156 with( btnBackgroundLoad = new Button( this, DWT.CHECK ) )166 with( chkBackgroundLoad = new Button( this, DWT.CHECK ) ) 157 167 { 158 168 setData( LANG_ID, "pap.thread" ); … … 196 206 setFont( font ); 197 207 198 int ListHeight = getItemHeight() * 8;208 int ListHeight = getItemHeight() * 7; 199 209 Rectangle trim = computeTrim( 0, 0, 0, ListHeight ); 200 210 innergridData.heightHint = trim.height; … … 256 266 public void restoreDefaults() 257 267 { 258 btnUseCodeCompletion.setSelection( true ); 259 btnAutoAll.setSelection( false ); 260 btnOnlyClassBorwser.setSelection( false ); 261 btnUpdateParserLive.setSelection( false ); 262 btnShowAllMember.setSelection( false ); 263 btnUseDefaultParser.setSelection( true ); 264 btnBackgroundLoad.setSelection( false ); 265 btnCaseSensitive.setSelection( false ); 268 chkUseCodeCompletion.setSelection( true ); 269 chkAutoAll.setSelection( false ); 270 chkOnlyClassBorwser.setSelection( false ); 271 chkUpdateParserLive.setSelection( false ); 272 chkShowAllMember.setSelection( false ); 273 chkShowType.setSelection( false ); 274 chkUseDefaultParser.setSelection( true ); 275 chkBackgroundLoad.setSelection( false ); 276 chkCaseSensitive.setSelection( false ); 266 277 txtLetters.setText( "2" ); 267 278 listDefaultParsers.add( "std" ); trunk/current/poseidon/poseidon/globals.d
r232 r233 44 44 static public int updateParseLive = 1; 45 45 static public int showAllMember; 46 static public int showType; 46 47 static public int useDefaultParser; 47 48 static public int parserCaseSensitive; … … 282 283 images["D_INTERFACE-PRIVATE"] = DWTResourceManager.getImage("interface_private_obj.gif"); 283 284 images["D_INTERFACE-PROTECTED"] = DWTResourceManager.getImage("interface_protected_obj.gif"); 284 images["D_MIXIN"] = DWTResourceManager.getImage("mixin_ obj.gif");285 images["D_MIXIN"] = DWTResourceManager.getImage("mixin_template_obj.gif"); 285 286 images["D_MODULE"] = DWTResourceManager.getImage("module_obj.gif"); 286 287 images["D_STATICCTOR"] = DWTResourceManager.getImage("static_ctor_obj.gif"); … … 302 303 images["D_VERSIONSPEC"] = DWTResourceManager.getImage("version_spec_obj.gif"); 303 304 images["D_DEBUGSPEC"] = DWTResourceManager.getImage("debug_spec_obj.gif"); 305 images["D_ANONYMOUSBLOCK"] = DWTResourceManager.getImage("anonymousblock_obj.gif"); 304 306 } 305 307 … … 564 566 if( at && at.GetValue().length > 0 ) showAllMember = std.string.atoi( at.GetValue() ); 565 567 568 at = child.getAttrib("showtype"); 569 if( at && at.GetValue().length > 0 ) showType = std.string.atoi( at.GetValue() ); 570 566 571 at = child.getAttrib("casesensitive"); 567 572 if( at && at.GetValue().length > 0 ) parserCaseSensitive = std.string.atoi( at.GetValue() ); … … 699 704 node.addAttrib( "live", std.string.toString( updateParseLive ) ); 700 705 node.addAttrib( "member", std.string.toString( showAllMember ) ); 706 node.addAttrib( "showtype", std.string.toString( showType ) ); 701 707 node.addAttrib( "casesensitive", std.string.toString( parserCaseSensitive ) ); 702 708 node.addAttrib( "lettercount", std.string.toString( lanchLetterCount ) ); trunk/current/poseidon/poseidon/intellisense/autocomplete.d
r232 r233 11 11 } 12 12 13 const char[][] keywords_d = [ /*"Pascal", "Windows",*/ "abstract", "alias", "align", "asm", "assert", "auto", "body", "bool", "break", "byte",14 "case", "cast", "catch", "cdouble", "cent", "cfloat", "char", "class", "const", "continue",15 "creal", "dchar", "debug", "default", "delegate", "delete", "deprecated", "do", "double",16 "else", "enum", "export", "extern", "false", "final", "finally", "float", "for", "foreach", "function",17 "goto", "idouble", "if", "ifloat", "import", "inout", "int", "interface", "invariant",18 "ireal", "is", "lazy", "long", "mixin", "module", "new", "null",/*19 "opAddAssign", "opAndAssign", "opApply", "opCall", "opCast", "opCatAssign", "opDivAssign",20 "opIndex", "opIndexAssign", "opMulAssign", "opModAssign", "opOrAssign", "opPostInc",21 "opPostDec", "opSubAssign", "opXorAssign", "opSlice", "opShlAssign", "opShrAssign", "opUShrAssign",*/22 "out", "override", "package", "pragma", "private", "protected", "public",23 "real", "ref", "return", "scope", "short", "static", "struct", "super", "switch", "synchronized",24 "template", "this", "throw", "true", "try", "typedef", "typeid", "typeof",25 "ubyte", "ucent", "uint", "ulong", "union", "unittest", "ushort",26 "version", "void", "volatile", "wchar", "while", "with" ];27 28 13 /* 29 14 interface IComplete … … 35 20 // KeywordComplete 36 21 class KeywordComplete//:IComplete 37 { 22 { 23 const char[][] keywords_d = [ /*"Pascal", "Windows",*/ "abstract", "alias", "align", "asm", "assert", "auto", "body", "bool", "break", "byte", 24 "case", "cast", "catch", "cdouble", "cent", "cfloat", "char", "class", "const", "continue", 25 "creal", "dchar", "debug", "default", "delegate", "delete", "deprecated", "do", "double", 26 "else", "enum", "export", "extern", "false", "final", "finally", "float", "for", "foreach", "function", 27 "goto", "idouble", "if", "ifloat", "import", "inout", "int", "interface", "invariant", 28 "ireal", "is", "lazy", "long", "mixin", "module", "new", "null",/* 29 "opAddAssign", "opAndAssign", "opApply", "opCall", "opCast", "opCatAssign", "opDivAssign", 30 "opIndex", "opIndexAssign", "opMulAssign", "opModAssign", "opOrAssign", "opPostInc", 31 "opPostDec", "opSubAssign", "opXorAssign", "opSlice", "opShlAssign", "opShrAssign", "opUShrAssign",*/ 32 "out", "override", "package", "pragma", "private", "protected", "public", 33 "real", "ref", "return", "scope", "short", "static", "struct", "super", "switch", "synchronized", 34 "template", "this", "throw", "true", "try", "typedef", "typeid", "typeof", 35 "ubyte", "ucent", "uint", "ulong", "union", "unittest", "ushort", 36 "version", "void", "volatile", "wchar", "while", "with" ]; 37 38 38 char[][] rootSearch( char[] root ) 39 39 { … … 42 42 43 43 return results; 44 } 44 } 45 46 /* 47 public char[][] rootSearch( char[] root ) 48 { 49 char[][] matches; 50 51 foreach( char[] s; keywords_d ) 52 { 53 if( s.length >= root.length ) 54 { 55 if( Globals.parserCaseSensitive ) 56 { 57 if( root == s[0..root.length] ) matches ~= s; 58 } 59 else 60 { 61 if( root == std.string.tolower( s[0..root.length] ) ) matches ~= s; 62 } 63 } 64 } 65 66 return matches; 67 } 68 */ 45 69 } 46 70 … … 405 429 } 406 430 407 if( Globals.parseAllModule ) setAdditionImportModules();431 if( Globals.parseAllModule && paths.length ) setAdditionImportModules(); 408 432 } 409 433 … … 637 661 } 638 662 639 char[][] setMemberImage( CAnalyzerTreeNode[] nodes )640 { 641 if( !nodes.length ) return null;663 char[][] setMemberImage( CAnalyzerTreeNode[] nodes, char[][] mixinWords = null ) 664 { 665 if( !nodes.length && !mixinWords.length ) return null; 642 666 643 667 char[][] words; … … 657 681 case D_ENUM: m = 6; break; 658 682 case D_PARAMETER: 659 words ~= ( t.identifier ~ "?24" );683 words ~= ( t.identifier ~ ( Globals.showType ? "::" ~ t.typeIdentifier : null ) ~ "?24" ); 660 684 continue; 661 685 break; … … 697 721 v = 2; 698 722 699 words ~= ( t.identifier ~ "?" ~ std.string.toString( m * 3 + v ) ); 700 } 723 if( m < 2 ) 724 words ~= ( t.identifier ~ ( Globals.showType ? "::" ~ t.typeIdentifier : null ) ~ "?" ~ std.string.toString( m * 3 + v ) ); 725 else 726 words ~= ( t.identifier ~ "?" ~ std.string.toString( m * 3 + v ) ); 727 } 728 729 if( mixinWords.length ) words ~= mixinWords; 701 730 702 731 if( !words.length ) return null; 703 732 704 scope CCharsSort!( char[] ) sortList = new CCharsSort!( char[] )( words ); 705 words = sortList.pop(); 706 707 char[] prevWord = words[0]; 708 char[][] newWords; 709 newWords ~= words[0]; 710 711 for( int i = 1; i < words.length; ++ i ) 712 { 713 if( words[i] != prevWord ) 714 { 715 prevWord = words[i]; 716 newWords ~= words[i]; 717 } 718 } 719 720 return newWords; 733 scope sortList = new CCharsSort!( char[] )( words ); 734 words = sortList.scintillaPop(); 735 736 return words; 721 737 } 722 738 … … 727 743 char[] ret; 728 744 729 //words = mruParser.rootSearch( word ); 745 /* 746 words = mruParser.rootSearch( word ); 730 747 words ~= keywordParser.rootSearch( word ); 731 748 … … 736 753 ret = std.string.join( uniques, "?21 " ) ~ "?21"; 737 754 } 738 755 */ 756 foreach( char[] s; keywordParser.rootSearch( word ) ) 757 words ~= ( s ~ "?21" ); 739 758 740 759 if( fileParser ) … … 751 770 752 771 CAnalyzerTreeNode[] importModules; 753 //if( getImport( "dummy", D_ALL, headNode, importModules, true ) !is null ) 754 //{ 755 getImport( "dummy", D_ALL, headNode, importModules, true ); 756 int DType = D_UDTS | D_FUNCTION | D_ALIAS | D_TYPEDEF | D_VARIABLE | D_IMPORT; 757 foreach( CAnalyzerTreeNode a; importModules ) 758 { 759 foreach( CAnalyzerTreeNode t; getMembers( DType, a ) ) 760 if( !( t.prot & ( D_Private | D_Protected ) ) ) treeNodesSum ~= t; 761 /* 762 foreach( CAnalyzerTreeNode t; a.getAllLeaf() ) 763 { 764 if( !( t.prot & D_Private ) && !( t.prot & D_Protected ) ) 765 if( t.DType & DType ) treeNodesSum ~= t; 766 } 767 */ 768 } 769 //} 770 } 771 772 if( treeNodesSum.length ) 773 { 774 CAnalyzerTreeNode[] treeNodes = rootSearch( word, treeNodesSum ); 775 treeWords = setMemberImage( treeNodes ); 776 777 if( treeWords.length ) 778 { 779 if( words.length ) 780 ret = ret ~ " " ~ std.string.join( treeWords, " " ); 781 else 782 ret = std.string.join( treeWords, " " ); 783 } 772 773 getImport( "dummy", D_ALL, headNode, importModules, true ); 774 int DType = D_UDTS | D_FUNCTION | D_ALIAS | D_TYPEDEF | D_VARIABLE | D_IMPORT; 775 foreach( CAnalyzerTreeNode a; importModules ) 776 { 777 foreach( CAnalyzerTreeNode t; getMembers( DType, a ) ) 778 if( !( t.prot & ( D_Private | D_Protected ) ) ) treeNodesSum ~= t; 779 } 780 } 781 782 CAnalyzerTreeNode[] treeNodes; 783 if( treeNodesSum.length ) treeNodes = rootSearch( word, treeNodesSum ); 784 treeWords = setMemberImage( treeNodes, words ); 785 if( treeWords.length ) ret = std.string.join( treeWords, " " ); 786 } 787 else 788 { 789 if( words.length ) 790 { 791 TArray!(char[]).sort( words, &icharCompare ); 792 char[][] uniques = TArray!(char[]).array_unique( words ); 793 ret = std.string.join( uniques, " " ); 784 794 } 785 795 } … … 863 873 } 864 874 865 CAnalyzerTreeNode rootNode = treeNode.getRoot(); 866 867 while( rootNode ) 868 { 869 foreach( CAnalyzerTreeNode t; getMembers( DType, rootNode ) ) 870 if( t.identifier == ident ) return t; 871 872 rootNode = rootNode.getRoot; 875 CAnalyzerTreeNode node = treeNode.getRoot(); 876 877 while( node ) 878 { 879 for( int i = 0; i < node.getLeafCount(); ++i ) 880 { 881 if( node[i].DType & ( D_VERSION | D_DEBUG ) ) 882 { 883 if( !( node.DType & ( D_VERSION | D_DEBUG ) ) ) 884 { 885 CAnalyzerTreeNode[] dummyClasses; 886 CAnalyzerTreeNode resultNode = getMemberAnalyzerTreeNode( ident, DType, node[i], dummyClasses ); 887 if( resultNode ) return resultNode; 888 } 889 } 890 else 891 { 892 if( node[i].DType & DType ) 893 if( node[i].identifier == ident ) return node[i]; 894 } 895 } 896 node = node.getRoot; 873 897 } 874 898 … … 885 909 { 886 910 if( !node.baseClass.length ) return; 887 888 char[][] className = std.string.split( treeNode.baseClass, "," );889 CAnalyzerTreeNode[] nestClasses;911 912 char[][] className = std.string.split( node.baseClass, "," ); 913 CAnalyzerTreeNode[] gotClasses; 890 914 891 915 … … 918 942 } 919 943 } 920 baseClassNodes ~= activeTreeNode; 921 nestClasses ~= activeTreeNode; 944 945 if( !MiscUtil.inArray( activeTreeNode, baseClassNodes ) ) 946 { 947 baseClassNodes ~= activeTreeNode; 948 gotClasses ~= activeTreeNode; 949 } 922 950 } 923 951 }else … … 932 960 } 933 961 } 934 baseClassNodes ~= activeTreeNode; 935 } 936 } 937 938 foreach( CAnalyzerTreeNode t; nestClasses ) 939 { 940 if( t.DType & D_INTERFACE ) _getNode( t ); 962 963 if( !MiscUtil.inArray( activeTreeNode, baseClassNodes ) ) 964 { 965 baseClassNodes ~= activeTreeNode; 966 gotClasses ~= activeTreeNode; 967 } 968 } 969 } 970 971 foreach( CAnalyzerTreeNode t; gotClasses ) 972 { 973 _getNode( t ); 941 974 } 942 975 … … 969 1002 continue; 970 1003 } 1004 else if( node[i].DType & D_MIXIN ) 1005 { 1006 CAnalyzerTreeNode mixinNode = getAnalyzerTreeNode( node[i].identifier, D_TEMPLATE, node[i], false ); 1007 if( mixinNode is null ) 1008 { 1009 CAnalyzerTreeNode[] dummyAnalyzers; 1010 mixinNode = getImport( node[i].identifier, D_TEMPLATE, node[i], dummyAnalyzers ); 1011 } 1012 1013 if( mixinNode !is null ) 1014 { 1015 results ~= getMembers( D_VARIABLE | D_UDTS | D_FUNCTION, mixinNode ); 1016 //bNotFriendClass = true; 1017 } 1018 1019 continue; 1020 } 971 1021 972 1022 if( node[i].DType & DType ) results ~= node[i]; … … 998 1048 continue; 999 1049 } 1050 else if( node[i].DType & D_MIXIN ) 1051 { 1052 CAnalyzerTreeNode mixinNode = getAnalyzerTreeNode( node[i].identifier, D_TEMPLATE, node[i], false ); 1053 if( mixinNode is null ) 1054 { 1055 CAnalyzerTreeNode[] dummyAnalyzers; 1056 mixinNode = getImport( node[i].identifier, D_TEMPLATE, node[i], dummyAnalyzers ); 1057 } 1058 1059 if( mixinNode !is null ) 1060 { 1061 mixinNode = getMemberAnalyzerTreeNode( ident, DType, mixinNode, baseClasses ); 1062 if( mixinNode !is null ) return mixinNode; 1063 } 1064 1065 continue; 1066 } 1000 1067 1001 1068 if( node[i].DType & DType ) … … 1062 1129 if( !( node.DType & ( D_VERSION | D_DEBUG ) ) ) 1063 1130 results ~= getMembers( DType, node[i] ); 1131 } 1132 else if( node[i].DType & D_MIXIN ) 1133 { 1134 if( !( node.DType & ( D_VERSION | D_DEBUG ) ) ) 1135 { 1136 CAnalyzerTreeNode mixinNode = getAnalyzerTreeNode( node[i].identifier, D_TEMPLATE, node[i], false ); 1137 if( mixinNode is null ) 1138 { 1139 CAnalyzerTreeNode[] dummyAnalyzers; 1140 mixinNode = getImport( node[i].identifier, D_TEMPLATE, node[i], dummyAnalyzers ); 1141 } 1142 1143 if( mixinNode !is null ) 1144 { 1145 results ~= getMembers( D_VARIABLE | D_UDTS | D_FUNCTION, mixinNode ); 1146 } 1147 } 1064 1148 } 1065 1149 else … … 1671 1755 } 1672 1756 1673 p rivateCAnalyzerTreeNode[] rootSearch( char[] root, CAnalyzerTreeNode[] allListings, int DType = D_ALL )1757 public CAnalyzerTreeNode[] rootSearch( char[] root, CAnalyzerTreeNode[] allListings, int DType = D_ALL ) 1674 1758 { 1675 1759 CAnalyzerTreeNode[] matches; trunk/current/poseidon/poseidon/intellisense/search.d
r188 r233 340 340 341 341 this( T[] elements ){ super( elements ); } 342 343 T[] scintillaPop() 344 { 345 T prevT = container[0]; 346 T[] newContainer; 347 348 newContainer ~= container[0]; 349 350 for( int i = 1; i < container.length; ++ i ) 351 { 352 if( container[i] != prevT ) 353 { 354 prevT = container[i]; 355 newContainer ~= container[i]; 356 } 357 } 358 359 // move underline-head words to tail 360 container = newContainer; 361 int i; 362 for( i = 0; i < container.length; ++ i ) 363 { 364 if( container[i].length ) 365 if( container[i][0] != '_' ) break; 366 } 367 368 if( i > 0 && i < container.length ) 369 newContainer = container[i..length] ~ container[0..i]; 370 371 return newContainer; 372 } 342 373 } 343 374 trunk/current/poseidon/poseidon/style/dstyle.d
r232 r233 138 138 // 加入mruParser 139 139 private void onAutoCSelection( SCNotifyEvent e ) 140 {/* 140 { 141 if( Globals.showType ) 142 { 143 ScintillaEx sc = cast(ScintillaEx) e.cData; 144 145 if( sc ) 146 { 147 sc.autoCCancel(); 148 int posColon = std.string.rfind( e.text, "::" ); 149 if( posColon > 0 ) 150 { 151 e.text = e.text[0..posColon]; 152 } 153 154 sc.setAnchor( e.lParam ); 155 sc.replaceSel( e.text ); 156 } 157 } 158 159 160 /* 141 161 Scintilla sc = cast(Scintilla) e.cData; 142 162 … … 168 188 if( ch == '.' ) 169 189 { 170 /+ 171 CAnalyzerTreeNode t = searchFunctionHead( sc ); 172 if( t ) 173 sGUI.toolMan.txtFunctionHead.setText( t.typeIdentifier ~ " " ~ t.identifier ~ "(" ~ t.parameterString ~ ")" ); 174 else 175 sGUI.toolMan.txtFunctionHead.setText( null ); 176 +/ 177 178 performDotCompletionAndFunctionToolTip( sc, false ); 190 sc.autoCCancel(); 191 //performDotCompletionAndFunctionToolTip( sc, false ); 179 192 } 180 193 else if( ch == '(' ) … … 192 205 if( Globals.updateParseLive ) addAnalyzerNodeLive( sc ); 193 206 } 194 195 performAutoComplete( sc ); 207 208 if( sc.autoCActive() ) return; 209 performDotCompletionAndFunctionToolTip( sc, false ); 210 //performAutoComplete( sc ); 196 211 } 197 212 catch( Exception e ) … … 204 219 } 205 220 206 static void performAutoComplete( ScintillaEx sc, bool forceComplete = false ) 221 /+ 222 void performAutoComplete( ScintillaEx sc, bool forceComplete = false ) 207 223 { 208 224 char[] word = readCurrentWord( sc ); … … 221 237 { 222 238 CAnalyzerTreeNode headNode = searchFunctionHead( sc );//findFunctionHead( sc ); 239 240 /* 241 if( headNode !is null ) 242 if( headNode.DType & D_BLOCK ) 243 if( headNode.baseClass == "with" ) performDotCompletionAndFunctionToolTip( sc, false ); 244 */ 245 246 char[][] currentWords = readCurrentWholeWord( sc ); 247 sGUI.outputPanel.appendLine( std.string.join( currentWords, "." ) ); 248 249 223 250 list = sAutoComplete.autoCSearch( word, headNode ); 224 251 } … … 227 254 } 228 255 } 256 +/ 257 private char[] getWithName( CAnalyzerTreeNode functionHeadNode ) 258 { 259 if( functionHeadNode !is null ) 260 if( functionHeadNode.DType & D_BLOCK ) 261 if( functionHeadNode.baseClass == "with" ) 262 { 263 if( functionHeadNode.typeIdentifier.length ) 264 return functionHeadNode.typeIdentifier; 265 else 266 return functionHeadNode.identifier; 267 } 268 269 return null; 270 } 271 229 272 230 273 private void performDotCompletionAndFunctionToolTip( Scintilla sc, bool bFunctionToolTip ) 231 274 { 232 char[][] currentWords = readCurrentWholeWord( sc ); 275 bool bDotEnd; 276 char[] typedWord, preList, withName, list, listToolTip; 277 char[][] currentWords = readCurrentWholeWord( sc, bFunctionToolTip, bDotEnd ); 278 CAnalyzerTreeNode functionHeadNode; 279 233 280 234 281 if( !currentWords.length ) return; 235 282 236 char[] list, listToolTip; 283 if( !bFunctionToolTip ) 284 { 285 if( !bDotEnd ) 286 { 287 if( currentWords.length == 1 ) 288 { 289 // maybe "with" 290 if ( currentWords[0].length >= Globals.lanchLetterCount ) 291 { 292 functionHeadNode = searchFunctionHead( sc ); 293 preList = sAutoComplete.autoCSearch( currentWords[0], functionHeadNode ); 294 } 295 296 withName = getWithName( functionHeadNode ); 297 if( !withName.length ) 298 { 299 if( preList.length ) sc.autoCShow( currentWords[0].length, preList ); 300 return; 301 } 302 else 303 { 304 typedWord = currentWords[0]; 305 currentWords.length = 0; 306 } 307 } 308 else 309 { 310 typedWord = currentWords[length-1]; 311 currentWords.length = currentWords.length - 1; 312 } 313 } 314 } 315 237 316 bool bIsImport = haveImportKeyWord( sc ); 238 317 239 318 if( !bIsImport ) 240 319 { 241 CAnalyzerTreeNode functionHeadNode = searchFunctionHead( sc ); 242 performAnalyzer( currentWords, functionHeadNode, list, listToolTip, bFunctionToolTip ); 320 if( functionHeadNode is null ) functionHeadNode = searchFunctionHead( sc ); 321 322 withName = getWithName( functionHeadNode ); 323 if( withName.length ) currentWords = withName ~ currentWords; 324 325 performAnalyzer( currentWords, typedWord, functionHeadNode, list, listToolTip, bFunctionToolTip ); 243 326 } 244 327 … … 360 443 list = sAutoComplete.projectImportParsers[sGUI.packageExp.getActiveProjectDir].perform( word ); 361 444 } 362 /+ 363 char[] word = readImportWord( sc ); 364 word = word.replace( ".", "\\" ); 365 word.strip(); 366 // TODO: Array out of bounds 367 try 368 { 369 if( word[--$] == '\\' ) 370 { 371 word = word[0..$-1]; 372 //MessageBox.showMsg(word); 373 } 374 list = sAutoComplete.importParser.autoCSearch(word); 375 } 376 catch( Exception e ) 377 { 378 Util.trace( e.toString() ); 379 } 380 +/ 381 } 382 383 if( list.length ) sc.autoCShow( 0, list ); 445 } 446 447 if( list.length ) 448 { 449 if( preList.length ) 450 { 451 list = list ~ " " ~ preList; 452 char[][] lists = std.string.split( list ); 453 scope sortList = new CCharsSort!( char[] )( lists ); 454 list = std.string.join( sortList.scintillaPop(), " " ); 455 } 456 457 sc.autoCShow( typedWord.length, list ); 458 if( typedWord.length ) sc.autoCSelect( typedWord ); 459 } 384 460 } 385 461 … … 387 463 388 464 389 private CAnalyzerTreeNode performAnalyzer( char[][] currentWords, CAnalyzerTreeNode functionHeadNode, 390 inout char[] list, inout char[] listToolTip, bool bFunctionToolTip ) 465 private CAnalyzerTreeNode performAnalyzer( char[][] currentWords, char[] typedWord, CAnalyzerTreeNode functionHeadNode, 466 inout char[] list, inout char[] listToolTip, 467 bool bFunctionToolTip ) 391 468 { 392 469 bool bIsArray, bIsFunction, bIsTemplateFunction, bNotFriendClass, bUseFunTip; … … 513 590 { 514 591 if( type.baseClass.length ) 515 list = symbolsToAutoCShow( type , bNotFriendClass, sAutoComplete.getBaseClassNode( type ) );592 list = symbolsToAutoCShow( typedWord, type, bNotFriendClass, sAutoComplete.getBaseClassNode( type ) ); 516 593 else 517 list = symbolsToAutoCShow( type , bNotFriendClass, baseClasses );594 list = symbolsToAutoCShow( typedWord, type, bNotFriendClass, baseClasses ); 518 595 } 519 596 … … 527 604 528 605 529 //if( !bIsFunction ) 530 //{ 531 //if( bFunctionToolTip ) 532 if( bUseFunTip ) 533 { 534 CAnalyzerTreeNode father = treeNode.getRoot(); 535 char[] oriIdentifier = treeNode.identifier; 536 if( father ) 606 if( bUseFunTip ) 607 { 608 CAnalyzerTreeNode father = treeNode.getRoot(); 609 char[] oriIdentifier = treeNode.identifier; 610 if( father ) 611 { // maybe function overload 612 foreach( CAnalyzerTreeNode t; father.getAllLeaf() ) 537 613 { 538 foreach( CAnalyzerTreeNode t; father.getAllLeaf() ) 539 { 540 if( t.identifier == oriIdentifier ) 541 listToolTip ~= ( t.typeIdentifier ~ " " ~ t.identifier ~ "(" ~ t.parameterString ~ ")\n" ); 542 } 614 if( t.identifier == oriIdentifier ) 615 listToolTip ~= ( t.typeIdentifier ~ " " ~ t.identifier ~ "(" ~ t.parameterString ~ ")\n" ); 543 616 } 544 else545 listToolTip ~= ( treeNode.typeIdentifier ~ " " ~ treeNode.identifier ~ "(" ~ treeNode.parameterString ~ ")\n" );546 617 } 547 618 else 548 return _getReturnType();549 //if( !treeNode.parameterString.length ) return _getReturnType();550 //}551 //else552 // return _getReturnType();619 listToolTip ~= ( treeNode.typeIdentifier ~ " " ~ treeNode.identifier ~ "(" ~ treeNode.parameterString ~ ")\n" ); 620 } 621 else 622 return _getReturnType(); 623 553 624 } 554 625 else if( treeNode.DType & D_UDTS ) … … 583 654 else if( treeNode.DType & D_ENUM ) 584 655 { 585 char[][] enumWords; 586 587 list = " min?21 max?21 sizeof?21"; 656 char[][] enumWords = [ "min?21", "max?21", "sizeof?21" ]; 588 657 589 658 foreach( CAnalyzerTreeNode t; treeNode.getAllLeaf() ) 590 659 enumWords ~= ( t.identifier ~ "?25" ); 591 660 592 scope CCharsSort!( char[] )sortList = new CCharsSort!( char[] )( enumWords );593 enumWords = sortList. pop();594 list = std.string.join( enumWords, " " ) ~ list;661 scope sortList = new CCharsSort!( char[] )( enumWords ); 662 enumWords = sortList.scintillaPop(); 663 list = std.string.join( enumWords, " " ); 595 664 596 665 return null; … … 630 699 } 631 700 632 list = symbolsToAutoCShow( t reeNode, bNotFriendClass, baseClasses );701 list = symbolsToAutoCShow( typedWord, treeNode, bNotFriendClass, baseClasses ); 633 702 return treeNode; 634 703 … … 736 805 if( type.baseClass.length ) baseClasses = sAutoComplete.getBaseClassNode( type ); 737 806 738 list = symbolsToAutoCShow( type , bNotFriendClass, baseClasses );807 list = symbolsToAutoCShow( typedWord, type, bNotFriendClass, baseClasses ); 739 808 return type; 740 809 } … … 745 814 { 746 815 char[] _list, _listToolTip; 747 CAnalyzerTreeNode typeTreeNode = performAnalyzer( splitTypeIdents, t reeNode, _list, _listToolTip, bFunctionToolTip );816 CAnalyzerTreeNode typeTreeNode = performAnalyzer( splitTypeIdents, typedWord, treeNode, _list, _listToolTip, bFunctionToolTip ); 748 817 if( typeTreeNode !is null ) 749 818 { 750 819 if( typeTreeNode.baseClass.length ) baseClasses = sAutoComplete.getBaseClassNode( typeTreeNode ); 751 list = symbolsToAutoCShow( type TreeNode, bNotFriendClass, baseClasses );820 list = symbolsToAutoCShow( typedWord, typeTreeNode, bNotFriendClass, baseClasses ); 752 821 listToolTip = _listToolTip; 753 822 //MessageBox.showMessage( "ffff" ); … … 785 854 foreach( CAnalyzerTreeNode t; treeNode.getAllLeaf() ) 786 855 { 787 /+788 version( Windows )789 {790 if( t.DType & D_VERSION )791 {792 if( t.identifier == "Windows" || t.identifier == "Win32" )793 {794 activeTreeNode = sAutoComplete.getMemberAnalyzerTreeNode( word, D_ALL - D_BLOCK, t, baseClasses );795 baseClasses.length = 0;796 }797 798 if( activeTreeNode ) return activeTreeNode;799 }800 }801 +/802 803 804 856 if( t.DType == D_BLOCK ) 805 857 { … … 871 923 if( !( splitedModuleName[j] in bAlreadyImported ) ) 872 924 { 873 words ~= splitedModuleName[j]; 925 if( typedWord.length ) 926 { 927 if( std.string.find( splitedModuleName[j], typedWord ) > -1 ) words ~= splitedModuleName[j]; 928 } 929 else 930 words ~= splitedModuleName[j]; 931 874 932 bAlreadyImported[splitedModuleName[j]] = true; 875 933 } … … 916 974 } 917 975 918 919 /+920 foreach( CAnalyzerTreeNode t; importModules )921 {922 if( t.getLeafCount() )923 {924 char[] moduleName = t.getLeaf( 0 ).identifier;925 926 foreach( CAnalyzerTreeNode tt; _getCurrentImport() )927 {928 if( tt.identifier == moduleName )929 if( tt.typeIdentifier.length )930 {931 moduleName = tt.typeIdentifier;932 break;933 }934 }935 936 char[][] splitedModuleName = std.string.split( moduleName, "." );937 938 939 if( splitedModuleName.length == 1 )940 {941 if( word == moduleName )942 {943 list ~= moduleToAutoCShow( t );944 bModuleImportCall = true;945 if( currentWords.length == 1 ) return null;else list.length = 0;946 }947 }948 949 if( currentWords.length < splitedModuleName.length )950 {951 int j;952 for( j = 0; j < currentWords.length; ++ j )953 {954 if( currentWords[j] != splitedModuleName[j] ) break;955 }956 957 if( j == currentWords.length )958 {959 if( !( splitedModuleName[j] in bAlreadyImported ) )960 {961 words ~= splitedModuleName[j];962 bAlreadyImported[splitedModuleName[j]] = true;963 }964 }965 }966 else967 {968 int j;969 for( j = 0; j < splitedModuleName.length; ++ j )970 {971 if( currentWords[j] != splitedModuleName[j] ) break;972 }973 974 //words.length = 0;975 if( currentWords.length == splitedModuleName.length )976 {977 if( j == splitedModuleName.length )978 {979 list ~= moduleToAutoCShow( t );980 return null;981 }982 }983 else if( currentWords.length > splitedModuleName.length )984 {985 if( index < splitedModuleName.length )986 {987 bContinue = true;988 continue;989 }990 991 if( j == splitedModuleName.length )992 {993 bModuleImportCall = false;994 CAnalyzerTreeNode[] _dummyClasses;995 CAnalyzerTreeNode treeNode = sAutoComplete.getMemberAnalyzerTreeNode( word, D_VARIABLE | D_UDTS | D_FUNCTION, t, _dummyClasses );996 bNotFriendClass = true;997 return _getType( treeNode );998 }999 }1000 }1001 }1002 }1003 +/1004 1005 976 1006 977 if( words.length ) 1007 978 { 1008 scope CCharsSort!( char[] )sortList = new CCharsSort!( char[] )( words );1009 words = sortList. pop();979 scope sortList = new CCharsSort!( char[] )( words ); 980 words = sortList.scintillaPop(); 1010 981 list = std.string.join( words, "?22 " ) ~ "?22"; 1011 982 //if( index == 0 ) bContinue = true; … … 1037 1008 int DType; 1038 1009 //if( bIsFunction ) DType = D_FUNCTION;else 1039 DType = D_ALL - D_IMPORT - D_MAINROOT - D_MODULE - D_UNITTEST -D_UNKNOWN; 1010 DType = D_ALL - D_IMPORT - D_MAINROOT - D_MODULE - D_UNITTEST -D_UNKNOWN - D_BLOCK - 1011 D_FUNLITERALS - D_CONDITIONSPEC - D_ANONYMOUSBLOCK - D_MIXIN; 1040 1012 1041 1013 baseClasses.length = 0; … … 1048 1020 activeTreeNode = sAutoComplete.getAnalyzerTreeNode( word, DType, functionHeadNode, true ); 1049 1021 1050 /+1051 // 找function內的內容1052 if( !activeTreeNode )1053 {1054 activeTreeNode = _lookBLOCK( functionHeadNode ); // Not Cool........1055 }1056 else1057 {1058 if( word == "this" ) activeTreeNode = null; // for class/interface pointer or ctor1059 }1060 +/1061 1062 1022 if( activeTreeNode && word == "this" ) activeTreeNode = null; // for class/interface pointer or ctor 1063 1023 1064 1065 1024 // 找繼承的BaseClass 1066 1025 if( !activeTreeNode ) … … 1356 1315 } 1357 1316 1358 private char[][] readCurrentWholeWord( Scintilla sc )1317 private char[][] readCurrentWholeWord( Scintilla sc, bool bFunctionToolTip, inout bool bDotEnd ) 1359 1318 { 1360 1319 char[] word; 1361 1320 dchar[] dword; 1362 1321 int pos = sc.getCurrentPos() - 2; 1322 1323 if( !bFunctionToolTip ) 1324 { 1325 if( sc.getCharAt( pos + 1 ) != '.' ) 1326 { 1327 pos ++; 1328 bDotEnd = false; 1329 } 1330 else 1331 bDotEnd = true; 1332 } 1333 1363 1334 dchar ch = sc.getCharAt( pos ); 1364 1335 1365 1336 int parenCount, hCount; 1366 1337 bool bBlockCommet, bResetCommet; 1338 1339 1367 1340 1368 1341 bool _wordBreak() … … 1713 1686 if( t.DType & D_VARIABLE ) 1714 1687 { 1715 activeTreeNode.addLeaf( t.prot, t.DType, t.identifier, t.typeIdentifier, sc.lineFromPosition( sc.getCurrentPos() ), 1716 t.parameterString, t.baseClass ); 1688 if( validateVariable( t.identifier ) ) 1689 { 1690 activeTreeNode.addLeaf( t.prot, t.DType, t.identifier, t.typeIdentifier, sc.lineFromPosition( sc.getCurrentPos() ), 1691 t.parameterString, t.baseClass ); 1692 } 1717 1693 1718 1694 //activeTreeNode = activeTreeNode.getLeaf( activeTreeNode.getLeafCount() - 1 ); … … 2000 1976 2001 1977 2002 private char[] symbolsToAutoCShow( CAnalyzerTreeNode treeNode, bool bNotFriendClass, CAnalyzerTreeNode[] baseClasses )1978 private char[] symbolsToAutoCShow( char[] typedWord, CAnalyzerTreeNode treeNode, bool bNotFriendClass, CAnalyzerTreeNode[] baseClasses ) 2003 1979 { 2004 1980 CAnalyzerTreeNode[] nodes; 2005 1981 2006 /+2007 void _getName( CAnalyzerTreeNode treeNode, bool bNotFriendClass )2008 {2009 int DType = D_VARIABLE | D_UDTS | D_FUNCTION;2010 2011 char[][] projectVersions = sGUI.packageExp.activeProject.getVersionCondition();2012 char[][] projectDebugs = sGUI.packageExp.activeProject.getDebugCondition();2013 2014 for( int i = 0; i < treeNode.getLeafCount; ++ i )2015 {2016 if( treeNode[i].DType & ( D_VERSION | D_DEBUG ) )2017 {2018 if( sAutoComplete.checkCondition( treeNode[i], ( i > 0 ? treeNode[i-1] : null ), projectVersions, projectDebugs ) )2019 {2020 _getName( treeNode[i], bNotFriendClass );2021 }2022 2023 continue;2024 }2025 2026 if( treeNode[i].DType & DType )2027 {2028 if( Globals.showAllMember )2029 nodes ~= treeNode[i];2030 else2031 {2032 if( !bNotFriendClass )2033 nodes ~= treeNode[i];2034 else2035 if( !( treeNode[i].prot & ( D_Private | D_Protected ) ) ) nodes ~= treeNode[i];2036 }2037 }2038 }2039 }2040 2041 _getName( treeNode, bNotFriendClass );2042 2043 2044 if( baseClasses.length )2045 {2046 foreach( CAnalyzerTreeNode t; baseClasses )2047 {2048 _getName( t, true );2049 }2050 }2051 +/2052 2053 1982 CAnalyzerTreeNode[] memberNodes = sAutoComplete.getMembers( D_VARIABLE | D_UDTS | D_FUNCTION, treeNode ); 2054 foreach( CAnalyzerTreeNode t; sAutoComplete.getBaseClassNode( treeNode ) ) 2055 { 2056 memberNodes ~= sAutoComplete.getMembers( D_VARIABLE | D_UDTS | D_FUNCTION, treeNode ); 2057 } 1983 1984 foreach( CAnalyzerTreeNode t; baseClasses ) 1985 memberNodes ~= sAutoComplete.getMembers( D_VARIABLE | D_UDTS | D_FUNCTION, t ); 2058 1986 2059 1987 foreach( CAnalyzerTreeNode t; memberNodes ) … … 2069 1997 } 2070 1998 } 1999 2000 if( typedWord.length ) 2001 nodes = sAutoComplete.rootSearch( typedWord, nodes ); 2071 2002 2072 2003 char[][] words = sAutoComplete.setMemberImage( nodes ); … … 2193 2124 char[] semiWord; 2194 2125 2195 while( semiChar != ';' && semiChar != '}' && semiChar != '{' && semiChar != ':' ) 2196 { 2126 while( semiChar != ';' && semiChar != '}' && semiChar != '{' ) 2127 { 2128 if( types != 0 ) 2129 if( semiChar == ':' ) break; 2130 2197 2131 if( semiChar != '\n' && semiChar !='\t' && semiChar != '\r' ) 2198 2132 if( semiChar < 128 ) semiWord ~= semiChar; … … 2238 2172 if( treeNodes.length ) return treeNodes[0];else return null; 2239 2173 } 2240 else if( s == "else" || s == "try" || s == "catch" || s == "finally" || s == "debug" )2174 else if( s == "else" || s == "try" || s == "catch" || s == "finally" || s == "debug" || s == "do" ) 2241 2175 { 2242 2176 lineBlocks ~= sc.lineFromPosition( posLeftParen ) + 1; … … 2371 2305 } 2372 2306 } 2307 else 2308 { 2309 if( types == 0 ) lineBlocks ~= sc.lineFromPosition( posLeftParen ) + 1; 2310 } 2311 2373 2312 return null; 2374 2313 } … … 2378 2317 foreach( CAnalyzerTreeNode t; node.getAllLeaf() ) 2379 2318 { 2380 if( t.DType & D_BLOCK || t.DType & D_FUNLITERALS)2319 if( t.DType & ( D_BLOCK | D_FUNLITERALS | D_ANONYMOUSBLOCK ) ) 2381 2320 if( t.lineNumber == lineNum ) return t; 2382 2321 } … … 2537 2476 } 2538 2477 2478 private bool validateVariable( char[] var ) 2479 { 2480 foreach( char c; var ) 2481 { 2482 if( c < 64 || c > 122 ) return false; 2483 if( c > 90 && c < 97 ) 2484 if( c != 95 ) return false; 2485 } 2486 2487 return true; 2488 } 2489 2490 private CAnalyzerTreeNode getOverloadFunction( CAnalyzerTreeNode oneFunctionNode ) 2491 { 2492 if( oneFunctionNode is null ) return null; 2493 2494 // check if function overload 2495 CAnalyzerTreeNode aboveNode = oneFunctionNode.getRoot; 2496 if( aboveNode !is null ) 2497 { 2498 CAnalyzerTreeNode[] overloadFunctionNodes; 2499 foreach( CAnalyzerTreeNode t; aboveNode.getAllLeaf() ) 2500 { 2501 if( t.identifier == oneFunctionNode.identifier && ( t.DType & D_FUNCTION ) ) 2502 { 2503 if( t.typeIdentifier != "void" ) overloadFunctionNodes ~= t; 2504 } 2505 } 2506 2507 if( !overloadFunctionNodes.length ) 2508 return oneFunctionNode; 2509 else if( !overloadFunctionNodes.length == 1 ) 2510 return overloadFunctionNodes[0]; 2511 else 2512 { 2513 2514 2515 } 2516 } 2517 2518 return oneFunctionNode; 2519 } 2520 2539 2521 } // end of class DStyle
