This commit was manufactured by cvs2svn to create tag

'wxPython-0_5_3'.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/tags/wxPython-0_5_3@1524 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Bryan Petty
1999-01-30 08:18:32 +00:00
parent 5b28ebd877
commit 2d9bf780b8
3538 changed files with 0 additions and 653335 deletions

View File

@@ -1,739 +0,0 @@
##############################################################################
# Name: Makefile
# Purpose: Unix makefile for helpgen project
# Author: Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
# Modified by:
# Created: 06/01/99
# RCS-ID: $Id$
# Copyright: (c) 1999 VZ
# Licence: GPL
##############################################################################
# vi: set tw=0 noet ts=8 sw=8:
.SUFFIXES: .cpp
##############################################################################
# variables
##############################################################################
PROG = HelpGen
SRCS = src/cjparser.cpp\
src/markup.cpp\
src/scriptbinder.cpp\
src/srcparser.cpp\
src/ifcontext.cpp\
src/HelpGen.cpp\
src/sourcepainter.cpp\
src/wx/string.cpp\
src/wx_extra_imps.cpp\
src/wx/object.cpp\
src/wx/hash.cpp\
src/wx/log.cpp\
src/wx/file.cpp\
src/wx/dynarray.cpp\
src/wx/list.cpp
OBJS = obj/cjparser.o\
obj/markup.o\
obj/scriptbinder.o\
obj/srcparser.o\
obj/ifcontext.o\
obj/HelpGen.o\
obj/sourcepainter.o\
obj/wx/string.o\
obj/wx_extra_imps.o\
obj/wx/object.o\
obj/wx/hash.o\
obj/wx/log.o\
obj/wx/file.o\
obj/wx/dynarray.o\
obj/wx/list.o
# tested with egcs 1.1.1 (add more compilers here)
CC = g++
DEFINES = -DwxUSE_NOGUI=1 -D__UNIX__ -D__WXGTK__ -DHAVE_VSNPRINTF
# this might not work with some versions of gcc - try just -g then
DEBUG = -ggdb -D__WXDEBUG__
INCLUDE = -I./include
CPPFLAGS = $(INCLUDE) $(DEFINES) $(DEBUG) -c -Wall
##############################################################################
# rules
##############################################################################
# building the program
obj/%.o: src/%.cpp
$(CC) $(CPPFLAGS) -o $@ $<
all: $(PROG)
$(PROG) : $(OBJS)
$(CC) -o $(PROG) $(DEBUG) -Wall $(OBJS)
# create the links
links: include/wx src/wx
ln -sf ../../include/wx include/wx
ln -sf ../../src/common src/wx
# this requires exuberant ctags version 2.x or later
ctags: tags
ctags -i mCF --lang=c++ include/*.h src/*.cpp
depend:
makedepend $(INCLUDE) $(DEFINES) -I/usr/include/g++ -I/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include $(SRCS)
clean:
rm -f $(OBJS) $(PROG) core
# DO NOT DELETE
src/cjparser.o: ./include/wx/wxprec.h ./include/wx/wx.h
src/cjparser.o: ./include/wx/wx/setup.h ./include/wx/wx/wx/gtk/setup.h
src/cjparser.o: ./include/wx/wx/defs.h
src/cjparser.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h
src/cjparser.o: ./include/wx/wx/wx/version.h ./include/wx/wx/string.h
src/cjparser.o: /usr/include/string.h /usr/include/features.h
src/cjparser.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
src/cjparser.o: /usr/include/stdio.h /usr/include/libio.h
src/cjparser.o: /usr/include/_G_config.h /usr/include/gnu/types.h
src/cjparser.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h
src/cjparser.o: /usr/include/stdio_lim.h
src/cjparser.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/limits.h
src/cjparser.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/syslimits.h
src/cjparser.o: /usr/include/stdlib.h /usr/include/sys/types.h
src/cjparser.o: /usr/include/time.h /usr/include/endian.h
src/cjparser.o: /usr/include/bytesex.h /usr/include/sys/select.h
src/cjparser.o: /usr/include/selectbits.h /usr/include/alloca.h
src/cjparser.o: ./include/wx/wx/wx/debug.h /usr/include/assert.h
src/cjparser.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h
src/cjparser.o: ./include/wx/wx/log.h ./include/wx/wx/window.h
src/cjparser.o: ./include/wx/wx/wx/gtk/window.h ./include/wx/object.h
src/cjparser.o: ./include/wx/wx/memory.h ./include/wx/list.h
src/cjparser.o: ./include/wx/event.h ./include/wx/wx/gdicmn.h
src/cjparser.o: ./include/wx/wx/wx/hash.h ./include/wx/wx/wx/colour.h
src/cjparser.o: ./include/wx/wx/wx/wx/gtk/colour.h ./include/wx/gdiobj.h
src/cjparser.o: ./include/wx/wx/gtk/gdiobj.h ./include/wx/palette.h
src/cjparser.o: ./include/wx/wx/gtk/palette.h ./include/wx/validate.h
src/cjparser.o: ./include/wx/cursor.h ./include/wx/wx/gtk/cursor.h
src/cjparser.o: ./include/wx/font.h ./include/wx/wx/gtk/font.h
src/cjparser.o: ./include/wx/region.h ./include/wx/wx/gtk/region.h
src/cjparser.o: ./include/wx/accel.h ./include/wx/wx/gtk/accel.h
src/cjparser.o: ./include/wx/wx/panel.h ./include/wx/wx/wx/generic/panelg.h
src/cjparser.o: ./include/wx/wx/frame.h ./include/wx/wx/wx/gtk/frame.h
src/cjparser.o: ./include/wx/icon.h ./include/wx/wx/dc.h
src/cjparser.o: ./include/wx/wx/wx/gtk/dc.h ./include/wx/pen.h
src/cjparser.o: ./include/wx/wx/gtk/pen.h ./include/wx/brush.h
src/cjparser.o: ./include/wx/wx/gtk/brush.h ./include/wx/bitmap.h
src/cjparser.o: ./include/wx/wx/gtk/bitmap.h ./include/wx/wx/dcclient.h
src/cjparser.o: ./include/wx/wx/wx/gtk/dcclient.h ./include/wx/wx/dcmemory.h
src/cjparser.o: ./include/wx/wx/wx/gtk/dcmemory.h ./include/wx/wx/dcprint.h
src/cjparser.o: ./include/wx/wx/dcscreen.h ./include/wx/wx/wx/gtk/dcscreen.h
src/cjparser.o: ./include/wx/wx/button.h ./include/wx/wx/wx/gtk/button.h
src/cjparser.o: ./include/wx/control.h ./include/wx/wx/gtk/control.h
src/cjparser.o: ./include/wx/wx/bmpbuttn.h ./include/wx/wx/wx/gtk/bmpbuttn.h
src/cjparser.o: ./include/wx/wx/checkbox.h ./include/wx/wx/wx/gtk/checkbox.h
src/cjparser.o: ./include/wx/wx/choice.h ./include/wx/wx/wx/gtk/choice.h
src/cjparser.o: ./include/wx/wx/scrolbar.h ./include/wx/wx/wx/gtk/scrolbar.h
src/cjparser.o: ./include/wx/wx/stattext.h ./include/wx/wx/wx/gtk/stattext.h
src/cjparser.o: ./include/wx/wx/statbmp.h ./include/wx/wx/wx/gtk/statbmp.h
src/cjparser.o: ./include/wx/wx/statbox.h ./include/wx/wx/wx/gtk/statbox.h
src/cjparser.o: ./include/wx/wx/listbox.h ./include/wx/wx/wx/gtk/listbox.h
src/cjparser.o: ./include/wx/wx/radiobox.h ./include/wx/wx/wx/gtk/radiobox.h
src/cjparser.o: ./include/wx/wx/radiobut.h ./include/wx/wx/wx/gtk/radiobut.h
src/cjparser.o: ./include/wx/wx/textctrl.h ./include/wx/wx/wx/gtk/textctrl.h
src/cjparser.o: ./include/wx/wx/slider.h ./include/wx/wx/wx/gtk/slider.h
src/cjparser.o: ./include/wx/wx/gauge.h ./include/wx/wx/wx/gtk/gauge.h
src/cjparser.o: ./include/wx/wx/combobox.h ./include/wx/wx/wx/gtk/combobox.h
src/cjparser.o: ./include/wx/wx/menu.h ./include/wx/wx/wx/gtk/menu.h
src/cjparser.o: ./include/wx/menuitem.h ./include/wx/wx/gtk/menuitem.h
src/cjparser.o: ./include/wx/wx/app.h ./include/wx/wx/wx/gtk/app.h
src/cjparser.o: ./include/wx/wx/dialog.h ./include/wx/wx/wx/gtk/dialog.h
src/cjparser.o: ./include/wx/wx/timer.h ./include/wx/wx/wx/gtk/timer.h
src/cjparser.o: ./include/wx/wx/utils.h ./include/wx/wx/wx/filefn.h
src/cjparser.o: ./include/wx/wx/wx/process.h ./include/wx/wx/settings.h
src/cjparser.o: ./include/wx/wx/wx/gtk/settings.h ./include/wx/wx/layout.h
src/cjparser.o: ./include/wx/wx/mdi.h ./include/wx/wx/wx/gtk/mdi.h
src/cjparser.o: ./include/wx/toolbar.h ./include/wx/wx/gtk/tbargtk.h
src/cjparser.o: ./include/wx/wx/scrolwin.h
src/cjparser.o: ./include/wx/wx/wx/generic/scrolwin.h
src/cjparser.o: ./include/wx/wx/statusbr.h
src/cjparser.o: ./include/wx/wx/wx/generic/statusbr.h
src/cjparser.o: ./include/wx/wx/msgdlg.h ./include/wx/wx/wx/generic/msgdlgg.h
src/cjparser.o: ./include/wx/wx/choicdlg.h
src/cjparser.o: ./include/wx/wx/wx/generic/choicdgg.h
src/cjparser.o: ./include/wx/wx/textdlg.h
src/cjparser.o: ./include/wx/wx/wx/generic/textdlgg.h
src/cjparser.o: ./include/wx/wx/filedlg.h ./include/wx/wx/wx/gtk/filedlg.h
src/cjparser.o: ./include/wx/wx/dirdlg.h ./include/wx/wx/wx/generic/dirdlgg.h
src/cjparser.o: ./include/wx/treectrl.h ./include/wx/wx/generic/treectrl.h
src/cjparser.o: ./include/wx/wx/cmndata.h ./include/wx/wx/intl.h
src/cjparser.o: ./include/wx/wx/valtext.h ./include/cjparser.h
src/cjparser.o: ./include/srcparser.h ./include/markup.h
src/cjparser.o: /usr/include/memory.h
src/markup.o: ./include/wx/wxprec.h ./include/wx/wx.h ./include/wx/wx/setup.h
src/markup.o: ./include/wx/wx/wx/gtk/setup.h ./include/wx/wx/defs.h
src/markup.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h
src/markup.o: ./include/wx/wx/wx/version.h ./include/wx/wx/string.h
src/markup.o: /usr/include/string.h /usr/include/features.h
src/markup.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
src/markup.o: /usr/include/stdio.h /usr/include/libio.h
src/markup.o: /usr/include/_G_config.h /usr/include/gnu/types.h
src/markup.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h
src/markup.o: /usr/include/stdio_lim.h
src/markup.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/limits.h
src/markup.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/syslimits.h
src/markup.o: /usr/include/stdlib.h /usr/include/sys/types.h
src/markup.o: /usr/include/time.h /usr/include/endian.h
src/markup.o: /usr/include/bytesex.h /usr/include/sys/select.h
src/markup.o: /usr/include/selectbits.h /usr/include/alloca.h
src/markup.o: ./include/wx/wx/wx/debug.h /usr/include/assert.h
src/markup.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h
src/markup.o: ./include/wx/wx/log.h ./include/wx/wx/window.h
src/markup.o: ./include/wx/wx/wx/gtk/window.h ./include/wx/object.h
src/markup.o: ./include/wx/wx/memory.h ./include/wx/list.h
src/markup.o: ./include/wx/event.h ./include/wx/wx/gdicmn.h
src/markup.o: ./include/wx/wx/wx/hash.h ./include/wx/wx/wx/colour.h
src/markup.o: ./include/wx/wx/wx/wx/gtk/colour.h ./include/wx/gdiobj.h
src/markup.o: ./include/wx/wx/gtk/gdiobj.h ./include/wx/palette.h
src/markup.o: ./include/wx/wx/gtk/palette.h ./include/wx/validate.h
src/markup.o: ./include/wx/cursor.h ./include/wx/wx/gtk/cursor.h
src/markup.o: ./include/wx/font.h ./include/wx/wx/gtk/font.h
src/markup.o: ./include/wx/region.h ./include/wx/wx/gtk/region.h
src/markup.o: ./include/wx/accel.h ./include/wx/wx/gtk/accel.h
src/markup.o: ./include/wx/wx/panel.h ./include/wx/wx/wx/generic/panelg.h
src/markup.o: ./include/wx/wx/frame.h ./include/wx/wx/wx/gtk/frame.h
src/markup.o: ./include/wx/icon.h ./include/wx/wx/dc.h
src/markup.o: ./include/wx/wx/wx/gtk/dc.h ./include/wx/pen.h
src/markup.o: ./include/wx/wx/gtk/pen.h ./include/wx/brush.h
src/markup.o: ./include/wx/wx/gtk/brush.h ./include/wx/bitmap.h
src/markup.o: ./include/wx/wx/gtk/bitmap.h ./include/wx/wx/dcclient.h
src/markup.o: ./include/wx/wx/wx/gtk/dcclient.h ./include/wx/wx/dcmemory.h
src/markup.o: ./include/wx/wx/wx/gtk/dcmemory.h ./include/wx/wx/dcprint.h
src/markup.o: ./include/wx/wx/dcscreen.h ./include/wx/wx/wx/gtk/dcscreen.h
src/markup.o: ./include/wx/wx/button.h ./include/wx/wx/wx/gtk/button.h
src/markup.o: ./include/wx/control.h ./include/wx/wx/gtk/control.h
src/markup.o: ./include/wx/wx/bmpbuttn.h ./include/wx/wx/wx/gtk/bmpbuttn.h
src/markup.o: ./include/wx/wx/checkbox.h ./include/wx/wx/wx/gtk/checkbox.h
src/markup.o: ./include/wx/wx/choice.h ./include/wx/wx/wx/gtk/choice.h
src/markup.o: ./include/wx/wx/scrolbar.h ./include/wx/wx/wx/gtk/scrolbar.h
src/markup.o: ./include/wx/wx/stattext.h ./include/wx/wx/wx/gtk/stattext.h
src/markup.o: ./include/wx/wx/statbmp.h ./include/wx/wx/wx/gtk/statbmp.h
src/markup.o: ./include/wx/wx/statbox.h ./include/wx/wx/wx/gtk/statbox.h
src/markup.o: ./include/wx/wx/listbox.h ./include/wx/wx/wx/gtk/listbox.h
src/markup.o: ./include/wx/wx/radiobox.h ./include/wx/wx/wx/gtk/radiobox.h
src/markup.o: ./include/wx/wx/radiobut.h ./include/wx/wx/wx/gtk/radiobut.h
src/markup.o: ./include/wx/wx/textctrl.h ./include/wx/wx/wx/gtk/textctrl.h
src/markup.o: ./include/wx/wx/slider.h ./include/wx/wx/wx/gtk/slider.h
src/markup.o: ./include/wx/wx/gauge.h ./include/wx/wx/wx/gtk/gauge.h
src/markup.o: ./include/wx/wx/combobox.h ./include/wx/wx/wx/gtk/combobox.h
src/markup.o: ./include/wx/wx/menu.h ./include/wx/wx/wx/gtk/menu.h
src/markup.o: ./include/wx/menuitem.h ./include/wx/wx/gtk/menuitem.h
src/markup.o: ./include/wx/wx/app.h ./include/wx/wx/wx/gtk/app.h
src/markup.o: ./include/wx/wx/dialog.h ./include/wx/wx/wx/gtk/dialog.h
src/markup.o: ./include/wx/wx/timer.h ./include/wx/wx/wx/gtk/timer.h
src/markup.o: ./include/wx/wx/utils.h ./include/wx/wx/wx/filefn.h
src/markup.o: ./include/wx/wx/wx/process.h ./include/wx/wx/settings.h
src/markup.o: ./include/wx/wx/wx/gtk/settings.h ./include/wx/wx/layout.h
src/markup.o: ./include/wx/wx/mdi.h ./include/wx/wx/wx/gtk/mdi.h
src/markup.o: ./include/wx/toolbar.h ./include/wx/wx/gtk/tbargtk.h
src/markup.o: ./include/wx/wx/scrolwin.h
src/markup.o: ./include/wx/wx/wx/generic/scrolwin.h
src/markup.o: ./include/wx/wx/statusbr.h
src/markup.o: ./include/wx/wx/wx/generic/statusbr.h ./include/wx/wx/msgdlg.h
src/markup.o: ./include/wx/wx/wx/generic/msgdlgg.h ./include/wx/wx/choicdlg.h
src/markup.o: ./include/wx/wx/wx/generic/choicdgg.h ./include/wx/wx/textdlg.h
src/markup.o: ./include/wx/wx/wx/generic/textdlgg.h ./include/wx/wx/filedlg.h
src/markup.o: ./include/wx/wx/wx/gtk/filedlg.h ./include/wx/wx/dirdlg.h
src/markup.o: ./include/wx/wx/wx/generic/dirdlgg.h ./include/wx/treectrl.h
src/markup.o: ./include/wx/wx/generic/treectrl.h ./include/wx/wx/cmndata.h
src/markup.o: ./include/wx/wx/intl.h ./include/wx/wx/valtext.h
src/markup.o: ./include/markup.h
src/scriptbinder.o: ./include/wx/wxprec.h ./include/wx/wx.h
src/scriptbinder.o: ./include/wx/wx/setup.h ./include/wx/wx/wx/gtk/setup.h
src/scriptbinder.o: ./include/wx/wx/defs.h
src/scriptbinder.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h
src/scriptbinder.o: ./include/wx/wx/wx/version.h ./include/wx/wx/string.h
src/scriptbinder.o: /usr/include/string.h /usr/include/features.h
src/scriptbinder.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
src/scriptbinder.o: /usr/include/stdio.h /usr/include/libio.h
src/scriptbinder.o: /usr/include/_G_config.h /usr/include/gnu/types.h
src/scriptbinder.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h
src/scriptbinder.o: /usr/include/stdio_lim.h
src/scriptbinder.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/limits.h
src/scriptbinder.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/syslimits.h
src/scriptbinder.o: /usr/include/stdlib.h /usr/include/sys/types.h
src/scriptbinder.o: /usr/include/time.h /usr/include/endian.h
src/scriptbinder.o: /usr/include/bytesex.h /usr/include/sys/select.h
src/scriptbinder.o: /usr/include/selectbits.h /usr/include/alloca.h
src/scriptbinder.o: ./include/wx/wx/wx/debug.h /usr/include/assert.h
src/scriptbinder.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h
src/scriptbinder.o: ./include/wx/wx/log.h ./include/wx/wx/window.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/window.h ./include/wx/object.h
src/scriptbinder.o: ./include/wx/wx/memory.h ./include/wx/list.h
src/scriptbinder.o: ./include/wx/event.h ./include/wx/wx/gdicmn.h
src/scriptbinder.o: ./include/wx/wx/wx/hash.h ./include/wx/wx/wx/colour.h
src/scriptbinder.o: ./include/wx/wx/wx/wx/gtk/colour.h ./include/wx/gdiobj.h
src/scriptbinder.o: ./include/wx/wx/gtk/gdiobj.h ./include/wx/palette.h
src/scriptbinder.o: ./include/wx/wx/gtk/palette.h ./include/wx/validate.h
src/scriptbinder.o: ./include/wx/cursor.h ./include/wx/wx/gtk/cursor.h
src/scriptbinder.o: ./include/wx/font.h ./include/wx/wx/gtk/font.h
src/scriptbinder.o: ./include/wx/region.h ./include/wx/wx/gtk/region.h
src/scriptbinder.o: ./include/wx/accel.h ./include/wx/wx/gtk/accel.h
src/scriptbinder.o: ./include/wx/wx/panel.h
src/scriptbinder.o: ./include/wx/wx/wx/generic/panelg.h
src/scriptbinder.o: ./include/wx/wx/frame.h ./include/wx/wx/wx/gtk/frame.h
src/scriptbinder.o: ./include/wx/icon.h ./include/wx/wx/dc.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/dc.h ./include/wx/pen.h
src/scriptbinder.o: ./include/wx/wx/gtk/pen.h ./include/wx/brush.h
src/scriptbinder.o: ./include/wx/wx/gtk/brush.h ./include/wx/bitmap.h
src/scriptbinder.o: ./include/wx/wx/gtk/bitmap.h ./include/wx/wx/dcclient.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/dcclient.h
src/scriptbinder.o: ./include/wx/wx/dcmemory.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/dcmemory.h
src/scriptbinder.o: ./include/wx/wx/dcprint.h ./include/wx/wx/dcscreen.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/dcscreen.h
src/scriptbinder.o: ./include/wx/wx/button.h ./include/wx/wx/wx/gtk/button.h
src/scriptbinder.o: ./include/wx/control.h ./include/wx/wx/gtk/control.h
src/scriptbinder.o: ./include/wx/wx/bmpbuttn.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/bmpbuttn.h
src/scriptbinder.o: ./include/wx/wx/checkbox.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/checkbox.h
src/scriptbinder.o: ./include/wx/wx/choice.h ./include/wx/wx/wx/gtk/choice.h
src/scriptbinder.o: ./include/wx/wx/scrolbar.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/scrolbar.h
src/scriptbinder.o: ./include/wx/wx/stattext.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/stattext.h
src/scriptbinder.o: ./include/wx/wx/statbmp.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/statbmp.h
src/scriptbinder.o: ./include/wx/wx/statbox.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/statbox.h
src/scriptbinder.o: ./include/wx/wx/listbox.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/listbox.h
src/scriptbinder.o: ./include/wx/wx/radiobox.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/radiobox.h
src/scriptbinder.o: ./include/wx/wx/radiobut.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/radiobut.h
src/scriptbinder.o: ./include/wx/wx/textctrl.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/textctrl.h
src/scriptbinder.o: ./include/wx/wx/slider.h ./include/wx/wx/wx/gtk/slider.h
src/scriptbinder.o: ./include/wx/wx/gauge.h ./include/wx/wx/wx/gtk/gauge.h
src/scriptbinder.o: ./include/wx/wx/combobox.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/combobox.h ./include/wx/wx/menu.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/menu.h ./include/wx/menuitem.h
src/scriptbinder.o: ./include/wx/wx/gtk/menuitem.h ./include/wx/wx/app.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/app.h ./include/wx/wx/dialog.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/dialog.h ./include/wx/wx/timer.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/timer.h ./include/wx/wx/utils.h
src/scriptbinder.o: ./include/wx/wx/wx/filefn.h ./include/wx/wx/wx/process.h
src/scriptbinder.o: ./include/wx/wx/settings.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/settings.h
src/scriptbinder.o: ./include/wx/wx/layout.h ./include/wx/wx/mdi.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/mdi.h ./include/wx/toolbar.h
src/scriptbinder.o: ./include/wx/wx/gtk/tbargtk.h ./include/wx/wx/scrolwin.h
src/scriptbinder.o: ./include/wx/wx/wx/generic/scrolwin.h
src/scriptbinder.o: ./include/wx/wx/statusbr.h
src/scriptbinder.o: ./include/wx/wx/wx/generic/statusbr.h
src/scriptbinder.o: ./include/wx/wx/msgdlg.h
src/scriptbinder.o: ./include/wx/wx/wx/generic/msgdlgg.h
src/scriptbinder.o: ./include/wx/wx/choicdlg.h
src/scriptbinder.o: ./include/wx/wx/wx/generic/choicdgg.h
src/scriptbinder.o: ./include/wx/wx/textdlg.h
src/scriptbinder.o: ./include/wx/wx/wx/generic/textdlgg.h
src/scriptbinder.o: ./include/wx/wx/filedlg.h
src/scriptbinder.o: ./include/wx/wx/wx/gtk/filedlg.h ./include/wx/wx/dirdlg.h
src/scriptbinder.o: ./include/wx/wx/wx/generic/dirdlgg.h
src/scriptbinder.o: ./include/wx/treectrl.h
src/scriptbinder.o: ./include/wx/wx/generic/treectrl.h
src/scriptbinder.o: ./include/wx/wx/cmndata.h ./include/wx/wx/intl.h
src/scriptbinder.o: ./include/wx/wx/valtext.h /usr/include/malloc.h
src/scriptbinder.o: /usr/include/memory.h ./include/scriptbinder.h
src/scriptbinder.o: ./include/markup.h
src/srcparser.o: ./include/wx/wxprec.h ./include/wx/wx.h
src/srcparser.o: ./include/wx/wx/setup.h ./include/wx/wx/wx/gtk/setup.h
src/srcparser.o: ./include/wx/wx/defs.h
src/srcparser.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h
src/srcparser.o: ./include/wx/wx/wx/version.h ./include/wx/wx/string.h
src/srcparser.o: /usr/include/string.h /usr/include/features.h
src/srcparser.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
src/srcparser.o: /usr/include/stdio.h /usr/include/libio.h
src/srcparser.o: /usr/include/_G_config.h /usr/include/gnu/types.h
src/srcparser.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h
src/srcparser.o: /usr/include/stdio_lim.h
src/srcparser.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/limits.h
src/srcparser.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/syslimits.h
src/srcparser.o: /usr/include/stdlib.h /usr/include/sys/types.h
src/srcparser.o: /usr/include/time.h /usr/include/endian.h
src/srcparser.o: /usr/include/bytesex.h /usr/include/sys/select.h
src/srcparser.o: /usr/include/selectbits.h /usr/include/alloca.h
src/srcparser.o: ./include/wx/wx/wx/debug.h /usr/include/assert.h
src/srcparser.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h
src/srcparser.o: ./include/wx/wx/log.h ./include/wx/wx/window.h
src/srcparser.o: ./include/wx/wx/wx/gtk/window.h ./include/wx/object.h
src/srcparser.o: ./include/wx/wx/memory.h ./include/wx/list.h
src/srcparser.o: ./include/wx/event.h ./include/wx/wx/gdicmn.h
src/srcparser.o: ./include/wx/wx/wx/hash.h ./include/wx/wx/wx/colour.h
src/srcparser.o: ./include/wx/wx/wx/wx/gtk/colour.h ./include/wx/gdiobj.h
src/srcparser.o: ./include/wx/wx/gtk/gdiobj.h ./include/wx/palette.h
src/srcparser.o: ./include/wx/wx/gtk/palette.h ./include/wx/validate.h
src/srcparser.o: ./include/wx/cursor.h ./include/wx/wx/gtk/cursor.h
src/srcparser.o: ./include/wx/font.h ./include/wx/wx/gtk/font.h
src/srcparser.o: ./include/wx/region.h ./include/wx/wx/gtk/region.h
src/srcparser.o: ./include/wx/accel.h ./include/wx/wx/gtk/accel.h
src/srcparser.o: ./include/wx/wx/panel.h ./include/wx/wx/wx/generic/panelg.h
src/srcparser.o: ./include/wx/wx/frame.h ./include/wx/wx/wx/gtk/frame.h
src/srcparser.o: ./include/wx/icon.h ./include/wx/wx/dc.h
src/srcparser.o: ./include/wx/wx/wx/gtk/dc.h ./include/wx/pen.h
src/srcparser.o: ./include/wx/wx/gtk/pen.h ./include/wx/brush.h
src/srcparser.o: ./include/wx/wx/gtk/brush.h ./include/wx/bitmap.h
src/srcparser.o: ./include/wx/wx/gtk/bitmap.h ./include/wx/wx/dcclient.h
src/srcparser.o: ./include/wx/wx/wx/gtk/dcclient.h ./include/wx/wx/dcmemory.h
src/srcparser.o: ./include/wx/wx/wx/gtk/dcmemory.h ./include/wx/wx/dcprint.h
src/srcparser.o: ./include/wx/wx/dcscreen.h ./include/wx/wx/wx/gtk/dcscreen.h
src/srcparser.o: ./include/wx/wx/button.h ./include/wx/wx/wx/gtk/button.h
src/srcparser.o: ./include/wx/control.h ./include/wx/wx/gtk/control.h
src/srcparser.o: ./include/wx/wx/bmpbuttn.h ./include/wx/wx/wx/gtk/bmpbuttn.h
src/srcparser.o: ./include/wx/wx/checkbox.h ./include/wx/wx/wx/gtk/checkbox.h
src/srcparser.o: ./include/wx/wx/choice.h ./include/wx/wx/wx/gtk/choice.h
src/srcparser.o: ./include/wx/wx/scrolbar.h ./include/wx/wx/wx/gtk/scrolbar.h
src/srcparser.o: ./include/wx/wx/stattext.h ./include/wx/wx/wx/gtk/stattext.h
src/srcparser.o: ./include/wx/wx/statbmp.h ./include/wx/wx/wx/gtk/statbmp.h
src/srcparser.o: ./include/wx/wx/statbox.h ./include/wx/wx/wx/gtk/statbox.h
src/srcparser.o: ./include/wx/wx/listbox.h ./include/wx/wx/wx/gtk/listbox.h
src/srcparser.o: ./include/wx/wx/radiobox.h ./include/wx/wx/wx/gtk/radiobox.h
src/srcparser.o: ./include/wx/wx/radiobut.h ./include/wx/wx/wx/gtk/radiobut.h
src/srcparser.o: ./include/wx/wx/textctrl.h ./include/wx/wx/wx/gtk/textctrl.h
src/srcparser.o: ./include/wx/wx/slider.h ./include/wx/wx/wx/gtk/slider.h
src/srcparser.o: ./include/wx/wx/gauge.h ./include/wx/wx/wx/gtk/gauge.h
src/srcparser.o: ./include/wx/wx/combobox.h ./include/wx/wx/wx/gtk/combobox.h
src/srcparser.o: ./include/wx/wx/menu.h ./include/wx/wx/wx/gtk/menu.h
src/srcparser.o: ./include/wx/menuitem.h ./include/wx/wx/gtk/menuitem.h
src/srcparser.o: ./include/wx/wx/app.h ./include/wx/wx/wx/gtk/app.h
src/srcparser.o: ./include/wx/wx/dialog.h ./include/wx/wx/wx/gtk/dialog.h
src/srcparser.o: ./include/wx/wx/timer.h ./include/wx/wx/wx/gtk/timer.h
src/srcparser.o: ./include/wx/wx/utils.h ./include/wx/wx/wx/filefn.h
src/srcparser.o: ./include/wx/wx/wx/process.h ./include/wx/wx/settings.h
src/srcparser.o: ./include/wx/wx/wx/gtk/settings.h ./include/wx/wx/layout.h
src/srcparser.o: ./include/wx/wx/mdi.h ./include/wx/wx/wx/gtk/mdi.h
src/srcparser.o: ./include/wx/toolbar.h ./include/wx/wx/gtk/tbargtk.h
src/srcparser.o: ./include/wx/wx/scrolwin.h
src/srcparser.o: ./include/wx/wx/wx/generic/scrolwin.h
src/srcparser.o: ./include/wx/wx/statusbr.h
src/srcparser.o: ./include/wx/wx/wx/generic/statusbr.h
src/srcparser.o: ./include/wx/wx/msgdlg.h
src/srcparser.o: ./include/wx/wx/wx/generic/msgdlgg.h
src/srcparser.o: ./include/wx/wx/choicdlg.h
src/srcparser.o: ./include/wx/wx/wx/generic/choicdgg.h
src/srcparser.o: ./include/wx/wx/textdlg.h
src/srcparser.o: ./include/wx/wx/wx/generic/textdlgg.h
src/srcparser.o: ./include/wx/wx/filedlg.h ./include/wx/wx/wx/gtk/filedlg.h
src/srcparser.o: ./include/wx/wx/dirdlg.h
src/srcparser.o: ./include/wx/wx/wx/generic/dirdlgg.h ./include/wx/treectrl.h
src/srcparser.o: ./include/wx/wx/generic/treectrl.h ./include/wx/wx/cmndata.h
src/srcparser.o: ./include/wx/wx/intl.h ./include/wx/wx/valtext.h
src/srcparser.o: /usr/include/malloc.h ./include/srcparser.h
src/srcparser.o: ./include/markup.h
src/ifcontext.o: ./include/wx/wxprec.h ./include/wx/wx.h
src/ifcontext.o: ./include/wx/wx/setup.h ./include/wx/wx/wx/gtk/setup.h
src/ifcontext.o: ./include/wx/wx/defs.h
src/ifcontext.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h
src/ifcontext.o: ./include/wx/wx/wx/version.h ./include/wx/wx/string.h
src/ifcontext.o: /usr/include/string.h /usr/include/features.h
src/ifcontext.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
src/ifcontext.o: /usr/include/stdio.h /usr/include/libio.h
src/ifcontext.o: /usr/include/_G_config.h /usr/include/gnu/types.h
src/ifcontext.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h
src/ifcontext.o: /usr/include/stdio_lim.h
src/ifcontext.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/limits.h
src/ifcontext.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/syslimits.h
src/ifcontext.o: /usr/include/stdlib.h /usr/include/sys/types.h
src/ifcontext.o: /usr/include/time.h /usr/include/endian.h
src/ifcontext.o: /usr/include/bytesex.h /usr/include/sys/select.h
src/ifcontext.o: /usr/include/selectbits.h /usr/include/alloca.h
src/ifcontext.o: ./include/wx/wx/wx/debug.h /usr/include/assert.h
src/ifcontext.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h
src/ifcontext.o: ./include/wx/wx/log.h ./include/wx/wx/window.h
src/ifcontext.o: ./include/wx/wx/wx/gtk/window.h ./include/wx/object.h
src/ifcontext.o: ./include/wx/wx/memory.h ./include/wx/list.h
src/ifcontext.o: ./include/wx/event.h ./include/wx/wx/gdicmn.h
src/ifcontext.o: ./include/wx/wx/wx/hash.h ./include/wx/wx/wx/colour.h
src/ifcontext.o: ./include/wx/wx/wx/wx/gtk/colour.h ./include/wx/gdiobj.h
src/ifcontext.o: ./include/wx/wx/gtk/gdiobj.h ./include/wx/palette.h
src/ifcontext.o: ./include/wx/wx/gtk/palette.h ./include/wx/validate.h
src/ifcontext.o: ./include/wx/cursor.h ./include/wx/wx/gtk/cursor.h
src/ifcontext.o: ./include/wx/font.h ./include/wx/wx/gtk/font.h
src/ifcontext.o: ./include/wx/region.h ./include/wx/wx/gtk/region.h
src/ifcontext.o: ./include/wx/accel.h ./include/wx/wx/gtk/accel.h
src/ifcontext.o: ./include/wx/wx/panel.h ./include/wx/wx/wx/generic/panelg.h
src/ifcontext.o: ./include/wx/wx/frame.h ./include/wx/wx/wx/gtk/frame.h
src/ifcontext.o: ./include/wx/icon.h ./include/wx/wx/dc.h
src/ifcontext.o: ./include/wx/wx/wx/gtk/dc.h ./include/wx/pen.h
src/ifcontext.o: ./include/wx/wx/gtk/pen.h ./include/wx/brush.h
src/ifcontext.o: ./include/wx/wx/gtk/brush.h ./include/wx/bitmap.h
src/ifcontext.o: ./include/wx/wx/gtk/bitmap.h ./include/wx/wx/dcclient.h
src/ifcontext.o: ./include/wx/wx/wx/gtk/dcclient.h ./include/wx/wx/dcmemory.h
src/ifcontext.o: ./include/wx/wx/wx/gtk/dcmemory.h ./include/wx/wx/dcprint.h
src/ifcontext.o: ./include/wx/wx/dcscreen.h ./include/wx/wx/wx/gtk/dcscreen.h
src/ifcontext.o: ./include/wx/wx/button.h ./include/wx/wx/wx/gtk/button.h
src/ifcontext.o: ./include/wx/control.h ./include/wx/wx/gtk/control.h
src/ifcontext.o: ./include/wx/wx/bmpbuttn.h ./include/wx/wx/wx/gtk/bmpbuttn.h
src/ifcontext.o: ./include/wx/wx/checkbox.h ./include/wx/wx/wx/gtk/checkbox.h
src/ifcontext.o: ./include/wx/wx/choice.h ./include/wx/wx/wx/gtk/choice.h
src/ifcontext.o: ./include/wx/wx/scrolbar.h ./include/wx/wx/wx/gtk/scrolbar.h
src/ifcontext.o: ./include/wx/wx/stattext.h ./include/wx/wx/wx/gtk/stattext.h
src/ifcontext.o: ./include/wx/wx/statbmp.h ./include/wx/wx/wx/gtk/statbmp.h
src/ifcontext.o: ./include/wx/wx/statbox.h ./include/wx/wx/wx/gtk/statbox.h
src/ifcontext.o: ./include/wx/wx/listbox.h ./include/wx/wx/wx/gtk/listbox.h
src/ifcontext.o: ./include/wx/wx/radiobox.h ./include/wx/wx/wx/gtk/radiobox.h
src/ifcontext.o: ./include/wx/wx/radiobut.h ./include/wx/wx/wx/gtk/radiobut.h
src/ifcontext.o: ./include/wx/wx/textctrl.h ./include/wx/wx/wx/gtk/textctrl.h
src/ifcontext.o: ./include/wx/wx/slider.h ./include/wx/wx/wx/gtk/slider.h
src/ifcontext.o: ./include/wx/wx/gauge.h ./include/wx/wx/wx/gtk/gauge.h
src/ifcontext.o: ./include/wx/wx/combobox.h ./include/wx/wx/wx/gtk/combobox.h
src/ifcontext.o: ./include/wx/wx/menu.h ./include/wx/wx/wx/gtk/menu.h
src/ifcontext.o: ./include/wx/menuitem.h ./include/wx/wx/gtk/menuitem.h
src/ifcontext.o: ./include/wx/wx/app.h ./include/wx/wx/wx/gtk/app.h
src/ifcontext.o: ./include/wx/wx/dialog.h ./include/wx/wx/wx/gtk/dialog.h
src/ifcontext.o: ./include/wx/wx/timer.h ./include/wx/wx/wx/gtk/timer.h
src/ifcontext.o: ./include/wx/wx/utils.h ./include/wx/wx/wx/filefn.h
src/ifcontext.o: ./include/wx/wx/wx/process.h ./include/wx/wx/settings.h
src/ifcontext.o: ./include/wx/wx/wx/gtk/settings.h ./include/wx/wx/layout.h
src/ifcontext.o: ./include/wx/wx/mdi.h ./include/wx/wx/wx/gtk/mdi.h
src/ifcontext.o: ./include/wx/toolbar.h ./include/wx/wx/gtk/tbargtk.h
src/ifcontext.o: ./include/wx/wx/scrolwin.h
src/ifcontext.o: ./include/wx/wx/wx/generic/scrolwin.h
src/ifcontext.o: ./include/wx/wx/statusbr.h
src/ifcontext.o: ./include/wx/wx/wx/generic/statusbr.h
src/ifcontext.o: ./include/wx/wx/msgdlg.h
src/ifcontext.o: ./include/wx/wx/wx/generic/msgdlgg.h
src/ifcontext.o: ./include/wx/wx/choicdlg.h
src/ifcontext.o: ./include/wx/wx/wx/generic/choicdgg.h
src/ifcontext.o: ./include/wx/wx/textdlg.h
src/ifcontext.o: ./include/wx/wx/wx/generic/textdlgg.h
src/ifcontext.o: ./include/wx/wx/filedlg.h ./include/wx/wx/wx/gtk/filedlg.h
src/ifcontext.o: ./include/wx/wx/dirdlg.h
src/ifcontext.o: ./include/wx/wx/wx/generic/dirdlgg.h ./include/wx/treectrl.h
src/ifcontext.o: ./include/wx/wx/generic/treectrl.h ./include/wx/wx/cmndata.h
src/ifcontext.o: ./include/wx/wx/intl.h ./include/wx/wx/valtext.h
src/ifcontext.o: /usr/include/malloc.h ./include/ifcontext.h
src/ifcontext.o: ./include/srcparser.h ./include/markup.h
src/ifcontext.o: ./include/cjparser.h /usr/include/memory.h
src/HelpGen.o: ./include/wx/wxprec.h ./include/cjparser.h
src/HelpGen.o: ./include/srcparser.h ./include/markup.h
src/HelpGen.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h
src/HelpGen.o: /usr/include/libio.h /usr/include/features.h
src/HelpGen.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
src/HelpGen.o: /usr/include/_G_config.h /usr/include/gnu/types.h
src/HelpGen.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h
src/HelpGen.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h
src/HelpGen.o: /usr/include/memory.h /usr/include/stdlib.h
src/HelpGen.o: /usr/include/sys/types.h /usr/include/time.h
src/HelpGen.o: /usr/include/endian.h /usr/include/bytesex.h
src/HelpGen.o: /usr/include/sys/select.h /usr/include/selectbits.h
src/HelpGen.o: /usr/include/alloca.h /usr/include/stdio.h
src/HelpGen.o: /usr/include/stdio_lim.h
src/sourcepainter.o: ./include/wx/wxprec.h ./include/wx/wx.h
src/sourcepainter.o: ./include/wx/wx/setup.h ./include/wx/wx/wx/gtk/setup.h
src/sourcepainter.o: ./include/wx/wx/defs.h
src/sourcepainter.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h
src/sourcepainter.o: ./include/wx/wx/wx/version.h ./include/wx/wx/string.h
src/sourcepainter.o: /usr/include/string.h /usr/include/features.h
src/sourcepainter.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
src/sourcepainter.o: /usr/include/stdio.h /usr/include/libio.h
src/sourcepainter.o: /usr/include/_G_config.h /usr/include/gnu/types.h
src/sourcepainter.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h
src/sourcepainter.o: /usr/include/stdio_lim.h
src/sourcepainter.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/limits.h
src/sourcepainter.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/syslimits.h
src/sourcepainter.o: /usr/include/stdlib.h /usr/include/sys/types.h
src/sourcepainter.o: /usr/include/time.h /usr/include/endian.h
src/sourcepainter.o: /usr/include/bytesex.h /usr/include/sys/select.h
src/sourcepainter.o: /usr/include/selectbits.h /usr/include/alloca.h
src/sourcepainter.o: ./include/wx/wx/wx/debug.h /usr/include/assert.h
src/sourcepainter.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h
src/sourcepainter.o: ./include/wx/wx/log.h ./include/wx/wx/window.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/window.h ./include/wx/object.h
src/sourcepainter.o: ./include/wx/wx/memory.h ./include/wx/list.h
src/sourcepainter.o: ./include/wx/event.h ./include/wx/wx/gdicmn.h
src/sourcepainter.o: ./include/wx/wx/wx/hash.h ./include/wx/wx/wx/colour.h
src/sourcepainter.o: ./include/wx/wx/wx/wx/gtk/colour.h ./include/wx/gdiobj.h
src/sourcepainter.o: ./include/wx/wx/gtk/gdiobj.h ./include/wx/palette.h
src/sourcepainter.o: ./include/wx/wx/gtk/palette.h ./include/wx/validate.h
src/sourcepainter.o: ./include/wx/cursor.h ./include/wx/wx/gtk/cursor.h
src/sourcepainter.o: ./include/wx/font.h ./include/wx/wx/gtk/font.h
src/sourcepainter.o: ./include/wx/region.h ./include/wx/wx/gtk/region.h
src/sourcepainter.o: ./include/wx/accel.h ./include/wx/wx/gtk/accel.h
src/sourcepainter.o: ./include/wx/wx/panel.h
src/sourcepainter.o: ./include/wx/wx/wx/generic/panelg.h
src/sourcepainter.o: ./include/wx/wx/frame.h ./include/wx/wx/wx/gtk/frame.h
src/sourcepainter.o: ./include/wx/icon.h ./include/wx/wx/dc.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/dc.h ./include/wx/pen.h
src/sourcepainter.o: ./include/wx/wx/gtk/pen.h ./include/wx/brush.h
src/sourcepainter.o: ./include/wx/wx/gtk/brush.h ./include/wx/bitmap.h
src/sourcepainter.o: ./include/wx/wx/gtk/bitmap.h ./include/wx/wx/dcclient.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/dcclient.h
src/sourcepainter.o: ./include/wx/wx/dcmemory.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/dcmemory.h
src/sourcepainter.o: ./include/wx/wx/dcprint.h ./include/wx/wx/dcscreen.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/dcscreen.h
src/sourcepainter.o: ./include/wx/wx/button.h ./include/wx/wx/wx/gtk/button.h
src/sourcepainter.o: ./include/wx/control.h ./include/wx/wx/gtk/control.h
src/sourcepainter.o: ./include/wx/wx/bmpbuttn.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/bmpbuttn.h
src/sourcepainter.o: ./include/wx/wx/checkbox.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/checkbox.h
src/sourcepainter.o: ./include/wx/wx/choice.h ./include/wx/wx/wx/gtk/choice.h
src/sourcepainter.o: ./include/wx/wx/scrolbar.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/scrolbar.h
src/sourcepainter.o: ./include/wx/wx/stattext.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/stattext.h
src/sourcepainter.o: ./include/wx/wx/statbmp.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/statbmp.h
src/sourcepainter.o: ./include/wx/wx/statbox.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/statbox.h
src/sourcepainter.o: ./include/wx/wx/listbox.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/listbox.h
src/sourcepainter.o: ./include/wx/wx/radiobox.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/radiobox.h
src/sourcepainter.o: ./include/wx/wx/radiobut.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/radiobut.h
src/sourcepainter.o: ./include/wx/wx/textctrl.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/textctrl.h
src/sourcepainter.o: ./include/wx/wx/slider.h ./include/wx/wx/wx/gtk/slider.h
src/sourcepainter.o: ./include/wx/wx/gauge.h ./include/wx/wx/wx/gtk/gauge.h
src/sourcepainter.o: ./include/wx/wx/combobox.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/combobox.h ./include/wx/wx/menu.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/menu.h ./include/wx/menuitem.h
src/sourcepainter.o: ./include/wx/wx/gtk/menuitem.h ./include/wx/wx/app.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/app.h ./include/wx/wx/dialog.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/dialog.h ./include/wx/wx/timer.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/timer.h ./include/wx/wx/utils.h
src/sourcepainter.o: ./include/wx/wx/wx/filefn.h ./include/wx/wx/wx/process.h
src/sourcepainter.o: ./include/wx/wx/settings.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/settings.h
src/sourcepainter.o: ./include/wx/wx/layout.h ./include/wx/wx/mdi.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/mdi.h ./include/wx/toolbar.h
src/sourcepainter.o: ./include/wx/wx/gtk/tbargtk.h ./include/wx/wx/scrolwin.h
src/sourcepainter.o: ./include/wx/wx/wx/generic/scrolwin.h
src/sourcepainter.o: ./include/wx/wx/statusbr.h
src/sourcepainter.o: ./include/wx/wx/wx/generic/statusbr.h
src/sourcepainter.o: ./include/wx/wx/msgdlg.h
src/sourcepainter.o: ./include/wx/wx/wx/generic/msgdlgg.h
src/sourcepainter.o: ./include/wx/wx/choicdlg.h
src/sourcepainter.o: ./include/wx/wx/wx/generic/choicdgg.h
src/sourcepainter.o: ./include/wx/wx/textdlg.h
src/sourcepainter.o: ./include/wx/wx/wx/generic/textdlgg.h
src/sourcepainter.o: ./include/wx/wx/filedlg.h
src/sourcepainter.o: ./include/wx/wx/wx/gtk/filedlg.h
src/sourcepainter.o: ./include/wx/wx/dirdlg.h
src/sourcepainter.o: ./include/wx/wx/wx/generic/dirdlgg.h
src/sourcepainter.o: ./include/wx/treectrl.h
src/sourcepainter.o: ./include/wx/wx/generic/treectrl.h
src/sourcepainter.o: ./include/wx/wx/cmndata.h ./include/wx/wx/intl.h
src/sourcepainter.o: ./include/wx/wx/valtext.h ./include/sourcepainter.h
src/sourcepainter.o: ./include/markup.h
src/wx/string.o: ./include/wx/wxprec.h /usr/include/ctype.h
src/wx/string.o: /usr/include/features.h /usr/include/sys/cdefs.h
src/wx/string.o: /usr/include/gnu/stubs.h /usr/include/endian.h
src/wx/string.o: /usr/include/bytesex.h /usr/include/string.h
src/wx/string.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h
src/wx/string.o: /usr/include/stdlib.h /usr/include/sys/types.h
src/wx/string.o: /usr/include/gnu/types.h /usr/include/time.h
src/wx/string.o: /usr/include/sys/select.h /usr/include/selectbits.h
src/wx/string.o: /usr/include/alloca.h
src/wx_extra_imps.o: ./include/wx/wxprec.h /usr/include/memory.h
src/wx_extra_imps.o: /usr/include/features.h /usr/include/sys/cdefs.h
src/wx_extra_imps.o: /usr/include/gnu/stubs.h
src/wx/object.o: ./include/wx/wxprec.h /usr/include/string.h
src/wx/object.o: /usr/include/features.h /usr/include/sys/cdefs.h
src/wx/object.o: /usr/include/gnu/stubs.h
src/wx/object.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h
src/wx/object.o: /usr/include/assert.h
src/wx/hash.o: ./include/wx/wxprec.h ./include/wx/list.h
src/wx/hash.o: ./include/wx/wx/defs.h
src/wx/hash.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h
src/wx/hash.o: ./include/wx/wx/setup.h ./include/wx/wx/wx/gtk/setup.h
src/wx/hash.o: ./include/wx/wx/wx/version.h ./include/wx/wx/wx/debug.h
src/wx/hash.o: /usr/include/assert.h /usr/include/features.h
src/wx/hash.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
src/wx/hash.o: ./include/wx/object.h ./include/wx/wx/memory.h
src/wx/hash.o: ./include/wx/wx/string.h /usr/include/string.h
src/wx/hash.o: /usr/include/stdio.h /usr/include/libio.h
src/wx/hash.o: /usr/include/_G_config.h /usr/include/gnu/types.h
src/wx/hash.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h
src/wx/hash.o: /usr/include/stdio_lim.h
src/wx/hash.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/limits.h
src/wx/hash.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/syslimits.h
src/wx/hash.o: /usr/include/stdlib.h /usr/include/sys/types.h
src/wx/hash.o: /usr/include/time.h /usr/include/endian.h
src/wx/hash.o: /usr/include/bytesex.h /usr/include/sys/select.h
src/wx/hash.o: /usr/include/selectbits.h /usr/include/alloca.h
src/wx/hash.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h
src/wx/hash.o: ./include/wx/wx/wx/hash.h
src/wx/log.o: ./include/wx/wxprec.h ./include/wx/file.h
src/wx/log.o: ./include/wx/textfile.h ./include/wx/wx/defs.h
src/wx/log.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h
src/wx/log.o: ./include/wx/wx/setup.h ./include/wx/wx/wx/gtk/setup.h
src/wx/log.o: ./include/wx/wx/wx/version.h ./include/wx/wx/string.h
src/wx/log.o: /usr/include/string.h /usr/include/features.h
src/wx/log.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
src/wx/log.o: /usr/include/stdio.h /usr/include/libio.h
src/wx/log.o: /usr/include/_G_config.h /usr/include/gnu/types.h
src/wx/log.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h
src/wx/log.o: /usr/include/stdio_lim.h
src/wx/log.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/limits.h
src/wx/log.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/syslimits.h
src/wx/log.o: /usr/include/stdlib.h /usr/include/sys/types.h
src/wx/log.o: /usr/include/time.h /usr/include/endian.h
src/wx/log.o: /usr/include/bytesex.h /usr/include/sys/select.h
src/wx/log.o: /usr/include/selectbits.h /usr/include/alloca.h
src/wx/log.o: ./include/wx/wx/wx/debug.h /usr/include/assert.h
src/wx/log.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h
src/wx/log.o: ./include/wx/wx/dynarray.h ./include/wx/wx/utils.h
src/wx/log.o: ./include/wx/object.h ./include/wx/wx/memory.h
src/wx/log.o: ./include/wx/list.h ./include/wx/wx/window.h
src/wx/log.o: ./include/wx/wx/wx/gtk/window.h ./include/wx/event.h
src/wx/log.o: ./include/wx/wx/gdicmn.h ./include/wx/wx/wx/hash.h
src/wx/log.o: ./include/wx/wx/wx/colour.h ./include/wx/wx/wx/wx/gtk/colour.h
src/wx/log.o: ./include/wx/gdiobj.h ./include/wx/wx/gtk/gdiobj.h
src/wx/log.o: ./include/wx/palette.h ./include/wx/wx/gtk/palette.h
src/wx/log.o: ./include/wx/validate.h ./include/wx/cursor.h
src/wx/log.o: ./include/wx/wx/gtk/cursor.h ./include/wx/font.h
src/wx/log.o: ./include/wx/wx/gtk/font.h ./include/wx/region.h
src/wx/log.o: ./include/wx/wx/gtk/region.h ./include/wx/accel.h
src/wx/log.o: ./include/wx/wx/gtk/accel.h ./include/wx/wx/wx/filefn.h
src/wx/log.o: ./include/wx/wx/wx/process.h ./include/wx/wx/log.h
src/wx/log.o: /usr/include/errno.h /usr/include/errnos.h
src/wx/log.o: /usr/include/linux/errno.h /usr/include/asm/errno.h
src/wx/file.o: ./include/wx/wxprec.h ./include/wx/wx/defs.h
src/wx/file.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h
src/wx/file.o: ./include/wx/wx/setup.h ./include/wx/wx/wx/gtk/setup.h
src/wx/file.o: ./include/wx/wx/wx/version.h /usr/include/stdio.h
src/wx/file.o: /usr/include/libio.h /usr/include/features.h
src/wx/file.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
src/wx/file.o: /usr/include/_G_config.h /usr/include/gnu/types.h
src/wx/file.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h
src/wx/file.o: /usr/include/stdio_lim.h /usr/include/fcntl.h
src/wx/file.o: /usr/include/fcntlbits.h /usr/include/sys/types.h
src/wx/file.o: /usr/include/time.h /usr/include/endian.h
src/wx/file.o: /usr/include/bytesex.h /usr/include/sys/select.h
src/wx/file.o: /usr/include/selectbits.h /usr/include/sys/stat.h
src/wx/file.o: /usr/include/statbuf.h ./include/wx/wx/string.h
src/wx/file.o: /usr/include/string.h
src/wx/file.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/limits.h
src/wx/file.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/syslimits.h
src/wx/file.o: /usr/include/stdlib.h /usr/include/alloca.h
src/wx/file.o: ./include/wx/wx/wx/debug.h /usr/include/assert.h
src/wx/file.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h
src/wx/file.o: ./include/wx/wx/intl.h ./include/wx/file.h
src/wx/file.o: ./include/wx/wx/log.h
src/wx/list.o: ./include/wx/wxprec.h
src/wx/list.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h
src/wx/list.o: /usr/include/stdlib.h /usr/include/features.h
src/wx/list.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
src/wx/list.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h
src/wx/list.o: /usr/include/sys/types.h /usr/include/gnu/types.h
src/wx/list.o: /usr/include/time.h /usr/include/endian.h
src/wx/list.o: /usr/include/bytesex.h /usr/include/sys/select.h
src/wx/list.o: /usr/include/selectbits.h /usr/include/alloca.h
src/wx/list.o: /usr/include/string.h

View File

@@ -1,125 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: No names yet.
// Purpose: Implementation of C++/Java parser
// compatible with SourceParserBase interface
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 22/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleskandars Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __CJPARSESR_G__
#define __CJPARSESR_G__
#include "srcparser.h"
#include <iostream.h>
#include <memory.h>
#include <stdlib.h>
#include <stdio.h>
// class parses given "memory-resident" Java or C++ source code
// and captures information about classes/attrubutes/methods/
// arguments/etc into structures. Conforms with SourceParserBase
// interface requirements.
class CJSourceParser : public SourceParserBase
{
protected:
// begining of the full-text area of the source file
char* mpStart;
// points to first character after the end
// of teh full-text area
char* mpEnd;
// current "privacy level"
int mCurVis;
// current parsing position int full-text area
char* cur;
// about the current class
bool mIsVirtaul;
bool mIsTemplate;
size_t mNestingLevel;
// context data for which is currently being collected
spContext* mpCurCtx;
int mCurCtxType; // type of the current context
bool mCommentsOn;
bool mMacrosOn;
protected:
void AttachComments( spContext& ctx, char* cur );
void ParseKeyword( char*& cur );
bool ParseNameAndRetVal( char*& cur, bool& isAMacro );
bool ParseArguments( char*& cur );
void ParseMemberVar( char*& cur );
void SkipFunction( char*& cur );
void SkipFunctionBody( char*& cur );
bool CheckVisibilty( char*& cur );
void AddClassNode( char*& cur );
void AddMacroNode( char*& cur );
void AddEnumNode( char*& cur );
void AddTypeDefNode( char*& cur );
void DumpOperationInfo( spOperation& info, const string& tab, ostream& os );
void DumpClassHeader( spClass& info, ostream& os );
void DumpClassBody( spClass& info, ostream& os );
public:
// NOTE:: discarding of macros or comments improves performance and
// decreases memory usage
CJSourceParser(bool collectCommnets = 1,
bool collectMacros = 1);
// returns the root-node of the created context tree
// (user is responsible for releasing it from the heep)
// "end" should point to the last (character + 1) of the
// source text
virtual spFile* Parse( char* start, char* end );
};
// inline'ed helpers used (just info):
/*
static inline void skip_to_eol( char*& cur );
static inline void skip_eol( char*& cur );
static inline bool skip_to_next_comment_in_the_line( char*& cur );
static void skip_to_prev_line( char*& cur );
static inline void skip_comments( char*& cur );
static inline void clear_commets_queue();
static inline void skip_quoted_string( char*& cur );
static inline bool get_next_token( char*& cur );
static inline void skip_preprocessor_dir( char*& cur );
static void skip_token( char*& cur );
static inline size_t get_token_len( char* tok );
static inline bool cmp_tokens( char* tok1, char* tok2 );
static inline bool cmp_tokens_fast( char* tok1, char* tok2, size_t len );
static inline void skip_tempalate_statement( char*& cur );
static inline void skip_statement( char*& cur );
static inline void skip_token_back( char*& cur );
static inline void skip_next_token_back( char*& cur );
static string get_token_str( char* cur );
static size_t skip_block( char*& cur );
static inline bool skip_imp_block( char*& cur );
static bool is_class_token( char*& cur );
inline static bool is_forward_decl( char* cur );
inline static bool is_function( char* cur, bool& isAMacro );
static inline void skip_scope_block( char*& cur );
static void arrange_indirection_tokens_between( string& type, string& identifier );
static bool is_keyword( char* cur );
static inline void get_string_between( char* start, char* end, string* pStr );
static char* set_comment_text( string& text, char* start );
*/
#endif

View File

@@ -1,157 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: No names yet.
// Purpose: Contrib. demo
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 22/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleskandars Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __DOCRIPPER_G__
#define __DOCRIPPER_G__
#include "scriptbinder.h"
#include "srcparser.h"
#include "sourcepainter.h"
#if defined( wxUSE_TEMPLATE_STL )
#include <vector>
typedef vector<ScriptTemplate*> STemplateListT;
#else
#include "wxstlvec.h"
typedef ScriptTemplate* ScriptTemplatePtrT;
typedef WXSTL_VECTOR_SHALLOW_COPY(ScriptTemplatePtrT) STemplateListT;
#endif
// specific DocGenerator class for "Ripper",
// also acts as source code visitor
class RipperDocGen : public DocGeneratorBase, public spVisitor
{
protected:
// templates for various sections
ScriptTemplate mTopTempl;
ScriptTemplate mContentIdxTempl;
ScriptTemplate mSuperContentTempl;
ScriptTemplate mSubContentTempl;
ScriptTemplate mOutLineTempl;
ScriptTemplate mOutLine1Templ;
// template used for corss-references
ScriptTemplate mRefTempl;
// template used to show not-existing sections
ScriptTemplate mDeadRefTempl;
// template collection for generation of class-tree
STemplateListT mTreeTemplates;
// pointers to all major index sections
ScriptSection* mpTopIdx;
ScriptSection* mpClassIdx;
ScriptSection* mpEnumIdx;
ScriptSection* mpTypeDefIdx;
ScriptSection* mpMacroIdx;
ScriptSection* mpGlobalVarsIdx;
ScriptSection* mpGlobalFuncIdx;
ScriptSection* mpConstIdx;
// parser set up from user-code for sepcific language
SourceParserBase* mpParser;
// class section, which is currently being
// assembled
ScriptSection* mpCurClassSect;
// source syntax heighlighter object
SourcePainter mSrcPainter;
// context, to which all file contexts
// are assembled
spContext* mpFileBinderCtx;
// script tags set up from usesr code
MarkupTagsT mTags;
protected:
// helpers
void AppendComments( spContext& fromContext, string& str );
void AppendMulitilineStr( string& st, string& mlStr );
void AppendHighlightedSource( string& st, string source );
// returns TRUE, if no comments found in the context,
// plus, creates dummy(empty) section, and puts a
// reference woth "dead-link" template to it in the
// given index-section "toSect"
bool CheckIfUncommented( spContext& ctx, ScriptSection& toSect );
// checks if context has any comments, then returns
// template of normal reference, otherwise of dead reference
ScriptTemplate* GetRefTemplFor( spContext& ctx );
// adds "someClass::" perfix to the context name,
// if it's not in the file scope (i.e. if it's not global)
string GetScopedName( spContext& ofCtx );
// adds section to currently assembled class section
// and places references to it from "public", "protected"
// or "private" indexing-subsections of the class, depending
// on the visibility of the context
void AddToCurrentClass( ScriptSection* pSection, spContext& ctx,
const char* subSectionName );
// called, after all files are processed, to
// resolve possible super/derived class relations,
// and put cross references to them - where resolution was
// successful
void LinkSuperClassRefs();
// implementations of "visiting procedures", declared in spVisitor
virtual void VisitClass( spClass& cl );
virtual void VisitEnumeration( spEnumeration& en );
virtual void VisitTypeDef( spTypeDef& td );
virtual void VisitPreprocessorLine( spPreprocessorLine& pd );
virtual void VisitAttribute( spAttribute& attr );
virtual void VisitOperation( spOperation& op );
// overriden member of DocGernatorBase
virtual bool OnSaveDocument( ScriptStream& stm );
virtual ScriptSection* GetTopSection()
{ return mpTopIdx; }
public:
RipperDocGen();
~RipperDocGen();
// should be called onece to set user-code provided,
// parser for specific source code language
// (NOTE:: it's the user-code's responsibility to
// relseas memory of pParser)
void Init( SourceParserBase* pParser );
// should be called on each file
void ProcessFile( const char* sourceFile );
};
#endif

View File

@@ -1,100 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: No names yet.
// Purpose: Contrib. demo
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 27/12/98
// RCS-ID: $Id$
// Copyright: (c) Aleskandars Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __IFCONTEXT_G__
#define __IFCONTEXT_G__
#include "srcparser.h"
#include "cjparser.h"
class spBookmark
{
public:
size_t mFrom;
size_t mLen;
size_t mFileNo;
inline spBookmark() {}
inline spBookmark( int from, int len, int fileNo )
: mFrom( from ), mLen( len ), mFileNo( fileNo )
{}
};
#if defined( wxUSE_TEMPLATE_STL )
typedef vector<spBookmark) BookmarkListT
#else
typedef WXSTL_VECTOR_SHALLOW_COPY(spBookmark) BookmarkListT;
#endif
class spInterFileContext : public spContext
{
protected:
BookmarkListT mDeletionMarks;
BookmarkListT mFiltered;
size_t mCurFileNo;
CJSourceParser mParser;
protected:
size_t GetFileNoOfContext( spContext& ctx );
size_t GetFileNo( const string& fname );
void InsertBookmarkSorted( BookmarkListT& lst, spBookmark& mark );
void DoAppendSourceFragment( string& source,
string& result,
size_t pos, size_t len );
void GenerateContextBody( spContext& ctx,
string& source,
string& result,
size_t& lastSavedPos,
size_t& lastKnownPos );
public:
StrListT mFiles;
StrListT mContents;
public:
spInterFileContext();
~spInterFileContext();
void AddFile( const string& fname, const string& content );
void RemoveContext( spContext& ctx );
void GenrateContents();
void ParseContents( SourceParserPlugin* pPlugin = NULL );
void WriteToFiles();
// overriden method of the base class (finds out the source fragment)
virtual string GetBody( spContext* pCtx = NULL );
virtual string GetHeader( spContext* pCtx = NULL );
};
#endif

View File

@@ -1,51 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: No names yet.
// Purpose: Contrib. demo
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 22/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleskandars Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __MARKUP_G__
#define __MARKUP_G__
// indicies for the MarkupTagsT array
#define TAG_BOLD 0
#define TAG_ITALIC 1
#define TAG_FIXED_FONT 2
#define TAG_BLACK_FONT 3
#define TAG_RED_FONT 4
#define TAG_GREEN_FONT 5
#define TAG_BLUE_FONT 6
#define TAG_PARAGRAPH 7
#define TAG_NEW_LINE 8
#define TAG_HEADING_1 9
#define TAG_HEADING_2 10
#define TAG_HEADING_3 11
#define TAG_ITEM_LIST 12
#define TAG_LIST_ITEM 13
struct TagStructT
{
char* start; // tag that starts style
char* end; // tag that finishes style
};
// tag array
typedef TagStructT* MarkupTagsT;
// returns array of TagStructT with tag strings for HTML
MarkupTagsT get_HTML_markup_tags();
// MarkupTagsT get_PostScript_markup_tags();
// MarkupTagsT get_Latex_markup_tags();
#endif

View File

@@ -1,377 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: No names yet.
// Purpose: Contrib. demo
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 22/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleskandars Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __SCRIPTBINDER_G__
#define __SCRIPTBINDER_G__
#if defined( wxUSE_TEMPLATE_STL )
#include <vector>
#ifdef WIN32
#include <bstring.h>
#else
#include <strclass.h>
#include <string.h>
#endif
#else
#include "wxstlvec.h"
#include "wx/string.h"
// FIXME:: dirty!
typedef wxString string;
#endif
#ifndef ASSERT
// assert yourself
#define ASSERT(x) if (!(x) ) throw;
#endif
#include "markup.h"
// just another portable stream class...
class ScriptStream
{
protected:
char* mpBuf;
size_t mSize;
size_t mCapacity;
public:
ScriptStream();
~ScriptStream();
void WriteBytes( const void* srcBuf, size_t count );
ScriptStream& operator<<( const char* str );
ScriptStream& operator<<( const string& str );
ScriptStream& operator<<( char ch );
void endl();
inline char* GetBuf() { return mpBuf; }
inline size_t GetBufSize() { return mSize; }
// clears current contents of the stream
void Reset() { mSize = 0; }
};
class ScriptTemplate;
// used internally by ScriptTemplate
enum TEMPLATE_VARIABLE_TYPES
{
TVAR_INTEGER,
TVAR_STRING,
TVAR_DOUBLE,
TVAR_REF_ARRAY
};
// helper structures used only by ScriptTemplate
struct TVarInfo
{
public:
const char* mName;
int mType;
int mOfs;
TVarInfo( const char* name, int ofs, int varType )
: mName(name),
mType( varType ),
mOfs( ofs )
{}
};
struct TArrayInfo : public TVarInfo
{
public:
int mRefOfs;
int mSizeIntOfs;
int mObjRefTemplOfs;
TArrayInfo( const char* name )
: TVarInfo( name, 0, TVAR_REF_ARRAY )
{}
};
// stores offset of the given member (of the given class)
// to (*pOfs), though the use of template classes would have
// solved this problem in much clearer fashion
// FOR NOW:: obtaining physical offset of class member
// does not appeare to be protable across compilers?
// FIXME:: +/- 1 problem
#ifdef __UNIX__
#define WEIRD_OFFSET 1
#else
#define WEIRD_OFFSET 0
#endif
#define GET_VAR_OFS( className, varName, pOfs ) \
{ \
int* className::* varPtr; \
varPtr = (int* className::*)&className::varName; \
\
(*pOfs) = int(*(int*)&varPtr)-WEIRD_OFFSET; \
}
class ScriptSection;
#if defined( wxUSE_TEMPLATE_STL )
typedef vector<TVarInfo*> TVarListT;
// container class for sections
typedef vector<ScriptSection*> SectListT;
#else
typedef TVarInfo* TVarInfoPtrT;
typedef ScriptSection* ScriptSectionPtrT;
typedef WXSTL_VECTOR_SHALLOW_COPY(TVarInfoPtrT) TVarListT;
// container class for sections
typedef WXSTL_VECTOR_SHALLOW_COPY(ScriptSectionPtrT) SectListT;
#endif
// class performs preprocessing of arbitrary scripts,
// replaces identifiers enclosed in $(..) tag, whith
// values of the corresponding class member variables
class ScriptTemplate
{
protected:
// do not use string object here - parsing of
// C string can be much faster (in debug v.)
char* mTText;
TVarListT mVars;
inline void PrintVar( TVarInfo* pInfo,
void* dataObj,
ScriptStream& stm );
public:
ScriptTemplate( const string& templateText );
virtual ~ScriptTemplate();
bool HasVar( const char* name );
// Member variables registration methods.
// NOTE:: GET_VAR_OFS() macro should be used
// to get offset of the class member (see #define above)
void AddStringVar ( const char* name, int ofs );
void AddIntegerVar( const char* name, int ofs );
void AddDoubleVar ( const char* name, int ofs );
void AddObjectRefArray( const char* name,
int ofsRefToFirstObj,
int ofsObjSizeInt,
int ofsObjRefTempl
);
// reads the script, replaces $(..) tags with values
// of registered members of dataObj object, and outputs
// the result to given text stream
void PrintScript( void* dataObj, ScriptStream& stm );
};
class ScriptSection;
// class manages section and aggregated sections of
// inter-linked documents
class ScriptSection
{
protected:
// NOTE:: "$(NAME)", $(ID), "$(BODY)" and "$(REFLIST)" aree
// reseved template variables of ScriptSection
// the below there members are registered to ScriptTemplate,
// GUID within the section tree (numeric)
ScriptSection* mpParent;
string mId; // $(ID)
string mName; // $(NAME)
string mBody; // $(BODY)
// NULL, if this section is not aggregated anywhere
SectListT mSubsections; // aggregated sectons
SectListT mReferences; // registered as $(REFLIST)
bool mAutoHide; // see autoHide arg, in constructor
bool mSortOn; // TRUE, if sort subsectons by naem
// tempalte for this section
ScriptTemplate* mpSectTempl;
// template used for links (or references) to this section
ScriptTemplate* mpRefTempl;
// do not call destructor of this object,
// call RemoveRef() instead
int mRefCount;
static int mIdCounter; // generator of GUIDs
// fields registered and used by ScriptTemplate object
void* mRefFirst;
int mArrSize;
protected:
virtual void AddRef();
virtual void RemoveRef();
void DoRemoveEmptySections(int& nRemoved, SectListT& removedLst);
void DoRemoveDeadLinks( SectListT& removedLst);
public:
// NOTE:: pass NULL to certain template, if your sure
// this kind of template will never be used,
// e.g. if section is contained but never referrenced,
// then pReferenceTemplate can be NULL
// if autoHide option is TRUE, the section will be automatically
// collapsed (not shown) if it doesn't contain any references
// to other sections (e.g. could be usefull for autoamically
// hiding empty index-sections).
ScriptSection( const string& name = "",
const string& body = "",
ScriptTemplate* pSectionTemplate = NULL,
ScriptTemplate* pReferenceTemplate = NULL,
bool autoHide = FALSE,
bool sorted = FALSE
);
// calls RemoveRef() to all aggreagated sections first,
// then to all referenced section - this way all
// sections (even not aggregated ones) become "garbage-collected"
// NOTE:: do not call destructor directlly, call RemoveRef()
// instead
virtual ~ScriptSection();
// if addToReferencesToo is TRUE, section is aggregated and
// also added to reference list of this section
void AddSection( ScriptSection* pSection, bool addToReferencesToo = FALSE );
// add cross-reference to this given section
void AddReference( ScriptSection* pReferredSection );
// subsection may be given of variable depth level,
// e.g. "publications/reviews/software"
ScriptSection* GetSubsection( const char* name );
// returns list aggregated sections
SectListT& GetSubsections();
// binds reserved template names ( $(..) ) to member
// vairalbes in the ScriptSection class, should be called
// to initialize each user-code provided script template
static void RegisterTemplate( ScriptTemplate& sectionTempalte );
// prints out section tree to the stream, starting from
// this section as a root node
virtual void Print( ScriptStream& stm );
// searches empty sections which has autoHide == TRUE,
// and colapses them (this method should be called )
// on the root-section of the sections tree
// NOTE:: does not work properly, yet!
void RemoveEmptySections();
};
// base class for documnetation generators
// (allows user code set up target script type,
// independently of documentation type)
class DocGeneratorBase
{
protected:
MarkupTagsT mTags;
// override this method to do some post processing
// after generation of document, or even write some
// data into output stream, before the section tree
// is flushed into it.
// return FALSE, if something has gone wrong and
// document cannot be saved now
virtual bool OnSaveDocument( ScriptStream& stm )
{ return 1; }
// override this method to provide reference to
// the top section of the document (used as default
// starting section when saving a document)
virtual ScriptSection* GetTopSection()
{ return 0; }
public:
DocGeneratorBase()
: mTags(0) // no defaul script
{}
// dectrouctors of polymorphic classes SHOULD be virtual
virtual ~DocGeneratorBase() {}
// returns tags, being used for specific target script
MarkupTagsT GetScriptMarkupTags() { return mTags; }
// sets tag array for specific script
// NOTE:: Why virtual? since approach with MarkupTagsT is
// "flowless" only in theory. Overriding this method
// allows document generators to check the type of the
// target script, and perhaps make some modifications
// to generator's tamplates, to match the specific script
virtual void SetScriptMarkupTags( MarkupTagsT tags )
{ mTags = tags; }
// seves document to file starting from the root-node of
// the document (provided by GetTopSection() method),
// or from "pFromSection" if it's not NULL.
// fopenOptions arg. is string passed to fopen() method,
// returns TRUE, if saving was successfull
virtual bool SaveDocument( const char* fname,
const char* fopenOptions = "w",
ScriptSection* pFromSection = NULL
);
};
#endif

View File

@@ -1,104 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: No names yet.
// Purpose: Contrib. demo
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 22/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleskandars Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __SOURCEPAINTER_G__
#define __SOURCEPAINTER_G__
#ifndef ASSERT
#define ASSERT(x) if (!(x)) throw
#endif
#if defined( wxUSE_TEMPLATE_STL )
#include <vector.h>
typedef vector<int> SPBlockListT;
#ifdef WIN32
#include <bstring.h>
#else
#include <strclass.h>
#include <string.h>
#endif
#else
#include "wxstlvec.h"
#include "wx/string.h"
// FIXME:: dirty!
#define string wxString
typedef WXSTL_VECTOR_SHALLOW_COPY(int) SPBlockListT;
#endif
#include "markup.h" // import MarkupTagsT definition
// "colored" codes for highlighted blocks
#define RANK_BLACK 0 // common source fragments
#define RANK_BLUE 1 // basic types
#define RANK_RED 2 // reserved words
#define RANK_GREEN 3 // comments
// colored block description format :
// int( ( rank << 16 ) | ( source_range_len ) )
// FOR NOW:: no lagnguage-map selection
// source code syntax heighlighter (CPP+JAVA+VB+PASCAL)
class SourcePainter
{
protected:
string mResultStr;
SPBlockListT mBlocks;
bool mCollectResultsOn;
// state variables
bool mIsInComment;
bool mCommentIsMultiline;
public:
// assembleResultString == TRUE - instructs painter
// to collect each chunk of srouce passed to ProcessSource(),
// so that results cann be futher obtained in a single string
// instead of vector of block descriptions
SourcePainter( bool assembleResultString = TRUE );
virtual ~SourcePainter() {}
// can be called multiple times (e.g. on each source line)
void ProcessSource( char* src, int srcLen );
// method, for manually adjusting state of source painter
void SetState( bool isInComment,
bool commentIsMultiline );
// reinitializes object - clears results of previouse processing
void Init( bool assembleResultString = TRUE );
// generates string of highlighted source for the scipting
// language given by "tags" argument
virtual void GetResultString(string& result, MarkupTagsT tags);
// returns vector of block descriptors, see SPBlockListT definition
// (block descriptors can be used for fast custom hightlighted text generation)
SPBlockListT& GetBlocks();
// NOTE:: static method
// returns if the given word is a reserved word or basic type identifier
static bool IsKeyword( char* word, int wordLen );
};
#endif

View File

@@ -1,734 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: No names yet.
// Purpose: To provide a simple _framework_
// for series of source code parsers with
// compatible interfaces
// Author: Aleksandras Gluchovas
// Modified by: AG on 28/12/98
// Created: 22/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleskandars Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __SRCPARSER_G__
#define __SRCPARSER_G__
#if defined( wxUSE_TEMPLATE_STL )
#include <vector>
#ifdef WIN32
#include <bstring.h>
#else
#include <strclass.h>
#include <string.h>
#endif
#else
#include "wx/string.h"
#include "wxstlvec.h"
// FOR NOW:: quick n' dirty:
#define string wxString
#endif
#include "markup.h" // markup tags used in spOperator::GetFullName()
// context class list in "inside-out" order :
class spContext;
class spParameter;
class spAttribute;
class spOperation;
class spEnumeration;
class spTypeDef;
class spPreprocessorLine;
class spClass;
class spNameSpace;
class spFile;
// source context visibilities
enum SRC_VISIBLITY_TYPES
{
SP_VIS_PUBLIC,
SP_VIS_PROTECTED,
SP_VIS_PRIVATE
};
// class types
enum SP_CLASS_TYPES
{
SP_CLTYPE_CLASS,
SP_CLTYPE_TEMPLATE_CLASS,
SP_CLTYPE_STRUCTURE,
SP_CLTYPE_UNION,
SP_CLTYPE_INTERFACE
};
// inheritance types
enum SP_INHERITANCE_TYPES
{
SP_INHERIT_VIRTUAL,
SP_INHERIT_PUBLIC,
SP_INHERIT_PRIVATE
};
// proprocessor definitions types (specific to C++ code)
enum SP_PREP_DEFINITION_TYPES
{
SP_PREP_DEF_DEFINE_SYMBOL,
SP_PREP_DEF_REDEFINE_SYMBOL,
SP_PREP_DEF_INCLUDE_FILE,
SP_PREP_DEF_OTHER
};
// common context types
#define SP_CTX_UNKNOWN 0x000
#define SP_CTX_FILE 0x001
#define SP_CTX_NAMESPACE 0x002
#define SP_CTX_CLASS 0x004
#define SP_CTX_TYPEDEF 0x008
#define SP_CTX_PREPROCESSOR 0x010
#define SP_CTX_ENUMERATION 0x020
#define SP_CTX_ATTRIBUTE 0x040
#define SP_CTX_OPERATION 0x080
#define SP_CTX_PARAMETER 0x100
// other (custom) context codes may be defined elsewere, however they should
// not clash with above codes for common type and also should not
// exceed 16-bits of in value
// masks all context types (up to 16 custom context can be defined)
#define SP_CTX_ANY 0xFFFF
class spComment;
#if defined( wxUSE_TEMPLATE_STL )
// context members
typedef vector<spContext*> MMemberListT;
// comments list
typedef vector<spComment*> MCommentListT;
// list of parameters
typedef vector<spParameter*> MParamListT;
// string list
typedef vector<string> StrListT;
#else
typedef spContext* spContextPtrT;
typedef spComment* spCommentPtrT;
typedef spParameter* spParameterPtrT;
typedef WXSTL_VECTOR_SHALLOW_COPY(spContextPtrT) MMemberListT;
typedef WXSTL_VECTOR_SHALLOW_COPY(spCommentPtrT) MCommentListT;
typedef WXSTL_VECTOR_SHALLOW_COPY(spParameterPtrT) MParamListT;
typedef WXSTL_VECTOR_SHALLOW_COPY(string) StrListT;
#endif;
// base class for all visitors of source code contents
class spVisitor
{
protected:
bool mSiblingSkipped;
bool mChildSkipped;
int mContextMask;
spContext* mpCurCxt;
public:
// methods invoked by context
// method invoked from user's controling code
// to visit all nodes staring at the given context.
// Content is sorted if requrired, see comments
// spClass on sorting the class members
void VisitAll( spContext& atContext,
bool sortContent = TRUE
);
// methods invoked by visitor
// goes to the next context in the outter scope
// NOTE:: should not be invoked more than once while
// visiting certain context
void SkipSiblings();
// prevents going down into the contexts contained by
// the current context
// NOTE:: the same as above
void SkipChildren();
// can be called only in from visiting procedure
void RemoveCurrentContext();
// method enables fast filtered traversal
// of source content, e.g. collecting only classes,
// or only global functions
// arg. context - can contain combination of contexts concatinated
// with bitwise OR, e.g. SP_CTX_CLASS | SP_CTX_NAMESPACE
//
// method can be invoked from the user's controling as well as
// from within the visting procedure
void SetFilter( int contextMask );
// methods should be implemneted by specific visitor:
// NOTE:: Do not confuse visiting with parsing, first
// the source is parsed, and than can be visited
// multiple times by variouse visitors (there can
// be more the one visitor visiting content at a time)
virtual void VisitFile( spFile& fl ) {}
virtual void VisitNameSpace( spNameSpace& ns ) {}
virtual void VisitClass( spClass& cl ) {}
virtual void VisitEnumeration( spEnumeration& en ) {}
virtual void VisitTypeDef( spTypeDef& td ) {}
virtual void VisitPreprocessorLine( spPreprocessorLine& pd ) {}
virtual void VisitAttribute( spAttribute& attr ) {}
virtual void VisitOperation( spOperation& op ) {}
virtual void VisitParameter( spParameter& param ) {}
virtual void VisitCustomContext( spContext& ctx ) {}
};
// stores one section of comments,
// multiple sections can be put to geather
// and attached to some context
class spComment
{
public:
string mText;
bool mIsMultiline; // multiline comments ar those with /**/'s
// TRUE, if these was an empty empty
// line above single line comment
bool mStartsPar;
public:
bool IsMultiline() const;
bool StartsParagraph() const;
string& GetText();
// contstant version of GetText()
string GetText() const;
};
// abstract base class for common (to most languages) code
// contexts (constructs), e.g file, namespace, class, operation,
// etc
class spContext
{
protected:
// "linked" list of comments belonging to this context
MCommentListT mComments;
// NULL, if this is file context
MMemberListT mMembers;
// NULL, if this is top-most context
spContext* mpParent;
// points to context object, where the this context
// was originally declared, meaning that this object
// is redeclaration (or if in the case of operation
// this context object most probably referres to the
// implemnetation in .cpp file for example)
// is NULL, if this object referres to the first occurence
// of the context
spContext* mpFirstOccurence;
// used, to avoid excessive sorting of context's agreggates
bool mAlreadySorted;
public:
// source line number, (-1) if unknown
int mSrcLineNo;
// offset of context in the source file, (-1) if unknown
int mSrcOffset;
// lentgh of the context in characters, (-1) if unknown
int mContextLength;
// source line number, in which this cotext ends, (-1) if unknown
int mLastScrLineNo;
// fields are valid, if the may contain other contexts nested inside
int mHeaderLength;
int mFooterLength;
// zero-based index of the first character of
// this context in the source line, (-1) if unknown
int mFirstCharPos;
// zero-based index of the first character of
// this context in the last source line of this context, (-1) if unknown
int mLastCharPos;
// see SRC_VISIBLITY_TYPES enumeration
int mVisibility;
// TRUE, if context does not really exist in the source
// but was created by external tools (e.g. forward engineering)
bool mIsVirtualContext;
bool mVirtualContextHasChildren;
// body of the context in case (mIsVirtual == TRUE)
string mVirtualContextBody;
string mVittualContextFooter;
// e.g. can be used by documentation generator to store
// reference to section object
void* mpUserData;
public:
// universal identifier of the context (e.g. class name)
string mName;
public:
// default constructor
spContext();
// automatically destorys all aggregated contexts
// (thus, it's enought to call destructor of root-context)
virtual ~spContext();
// see mUererData member;
void* GetUserData() { return mpUserData; }
// sets untyped pointer to user data
void SetUserData( void* pUserData )
{ mpUserData = pUserData; }
// searches the whole context tree for the cotnexts
// which match given masks, pust results into lst array
void GetContextList( MMemberListT& lst, int contextMask );
// used by default visitor's implementation
bool IsSorted();
/*** forward/reverse ingineering fecilities ***/
bool PositionIsKnown();
bool IsVirtualContext();
bool VitualContextHasChildren();
void SetVirtualContextBody( const string& body,
bool hasChildren = FALSE,
const string& footer = "" );
string GetVirtualContextBody();
string GetFooterOfVirtualContextBody();
// can be overriden by top-level context classes
// to find-out ot the source-fragment of this
// context using it's position information
virtual string GetBody( spContext* pCtx = NULL );
virtual string GetHeader( spContext* pCtx = NULL );
// TRUE, if there is at least one entry
// in the comment list of this context
bool HasComments();
MCommentListT& GetCommentList() { return mComments; }
const MCommentListT& GetCommentList() const { return mComments; }
// should be overriden, if the context supports sorting
// of it's members
virtual void SortMembers() {}
// returns identifier of this context
inline string& GetName() { return mName; }
// returns -1, if souce line # is unknow
inline int GetSourceLineNo() { return mSrcLineNo; }
// see comments on mpFirstOccurence member variable
bool IsFirstOccurence();
spContext* GetFirstOccurence();
// returns not-NULL value if this context
// is aggregated by another cotnext
spContext* GetOutterContext();
// perhaps more intuitive alias for `GetOutterContext()'
inline spContext* GetParent() { return mpParent; }
bool HasOutterContext();
// add one aggregate (or child) into this context
void AddMember ( spContext* pMember );
MMemberListT& GetMembers();
// append comment to the comment list decribing
// this context
void AddComment( spComment* pComment );
// returns NULL, if the context with the given
// name and type is not contained by this context
// and it's children. Children's children are not
// searched recursivelly if searchSubMembers is FALSE
spContext* FindContext( const string& identifier,
int contextType = SP_CTX_ANY,
bool searchSubMembers = TRUE
);
// removes this context from it's parent
// (NOTE:: context should have an outter cotnext
// to when this method is called, otherwise removal
// will result assertion failure)
void RemoveThisContext();
// returns TRUE, if this object is aggregated in the file
bool IsInFile();
// TRUE, if outter context is a namespace
bool IsInNameSpace();
// TRUE, if outter context is a class
bool IsInClass();
// TRUE, if outter cotext is an operation (TRUE for "spParameter"s)
bool IsInOperation();
// TRUE if the context is public
bool IsPublic() const { return mVisibility == SP_VIS_PUBLIC; }
// NOTE:: method returns not the type of this object
// but the file/namespace/class/operation or file in which this
// attribute is contained. First, check for the type of
// context using the above method.
// Requiering container which does not exist, will result
// in assertion failure
spClass& GetClass();
spFile& GetFile();
spNameSpace& GetNameSpace();
spOperation& GetOperation();
// each new context should override this method
// to return it's specific type
virtual int GetContextType() { return SP_CTX_UNKNOWN; }
// perhaps more intuitive short-cut
inline int GetType() { return GetContextType(); }
// derived classes override this to invoke VisitXXX method
// which corresponds to the class of specific context,
// - this is what the "Visitor" pattern told us ^)
// if method is not overriden, then it's probably user-defined
// custom context
virtual void AcceptVisitor( spVisitor& visitor )
{ visitor.VisitCustomContext( *this ); };
// called by visitors, to remove given subcontext
// of this context object
void RemoveChild( spContext* pChild );
void RemoveChildren();
spContext* GetEnclosingContext( int mask = SP_CTX_ANY );
};
// stores information about single argument of operation
class spParameter : public spContext
{
public:
// type of argument (parameter)
string mType;
// "stringified" initial value
string mInitVal;
public:
virtual int GetContextType() { return SP_CTX_PARAMETER; }
virtual void AcceptVisitor( spVisitor& visitor )
{ visitor.VisitParameter( *this ); }
};
// stores information about member(or global) variable
class spAttribute : public spContext
{
public:
// type of the attribute
string mType;
// it's initial value
string mInitVal;
// constantness
bool mIsConstant;
public:
virtual int GetContextType() { return SP_CTX_ATTRIBUTE; }
virtual void AcceptVisitor( spVisitor& visitor )
{ visitor.VisitAttribute( *this ); }
};
class spOperation : public spContext
{
public:
// type of return value
string mRetType;
// argument list
//MParamListT mParams;
// TRUE, if operation does not modify
// the content of the object
bool mIsConstant;
// flag, specific to C++
bool mIsVirtual;
// TRUE, if definition follows the declaration immediatelly
bool mHasDefinition;
// scope if any (e.g. MyClass::MyFunction(), scope stirng is "MyClass" )
// usually found along with implementation of the method, which is now skipped
string mScope;
public:
spOperation();
// returns full declaration of the operations
// (ret val., identifier, arg. list),
// arguments are marked up with italic,
// default values marked up with bold-italic,
// all the rest is marked as bold
// NOTE:: this method may be overriden by class
// specific to concrete parser, to provide
// language-dependent reperesnetation of
// operation and it's argumetn list
//
// the default implementation outputs name in
// C++/Java syntax
virtual string GetFullName(MarkupTagsT tags);
virtual int GetContextType() { return SP_CTX_OPERATION; }
virtual void AcceptVisitor( spVisitor& visitor )
{ visitor.VisitOperation( *this ); }
};
// stores infromation about preprocessor directive
class spPreprocessorLine : public spContext
{
public:
// prepocessor statement including '#' and
// attached multiple lines with '\' character
string mLine;
int mDefType; // see SP_PREP_DEFINITION_TYPES enumeration
public:
virtual int GetContextType() { return SP_CTX_PREPROCESSOR; }
virtual int GetStatementType() { return mDefType; }
string CPP_GetIncludedFileNeme();
virtual void AcceptVisitor( spVisitor& visitor )
{ visitor.VisitPreprocessorLine( *this ); }
};
// stores information about the class
class spClass : public spContext
{
public:
// list of superclasses/interfaces
StrListT mSuperClassNames;
// see SP_CLASS_TYPES enumeration
int mClassSubType;
// see SP_INHERITANCE_TYPES enumeration
int mInheritanceType;
// valid if mClassSubType is SP_CLTYPE_TEMPLATE_CLASS
string mTemplateTypes;
// TRUE, if it's and interface of abstract base class
bool mIsAbstract;
public:
// sorts class members in the following order:
//
// (by "privacy level" - first private, than protected, public)
//
// within above set
//
// (by member type - attributes first, than methods, nested classes)
//
// within above set
//
// (by identifier of the member)
virtual void SortMembers();
virtual int GetContextType() { return SP_CTX_CLASS; }
virtual void AcceptVisitor( spVisitor& visitor )
{ visitor.VisitClass( *this ); }
};
// stores information about enum statement
class spEnumeration : public spContext
{
public:
string mEnumContent; // full-text content of enumeration
public:
virtual int GetContextType() { return SP_CTX_ENUMERATION; }
virtual void AcceptVisitor( spVisitor& visitor )
{ visitor.VisitEnumeration( *this ); }
};
class spTypeDef : public spContext
{
public:
// the original type which is redefined
// by this type definition
string mOriginalType;
public:
virtual int GetContextType() { return SP_CTX_TYPEDEF; }
virtual void AcceptVisitor( spVisitor& visitor )
{ visitor.VisitTypeDef( *this ); }
};
// NOTE:: files context may be put to other
// file context, resulting in a collection
// of parsed file contexts, with a virtual "superfile"
class spFile : public spContext
{
public:
// since file name cannot be determined from
// source code, filling in this field is optional
string mFileName;
public:
virtual int GetContextType() { return SP_CTX_FILE; }
virtual void AcceptVisitor( spVisitor& visitor )
{ visitor.VisitFile( *this ); }
};
//TODO:: comments.
class SourceParserPlugin
{
public:
virtual bool CanUnderstandContext( char* cur, char* end, spContext* pOuttterCtx ) = 0;
virtual void ParseContext( char* start, char*& cur, char* end, spContext* pOuttterCtx ) = 0;
};
// abstract interface for source parsers
// which can output parsing results in the
// form of context-tree, where each node
// should be derivative of spContext, (see
// above classes)
class SourceParserBase
{
private:
// auto-resizing file buffer, created in ParseFile()
// to reuse large heap block for multiple parsings
char* mpFileBuf;
int mFileBufSz;
protected:
SourceParserPlugin* mpPlugin;
protected:
// value is set in the derived parser classes
int mParserStatus;
public:
SourceParserBase();
virtual ~SourceParserBase();
// loads entier source file(as text) into memory,
// and passes it's contents to ParseAll() method,
// memory occupied by source text is released after
// parsing is done
//
// (NOTE:: this is the default implementation),
virtual spFile* ParseFile( const char* fname );
// should returns the root-node of the created context tree
// (user is responsible for releasing it from the heep)
// "end" should point to the (last character + 1) of the
// source text area
virtual spFile* Parse( char* start, char* end ) = 0;
// returns parser "status word" (specific to concrete parser)
int GetParserStatus() { return mParserStatus; }
void SetPlugin( SourceParserPlugin* pPlugin );
};
#endif

View File

@@ -1,667 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: No names yet.
// Purpose: Contrib. demo
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 27/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleskandars Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __WXSTLAC_G__
#define __WXSTLAC_G__
#ifdef new
#undef new
#endif
#include <stddef.h>
#include <sys/types.h>
#include <memory.h>
#include <limits.h>
#include <new.h>
// the below macro used internally (see actual interface after this macro)
// arguments:
//
// ARG_IS_UNIQUE
// ASSOC_CONT_CLASS_NAME
//
// ARG_VALUE_TYPE
// ARG_KEY_TYPE
// ARG_ACTUAL_VALUE_TYPE
//
// _KEY_NAME
// _VALUE_NAME
//
// _X_KEY_NAME
// _X_VALUE_NAME
//
// _INSERT_METHOD_DEFINITION
#define __DEFINE_ASOC_CLASS( ARG_IS_UNIQUE, \
FUNCTOR,\
ASSOC_CONT_CLASS_NAME, \
ARG_VALUE_TYPE, \
ARG_KEY_TYPE, \
ARG_ACTUAL_VALUE_TYPE, \
_KEY_NAME, \
_VALUE_NAME, \
_X_KEY_NAME, \
_X_VALUE_NAME, \
_INSERT_METHOD_DEFINITION \
) class \
ASSOC_CONT_CLASS_NAME\
{\
protected:\
\
public:\
typedef ARG_VALUE_TYPE value_type;\
typedef ARG_KEY_TYPE key_type;\
typedef ARG_ACTUAL_VALUE_TYPE actual_value_type;\
\
typedef value_type* pointer;\
typedef value_type& reference;\
\
typedef const value_type& const_reference;\
\
typedef FUNCTOR key_compare;\
typedef key_compare Compare;\
\
protected:\
\
struct tree_node \
{\
tree_node* mpParent;\
tree_node* mpLeft;\
tree_node* mpRight;\
\
value_type mData;\
};\
\
typedef tree_node* node_ref_type;\
\
node_ref_type mpRoot;\
node_ref_type mpLeftMost;\
node_ref_type mpRightMost;\
\
node_ref_type mpFreeListHead;\
int mKeyIsUnique;\
\
key_compare mCmpFunctorObj;\
\
public:\
\
static inline node_ref_type next( node_ref_type pNode )\
{\
if ( pNode->mpRight ) \
{\
pNode = pNode->mpRight;\
\
while ( pNode->mpLeft ) pNode = pNode->mpLeft;\
\
return pNode;\
}\
else\
if ( pNode->mpParent )\
{\
if ( pNode == pNode->mpParent->mpLeft )\
\
return pNode->mpParent;\
\
pNode = pNode->mpParent;\
\
node_ref_type prevNode = pNode;\
pNode = pNode->mpParent;\
\
while(pNode)\
{\
if ( pNode->mpRight &&\
pNode->mpRight != prevNode\
) return pNode;\
\
prevNode = pNode;\
pNode= pNode->mpParent;\
}\
\
return 0;\
}\
else\
return 0;\
}\
\
static inline node_ref_type prev( node_ref_type pNode )\
{\
if ( pNode->mpLeft ) \
{\
pNode = pNode->mpLeft;\
\
while ( pNode->mpRight ) pNode = pNode->mpRight;\
\
return pNode;\
}\
else\
if ( pNode->mpParent )\
{\
if ( pNode == pNode->mpParent->mpRight )\
return pNode->mpParent;\
\
pNode = pNode->mpParent;\
\
node_ref_type prevNode = pNode;\
pNode = pNode->mpParent;\
\
while(pNode)\
{\
if ( pNode->mpLeft &&\
pNode->mpLeft != prevNode\
) return pNode;\
\
prevNode = pNode;\
pNode= pNode->mpParent;\
}\
\
return 0;\
}\
else \
return 0;\
}\
\
protected:\
\
inline int are_equel( const key_type& x, const key_type& y )\
{\
return ( !mCmpFunctorObj(x,y) && !mCmpFunctorObj(y,x) );\
}\
\
inline int is_less( const key_type& x, const key_type& y )\
{\
return mCmpFunctorObj(x,y);\
}\
\
static inline const actual_value_type& value( node_ref_type pNode )\
{\
return pNode->_VALUE_NAME;\
}\
\
static inline const key_type& key( node_ref_type pNode )\
{\
return pNode->_KEY_NAME;\
}\
\
inline node_ref_type AllocNode() \
{ \
if ( mpFreeListHead ) \
{\
node_ref_type pFreeNode = mpFreeListHead;\
mpFreeListHead = mpFreeListHead->mpLeft;\
\
return pFreeNode;\
}\
else\
{\
char* pHeapBlock = new char[sizeof(tree_node)];\
\
return (node_ref_type)pHeapBlock;\
}\
}\
\
inline void DestroyFreeList()\
{\
while ( mpFreeListHead )\
{\
node_ref_type tmp = mpFreeListHead;\
mpFreeListHead = mpFreeListHead->mpLeft;\
\
delete [](char*)tmp;\
}\
}\
\
inline void RecycleNode( node_ref_type pNode ) \
{\
pNode->mpLeft = mpFreeListHead;\
mpFreeListHead = pNode;\
}\
\
inline node_ref_type do_insert(const value_type& x = value_type() )\
{\
node_ref_type pNewNode = AllocNode();\
\
pNewNode->mpParent = \
pNewNode->mpLeft =\
pNewNode->mpRight = 0;\
\
node_ref_type pCurrent = mpRoot;\
node_ref_type pParent = 0;\
\
while (pCurrent) \
{\
if ( mKeyIsUnique && are_equel( _X_KEY_NAME, value(pCurrent) ) )\
{\
RecycleNode(pNewNode);\
return 0;\
}\
\
pParent = pCurrent;\
\
pCurrent = is_less( _X_KEY_NAME, value(pCurrent) ) \
? pCurrent->mpLeft \
: pCurrent->mpRight;\
}\
\
pNewNode->mpParent = pParent;\
\
if(pParent)\
\
if( is_less(_X_KEY_NAME, value(pParent) ) )\
\
pParent->mpLeft = pNewNode;\
else\
pParent->mpRight = pNewNode;\
else\
mpRoot = pNewNode;\
\
new ( &pNewNode->_KEY_NAME ) key_type(_X_KEY_NAME);\
new ( &pNewNode->_VALUE_NAME ) actual_value_type(_X_VALUE_NAME);\
\
if ( prev(pNewNode) == 0 ) mpLeftMost = pNewNode;\
if ( next(pNewNode) == 0 ) mpRightMost = pNewNode;\
\
return pNewNode;\
}\
\
friend class iterator;\
\
public:\
\
class iterator;\
class const_iterator;\
\
class iterator \
{\
public:\
node_ref_type mpNode;\
friend class CONT_CLASS_NAME;\
friend class const_iterator;\
friend class const_reverse_iterator;\
\
inline iterator( node_ref_type pNode )\
{\
mpNode = pNode;\
}\
\
public:\
inline iterator() {}\
inline int operator==( const iterator& rhs ) const { return (mpNode == rhs.mpNode); }\
inline int operator!=( const iterator& rhs ) const { return (mpNode != rhs.mpNode); }\
\
inline iterator( const iterator& other )\
{\
mpNode = other.mpNode;\
}\
\
inline const iterator& operator=( const iterator& other )\
{\
mpNode = other.mpNode;\
return *this;\
}\
\
inline const iterator& operator--() \
{\
mpNode = ASSOC_CONT_CLASS_NAME::prev(mpNode);\
return *this;\
}\
\
inline iterator operator--(int)\
{\
iterator tmp = *this;\
mpNode = ASSOC_CONT_CLASS_NAME::prev(mpNode);\
return tmp;\
}\
\
inline const iterator& operator++() \
{\
mpNode = ASSOC_CONT_CLASS_NAME::next(mpNode);\
return *this;\
}\
\
inline iterator operator++(int)\
{\
iterator tmp = *this;\
mpNode = ASSOC_CONT_CLASS_NAME::next(mpNode);\
return tmp;\
}\
\
inline reference operator*() const { return mpNode->mData; }\
};\
\
\
class const_iterator \
{\
public:\
node_ref_type mpNode;\
friend class CONT_CLASS_NAME;\
friend class const_reverse_iterator;\
\
inline const_iterator( node_ref_type pNode )\
{\
mpNode = pNode;\
}\
\
public:\
inline const_iterator() {}\
\
inline int operator==( const const_iterator& rhs ) const { return (mpNode == rhs.mpNode); }\
inline int operator!=( const const_iterator& rhs ) const { return (mpNode != rhs.mpNode); }\
\
inline const_iterator( const iterator& other )\
{\
mpNode = other.mpNode;\
}\
\
inline const_iterator( const const_iterator& other )\
{\
mpNode = other.mpNode;\
}\
\
inline const const_iterator& operator=( const const_iterator& other )\
{\
mpNode = other.mpNode;\
return *this;\
}\
\
inline const const_iterator& operator--() \
{\
mpNode = ASSOC_CONT_CLASS_NAME::prev(mpNode);\
return *this;\
}\
\
inline const_iterator operator--(int)\
{\
const_iterator tmp = *this;\
mpNode = ASSOC_CONT_CLASS_NAME::prev(mpNode);\
return tmp;\
}\
\
inline const const_iterator& operator++() \
{\
mpNode = ASSOC_CONT_CLASS_NAME::next(mpNode);\
return *this;\
}\
\
inline const_iterator operator++(int)\
{\
const_iterator tmp = *this;\
mpNode = ASSOC_CONT_CLASS_NAME::next(mpNode);\
return tmp;\
}\
\
inline const_reference operator*() const { return mpNode->mData; }\
};\
\
public:\
\
inline ASSOC_CONT_CLASS_NAME( key_compare cmpFunctorObj = key_compare(),\
int keyIsUnique = ARG_IS_UNIQUE )\
: mpFreeListHead( 0 ),\
mKeyIsUnique( keyIsUnique ),\
mCmpFunctorObj( cmpFunctorObj )\
{\
mpLeftMost = 0;\
mpRightMost = 0;\
mpRoot = 0;\
}\
\
inline ~ASSOC_CONT_CLASS_NAME() \
{ \
erase( begin(), end() ); \
\
DestroyFreeList();\
}\
\
inline iterator begin() { return mpLeftMost; }\
inline iterator end() { return 0; }\
\
inline const_iterator begin() const { return mpLeftMost; }\
inline const_iterator end() const { return 0; }\
\
inline iterator lower_bound( const key_type& x )\
{ \
node_ref_type pCurrent = mpRoot;\
\
while( pCurrent )\
{\
node_ref_type pParent = pCurrent;\
\
if( are_equel( x, key(pCurrent) ) )\
\
return (pCurrent);\
else\
pCurrent = is_less( x, key(pCurrent) ) \
? pCurrent->mpLeft \
: pCurrent->mpRight;\
\
if ( !pCurrent ) return (pParent);\
}\
\
return begin();\
}\
\
inline const_iterator lower_bound( const key_type& x ) const\
\
{ return const_iterator( lower_bound(x).mpNode ); }\
\
inline iterator upper_bound( const key_type& x )\
{\
node_ref_type pCurrent = mpRoot;\
\
while( pCurrent )\
{\
node_ref_type pParent = pCurrent;\
\
if( are_equel( x, key(pCurrent) ) )\
\
return (pCurrent);\
else\
pCurrent = is_less( x, key(pCurrent) ) \
? pCurrent->mpLeft \
: pCurrent->mpRight;\
\
if ( !pCurrent ) return next(pParent);\
}\
\
return end();\
}\
\
inline const_iterator upper_bound( const key_type& x ) const\
\
{ return const_iterator( upper_bound(x).mpNode ); }\
\
inline iterator find( const key_type& x )\
{\
node_ref_type pCurrent = mpRoot;\
\
while( pCurrent )\
{\
if( are_equel( x, key(pCurrent) ) )\
\
return (pCurrent);\
else\
pCurrent = is_less( x, key(pCurrent) ) \
? pCurrent->mpLeft \
: pCurrent->mpRight;\
}\
\
return end();\
}\
\
inline const_iterator find( const key_type& x ) const\
\
{ return const_iterator( find(x).mpNode ); }\
\
inline void erase(iterator first, iterator last)\
{\
if ( first.mpNode == 0 ) return;\
\
while( first != last ) \
{\
iterator next = first;\
++next;\
erase( first );\
first = next;\
}\
}\
\
inline void erase(iterator position)\
{\
if ( position.mpNode == 0 ) return;\
\
node_ref_type pZ = position.mpNode;\
node_ref_type pX, pY;\
\
if ( pZ == mpLeftMost ) mpLeftMost = next(pZ);\
if ( pZ == mpRightMost ) mpRightMost = prev( pZ );\
\
if ( !pZ->mpLeft || !pZ->mpRight )\
\
pY = pZ;\
else \
{\
pY = pZ->mpRight;\
\
while (pY->mpLeft) \
\
pY = pY->mpLeft;\
}\
\
if ( pY->mpLeft)\
\
pX = pY->mpLeft;\
else\
pX = pY->mpRight;\
\
if ( pX ) pX->mpParent = pY->mpParent;\
\
if (pY->mpParent)\
\
if (pY == pY->mpParent->mpLeft )\
\
pY->mpParent->mpLeft = pX;\
else\
pY->mpParent->mpRight = pX;\
else\
mpRoot = pX;\
\
node_ref_type toRemove = 0;\
\
if (pY != pZ) {\
\
pY->mpLeft = pZ->mpLeft;\
\
if (pY->mpLeft) pY->mpLeft->mpParent = pY;\
\
pY->mpRight = pZ->mpRight;\
\
if ( pY->mpRight ) \
\
pY->mpRight->mpParent = pY;\
\
pY->mpParent = pZ->mpParent;\
\
if (pZ->mpParent)\
\
if (pZ == pZ->mpParent->mpLeft)\
\
pZ->mpParent->mpLeft = pY;\
else\
pZ->mpParent->mpRight = pY;\
else\
mpRoot = pY;\
\
toRemove = pZ;\
} \
else \
toRemove = pY;\
\
value(toRemove).~actual_value_type();\
key(toRemove).~actual_value_type();\
\
RecycleNode( toRemove );\
}\
\
_INSERT_METHOD_DEFINITION\
}
// do not undefine ___WXSTL_COMMA, where associated containers are defined!
// (it is used as workaround for constraints of C-Preprocessor's nested macros)
#define ___WXSTL_COMMA ,
#define __DEFINE_MAP(ARG_IS_UNIQUE, KEY_TYPE, VAL_TYPE, FUNCTOR ) __DEFINE_ASOC_CLASS( ARG_IS_UNIQUE,\
FUNCTOR,\
__WXSTLMAP_##KEY_TYPE##VAL_TYPE##ARG_IS_UNIQUE, \
struct key_value_pair { KEY_TYPE first ; \
VAL_TYPE second;\
key_value_pair() {}\
key_value_pair( const KEY_TYPE& key ___WXSTL_COMMA const VAL_TYPE& value ) \
: first(key) ___WXSTL_COMMA second( value ) {} \
} , \
KEY_TYPE,\
VAL_TYPE,\
mData.first, mData.second, x.first, x.second, \
struct insert_result_iterator\
{\
iterator first;\
int second;\
};\
inline insert_result_iterator insert( const value_type& x )\
{\
insert_result_iterator result;\
\
result.first = do_insert(x);\
result.second = ( result.first == end() ) ? 0 : 1;\
\
return result;\
} )
#define __DEFINE_SET(ARG_IS_UNIQUE, KEY_TYPE, FUNCTOR ) __DEFINE_ASOC_CLASS( ARG_IS_UNIQUE,\
FUNCTOR,\
__WXSTLSET_##TYPE##ARG_IS_UNIQUE, \
KEY_TYPE,\
KEY_TYPE,\
KEY_TYPE,\
mData, mData, x, x, \
struct insert_result_iterator\
{\
iterator first;\
int second;\
};\
inline insert_result_iterator insert( const value_type& x )\
{\
insert_result_iterator result;\
\
result.first = do_insert(x);\
result.second = ( result.first == end() ) ? 0 : 1;\
\
return result;\
} )
// helper macros to create functor objects for associative containers of the given type
#define LESS_THEN_FUNCTOR(TYPE) struct \
{ inline int operator()(const TYPE& x, const TYPE& y ) const { return x < y; } }
#define GREATER_THEN_FUNCTOR(TYPE) struct \
{ inline int operator()(const TYPE& x, const TYPE& y ) const { return x > y; } }
// functor argument should be created using the two above macros
// or passing own class with method "operator()(const TYPE&,cosnt TYPE&)" defined in it
#define WXSTL_MAP( KEY_TYPE, VALUE_TYPE, FUNCTOR ) __DEFINE_MAP( 1 ,KEY_TYPE, VALUE_TYPE, FUNCTOR)
#define WXSTL_MULTIMAP( KEY_TYPE, VALUE_TYPE, FUNCTOR ) __DEFINE_MAP( 0 ,KEY_TYPE, VALUE_TYPE, FUNCTOR)
#define WXSTL_SET( KEY_TYPE, FUNCTOR ) __DEFINE_SET( 1 ,KEY_TYPE, FUNCTOR )
#define WXSTL_MULTISET( KEY_TYPE, FUNCTOR ) __DEFINE_SET( 0 ,KEY_TYPE, FUNCTOR )
#endif

View File

@@ -1,559 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: No names yet.
// Purpose: Contrib. demo
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 27/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleskandars Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __WXSTLLST_G__
#define __WXSTLLST_G__
#ifdef new
#undef new
#endif
#include <stddef.h>
#include <sys/types.h>
#include <memory.h>
#include <limits.h>
#include <new.h>
// VERSION:: 0.2 (copy-constructor/adign-op added)
// FOR NOW:: class-member operators "new" and "delete"
// are ignored by list class, memory allocated
// and freed using global operators
typedef int Type;
// the below macro used internally (see actual interface after this macro)
#define __DEFINE_STL_LIST(listClass,Type) class \
listClass \
{\
public:\
\
typedef Type value_type;\
typedef value_type* pointer;\
typedef const value_type* const_pointer;\
typedef value_type& reference;\
typedef const value_type& const_reference;\
typedef size_t size_type;\
typedef ptrdiff_t difference_type;\
\
protected:\
struct list_node\
{\
list_node* mpNext;\
list_node* mpPrev;\
value_type mData;\
};\
\
typedef list_node* node_ref_type;\
\
node_ref_type mpFreeListHead;\
node_ref_type mpTerminator;\
size_type mSize;\
\
inline node_ref_type AllocNode() \
{ \
if ( mpFreeListHead ) \
{\
node_ref_type pFreeNode = mpFreeListHead;\
mpFreeListHead = mpFreeListHead->mpPrev;\
\
return pFreeNode;\
}\
else\
{\
char* pHeapBlock = new char[sizeof(list_node)];\
\
return (node_ref_type)pHeapBlock;\
}\
}\
\
inline void DestroyFreeList()\
{\
while ( mpFreeListHead )\
{\
node_ref_type tmp = mpFreeListHead;\
mpFreeListHead = mpFreeListHead->mpPrev;\
\
delete [](char*)tmp;\
}\
}\
\
inline void RecycleNode( node_ref_type pNode ) \
{\
pNode->mpPrev = mpFreeListHead;\
mpFreeListHead = pNode;\
}\
\
public:\
\
class iterator \
{\
public:\
node_ref_type mpNode;\
friend class listClass;\
friend class const_iterator;\
friend class const_reverse_iterator;\
\
protected:\
iterator( node_ref_type pNode )\
{\
mpNode = pNode;\
}\
\
public:\
iterator() {}\
int operator==( const iterator& rhs ) const { return (mpNode == rhs.mpNode); }\
int operator!=( const iterator& rhs ) const { return (mpNode != rhs.mpNode); }\
\
inline iterator( const iterator& other )\
{\
mpNode = other.mpNode;\
}\
\
inline const iterator& operator--() \
{\
mpNode = mpNode->mpPrev;\
return *this;\
}\
\
inline iterator operator--(int)\
{\
iterator tmp = *this;\
mpNode = mpNode->mpPrev;\
return tmp;\
}\
\
inline const iterator& operator++() \
{\
mpNode = mpNode->mpNext;\
return *this;\
}\
\
inline iterator operator++(int)\
{\
iterator tmp = *this;\
mpNode = mpNode->mpNext;\
return tmp;\
}\
\
inline reference operator*() const { return mpNode->mData; }\
};\
\
\
class const_iterator \
{\
protected:\
node_ref_type mpNode;\
friend class listClass;\
\
protected:\
const_iterator( node_ref_type pNode )\
{\
mpNode = pNode;\
}\
\
public:\
\
const_iterator() {}\
int operator==( const const_iterator& rhs ) const { return (mpNode == rhs.mpNode); }\
int operator!=( const const_iterator& rhs ) const { return (mpNode != rhs.mpNode); }\
\
\
inline const_iterator( const iterator& other )\
{\
mpNode = other.mpNode;\
}\
\
inline const const_iterator& operator--() \
{\
mpNode = mpNode->mpPrev;\
return *this;\
}\
\
inline const_iterator operator--(int)\
{\
const_iterator tmp = *this;\
mpNode = mpNode->mpPrev;\
return tmp;\
}\
\
inline const const_iterator& operator++() \
{\
mpNode = mpNode->mpNext;\
return *this;\
}\
\
inline const_iterator operator++(int)\
{\
const_iterator tmp = *this;\
mpNode = mpNode->mpNext;\
return tmp;\
}\
\
inline const_reference operator*() const { return mpNode->mData; }\
};\
\
typedef iterator OutputIterator;\
typedef const_iterator InputIterator;\
\
class reverse_iterator \
{\
public:\
node_ref_type mpNode;\
friend class listClass;\
friend class const_reverse_iterator;\
\
protected:\
reverse_iterator ( node_ref_type pNode )\
{\
mpNode = pNode;\
}\
\
public:\
\
reverse_iterator() {}\
int operator==( const reverse_iterator& rhs ) const { return (mpNode == rhs.mpNode); }\
int operator!=( const reverse_iterator& rhs ) const { return (mpNode != rhs.mpNode); }\
\
inline reverse_iterator( const reverse_iterator& other )\
{\
mpNode = other.mpNode;\
}\
\
inline const reverse_iterator& operator--() \
{\
mpNode = mpNode->mpNext;\
return *this;\
}\
\
inline reverse_iterator operator--(int)\
{\
reverse_iterator tmp = *this;\
mpNode = mpNode->mpPrev;\
return tmp;\
}\
\
inline const reverse_iterator & operator++() \
{\
mpNode = mpNode->mpNext;\
return *this;\
}\
\
inline reverse_iterator operator++(int)\
{\
reverse_iterator tmp = *this;\
mpNode = mpNode->mpPrev;\
return tmp;\
}\
\
inline const_reference operator*() const { return mpNode->mData; }\
};\
\
\
class const_reverse_iterator \
{\
protected:\
node_ref_type mpNode;\
friend class listClass;\
\
protected:\
const_reverse_iterator( node_ref_type pNode )\
{\
mpNode = pNode;\
}\
\
public:\
\
const_reverse_iterator() {}\
int operator==( const const_reverse_iterator& rhs ) const { return (mpNode == rhs.mpNode); }\
int operator!=( const const_reverse_iterator& rhs ) const { return (mpNode != rhs.mpNode); }\
\
inline const_reverse_iterator( const reverse_iterator& other )\
{\
mpNode = other.mpNode;\
}\
\
inline const const_reverse_iterator& operator--() \
{\
mpNode = mpNode->mpNext;\
return *this;\
}\
\
inline const_reverse_iterator operator--(int)\
{\
const_reverse_iterator tmp = *this;\
mpNode = mpNode->mpNext;\
return tmp;\
}\
\
inline const const_reverse_iterator& operator++() \
{\
mpNode = mpNode->mpPrev;\
return *this;\
}\
\
inline const_reverse_iterator operator++(int)\
{\
const_reverse_iterator tmp = *this;\
mpNode = mpNode->mpPrev;\
return tmp;\
}\
\
inline const_reference operator*() const { return mpNode->mData; }\
};\
\
public:\
\
inline listClass()\
: mpFreeListHead( 0 ),\
mSize(0)\
{\
mpTerminator = AllocNode();\
mpTerminator->mpPrev = mpTerminator->mpNext = mpTerminator;\
}\
\
listClass( const listClass& other )\
{\
mpTerminator = AllocNode();\
mpTerminator->mpPrev = mpTerminator->mpNext = mpTerminator;\
\
for( listClass::const_iterator i = other.begin(); i != other.end(); ++i )\
\
push_back( (*i) );\
}\
\
inline const listClass& operator=( const listClass& rhs ) \
{\
erase( begin(), end() );\
\
for( listClass::const_iterator i = rhs.begin(); i != rhs.end(); ++i )\
\
push_back( (*i) );\
\
return *this;\
}\
\
inline listClass(const_iterator first, const_iterator last)\
: mpFreeListHead( 0 ),\
mSize(0)\
\
{ while( first != last ) push_back( *first++ ); }\
\
inline listClass( size_type n, const value_type& value = value_type() )\
\
{ for( size_t i = 0; i != n; ++n ) push_back( value ); }\
\
inline ~listClass() \
{ \
erase( begin(), end() ); \
\
RecycleNode( mpTerminator );\
DestroyFreeList();\
}\
\
inline iterator begin() { return iterator(mpTerminator->mpNext); }\
\
inline const_iterator begin() const \
{ return const_iterator(mpTerminator->mpNext); }\
\
inline iterator end() { return iterator(mpTerminator); }\
\
inline const_iterator end() const { return const_iterator(mpTerminator); }\
\
inline reverse_iterator rbegin() \
{ return reverse_iterator(mpTerminator->mpPrev); }\
\
inline reverse_iterator rend() \
{ return reverse_iterator(mpTerminator); }\
\
inline const_reverse_iterator rbegin() const\
{ return const_reverse_iterator(mpTerminator->mpPrev); }\
\
inline const_reverse_iterator rend() const\
{ return const_reverse_iterator(mpTerminator); }\
\
inline int empty() const { return (mSize == 0); }\
\
inline size_type size() const { return mSize; }\
\
inline size_type max_size() const { return UINT_MAX/sizeof(list_node); }\
\
inline reference front() { return mpTerminator->mData; }\
\
inline const_reference front() const { return mpTerminator->mData; }\
\
inline reference back() { return mpTerminator->mpPrev->mData; }\
\
inline const_reference back() const { return mpTerminator->mpPrev->mData; }\
\
inline void push_front(const value_type& x) { insert( begin(), x ); }\
\
inline void push_back(const value_type& x) { insert( end(), x ); }\
\
iterator insert(iterator position, const value_type& x = value_type())\
{\
node_ref_type pNew = AllocNode();\
\
node_ref_type pos = *((node_ref_type*)&position);\
\
pNew->mpNext = pos;\
pNew->mpPrev = pos->mpPrev;\
pos->mpPrev->mpNext = pNew;\
pos->mpPrev = pNew;\
\
new (&pNew->mData) value_type(x);\
\
++mSize;\
\
return iterator(pNew);\
}\
\
inline void insert(iterator position, const_iterator first, const_iterator last )\
{\
while( first != last ) insert( position, *first++ );\
}\
\
inline void splice( iterator position, listClass& other )\
{\
if ( other.begin() == other.end() ) return;\
\
node_ref_type pTill = other.mpTerminator->mpPrev;\
node_ref_type pFrom = other.begin().mpNode;\
\
mpTerminator->mpPrev->mpNext = pFrom;\
pFrom->mpPrev = mpTerminator->mpPrev->mpNext;\
\
pTill->mpNext = mpTerminator;\
mpTerminator->mpPrev = pTill;\
\
other.mpTerminator->mpNext = \
other.mpTerminator->mpPrev = other.mpTerminator;\
\
mSize += other.mSize;\
other.mSize = 0;\
}\
\
inline void splice( iterator position, listClass& other, iterator first, iterator last )\
{\
if ( first == last ) return;\
\
size_type sz = 0;\
iterator tmp = first;\
while( tmp != last ) \
{\
++tmp;\
++sz;\
}\
\
mSize += sz;\
other.mSize -= sz;\
\
node_ref_type pPos = position.mpNode;\
node_ref_type pFirst = first.mpNode;\
node_ref_type pLast = last.mpNode;\
node_ref_type pTill = last.mpNode->mpPrev;\
\
pPos->mpPrev->mpNext = pFirst;\
pPos->mpPrev = pTill;\
\
pFirst->mpPrev->mpNext = last.mpNode;\
pLast->mpPrev = pTill;\
\
pFirst->mpPrev = pPos->mpPrev;\
pTill->mpNext = pPos;\
}\
\
inline void pop_front() { erase( begin() ); }\
inline void pop_back() { erase( --end() ); }\
\
inline void erase(iterator position)\
{\
erase( position, ++position );\
}\
\
inline void erase(iterator first, iterator last)\
{\
node_ref_type firstNode = *((node_ref_type*)&first);\
node_ref_type lastNode = *((node_ref_type*)&last);\
\
firstNode->mpPrev->mpNext = lastNode;\
lastNode->mpPrev = firstNode->mpPrev;\
\
while( firstNode != lastNode )\
{\
node_ref_type next = firstNode->mpNext;\
\
typedef value_type value_type_local;\
firstNode->mData.value_type_local::~value_type_local();\
\
RecycleNode( firstNode );\
\
firstNode = next;\
\
--mSize;\
}\
}\
\
inline void remove(const value_type& value)\
{\
for( iterator i = begin(); i != end(); ++i )\
\
if ( (*i) == value ) \
{\
erase( i ); break;\
}\
}\
\
void sort()\
{\
if ( mSize < 2 ) return;\
\
iterator from = begin();\
iterator other_end = end();\
--other_end;\
\
for( size_type i = 0; i != mSize; ++i )\
{\
size_type nSwaps = 0;\
\
iterator next = begin();\
++next;\
\
for( iterator j = begin(); j != other_end; ++j )\
{\
\
if ( (*next) < (*j) )\
{\
value_type tmp = (*j);\
(*j) = (*next);\
(*next) = tmp;\
\
++nSwaps;\
}\
\
++next;\
}\
\
if ( !nSwaps) break;\
\
--other_end;\
}\
}\
}
// defines list class with the given element type
#define WXSTL_LIST(ELEMENT_CLASS) __DEFINE_STL_LIST(\
\
_WXSTL_LIST_##ELEMENT_CLASS, ELEMENT_CLASS )
#endif

View File

@@ -1,781 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: No names yet.
// Purpose: Contrib. demo
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 27/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleskandars Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __WXSTLVEC_G__
#define __WXSTLVEC_G__
#ifdef new
#undef new
#endif
#include <memory.h>
#include <string.h> // imports memmove()
#include <stddef.h>
#include <sys/types.h>
#include <limits.h>
#include <new>
// the below macro used internally (see actual interface after this macro)
#define __DEFINE_STL_VECTOR_DEEP( vectorClass, Type ) class vectorClass {\
\
public:\
typedef Type value_type;\
typedef value_type* iterator;\
typedef const value_type* const_iterator;\
typedef iterator pointer;\
typedef const iterator const_pointer;\
typedef value_type& reference;\
typedef const value_type& const_reference;\
typedef size_t size_type;\
typedef ptrdiff_t difference_type;\
\
typedef iterator OutputIterator;\
typedef const_iterator InputIterator;\
\
protected:\
\
inline void PlacementCopy( const_iterator first, const_iterator last, iterator result )\
{\
while ( first != last ) \
new (result++) value_type(*first++);\
}\
\
inline void ConstructObjects( iterator first, iterator last, const value_type& pattern )\
{\
while( first != last ) \
new (first++) value_type(pattern);\
}\
\
inline void CopyObjects( iterator first, iterator last, iterator result )\
{\
while( first != last ) \
*result++ = *first++;\
}\
\
inline void CopyObjectsBack( iterator first, iterator last, iterator result )\
{\
result += difference_type(last,first);\
\
while( first != last ) \
*(--result) = *(--last);\
}\
\
public:\
\
class reverse_iterator \
{\
friend class vectorClass;\
friend class const_reverse_iterator;\
\
public:\
iterator mpPos;\
\
public:\
\
reverse_iterator() {}\
\
reverse_iterator ( iterator pPos )\
{\
mpPos = pPos;\
}\
\
int operator==( const reverse_iterator& rhs ) const { return (mpPos == rhs.mpPos); }\
int operator!=( const reverse_iterator& rhs ) const { return (mpPos != rhs.mpPos); }\
\
inline reverse_iterator( const reverse_iterator& other )\
{\
mpPos = other.mpPos;\
}\
\
inline const reverse_iterator& operator--() \
{\
--mpPos;\
return *this;\
}\
\
inline reverse_iterator operator--(int)\
{\
reverse_iterator tmp = *this;\
--mpPos;\
return tmp;\
}\
\
inline const reverse_iterator & operator++() \
{\
++mpPos;\
return *this;\
}\
\
inline reverse_iterator operator++(int)\
{\
reverse_iterator tmp = *this;\
++mpPos;\
return tmp;\
}\
\
inline const_reference operator*() const { return *mpPos; }\
};\
\
\
class const_reverse_iterator \
{\
protected:\
iterator mpPos;\
public:\
\
const_reverse_iterator() {}\
\
const_reverse_iterator( const iterator pPos )\
{\
mpPos = pPos;\
}\
\
int operator==( const const_reverse_iterator& rhs ) const { return (mpPos == rhs.mpPos); }\
int operator!=( const const_reverse_iterator& rhs ) const { return (mpPos != rhs.mpPos); }\
\
inline const_reverse_iterator( const reverse_iterator& other )\
{\
mpPos = other.mpPos;\
}\
\
inline const const_reverse_iterator& operator--() \
{\
--mpPos;\
return *this;\
}\
\
inline const_reverse_iterator operator--(int)\
{\
const_reverse_iterator tmp = *this;\
--mpPos;\
return tmp;\
}\
\
inline const const_reverse_iterator & operator++() \
{\
++mpPos;\
return *this;\
}\
\
inline const_reverse_iterator operator++(int)\
{\
const_reverse_iterator tmp = *this;\
++mpPos;\
return tmp;\
}\
\
inline const_reference operator*() const { return *mpPos; }\
};\
\
protected:\
\
pointer mpStart;\
pointer mpEnd;\
pointer mpEndOfBuf;\
\
protected:\
\
inline void quick_sort(int low, int hi) \
{\
}\
\
inline void DestructRange( iterator first, iterator last )\
{\
typedef value_type value_type_local;\
\
while ( first != last ) \
{\
first->value_type_local::~value_type_local();\
++first;\
}\
}\
\
inline iterator DoInsert(iterator position, const value_type& x)\
{\
if ( mpEnd < mpEndOfBuf )\
{\
new (mpEnd) value_type(*(mpEnd-1) );\
\
CopyObjectsBack( position, mpEnd, position + 1 );\
\
*position = x;\
\
++mpEnd;\
\
return position;\
}\
\
size_type minBufLen = WXSTL_VECTOR_MIN_BUF_SIZE/sizeof(value_type);\
\
size_type doubledSize = size()*2;\
\
size_type newLen = ( doubledSize < minBufLen ) ? minBufLen : doubledSize;\
\
iterator pNewStart = (iterator)( new char[newLen*sizeof(value_type)] );\
\
PlacementCopy( mpStart, position, pNewStart );\
\
iterator atPosition = pNewStart + difference_type( position - mpStart );\
\
new (atPosition) value_type(x);\
\
iterator newPos = atPosition;\
\
++atPosition;\
\
if ( mpStart ) \
{\
PlacementCopy( position, mpEnd, atPosition );\
DestructRange( mpStart, mpEnd );\
delete [](char*)mpStart;\
}\
\
mpEnd = atPosition + difference_type( mpEnd - position );\
\
mpStart = pNewStart;\
mpEndOfBuf = pNewStart + newLen;\
\
return newPos;\
}\
\
public:\
\
inline vectorClass() : mpStart(0), \
mpEnd(0),\
mpEndOfBuf(0)\
{}\
\
inline vectorClass( const_iterator first, const_iterator last )\
: mpStart(0),\
mpEnd(0),\
mpEndOfBuf(0)\
\
{ while( first != last ) push_back( *first++ ); }\
\
inline vectorClass( size_type n, const value_type& value = value_type() )\
: mpStart(0),\
mpEnd(0),\
mpEndOfBuf(0)\
\
{ for( size_type i = 0; i != n; ++i ) push_back( value ); }\
\
inline const vectorClass& operator=( const vectorClass& other )\
{\
if (mpStart) \
{\
DestructRange( begin(), end() );\
delete [](char*)mpStart; \
}\
\
size_t newLen = difference_type( other.mpEndOfBuf - other.mpStart );\
\
mpStart = (iterator)( new char[newLen*sizeof(value_type)] );\
\
PlacementCopy( other.begin(), other.end(), mpStart );\
\
mpEnd = mpStart + other.size();\
\
mpEndOfBuf = mpStart + newLen;\
\
return *this;\
}\
\
inline vectorClass( const vectorClass& other )\
: mpStart(0),\
mpEnd(0),\
mpEndOfBuf(0)\
{\
this->operator=( other );\
}\
\
inline ~vectorClass() \
{ \
if (mpStart) \
{\
DestructRange( begin(), end() );\
delete [](char*)mpStart; \
}\
}\
\
inline iterator begin() { return mpStart; }\
\
inline const_iterator begin() const { return mpStart; }\
\
inline iterator end() { return mpEnd; }\
\
inline const_iterator end() const { return mpEnd; }\
\
inline size_type size() const { return (size_type)difference_type(mpEnd-mpStart); }\
\
inline size_type max_size() const { return UINT_MAX/sizeof(value_type); }\
\
inline size_type capacity() const \
{ return difference_type(mpEndOfBuf-mpStart)/sizeof(value_type); }\
\
inline int empty() const { return mpStart == mpEnd; }\
\
inline reference operator[](size_type n) { return *(mpStart+n); }\
\
inline const_reference operator[](size_type n) const { return *(mpStart+n); }\
\
inline reference front() { return (*mpStart); }\
\
inline const_reference front() const { return (*mpStart); }\
\
inline reference back() { return (*(mpEnd-1)); }\
\
inline const_reference back() const { return (*(mpEnd-1)); }\
\
inline void reserve(size_type n) {}\
\
inline void push_back(const value_type& x)\
{\
if ( mpEnd != mpEndOfBuf ) \
{\
new (mpEnd) value_type(x);\
++mpEnd;\
}\
else\
DoInsert( mpEnd, x );\
}\
\
inline iterator insert(iterator position, const value_type& x = value_type())\
{\
if ( position == mpEnd && mpEnd != mpEndOfBuf )\
{\
new (mpEnd) value_type(x);\
++mpEnd;\
return (mpEnd-1);\
}\
else return DoInsert( position, x );\
}\
\
inline void pop_back()\
{\
DestructRange( mpEnd-1, mpEnd );\
\
--mpEnd;\
}\
\
inline void erase(iterator first, iterator last)\
{\
if ( last == mpEnd )\
{\
DestructRange( first, last );\
mpEnd = first;\
return;\
}\
\
CopyObjects( last, last + difference_type( mpEnd - last ), first );\
\
iterator newEnd = mpEnd - difference_type( last - first );\
DestructRange( newEnd, mpEnd );\
\
mpEnd = newEnd;\
}\
\
inline void erase( iterator position )\
{\
erase( position, position + 1 );\
}\
\
inline void sort()\
{\
if ( size() < 2 ) return;\
quick_sort( 0, size()-1 );\
}\
}
/////////////////////////////// shallow-copy container ///////////////////////
#define __DEFINE_STL_VECTOR_SHALLOW( vectorClass, Type ) class vectorClass {\
\
public:\
typedef Type value_type;\
typedef value_type* iterator;\
typedef const value_type* const_iterator;\
typedef iterator pointer;\
typedef const iterator const_pointer;\
typedef value_type& reference;\
typedef const value_type& const_reference;\
typedef size_t size_type;\
typedef ptrdiff_t difference_type;\
\
typedef iterator OutputIterator;\
typedef const_iterator InputIterator;\
\
protected:\
\
inline void PlacementCopy( const_iterator first, const_iterator last, iterator result )\
{\
memcpy(result, first, int(difference_type(last-first)*sizeof(value_type)) );\
}\
\
inline void ConstructObjects( iterator first, iterator last, const value_type& pattern )\
{\
if ( sizeof(pattern) == 1 )\
\
memset( first, int(difference_type(last-first)/sizeof(value_type)), \
int(*((char*)&pattern)) );\
else\
while( first != last ) \
*first++ = pattern;\
}\
\
inline void CopyObjects( iterator first, iterator last, iterator result )\
{\
memcpy(result, first, int(difference_type(last-first)*sizeof(value_type)) );\
}\
\
inline void CopyObjectsBack( iterator first, iterator last, iterator result )\
{\
memmove(result, first, int(difference_type(last-first)*sizeof(value_type)) );\
}\
\
public:\
\
class reverse_iterator \
{\
friend class vectorClass;\
friend class const_reverse_iterator;\
\
public:\
iterator mpPos;\
\
public:\
\
reverse_iterator() {}\
\
reverse_iterator ( iterator pPos )\
{\
mpPos = pPos;\
}\
\
int operator==( const reverse_iterator& rhs ) const { return (mpPos == rhs.mpPos); }\
int operator!=( const reverse_iterator& rhs ) const { return (mpPos != rhs.mpPos); }\
\
inline reverse_iterator( const reverse_iterator& other )\
{\
mpPos = other.mpPos;\
}\
\
inline const reverse_iterator& operator--() \
{\
--mpPos;\
return *this;\
}\
\
inline reverse_iterator operator--(int)\
{\
reverse_iterator tmp = *this;\
--mpPos;\
return tmp;\
}\
\
inline const reverse_iterator & operator++() \
{\
++mpPos;\
return *this;\
}\
\
inline reverse_iterator operator++(int)\
{\
reverse_iterator tmp = *this;\
++mpPos;\
return tmp;\
}\
\
inline const_reference operator*() const { return *mpPos; }\
};\
\
\
class const_reverse_iterator \
{\
protected:\
iterator mpPos;\
public:\
\
const_reverse_iterator() {}\
\
const_reverse_iterator( const iterator pPos )\
{\
mpPos = pPos;\
}\
\
int operator==( const const_reverse_iterator& rhs ) const { return (mpPos == rhs.mpPos); }\
int operator!=( const const_reverse_iterator& rhs ) const { return (mpPos != rhs.mpPos); }\
\
inline const_reverse_iterator( const reverse_iterator& other )\
{\
mpPos = other.mpPos;\
}\
\
inline const const_reverse_iterator& operator--() \
{\
--mpPos;\
return *this;\
}\
\
inline const_reverse_iterator operator--(int)\
{\
const_reverse_iterator tmp = *this;\
--mpPos;\
return tmp;\
}\
\
inline const const_reverse_iterator & operator++() \
{\
++mpPos;\
return *this;\
}\
\
inline const_reverse_iterator operator++(int)\
{\
const_reverse_iterator tmp = *this;\
++mpPos;\
return tmp;\
}\
\
inline const_reference operator*() const { return *mpPos; }\
};\
\
protected:\
\
pointer mpStart;\
pointer mpEnd;\
pointer mpEndOfBuf;\
\
protected:\
\
inline void quick_sort(int low, int hi) \
{\
}\
\
inline void DestructRange( iterator first, iterator last )\
{\
}\
\
inline iterator DoInsert(iterator position, const value_type& x)\
{\
if ( mpEnd < mpEndOfBuf )\
{\
new (mpEnd) value_type(*(mpEnd-1) );\
\
CopyObjectsBack( position, mpEnd, position + 1 );\
\
*position = x;\
\
++mpEnd;\
\
return position;\
}\
\
size_type minBufLen = WXSTL_VECTOR_MIN_BUF_SIZE/sizeof(value_type);\
\
size_type doubledSize = size()*2;\
\
size_type newLen = ( doubledSize < minBufLen ) ? minBufLen : doubledSize;\
\
iterator pNewStart = (iterator)( new char[newLen*sizeof(value_type)] );\
\
PlacementCopy( mpStart, position, pNewStart );\
\
iterator atPosition = pNewStart + difference_type( position - mpStart );\
\
new (atPosition) value_type(x);\
\
iterator newPos = atPosition;\
\
++atPosition;\
\
if ( mpStart ) \
{\
PlacementCopy( position, mpEnd, atPosition );\
DestructRange( mpStart, mpEnd );\
delete [](char*)mpStart;\
}\
\
mpEnd = atPosition + difference_type( mpEnd - position );\
\
mpStart = pNewStart;\
mpEndOfBuf = pNewStart + newLen;\
\
return newPos;\
}\
\
public:\
\
inline vectorClass() : mpStart(0), \
mpEnd(0),\
mpEndOfBuf(0)\
{}\
\
inline vectorClass( const_iterator first, const_iterator last )\
: mpStart(0),\
mpEnd(0),\
mpEndOfBuf(0)\
\
{ while( first != last ) push_back( *first++ ); }\
\
inline vectorClass( size_type n, const value_type& value = value_type() )\
: mpStart(0),\
mpEnd(0),\
mpEndOfBuf(0)\
\
{ for( size_type i = 0; i != n; ++i ) push_back( value ); }\
\
inline const vectorClass& operator=( const vectorClass& other )\
{\
if (mpStart) \
{\
DestructRange( begin(), end() );\
delete [](char*)mpStart; \
}\
\
size_t newLen = difference_type( other.mpEndOfBuf - other.mpStart );\
\
mpStart = (iterator)( new char[newLen*sizeof(value_type)] );\
\
PlacementCopy( other.begin(), other.end(), mpStart );\
\
mpEnd = mpStart + other.size();\
\
mpEndOfBuf = mpStart + newLen;\
\
return *this;\
}\
\
inline vectorClass( const vectorClass& other )\
: mpStart(0),\
mpEnd(0),\
mpEndOfBuf(0)\
{\
this->operator=( other );\
}\
\
inline ~vectorClass() \
{ \
if (mpStart) \
{\
DestructRange( begin(), end() );\
delete [](char*)mpStart; \
}\
}\
\
inline iterator begin() { return mpStart; }\
\
inline const_iterator begin() const { return mpStart; }\
\
inline iterator end() { return mpEnd; }\
\
inline const_iterator end() const { return mpEnd; }\
\
inline size_type size() const { return (size_type)difference_type(mpEnd-mpStart); }\
\
inline size_type max_size() const { return UINT_MAX/sizeof(value_type); }\
\
inline size_type capacity() const \
{ return difference_type(mpEndOfBuf-mpStart)/sizeof(value_type); }\
\
inline int empty() const { return mpStart == mpEnd; }\
\
inline reference operator[](size_type n) { return *(mpStart+n); }\
\
inline const_reference operator[](size_type n) const { return *(mpStart+n); }\
\
inline reference front() { return (*mpStart); }\
\
inline const_reference front() const { return (*mpStart); }\
\
inline reference back() { return (*(mpEnd-1)); }\
\
inline const_reference back() const { return (*(mpEnd-1)); }\
\
inline void reserve(size_type n) {}\
\
inline void push_back(const value_type& x)\
{\
if ( mpEnd != mpEndOfBuf ) \
{\
new (mpEnd) value_type(x);\
++mpEnd;\
}\
else\
DoInsert( mpEnd, x );\
}\
\
inline iterator insert(iterator position, const value_type& x = value_type())\
{\
if ( position == mpEnd && mpEnd != mpEndOfBuf )\
{\
new (mpEnd) value_type(x);\
++mpEnd;\
return (mpEnd-1);\
}\
else return DoInsert( position, x );\
}\
\
inline void pop_back()\
{\
DestructRange( mpEnd-1, mpEnd );\
\
--mpEnd;\
}\
\
inline void erase(iterator first, iterator last)\
{\
if ( last == mpEnd )\
{\
DestructRange( first, last );\
mpEnd = first;\
return;\
}\
\
CopyObjects( last, last + difference_type( mpEnd - last ), first );\
\
iterator newEnd = mpEnd - difference_type( last - first );\
DestructRange( newEnd, mpEnd );\
\
mpEnd = newEnd;\
}\
\
inline void erase( iterator position )\
{\
erase( position, position + 1 );\
}\
\
inline void sort()\
{\
if ( size() < 2 ) return;\
quick_sort( 0, size()-1 );\
}\
}
// redefine below symbol to change the default allocation unit of vector content buffer
#define WXSTL_VECTOR_MIN_BUF_SIZE 64
// defines vector class, where objects are copied
// using "deep-copy" sematics (i.e. by calling their copy constructors)
#define WXSTL_VECTOR(ELEMENT_CLASS) \
__DEFINE_STL_VECTOR_DEEP(_WXSTL_VECTOR_##ELEMENT_CLASS, ELEMENT_CLASS)
// defines vector class, where objects are copied
// using "shallow-copy" sematics (i.e. instead of calling
// their constructors, memcpy() and memmove() are used to copy their raw data)
#define WXSTL_VECTOR_SHALLOW_COPY(ELEMENT_CLASS) __DEFINE_STL_VECTOR_SHALLOW(_WXSTL_VECTORSC_##ELEMENT_CLASS, ELEMENT_CLASS)
#endif

View File

@@ -1,693 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: HelpGen.cpp
// Purpose: Main program file for HelpGen
// Author: Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
// Modified by:
// Created: 06/01/99
// RCS-ID: $Id$
// Copyright: (c) 1999 VZ
// Licence: GPL
/////////////////////////////////////////////////////////////////////////////
/*
TODO (+ means fixed)
(i) small fixes in the current version
+1. Quote special TeX characters like '&' and '_' (=> derive from wxFile)
2. Document typedefs
3. Document global variables
4. Document #defines
+5. Program options
(ii) plans for version 2
1. Use wxTextFile for direct file access to avoid one scan method problems
2. Use command line parsrer class for the options
*/
// =============================================================================
// declarations
// =============================================================================
// -----------------------------------------------------------------------------
// headers
// -----------------------------------------------------------------------------
// wxWindows
#include "wx/wxprec.h"
#ifndef WX_PRECOMP
#include <wx/string.h>
#include <wx/log.h>
#include <wx/dynarray.h>
#endif // WX_PRECOMP
#include <wx/file.h>
// C++ parsing classes
#include "cjparser.h"
// standard headers
#include <stdio.h>
#include <time.h>
// -----------------------------------------------------------------------------
// private functions
// -----------------------------------------------------------------------------
// return the label for the given function name (i.e. argument of \label)
static wxString MakeLabel(const char *classname, const char *funcname = NULL);
// return the whole \helpref{arg}{arg_label} string
static wxString MakeHelpref(const char *argument);
// quotes special TeX characters in place
static void TeXFilter(wxString* str);
// get all comments associated with this context
static wxString GetAllComments(const spContext& ctx);
// get the string with current time (returns pointer to static buffer)
// timeFormat is used for the call of strftime(3)
#ifdef GetCurrentTime
#undef GetCurrentTime
#endif
static const char *GetCurrentTime(const char *timeFormat);
// -----------------------------------------------------------------------------
// private classes
// -----------------------------------------------------------------------------
// add a function which sanitazes the string before writing it to the file
class wxTeXFile : public wxFile
{
public:
wxTeXFile() : wxFile() { }
bool WriteTeX(const wxString& s)
{
wxString t(s);
TeXFilter(&t);
return wxFile::Write(t);
}
};
class HelpGenVisitor : public spVisitor
{
public:
// ctor
HelpGenVisitor();
virtual void VisitFile( spFile& fl );
virtual void VisitClass( spClass& cl );
virtual void VisitEnumeration( spEnumeration& en );
virtual void VisitTypeDef( spTypeDef& td );
virtual void VisitPreprocessorLine( spPreprocessorLine& pd );
virtual void VisitAttribute( spAttribute& attr );
virtual void VisitOperation( spOperation& op );
virtual void VisitParameter( spParameter& param );
void EndVisit();
// shut up g++ warning (ain't it stupid?)
virtual ~HelpGenVisitor() { }
protected:
// (re)initialize the state
void Reset();
// insert documentation for enums/typedefs coming immediately before the
// class declaration into the class documentation
void InsertTypedefDocs();
void InsertEnumDocs();
// write the headers for corresponding sections (only once)
void InsertDataStructuresHeader();
void InsertMethodsHeader();
// terminate the function documentation if it was started
void CloseFunction();
wxTeXFile m_file; // file we're writing to now
// state variables
bool m_inClass, // TRUE after file successfully opened
m_inTypesSection, // enums & typedefs go there
m_inMethodSection, // functions go here
m_isFirstParam, // first parameter of current function?
m_inFunction; // we're parsing a function declaration
// holders for "saved" documentation
wxString m_textStoredEnums,
m_textStoredTypedefs,
m_textStoredFunctionComment;
// headers included by this file
wxArrayString m_headers;
};
// -----------------------------------------------------------------------------
// private functions
// -----------------------------------------------------------------------------
// =============================================================================
// implementation
// =============================================================================
// this function never returns
static void usage()
{
wxLogError("usage: HelpGen [-q|-v] <header files...>\n");
exit(1);
}
int main(int argc, char **argv)
{
if ( argc < 2 ) {
usage();
}
int first;
for ( first = 1; (first < argc) && argv[first][0] == '-'; first++ ) {
switch ( argv[first][1] ) {
case 'v':
// be verbose
wxLog::GetActiveTarget()->SetVerbose();
break;
case 'q':
// be quiet
wxLog::GetActiveTarget()->SetVerbose(false);
break;
default:
usage();
}
}
// create a parser object and a visitor derivation
CJSourceParser parser;
HelpGenVisitor visitor;
// parse all files
for ( int i = first; i < argc; i++ ) {
spContext *ctxTop = parser.ParseFile(argv[i]);
if ( !ctxTop ) {
wxLogWarning("File '%s' couldn't be processed.", argv[i]);
}
else {
((spFile *)ctxTop)->mFileName = argv[i];
visitor.VisitAll(*ctxTop);
visitor.EndVisit();
}
}
return 0;
}
// -----------------------------------------------------------------------------
// HelpGenVisitor implementation
// -----------------------------------------------------------------------------
HelpGenVisitor::HelpGenVisitor()
{
Reset();
}
void HelpGenVisitor::Reset()
{
m_inClass =
m_inFunction =
m_inTypesSection =
m_inMethodSection = false;
m_textStoredTypedefs =
m_textStoredEnums =
m_textStoredFunctionComment = "";
m_headers.Empty();
}
void HelpGenVisitor::InsertTypedefDocs()
{
m_file.WriteTeX(m_textStoredTypedefs);
m_textStoredTypedefs.Empty();
}
void HelpGenVisitor::InsertEnumDocs()
{
m_file.WriteTeX(m_textStoredEnums);
m_textStoredEnums.Empty();
}
void HelpGenVisitor::InsertDataStructuresHeader()
{
if ( !m_inTypesSection ) {
m_inTypesSection = true;
m_file.WriteTeX("\\wxheading{Data structures}\n\n");
}
}
void HelpGenVisitor::InsertMethodsHeader()
{
if ( !m_inMethodSection ) {
m_inMethodSection = true;
m_file.WriteTeX( "\\latexignore{\\rtfignore{\\wxheading{Members}}}\n\n");
}
}
void HelpGenVisitor::CloseFunction()
{
if ( m_inFunction ) {
m_inFunction = false;
wxString totalText;
if ( m_isFirstParam ) {
// no params found
totalText << "\\void";
}
totalText << "}\n\n";
if ( !m_textStoredFunctionComment.IsEmpty() )
totalText << m_textStoredFunctionComment << '\n';
m_file.WriteTeX(totalText);
}
}
void HelpGenVisitor::EndVisit()
{
CloseFunction();
wxLogInfo("%s: finished parsing the current file.",
GetCurrentTime("%H:%M:%S"));
}
void HelpGenVisitor::VisitFile( spFile& file )
{
wxLogInfo("%s: started to parse classes from file '%s'...",
GetCurrentTime("%H:%M:%S"), file.mFileName.c_str());
}
void HelpGenVisitor::VisitClass( spClass& cl )
{
wxString name = cl.GetName();
// the file name is built from the class name by removing the leading "wx"
// if any and converting it to the lower case
wxString filename = name;
if ( filename(0, 2) == "wx" ) {
filename.erase(0, 2);
}
filename.MakeLower();
filename += ".tex";
m_inClass = m_file.Open(filename, wxFile::write);
if ( !m_inClass ) {
wxLogError("Can't generate documentation for the class '%s'.",
name.c_str());
return;
}
m_inMethodSection =
m_inTypesSection = false;
wxLogInfo("Created new file '%s' for class '%s'.",
filename.c_str(), name.c_str());
// the entire text we're writing to file
wxString totalText;
// write out the header
{
wxString header;
header.Printf("% automatically generated by HelpGen from %s at %s\n"
"\\section{\\class{%s}}\\label{%s}\n",
filename.c_str(), GetCurrentTime("%d/%b/%y %H:%M:%S"),
name.c_str(), wxString(name).MakeLower().c_str());
totalText << header << '\n';
}
// if the header includes other headers they must be related to it... try to
// automatically generate the "See also" clause
if ( !m_headers.IsEmpty() ) {
// correspondence between wxWindows headers and class names
static const char *headers[] = {
"object",
"defs",
"string",
"dynarray",
"file",
"time",
};
// NULL here means not to insert anything in "See also" for the
// corresponding header
static const char *classes[] = {
NULL,
NULL,
NULL,
NULL,
"wxFile",
"wxTime",
};
wxASSERT_MSG( WXSIZEOF(headers) == WXSIZEOF(classes),
"arrays must be in sync!" );
wxArrayInt interestingClasses;
size_t count = m_headers.Count(), index;
for ( size_t n = 0; n < count; n++ ) {
wxString baseHeaderName = m_headers[n].Before('.');
if ( baseHeaderName(0, 3) != "wx/" )
continue;
baseHeaderName.erase(0, 3);
for ( index = 0; index < WXSIZEOF(headers); index++ ) {
if ( Stricmp(baseHeaderName, headers[index]) == 0 )
break;
}
if ( (index < WXSIZEOF(headers)) && classes[index] ) {
// interesting header
interestingClasses.Add(index);
}
}
if ( !interestingClasses.IsEmpty() ) {
// do generate "See also" clause
totalText << "\\wxheading{See also:}\n\n";
count = interestingClasses.Count();
for ( index = 0; index < count; index++ ) {
if ( index > 0 )
totalText << ", ";
totalText << MakeHelpref(classes[interestingClasses[index]]);
}
totalText << "\n\n";
}
}
// the comment before the class generally explains what is it for so put it
// in place of the class description
if ( cl.HasComments() ) {
wxString comment = GetAllComments(cl);
totalText << '\n' << comment << '\n';
}
// derived from section
wxString derived = "\\wxheading{Derived from}\n\n";
const StrListT& baseClasses = cl.mSuperClassNames;
if ( baseClasses.size() == 0 ) {
derived << "No base class";
}
else {
bool first = true;
for ( StrListT::const_iterator i = baseClasses.begin();
i != baseClasses.end();
i++ ) {
if ( !first ) {
// separate from the previous one
derived << "\\\\\n";
}
else {
first = false;
}
wxString baseclass = *i;
derived << "\\helpref{" << baseclass << "}";
derived << "{" << baseclass.MakeLower() << "}";
}
}
totalText << derived << "\n\n";
// write all this to file
m_file.WriteTeX(totalText);
// if there were any enums/typedefs before, insert their documentation now
InsertDataStructuresHeader();
InsertTypedefDocs();
InsertEnumDocs();
}
void HelpGenVisitor::VisitEnumeration( spEnumeration& en )
{
CloseFunction();
if ( m_inMethodSection ) {
// FIXME that's a bug, but tell the user aboit it nevertheless... we
// should be smart enough to process even the enums which come after the
// functions
wxLogWarning("enum '%s' ignored, please put it before the class "
"methods.", en.GetName().c_str());
return;
}
// simply copy the enum text in the docs
wxString enumeration = GetAllComments(en);
enumeration << "{\\small \\begin{verbatim}\n"
<< en.mEnumContent
<< "\n\\end{verbatim}}\n";
// remember for later use if we're not inside a class yet
if ( !m_inClass ) {
if ( !m_textStoredEnums.IsEmpty() ) {
m_textStoredEnums << '\n';
}
m_textStoredEnums << enumeration;
}
else {
// write the header for this section if not done yet
InsertDataStructuresHeader();
enumeration << '\n';
m_file.WriteTeX(enumeration);
}
}
void HelpGenVisitor::VisitTypeDef( spTypeDef& td )
{
CloseFunction();
if ( m_inMethodSection ) {
// FIXME that's a bug, but tell the user aboit it nevertheless...
wxLogWarning("typedef '%s' ignored, please put it before the class "
"methods.", td.GetName().c_str());
return;
}
wxString typedefdoc;
typedefdoc << "{\\small \\begin{verbatim}\n"
<< "typedef " << td.mOriginalType << ' ' << td.GetName()
<< "\n\\end{verbatim}}\n"
<< GetAllComments(td);
// remember for later use if we're not inside a class yet
if ( !m_inClass ) {
if ( !m_textStoredTypedefs.IsEmpty() ) {
m_textStoredTypedefs << '\n';
}
m_textStoredTypedefs << typedefdoc;
}
else {
// write the header for this section if not done yet
InsertDataStructuresHeader();
typedefdoc << '\n';
m_file.WriteTeX(typedefdoc);
}
}
void HelpGenVisitor::VisitPreprocessorLine( spPreprocessorLine& pd )
{
switch ( pd.GetStatementType() ) {
case SP_PREP_DEF_INCLUDE_FILE:
m_headers.Add(pd.CPP_GetIncludedFileNeme());
break;
case SP_PREP_DEF_DEFINE_SYMBOL:
// TODO decide if it's a constant and document it if it is
break;
}
}
void HelpGenVisitor::VisitAttribute( spAttribute& attr )
{
CloseFunction();
// only document the public member variables
if ( !m_inClass || !attr.IsPublic() )
return;
wxLogWarning("Ignoring member variable '%s'.", attr.GetName().c_str());
}
void HelpGenVisitor::VisitOperation( spOperation& op )
{
CloseFunction();
if ( !m_inClass || !op.IsInClass() ) {
// FIXME that's a bug too
wxLogWarning("skipped global function '%s'.", op.GetName().c_str());
return;
}
if ( op.mVisibility == SP_VIS_PRIVATE ) {
// FIXME should we document protected functions?
return;
}
InsertMethodsHeader();
// save state info
m_inFunction =
m_isFirstParam = true;
m_textStoredFunctionComment = GetAllComments(op);
// start function documentation
wxString totalText;
const char *funcname = op.GetName().c_str();
const char *classname = op.GetClass().GetName().c_str();
// check for the special case of dtor
wxString dtor;
if ( (funcname[0] == '~') && (strcmp(funcname + 1, classname) == 0) ) {
dtor.Printf("\\destruct{%s}", classname);
funcname = dtor;
}
totalText.Printf("\\membersection{%s::%s}\\label{%s}\n\n"
"\\%sfunc{%s%s}{%s}{",
classname, funcname,
MakeLabel(classname, funcname).c_str(),
op.mIsConstant ? "const" : "",
op.mIsVirtual ? "virtual " : "",
op.mRetType.c_str(),
funcname);
m_file.WriteTeX(totalText);
}
void HelpGenVisitor::VisitParameter( spParameter& param )
{
if ( !m_inFunction )
return;
wxString totalText;
if ( m_isFirstParam ) {
m_isFirstParam = false;
}
else {
totalText << ", ";
}
totalText << "\\param{" << param.mType << " }{" << param.GetName();
wxString defvalue = param.mInitVal;
if ( !defvalue.IsEmpty() ) {
totalText << " = " << defvalue;
}
totalText << '}';
m_file.WriteTeX(totalText);
}
// -----------------------------------------------------------------------------
// global function implementation
// -----------------------------------------------------------------------------
static wxString MakeLabel(const char *classname, const char *funcname)
{
wxString label(classname);
if ( funcname && funcname[0] == '\\' ) {
// we may have some special TeX macro - so far only \destruct exists,
// but may be later others will be added
static const char *macros[] = { "destruct" };
static const char *replacement[] = { "dtor" };
size_t n;
for ( n = 0; n < WXSIZEOF(macros); n++ ) {
if ( strncmp(funcname + 1, macros[n], strlen(macros[n])) == 0 ) {
// found
break;
}
}
if ( n == WXSIZEOF(macros) ) {
wxLogWarning("unknown function name '%s' - leaving as is.",
funcname);
}
else {
funcname = replacement[n];
}
}
if ( funcname )
label << funcname;
label.MakeLower();
return label;
}
static wxString MakeHelpref(const char *argument)
{
wxString helpref;
helpref << "\\helpref{" << argument << "}{" << MakeLabel(argument) << '}';
return helpref;
}
static void TeXFilter(wxString* str)
{
// FIXME may be done much more quickly
str->Replace("&", "\\&");
str->Replace("_", "\\_");
}
static wxString GetAllComments(const spContext& ctx)
{
wxString comment;
const MCommentListT& comments = ctx.GetCommentList();
for ( MCommentListT::const_iterator i = comments.begin();
i != comments.end();
i++ ) {
comment << (*i)->GetText();
}
return comment;
}
static const char *GetCurrentTime(const char *timeFormat)
{
static char s_timeBuffer[128];
time_t timeNow;
struct tm *ptmNow;
time(&timeNow);
ptmNow = localtime(&timeNow);
strftime(s_timeBuffer, WXSIZEOF(s_timeBuffer), timeFormat, ptmNow);
return s_timeBuffer;
}
/* vi: set tw=80 et ts=4 sw=4: */

View File

@@ -1,3 +0,0 @@
/* mondrian ICON "mondrian.ico" */
#include "wx/msw/wx.rc"

File diff suppressed because it is too large Load Diff

View File

@@ -1,568 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: No names yet.
// Purpose: Contrib. demo
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 22/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleskandars Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#include "docripper.h"
#include <iostream.h>
// script templates
// ***** currently only HTML versions of variouse templates available ***** //
static const char* HTM_TopTempl =
"<html><body bgcolor=#FFFFFF>\n\
\n\n<!------ Automatically Generated by \"wxDocRipper\"------->\n\n\n\
<p><h2>$(NAME)</h2><p>\n\
<ul>\n\
$(REFLIST)\
</ul><p>\n\n\
";
static const char* HTM_ContentIdxTempl =
"\
<a name=\"r$(ID)_$(NAME)\">\n\
<p><hr>\n\
<h2><p>$(NAME)<p></h2>\
<ul>\n\
$(REFLIST)\
</ul><p>\n\n\
";
static const char* HTM_SuperContentTempl =
"\
<a name=\"r$(ID)_$(NAME)\">\n\
<p><hr>\n\
<p><h2>$(NAME)<p></h2>\
$(BODY)\n\
";
static const char* HTM_SubContentTempl =
"\
<a name=\"r$(ID)_$(NAME)\">\n\
<p><hr>\n\
<p><h3>$(NAME)<p></h3>\
$(BODY)\n\
";
static const char* HTM_OutLineTempl =
"\
<p>\n\
<b><font color=\"#FF0000\">$(NAME)</font></b><p>\n\
";
static const char* HTM_OutLine1Templ =
"\
<p>\n\
<b><i><font color=\"#101010\">$(NAME)</font></i></b>\n\
<ul>\n\
$(REFLIST)\
</ul>\n\n\
";
static const char* HTM_RefTempl =
"\
<li><a href=\"#r$(ID)_$(NAME)\">$(NAME)</A>\n\
";
static const char* HTM_DeadRefTempl =
"\
<li></b>$(NAME)\n\
";
/***** Implementation for class RipperDocGen *****/
RipperDocGen::RipperDocGen()
: mTopTempl ( HTM_TopTempl ),
mContentIdxTempl ( HTM_ContentIdxTempl ),
mSuperContentTempl( HTM_SuperContentTempl ),
mSubContentTempl ( HTM_SubContentTempl ),
mOutLineTempl ( HTM_OutLineTempl ),
mOutLine1Templ ( HTM_OutLine1Templ ),
mRefTempl ( HTM_RefTempl ),
mDeadRefTempl ( HTM_DeadRefTempl ),
mpCurClassSect(0)
{ // topIndex is not referenced
mpTopIdx = new ScriptSection( "Source Code Contents" , "", &mTopTempl , 0 );
mpClassIdx = new ScriptSection( "Classes Reference" , "", &mContentIdxTempl, &mRefTempl );
mpEnumIdx = new ScriptSection( "Enumerations Reference" , "", &mContentIdxTempl, &mRefTempl );
mpTypeDefIdx = new ScriptSection( "Type Definitions Reference" , "", &mContentIdxTempl, &mRefTempl );
mpMacroIdx = new ScriptSection( "Macros Reference" , "", &mContentIdxTempl, &mRefTempl );
mpGlobalVarsIdx = new ScriptSection( "Global Variables Reference" , "", &mContentIdxTempl, &mRefTempl );
mpGlobalFuncIdx = new ScriptSection( "Global Functions Reference", "", &mContentIdxTempl, &mRefTempl );
mpConstIdx = new ScriptSection( "Constants Reference" , "", &mContentIdxTempl, &mRefTempl );
// assemble top index
mpTopIdx->AddSection( mpClassIdx , 1 );
mpTopIdx->AddSection( mpEnumIdx , 1 );
mpTopIdx->AddSection( mpTypeDefIdx , 1 );
mpTopIdx->AddSection( mpMacroIdx , 1 );
mpTopIdx->AddSection( mpGlobalVarsIdx, 1 );
mpTopIdx->AddSection( mpGlobalFuncIdx, 1 );
mpTopIdx->AddSection( mpConstIdx , 1 );
// register reserved variables for index and description templates
ScriptSection::RegisterTemplate( mTopTempl );
ScriptSection::RegisterTemplate( mContentIdxTempl );
ScriptSection::RegisterTemplate( mSuperContentTempl );
ScriptSection::RegisterTemplate( mSubContentTempl );
ScriptSection::RegisterTemplate( mOutLineTempl );
ScriptSection::RegisterTemplate( mOutLine1Templ );
ScriptSection::RegisterTemplate( mRefTempl );
ScriptSection::RegisterTemplate( mDeadRefTempl );
// create the top-most (interfile) context
mpFileBinderCtx = new spFile();
// the default script is HTML
mTags = get_HTML_markup_tags();
mpParser = 0; // no default parser!
}
void RipperDocGen::Init( SourceParserBase* pParser )
{
mpParser = pParser;
}
RipperDocGen::~RipperDocGen()
{
delete mpFileBinderCtx;
}
void RipperDocGen::AppendComments( spContext& fromContext, string& str )
{
if ( !fromContext.HasComments() ) return;
size_t start = str.length();
str += mTags[TAG_BOLD].end;
str += mTags[TAG_PARAGRAPH].start;
MCommentListT& lst = fromContext.GetCommentList();
for( size_t i = 0; i != lst.size(); ++i )
{
if ( i != 0 )
if ( lst[i]->StartsParagraph() )
{
str += mTags[TAG_PARAGRAPH].start;
}
str += lst[i]->mText;
}
// remove new lines, and insert paragraph breaks
// if empty lines found
size_t len = str.length();
for( size_t n = start; n != len; ++n )
if ( str[n] == 10 ||
str[n] == 13 )
{
if ( n + 2 < len )
{
if ( ( str[n] == 13 && str[n+1] == 10 && // FIXME:: quick-hack
str[n+2] == 13 ) ||
( str[n] == 10 && str[n+1] == 10 )
)
{
str.insert( n + 1, "<p>" ); // FIXME:: quick-hack
len += 3;
}
}
str[n] = ' ';
}
str += mTags[TAG_PARAGRAPH].end;
}
void RipperDocGen::AppendMulitilineStr( string& st, string& mlStr )
{
st = mTags[TAG_FIXED_FONT].start;
st += mlStr;
st += mTags[TAG_FIXED_FONT].end;
}
void RipperDocGen::AppendHighlightedSource( string& st, string source )
{
// FIXME:: below should not be fixed :)
char buf[1024*32];
// DBG:::
ASSERT( source.length() + 1 < sizeof(buf) );
strcpy( buf, source.c_str() );
// highlight things
mSrcPainter.Init();
mSrcPainter.ProcessSource( buf, strlen(buf) );
mSrcPainter.GetResultString( st, mTags );
}
bool RipperDocGen::CheckIfUncommented( spContext& ctx, ScriptSection& toSect )
{
if ( ctx.HasComments() ) return 0;
toSect.AddReference(
new ScriptSection( GetScopedName( ctx ), "", 0, &mDeadRefTempl )
);
return 1;
}
ScriptTemplate* RipperDocGen::GetRefTemplFor( spContext& ctx )
{
if ( ctx.HasComments() )
return &mRefTempl;
else
return &mDeadRefTempl;
}
string RipperDocGen::GetScopedName( spContext& ofCtx )
{
if ( ofCtx.IsInFile() ) return ofCtx.GetName();
else
return ofCtx.GetOutterContext()->GetName() +
"::" + ofCtx.GetName();
}
void RipperDocGen::AddToCurrentClass( ScriptSection* pSection, spContext& ctx,
const char* subSectionName )
{
string sName;
if ( ctx.mVisibility == SP_VIS_PROTECTED )
sName = "Protected members/";
else
if ( ctx.mVisibility == SP_VIS_PRIVATE )
sName = "Private members/";
else
sName = "Public members/";
sName += subSectionName;
ScriptSection* pSect = mpCurClassSect->GetSubsection( sName.c_str() );
if ( CheckIfUncommented( ctx, *pSect ) )
{
delete pSection;
return;
}
pSect->AddReference( pSection );
mpCurClassSect->AddSection( pSection );
}
void RipperDocGen::LinkSuperClassRefs()
{
MMemberListT clLst;
// collect all classes in the context tree
mpFileBinderCtx->GetContextList( clLst, SP_CTX_CLASS );
for( size_t i = 0; i != clLst.size(); ++i )
{
spClass& cl = *((spClass*)clLst[i]);
// FIXME:: why sometimes GetUserData() returns NULL?
if ( !cl.GetUserData() )
continue;
ScriptSection* pClSect = (ScriptSection*)cl.GetUserData();
ScriptSection* pSuperSect = pClSect->GetSubsection("Derived from");
for( size_t n = 0; n != cl.mSuperClassNames.size(); ++n )
{
string& superClName = cl.mSuperClassNames[n];
spClass* pFound = NULL;
string* name;
for( size_t k = 0; k != clLst.size(); ++k )
{
name = &clLst[k]->GetName();
if ( clLst[k]->GetName() == superClName )
{
pFound = (spClass*)clLst[k];
break;
}
}
if ( !pFound )
{
ScriptSection* pNotFound =
new ScriptSection( superClName, "", 0, &mDeadRefTempl );
pSuperSect->AddReference( pNotFound );
}
else
if ( pFound->GetUserData() )
pSuperSect->AddReference(
(ScriptSection*)pFound->GetUserData() );
}
}
}
void RipperDocGen::ProcessFile( const char* sourceFile )
{
cout << "Processing file " << sourceFile << "..." << endl;
spFile* pCtx = mpParser->ParseFile( sourceFile );
if ( pCtx == NULL )
{
cout << "Cannot open file " << sourceFile << ", skipped..." << endl;
return;
}
VisitAll( *pCtx, TRUE );
mpFileBinderCtx->AddMember( pCtx );
}
// implementations of "visiting procedures"
void RipperDocGen::VisitEnumeration( spEnumeration& en )
{
// FOR NOW:: do not reference "nameless" enums
if ( en.GetName() == "" ) return;
if ( CheckIfUncommented( en, *mpEnumIdx ) )
return;
string body;
body += mTags[TAG_BOLD].start;
AppendMulitilineStr( body, en.mEnumContent );
body += mTags[TAG_BOLD].end;
string line;
AppendHighlightedSource( line, body );
AppendComments( en, line );
mpEnumIdx->AddSection(
new ScriptSection( en.GetName(), line,
&mSubContentTempl,
GetRefTemplFor( en ) ), 1
);
}
void RipperDocGen::VisitTypeDef( spTypeDef& td )
{
if ( CheckIfUncommented( td, *mpTypeDefIdx ) )
return;
string body;
body += mTags[TAG_BOLD].start;
body += "typdef ";
body += mTags[TAG_BOLD].end;
AppendMulitilineStr( body, td.mOriginalType );
body += td.mOriginalType;
body += ' ';
body += mTags[TAG_BOLD].start;
body += td.GetName();
body += mTags[TAG_BOLD].end;
string line;
AppendHighlightedSource( line, body );
AppendComments( td, line );
mpTypeDefIdx->AddSection(
new ScriptSection( td.GetName(), line,
&mSubContentTempl,
GetRefTemplFor( td ) ), TRUE
);
}
void RipperDocGen::VisitPreprocessorLine( spPreprocessorLine& pd )
{
if ( pd.mDefType != SP_PREP_DEF_REDEFINE_SYMBOL )
return;
if ( CheckIfUncommented( pd, *mpMacroIdx ) )
return;
string body;
body += mTags[TAG_FIXED_FONT].start;
string coloredLine = pd.mLine;
AppendHighlightedSource( coloredLine, pd.mLine );
AppendMulitilineStr( body, coloredLine );
body += mTags[TAG_FIXED_FONT].end;
AppendComments( pd, body );
mpMacroIdx->AddSection(
new ScriptSection( pd.GetName(), body,
&mSubContentTempl,
GetRefTemplFor( pd ) ), TRUE
);
}
void RipperDocGen::VisitClass( spClass& cl )
{
// FOR NOW:: do not document nested classes -
// nicier visiting method yet needed
if ( cl.IsInClass() )
{
SkipChildren(); // spVisitor's method
return;
}
string body;
AppendComments( cl, body );
mpCurClassSect =
new ScriptSection( cl.GetName(), body, &mSuperContentTempl, &mRefTempl );
// set up reference in the class context, pointing back
// to the section where this class is represented
cl.SetUserData( mpCurClassSect );
ScriptSection* pSuper = new ScriptSection( "Derived from" ,"", &mOutLine1Templ,0, 1 );
ScriptSection* pPublic = new ScriptSection( "Public members" ,"", &mOutLineTempl,0, 1 );
ScriptSection* pProtected = new ScriptSection( "Protected members" ,"", &mOutLineTempl,0, 1 );
ScriptSection* pPrivate = new ScriptSection( "Private members" ,"", &mOutLineTempl,0, 1 );
pPublic->AddSection( new ScriptSection( "Operations", "", &mOutLine1Templ, 0, 1 ) );
pPublic->AddSection( new ScriptSection( "Attributes", "", &mOutLine1Templ, 0, 1 ) );
pProtected->AddSection( new ScriptSection( "Operations", "", &mOutLine1Templ, 0, 1 ) );
pProtected->AddSection( new ScriptSection( "Attributes", "", &mOutLine1Templ, 0, 1 ) );
pPrivate->AddSection( new ScriptSection( "Operations", "", &mOutLine1Templ, 0, 1 ) );
pPrivate->AddSection( new ScriptSection( "Attributes", "", &mOutLine1Templ, 0, 1 ) );
mpCurClassSect->AddSection( pSuper );
mpCurClassSect->AddSection( pPublic );
mpCurClassSect->AddSection( pProtected );
mpCurClassSect->AddSection( pPrivate );
mpClassIdx->AddSection( mpCurClassSect, TRUE );
}
void RipperDocGen::VisitAttribute( spAttribute& attr )
{
string body;
body += mTags[TAG_BOLD].start;
body += attr.mType;
body += mTags[TAG_BOLD].end;
body += mTags[TAG_ITALIC].start;
body += ' ';
body += attr.GetName();
body += mTags[TAG_ITALIC].end;
string line;
AppendHighlightedSource( line, body );
AppendComments( attr, line );
ScriptSection* pSection =
new ScriptSection( GetScopedName( attr ), line,
&mSubContentTempl,
GetRefTemplFor( attr ) );
if ( attr.mIsConstant )
mpConstIdx->AddSection( pSection, TRUE );
else
if ( !attr.IsInClass() )
{
if ( CheckIfUncommented( attr, *mpGlobalVarsIdx ) )
return;
mpGlobalVarsIdx->AddSection( pSection, TRUE );
}
else
AddToCurrentClass( pSection, attr, "Attributes" );
}
void RipperDocGen::VisitOperation( spOperation& op )
{
string body;
AppendHighlightedSource( body, op.GetFullName(mTags) );
AppendComments( op, body );
ScriptSection* pSection =
new ScriptSection( GetScopedName( op ), body,
&mSubContentTempl,
GetRefTemplFor( op ) );
if ( !op.IsInClass() )
{
if ( CheckIfUncommented( op, *mpGlobalFuncIdx ) )
return;
mpGlobalFuncIdx->AddSection( pSection, 1 );
}
else
AddToCurrentClass( pSection, op, "Operations" );
}
bool RipperDocGen::OnSaveDocument( ScriptStream& stm )
{
LinkSuperClassRefs();
// FOR NOW:: doesn't work yet
//mpTopIdx->RemoveEmptySections();
return 1; // saving can proceed now
}

View File

@@ -1,295 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: No names yet.
// Purpose: Contrib. demo
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 27/12/98
// RCS-ID: $Id$
// Copyright: (c) Aleskandars Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "ifcontext.h"
#pragma interface
#endif
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#include <malloc.h>
#include <stdio.h>
#include "ifcontext.h"
/***** Implementation for class spInterFileContext *****/
size_t spInterFileContext::GetFileNo( const string& fname )
{
for( size_t i = 0; i != mFiles.size(); ++i )
if ( fname == mFiles[i] ) return i;
wxASSERT(0); // DBG::
return 0;
}
size_t spInterFileContext::GetFileNoOfContext( spContext& ctx )
{
spContext* pCtx = ctx.GetEnclosingContext( SP_CTX_FILE );
// DBG:: outer-file context should be present
wxASSERT( pCtx && pCtx->GetType() == SP_CTX_FILE );
return GetFileNo( ((spFile*)pCtx)->mFileName );
}
/*** public interface ***/
spInterFileContext::spInterFileContext()
{}
spInterFileContext::~spInterFileContext()
{}
void spInterFileContext::AddFile( const string& fname, const string& content )
{
mFiles.push_back( fname );
mContents.push_back( content );
}
void spInterFileContext::RemoveContext( spContext& ctx )
{
wxASSERT( ctx.PositionIsKnown() ); // DBG:: should be checked by-user code
size_t fNo = GetFileNoOfContext( ctx );
mDeletionMarks.push_back( spBookmark( ctx.mSrcOffset, ctx.mContextLength, fNo ) );
}
void spInterFileContext::InsertBookmarkSorted( BookmarkListT& lst, spBookmark& mark )
{
for( size_t i = 0; i != lst.size(); ++i )
if ( lst[i].mFrom > mark.mFrom )
{
lst.insert( &lst[i], mark );
return;
}
lst.push_back( mark );
}
void spInterFileContext::DoAppendSourceFragment( string& source,
string& result,
size_t pos, size_t len )
{
mFiltered.erase( mFiltered.begin(), mFiltered.end() );
size_t i;
for( i = 0; i != mDeletionMarks.size(); ++i )
{
spBookmark& mark = mDeletionMarks[i];
if ( mark.mFileNo == mCurFileNo &&
mark.mFrom >= pos && mark.mFrom < pos + len )
InsertBookmarkSorted( mFiltered, mark );
}
size_t cur = pos;
for( i = 0; i != mFiltered.size(); ++ i )
{
spBookmark& mark = mFiltered[i];
result.append( source, cur, ( (size_t)mark.mFrom - cur ) );
cur = size_t( mark.mFrom + mark.mLen );
if ( cur >= pos + len ) // check if we've overstepped the current source-fragment
{
wxASSERT(0); // DBG:: with current imp. this should not happen
cur = pos + len; break;
}
}
result.append( source, cur, ( pos + len ) - cur );
}
void spInterFileContext::GenerateContextBody( spContext& ctx,
string& source,
string& result,
size_t& lastSavedPos,
size_t& lastKnownPos )
{
if ( ctx.PositionIsKnown() )
lastKnownPos = ctx.mSrcOffset;
if ( ctx.IsVirtualContext() )
{
// add fragment accumulated before this context
DoAppendSourceFragment( source, result,
size_t(lastSavedPos),
size_t(lastKnownPos - lastSavedPos) );
// add context body
result += ctx.GetVirtualContextBody();
lastSavedPos = lastKnownPos;
if ( ctx.PositionIsKnown() )
{
if ( ctx.VitualContextHasChildren() )
{
lastKnownPos = ctx.mSrcOffset + ctx.mHeaderLength;
lastSavedPos = lastKnownPos;
}
else
{
lastKnownPos = ctx.mSrcOffset + ctx.mContextLength;
lastSavedPos = lastKnownPos;
return; // have not children
}
}
}
MMemberListT& lst = ctx.GetMembers();
for( size_t i = 0; i != lst.size(); ++i )
GenerateContextBody( *lst[i], source, result, lastSavedPos, lastKnownPos );
if ( ctx.IsVirtualContext() )
{
if ( ctx.VitualContextHasChildren() &&
ctx.GetFooterOfVirtualContextBody() != "" )
{
// append the reminder space after children of the context
DoAppendSourceFragment( result, source,
size_t(lastSavedPos),
size_t(lastKnownPos - lastSavedPos) );
// add footer
result += ctx.GetFooterOfVirtualContextBody();
lastKnownPos = ctx.mSrcOffset + ctx.mContextLength;
lastSavedPos = lastKnownPos;
}
}
if ( ctx.PositionIsKnown() )
lastKnownPos = ctx.mSrcOffset + ctx.mContextLength;
}
void spInterFileContext::GenrateContents()
{
MMemberListT& lst = GetMembers();
for( size_t f = 0; f != lst.size(); ++f )
{
string& fname = ((spFile*)lst[f])->mFileName;
size_t fileNo = GetFileNo( fname );
string& source = mContents[ fileNo ];
string result;
size_t lastKnownPos = 0, // the begining of the file is always "known"
lastSavedPos = 0;
mCurFileNo = fileNo;
GenerateContextBody( *lst[f], source, result, lastSavedPos, lastKnownPos );
// the end of file is always known
lastKnownPos = mContents[ fileNo ].length();
// append the reminder
DoAppendSourceFragment( source, result,
size_t(lastSavedPos),
size_t(lastKnownPos - lastSavedPos) );
// replace original contnet with newly generated one
mContents[ fileNo ] = result;
}
}
void spInterFileContext::ParseContents( SourceParserPlugin* pPlugin )
{
mDeletionMarks.erase( mDeletionMarks.begin(), mDeletionMarks.end() );
RemoveChildren(); // clean up top-level context
mParser.SetPlugin( pPlugin );
for( size_t i = 0; i != mFiles.size(); ++i )
{
char* s = (char*)(mContents[i].c_str());
spFile* pFCtx = mParser.Parse( s, s + mContents[i].length() );
pFCtx->mFileName = mFiles[i];
AddMember( pFCtx );
}
}
void spInterFileContext::WriteToFiles()
{
for( size_t i = 0; i != mFiles.size(); ++i )
{
FILE* fp = fopen( mFiles[i].c_str(), "w+t" );
if ( int(fp) > 0 )
{
fwrite( mContents[i].c_str(), sizeof(char), mContents[i].length(), fp );
fclose( fp );
}
}
}
string spInterFileContext::GetBody( spContext* pCtx )
{
wxASSERT( pCtx->PositionIsKnown() ); // DBG:: should be checked by-user code
string& source = mContents[ GetFileNoOfContext( *pCtx ) ];
return string( source.c_str() + pCtx->mSrcOffset, pCtx->mContextLength );
}
string spInterFileContext::GetHeader( spContext* pCtx )
{
wxASSERT( pCtx->PositionIsKnown() ); // DBG:: should be checked by-user code
wxASSERT( pCtx->mHeaderLength != -1 ); // DBG:: -/-
string& source = mContents[ GetFileNoOfContext( *pCtx ) ];
return string( source.c_str() + pCtx->mSrcOffset, pCtx->mHeaderLength );
}

View File

@@ -1,66 +0,0 @@
#
# File: makefile.nt
# Author: Julian Smart
# Created: 1993
# Updated:
# Copyright: (c) 1993, AIAI, University of Edinburgh
#
# "%W% %G%"
#
# Makefile : Builds minimal example (MS VC++).
# Use FINAL=1 argument to nmake to build final version with no debugging
# info
# Set WXDIR for your system
WXDIR = $(WXWIN)
WXUSINGDLL=0
!include $(WXDIR)\src\ntwxwin.mak
THISDIR = $(WXDIR)\utils\HelpGen\src
PROGRAM=HelpGen
EXTRAINC=-I..\include
OBJECTS = $(PROGRAM).obj cjparser.obj ifcontext.obj markup.obj\
scriptbinder.obj srcparser.obj sourcepainter.obj
$(PROGRAM): $(PROGRAM).exe
all: wx $(PROGRAM).exe
wx:
cd $(WXDIR)\src\msw
nmake -f makefile.nt FINAL=$(FINAL)
cd $(THISDIR)
wxclean:
cd $(WXDIR)\src\msw
nmake -f makefile.nt clean
cd $(THISDIR)
$(PROGRAM).exe: $(DUMMYOBJ) $(WXLIB) $(OBJECTS) $(PROGRAM).res
$(link) @<<
-out:$(PROGRAM).exe
$(LINKFLAGS)
$(DUMMYOBJ) $(OBJECTS) $(PROGRAM).res
$(LIBS)
<<
$(PROGRAM).obj: $(PROGRAM).$(SRCSUFF) $(DUMMYOBJ)
$(cc) @<<
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
<<
$(PROGRAM).res : $(PROGRAM).rc $(WXDIR)\include\wx\msw\wx.rc
$(rc) -r /i$(WXDIR)\include -fo$@ $(PROGRAM).rc
clean:
-erase *.obj
-erase *.exe
-erase *.res
-erase *.map
-erase *.sbr
-erase *.pdb

View File

@@ -1,46 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: No names yet.
// Purpose: Contrib. demo
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 22/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleskandars Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#include "markup.h"
static TagStructT htmlTags[] =
{
{ "<b>","</b>" }, // 0
{ "<i>","</i>" }, // 1
{ "<pre>","</pre>" }, // 2
{ "<font color=\"#000000\">","</font>" }, // 3
{ "<font color=\"#8F0000\">","</font>" }, // 4
{ "<font color=\"#008F00\">","</font>" }, // 5
{ "<font color=\"#0000CF\">","</font>" }, // 6
{ "<p>","</p>" }, // 7
{ "<br>","" }, // 8
{ "<h1>","</h1>" }, // 9
{ "<h2>","</h2>" }, // 10
{ "<h3>","</h3>" }, // 11
{ "<ul>","</ul>" }, // 12
{ "<li>","</li>" }, // 13
};
MarkupTagsT get_HTML_markup_tags()
{
return htmlTags;
}

View File

@@ -1,157 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: No names yet.
// Purpose: Contrib. demo
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 22/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleskandars Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#ifdef WIN32
#include <io.h>
#endif
#include <stdio.h>
#include "markup.h" // get_HTML_markup_tags() will be used
#include "docripper.h"
#include "cjparser.h" // C++/Java will be parsed here
/***** Main funciton *****/
#ifdef WIN32
// NOTE:: under Windows this generator parses all .h files
// int the current directory
#include "direct.h"
void main(int argc, char** argv)
{
cout << "C++/JAVA Source Documentation Generator (\"wxDocRipper\")" << endl
<< "(C) 1998, Aleksandras Gluchovas (mailto:alex@soften.ktu.lt)"
<< endl << endl;
RipperDocGen gen;
// set up target script
gen.SetScriptMarkupTags( get_HTML_markup_tags() );
// setup source langauge
CJSourceParser* pParser = new CJSourceParser();
gen.Init( pParser );
// read process all files in the current directory
struct _finddata_t c_file; // NT-specific?
long hFile;
hFile = _findfirst( "*.h", &c_file );
int total = 0;
while( hFile != -1L )
{
gen.ProcessFile( c_file.name );
++total;
if ( _findnext( hFile, &c_file ) == -1L )
break;
}
if ( total )
{
cout << endl
<< "*** storing source documenation into ./srcref.html ***"
<< endl << endl;
if ( !gen.SaveDocument( "srcref.html" ) )
cout << "\nERROR: document cannot be saved" << endl;
}
else
{
cout << "\nno .h files found in this directory - You must be running Windows now :-)"
<< endl;
return;
}
printf( "\nTotal %d file(s) processed, done.\n", total );
}
#else
// NOTE:: on platfroms other then Windows this generator parses all files
// given from the command line
int main(int argc, char** argv)
{
cout << "C++/JAVA Source Documentation Generator (\"wxDocRipper\")" << endl
<< "(C) 1998, Aleksandras Gluchovas (mailto:alex@soften.ktu.lt)"
<< endl << endl;
if ( argc < 2 )
{
cout << "Usage: list of files with .h, .hpp, .cpp or .java extentions"
<< endl;
return 1;
}
int from = 1, no_dump = 0;
if ( strcmp( argv[1], "-x" ) == 0 )
{
from = 2;
no_dump = 1;
}
RipperDocGen gen;
// set up target script
gen.SetScriptMarkupTags( get_HTML_markup_tags() );
// setup source langauge
CJSourceParser* pParser = new CJSourceParser();
gen.Init( pParser );
for( int i = from; i != argc; ++i )
gen.ProcessFile( argv[i] );
if ( !no_dump )
{
cout << endl
<< "*** storing source documenation into ./srcref.html ***"
<< endl << endl;
if ( !gen.SaveDocument( "srcref.html" ) )
cout << "\nERROR: document cannot be saved" << endl;
}
printf( "\nTotal %d file(s) processed, done.\n", argc-from );
return 0;
}
#endif

View File

@@ -1,618 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: No names yet.
// Purpose: Contrib. demo
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 22/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleskandars Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#include <malloc.h>
#include <string.h>
#include <memory.h>
#include <stdio.h> // import sprintf() (for doubles)
#include <stdlib.h> // import atoi() (for integers)
#include "scriptbinder.h"
// helper functions
static size_t log2(size_t nr)
{
size_t tmp = 0;
while (nr >= 2 )
{
nr /= 2;
++tmp;
}
return tmp;
}
/***** Implementation for class ScriptStream *****/
ScriptStream::ScriptStream()
: mpBuf(0),
mSize(0),
mCapacity(0)
{}
ScriptStream::~ScriptStream()
{
if ( mpBuf ) delete mpBuf;
}
void ScriptStream::WriteBytes( const void* srcBuf, size_t count )
{
if ( !count ) return;
// increase the capacity if necessary
if ( mSize + count > mCapacity )
{
mCapacity =
( 0x2 << (log2( mSize + count ) + 1 ) );
if ( mCapacity < 128 ) mCapacity = 128;
char* oldBuf = mpBuf;
mpBuf = new char[mCapacity];
if ( oldBuf )
{
memcpy( mpBuf, oldBuf, mSize );
delete oldBuf;
}
}
// append new data
memcpy( &mpBuf[mSize], srcBuf, count );
mSize += count;
}
ScriptStream& ScriptStream::operator<<( const char* str )
{
WriteBytes( str, strlen( str ) );
return *this;
}
ScriptStream& ScriptStream::operator<<( const string& str )
{
if ( str.length() < 512 )
{
char buf[512];
size_t len = str.length();
for( size_t i = 0; i != len; ++i )
buf[i] = str[i];
WriteBytes( buf, len );
}
else
WriteBytes( str.c_str(), str.length() );
return *this;
}
ScriptStream& ScriptStream::operator<<( char ch )
{
WriteBytes( &ch, 1 );
return *this;
}
void ScriptStream::endl()
{
char ch = '\n';
WriteBytes( &ch, 1 );
}
/***** Implementation for class ScriptTemplate *****/
ScriptTemplate::ScriptTemplate( const string& templateText )
{
string tmp = templateText;
mTText = (char*)malloc( tmp.length() + 1 );
strcpy( mTText, tmp.c_str() );
}
ScriptTemplate::~ScriptTemplate()
{
for( size_t i = 0; i != mVars.size(); ++i )
delete mVars[i];
free( mTText );
}
bool ScriptTemplate::HasVar( const char* name )
{
for( size_t i = 0; i != mVars.size(); ++i )
if ( strcmp( mVars[i]->mName, name ) == 0 )
return 1;
return 0;
}
void ScriptTemplate::AddStringVar ( const char* name, int ofs )
{
mVars.push_back( new TVarInfo( name, ofs, TVAR_STRING ) );
}
void ScriptTemplate::AddIntegerVar( const char* name, int ofs )
{
mVars.push_back( new TVarInfo( name, ofs, TVAR_INTEGER ) );
}
void ScriptTemplate::AddDoubleVar ( const char* name, int ofs )
{
mVars.push_back( new TVarInfo( name, ofs, TVAR_DOUBLE ) );
}
void ScriptTemplate::AddObjectRefArray( const char* name,
int ofsRefToFirstObj,
int ofsObjSizeInt,
int ofsObjRefTempl
)
{
TArrayInfo* pInfo = new TArrayInfo( name );
mVars.push_back( pInfo );
pInfo->mRefOfs = ofsRefToFirstObj;
pInfo->mSizeIntOfs = ofsObjSizeInt;
pInfo->mObjRefTemplOfs = ofsObjRefTempl;
}
inline void ScriptTemplate::PrintVar( TVarInfo* pInfo,
void* dataObj,
ScriptStream& stm )
{
char buf[128];
switch ( pInfo->mType )
{
case TVAR_INTEGER :
{
sprintf(buf, "%d",*( (int*) ((char*)dataObj + pInfo->mOfs) ) );
stm.WriteBytes( buf, strlen(buf ) );
break;
}
case TVAR_STRING :
{
string& str = *( (string*) ((char*)dataObj+pInfo->mOfs) );
const char* cs = str.c_str();
#ifdef DEBUG_WEIRED_OFFSETS
cout << "DBG:: cs address is " << (int)cs << endl;
cout << "DBG:: str address is " << (int)(&str) << endl;
cout << "DBG:: dataObj points to " << (int)dataObj << endl;
cout << "DBG:: pInfo->mOfs value is " << (int)pInfo->mOfs << endl;
cout << "DBG:: d+pInfo->mOfs is " << (int)((char*)dataObj + pInfo->mOfs) << endl;
cout << "DBG:: pInfo->mName is " << pInfo->mName << endl;
cout << "DBG:: pInfo->mType is " << pInfo->mType << endl;
cout << "DBG:: end of dump. " << endl;
cout << "DBG:: cs value is " << endl << cs << endl;
#endif
stm.WriteBytes( cs, strlen(cs) );
break;
}
case TVAR_DOUBLE :
{
sprintf( buf, "%f",
*( (double*)( (char*)dataObj+pInfo->mOfs) ) );
stm.WriteBytes( buf, strlen(buf ) );
break;
}
case TVAR_REF_ARRAY :
{
TArrayInfo& info = *((TArrayInfo*)pInfo);
int sz = *((int*) ( (char*)dataObj+info.mSizeIntOfs ));
if ( !sz )
{
// DBG::
int u;
++u;
break;
}
int* array = *((int**)( (char*)dataObj+info.mRefOfs ));
ScriptTemplate* pRefTempl;
for( int i = 0; i != sz; ++i )
{
pRefTempl =
*((ScriptTemplate**)((char*)(array[i])+info.mObjRefTemplOfs));
pRefTempl->PrintScript( (void*)array[i], stm );
}
break;
}
default : break;
}
}
void ScriptTemplate::PrintScript( void* dataObj, ScriptStream& stm )
{
char* cur = mTText;
// template parsing loop
do
{
char* start = cur;
while( *cur != '\0' && *cur != '$' ) ++cur;
// flush text collected between variables
stm.WriteBytes( start, cur - start );
if ( *cur == '\0' ) break;
cur += 2; // skip to the name of the var
start = cur;
while( *cur != ')' ) ++cur;
// put terminating zero temorarely
*cur = '\0';
// look up variable
size_t sz = mVars.size();
bool found = 0;
for( size_t i = 0; i != sz; ++i )
{
if ( strcmp( mVars[i]->mName, start ) == 0 )
{
PrintVar( mVars[i], dataObj, stm );
*cur = ')'; // remove terminating zero
++cur;
found = 1;
break;
}
}
// variable referred by template script is not
// registered to this tempalte object
ASSERT( found );
} while(1);
}
/***** implementation for class ScriptSection *****/
int ScriptSection::mIdCounter = 0;
ScriptSection::ScriptSection( const string& name,
const string& body,
ScriptTemplate* pSectionTemplate,
ScriptTemplate* pReferenceTemplate,
bool autoHide,
bool sorted
)
: mpParent ( NULL ),
mName ( name ),
mBody ( body ),
mAutoHide( autoHide ),
mSortOn ( sorted ),
mpSectTempl( pSectionTemplate ),
mpRefTempl ( pReferenceTemplate ),
mRefCount( 0 ),
mArrSize( 0 )
{
// generate GUID
char buf[32];
sprintf( buf, "%d", ++mIdCounter );
mId = buf;
}
ScriptSection::~ScriptSection()
{
SectListT lst = mSubsections;
while( mSubsections.size() )
mSubsections[0]->RemoveRef();
for( size_t i = 0; i != mReferences.size(); ++i )
mReferences[i]->RemoveRef();
}
void ScriptSection::AddRef()
{
++mRefCount;
}
void ScriptSection::RemoveRef()
{
if ( !mRefCount || !(--mRefCount) )
{
if (mpParent)
{
// remove ourselves from parent's list
SectListT& lst = mpParent->mSubsections;
for( size_t i = 0; i != lst.size(); ++i )
if ( lst[i] == this )
{
lst.erase( &lst[i] );
break;
}
}
delete this;
}
}
ScriptSection* ScriptSection::GetSubsection( const char* name )
{
// FOR NOW:: fixed section name length
char buf[128];
size_t cur = 0;
while( name[cur] && name[cur] != '/' )
{
buf[cur] = name[cur];
++cur;
}
ASSERT( cur < sizeof(buf) );
buf[cur] = '\0';
size_t sz = mSubsections.size();
for( size_t i = 0; i != sz; ++i )
{
// DBG::
//ScriptSection& sect = *mSubsections[i];
if ( mSubsections[i]->mName == buf )
{
if ( name[cur] == '/' )
// search recursivelly
return mSubsections[i]->GetSubsection( &name[cur+1] );
else
return mSubsections[i];
}
}
return 0;
}
void ScriptSection::AddSection( ScriptSection* pSection,
bool addToReferencesToo
)
{
mSubsections.push_back( pSection );
pSection->AddRef();
// can add section to multiple containers
ASSERT( pSection->mpParent == 0 );
pSection->mpParent = this;
if ( addToReferencesToo )
AddReference( pSection );
}
void ScriptSection::AddReference( ScriptSection* pReferredSection )
{
mReferences.push_back( pReferredSection );
pReferredSection->AddRef();
// set up mandatory fields used by ScriptTemplate
mArrSize = mReferences.size();
if ( mArrSize )
mRefFirst = (void*)&mReferences[0];
}
SectListT& ScriptSection::GetSubsections()
{
return mSubsections;
}
// static method:
void ScriptSection::RegisterTemplate( ScriptTemplate& sectionTempalte )
{
int nameOfs, bodyOfs, idOfs,
arrRefOfs, arrSizeOfs, refTemplOfs;
// obtaining offsets of member vars
GET_VAR_OFS( ScriptSection, mName, &nameOfs )
GET_VAR_OFS( ScriptSection, mBody, &bodyOfs )
GET_VAR_OFS( ScriptSection, mId, &idOfs )
GET_VAR_OFS( ScriptSection, mRefFirst, &arrRefOfs )
GET_VAR_OFS( ScriptSection, mArrSize, &arrSizeOfs )
GET_VAR_OFS( ScriptSection, mpRefTempl, &refTemplOfs )
// registering member variables with given script template
sectionTempalte.AddStringVar( "NAME", nameOfs );
sectionTempalte.AddStringVar( "BODY", bodyOfs );
sectionTempalte.AddStringVar( "ID", idOfs );
sectionTempalte.AddObjectRefArray( "REFLIST",
arrRefOfs, arrSizeOfs, refTemplOfs );
}
void ScriptSection::Print( ScriptStream& stm )
{
// TBD:: sorting
// print out this content first
if ( mpSectTempl )
mpSectTempl->PrintScript( this, stm );
// attach contents subsections at the end of this content
for( size_t i = 0; i != mSubsections.size(); ++i )
mSubsections[i]->Print( stm );
}
void ScriptSection::DoRemoveEmptySections(int& nRemoved, SectListT& removedLst)
{
for( size_t i = 0; i != mSubsections.size(); ++i )
{
ScriptSection& sect = *mSubsections[i];
sect.DoRemoveEmptySections( nRemoved, removedLst );
if (sect.mAutoHide )
if ( sect.mReferences.size() == 0 )
{
bool found = 0;
for( size_t k = 0; k != removedLst.size(); ++k )
if ( removedLst[k] == &sect )
{
found = 1;
break;
}
if ( !found )
{
removedLst.push_back( &sect );
++nRemoved;
delete &sect;
--i;
}
}
}
}
void ScriptSection::DoRemoveDeadLinks( SectListT& removedLst)
{
size_t dsz = removedLst.size();
for( size_t i = 0; i != mSubsections.size(); ++i )
{
mSubsections[i]->DoRemoveDeadLinks( removedLst );
}
for( size_t n = 0; n != mReferences.size(); ++n )
{
for( size_t k = 0; k != dsz; ++k )
if ( removedLst[k] == mReferences[n] )
{
mReferences.erase( &mReferences[n] );
--n;
// set up mandatory fields used by ScriptTemplate
mArrSize = mReferences.size();
if ( mArrSize )
mRefFirst = (void*)&mReferences[0];
break;
}
}
}
void ScriptSection::RemoveEmptySections()
{
// FIXME:: this is very_very_very slow alg.! +"doesn't work"
int nRemoved = 0;
do
{
SectListT removedLst;
nRemoved = 0;
DoRemoveEmptySections( nRemoved, removedLst );
DoRemoveDeadLinks( removedLst );
}
while( nRemoved );
}
/***** Iimplementation for class DocGeneratorBase *****/
bool DocGeneratorBase::SaveDocument( const char* fname,
const char* fopenOptions,
ScriptSection* pFromSection
)
{
FILE* fp = fopen( fname, fopenOptions );
if ( (int)fp == -1 ) return 0;
ScriptStream stm;
// check if derived class agrees about saving it
if ( !OnSaveDocument( stm ) ) return 0;
if ( pFromSection )
pFromSection->Print( stm );
else
{
ScriptSection* pTopSect = GetTopSection();
ASSERT( pTopSect );
pTopSect->Print( stm );
}
size_t nWrite = fwrite( stm.GetBuf(), 1, stm.GetBufSize(), fp );
if ( nWrite != stm.GetBufSize() ) return 0;
fclose( fp );
return 1;
// that^s it
}

View File

@@ -1,676 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: No names yet.
// Purpose: Contrib. demo
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 22/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleskandars Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#if defined( wxUSE_TEMPLATE_STL )
#include <map>
#else
#include <wxstlac.h>
#endif
#include "sourcepainter.h"
const int MAX_KEYWORD_LEN = 16;
struct KeywordT
{
char keyWord[MAX_KEYWORD_LEN];
int rank;
};
// source fragment ranks :
// 0 - nomral text
// 1 - basic types
// 2 - reserved words
// multil-language keywords map
static KeywordT __gKeyWords[] =
{
{ "for", 1 },
{ "FOR", 1 },
{ "For", 1 },
{ "next", 1 },
{ "Next", 1 },
{ "NEXT", 1 },
{ "if", 1 },
{ "If", 1 },
{ "IF", 1 },
{ "then", 1 },
{ "Then", 1 },
{ "THEN", 1 },
{ "else", 1 },
{ "Else", 1 },
{ "ELSE", 1 },
{ "do", 1 },
{ "Do", 1 },
{ "DO", 1 },
{ "break", 1 },
{ "Break", 1 },
{ "BREAK", 1 },
{ "continue", 1 },
{ "goto", 1 },
{ "Goto", 1 },
{ "GOTO", 1 },
{ "switch", 1 },
{ "default", 1 },
{ "case", 1 },
{ "repeat", 1 },
{ "Repeat", 1 },
{ "REPEAT", 1 },
{ "until", 1 },
{ "Until", 1 },
{ "UNTIL", 1 },
{ "return", 1 },
{ "Return", 1 },
{ "RETURN", 1 },
{ "unit", 1 },
{ "Unit", 1 },
{ "UNIT", 1 },
{ "procedure", 1 },
{ "Procedure", 1 },
{ "PROCEDURE", 1 },
{ "function", 1 },
{ "Function", 1 },
{ "FUNCTION", 1 },
{ "begin", 1 },
{ "Begin", 1 },
{ "BEGIN", 1 },
{ "End", 1 },
{ "END", 1 },
////////////////////////////////////////////////////
{ "enum", 1 },
{ "static", 1 },
{ "const", 1 },
{ "mutable", 1 },
{ "volatile", 1 },
{ "__asm", 1 },
{ "asm", 1 },
{ "typeid", 1 },
{ "sizeof", 1 },
{ "typeof", 1 },
{ "native", 1 },
{ "#include", 1 },
{ "#define", 1 },
{ "#def", 1 },
{ "#undef", 1 },
{ "#ifdef", 1 },
{ "#ifndef", 1 },
{ "#if", 1 },
{ "#endif", 1 },
{ "#elif", 1 },
{ "#else", 1 },
{ "#pragma", 1 },
{ "#line", 1 },
{ "package", 1 },
{ "import", 1 },
{ "export", 1 },
////////////////////////////////////////////////////
{ "dynamic_cast", 1 },
{ "const_cast", 1 },
//////// some hacks for VB /////////
{ "sub", 1 },
{ "Sub", 1 },
{ "SUB", 1 },
{ "as", 1 },
{ "As", 1 },
{ "AS", 1 },
/////// data types ///////
{ "int" , 1 },
{ "integer", 1 },
{ "Integer", 1 },
{ "INTEGER", 1 },
{ "real", 1 },
{ "Real", 1 },
{ "REAL", 1 },
{ "float", 1 },
{ "Float", 1 },
{ "FLOAT", 1 },
{ "char", 1 },
{ "Char", 1 },
{ "CHAR", 1 },
{ "register", 1 },
{ "string", 1 },
{ "String", 1 },
{ "STRING", 1 },
{ "array", 1 },
{ "Array", 1 },
{ "ARRAY", 1 },
{ "packed", 1 },
{ "Packed", 1 },
{ "PACKED", 1 },
{ "property", 1 },
{ "Property", 1 },
{ "PROPERTY", 1 },
{ "unsigned", 1 },
{ "long", 1 },
{ "double", 1 },
{ "short", 1 },
{ "bool", 1 },
{ "longint", 1 },
{ "Longint", 1 },
{ "LONGINT", 1 },
{ "extended", 1 },
{ "Extended", 1 },
{ "EXTENTED", 1 },
{ "pointer", 1 },
{ "Pointer", 1 },
{ "POINTER", 1 },
{ "and", 1 },
{ "And", 1 },
{ "AND", 1 },
{ "or", 1 },
{ "Or", 1 },
{ "OR", 1 },
{ "xor", 1 },
{ "Xor", 1 },
{ "XOR", 1 },
{ "void", 1 },
{ "__stdcall", 1 },
{ "__declspec", 1 },
{ "extern", 1 },
{ "stdcall", 1 },
{ "dllimport", 1 },
{ "dllexport", 1 },
{ "__cdecl", 1 },
{ "cdecl", 1 },
{ "template", 1 },
{ "typedef", 1 },
{ "naked", 1 },
{ "try", 1 },
{ "catch", 1 },
{ "throw", 2 }, // C++
{ "throws", 1 }, // Java
{ "finalize", 1 },
// "STL-suport"
{ "size_t", 1 },
{ "NPOS", 1 },
{ "vector", 1 },
{ "list", 1 },
{ "map", 1 },
{ "multimap", 1 },
{ "external", 1 },
{ "External", 1 },
{ "EXTERNAL", 1 },
//////////// meta-information //////////////
{ "virtual", 2 },
{ "Virtual", 2 },
{ "override", 2 },
{ "Override", 2 },
{ "class", 2 },
{ "Class", 2 },
{ "CLASS", 2 },
{ "struct", 2 },
{ "union", 2 },
{ "record", 2 },
{ "Record", 2 },
{ "RECORD", 2 },
{ "form", 1 },
{ "Form", 1 },
{ "FORM", 1 },
{ "namespace", 2 },
{ "interface" , 2 },
{ "abstract", 2 },
{ "Interface" , 2 },
{ "INTERFACE" , 2 },
{ "implementation", 2 },
{ "Implementation", 2 },
{ "IMPLEMENTATION", 2 },
{ "label", 2 },
{ "Label", 2 },
{ "LABEL", 2 },
{ "implements", 2 },
{ "public", 2 },
{ "private", 2 },
{ "protected", 2 },
{ "this", 2 },
{ "This", 2 },
{ "THIS", 2 },
{ "new", 2 },
{ "New", 2 },
{ "NEW", 2 },
{ "delete", 2 },
{ "inline", 2 },
{ "operator", 2 },
{ "Inherited", 2 },
{ "Inherited", 2 },
{ "final", 2 },
{ "implements", 2 },
{ "super", 2 },
// even more...
{ "java", 2 },
{ "Java", 2 },
{ "JAVA", 2 },
{ "delphi", 2 },
{ "Delphi", 2 },
{ "SmallTalk", 2 },
{ "Smalltalk", 2 },
{ "smalltalk", 2 },
{ "assembler", 2 },
{ "Assembler", 2 },
{ "Basic", 2 },
{ "BASIC", 2 },
{ "basic", 2 },
{ "CORBA", 2 },
{ "COBOL", 2 },
{ "ADA", 2 },
{ "LISP", 2 },
// just for fun...
{ "life", 2 },
{ "sucks", 2 },
{ "rules", 2 },
{ "Quake", 2 },
{ "QuakeWorld", 2 },
{ "[ag_slammer]",2 },
{ "Aleksandras", 2 },
{ "Gluchovas" , 2 },
{ "Alex", 2 },
{ "alex", 2 },
{ "aleks", 2 },
{ "aleksas", 3 },
{ "AlexSoft", 2 },
{ "Alexsoft", 2 },
{ "SpringSky", 2 },
{ "SK_Team", 2 },
{ "soften", 2 },
{ "UB40", 2 },
{ "U96", 2 }
};
struct less_c_str
{
inline bool operator()( char* x, char* y) const
{ return ( strcmp( x,y ) < 0 );
}
};
#if defined( wxUSE_TEMPLATE_STL )
typedef map< char*, char*, less_c_str > KeywordMapT;
#else
typedef char* CharPtrT;
typedef WXSTL_MAP( CharPtrT, CharPtrT ,less_c_str) KeywordMapT;
#endif
static KeywordMapT __gMultiLangMap;
static int __gMapReady = 0;
void check_keyword_map( int keywordMapNr )
{
if ( !__gMapReady )
{
__gMapReady = 1;
// "make sure" the address of the first member of non-polimorphic class
// coinsides with the address of the instance
KeywordT dummy;
if ( (char*)& dummy != &dummy.keyWord[0] )
throw;
int size = sizeof(__gKeyWords) / sizeof( KeywordT );
for( int i = 0; i != size; ++i )
__gMultiLangMap.insert(
KeywordMapT::value_type( (char*)&__gKeyWords[i],
(char*)&__gKeyWords[i]
)
);
}
}
int get_rank( char* start, char* end )
{
// FIXME:: what if end is no longer leagal adress?
char tmp = *end;
*end = '\0'; // put temporary terminator
KeywordMapT::iterator i;
if ( (i = __gMultiLangMap.find( start ) ) != __gMultiLangMap.end() )
{
KeywordT* pKey = (KeywordT*)(*i).second;
*end = tmp;
return pKey->rank;
}
else
{
*end = tmp;
return 0;
}
}
static inline void store_range( SPBlockListT& results, int rank, int range_len )
{
if ( !range_len ) return;
results.push_back ( ( rank << 16 ) | ( range_len ) );
}
#define STORE_RANGE store_range( results, cur_rank, cur_range_len );\
cur_rank = cur_range_len = 0;
#define NEXT_CHAR cur_range_len++; \
++cur; \
continue;
static inline int is_alpha( char ch )
{
return ( (( ch >= '_' ) && ( ch <= 'z' )) ||
(( ch >= 'A' ) && ( ch <= 'Z' ))
);
}
// _ . .
// Ziema atEjo netikEtai
static void heighlight_syntax( char* str, int strLen,
SPBlockListT& results, bool& isComment )
{
bool isMultiline = 0;
char* cur = str;
char* end = str + strLen;
int cur_rank = ( isComment == 1 ) ? RANK_GREEN : RANK_BLACK;
int cur_range_len = 0;
while ( cur != end )
{
int has_next = ( cur+1 != end );
if ( isComment )
{
if ( *cur == '*' )
if ( has_next && *(cur+1) == '/' )
{
// turn off multiline comment mode
cur += 2;
cur_range_len += 2;
isComment = 0;
isMultiline = 0;
STORE_RANGE;
continue;
}
++cur_range_len;
++cur;
continue;
}
/*
if ( *cur == 10 )
if ( isComment )
if ( isMultiline )
{
cur_rank = RANK_GREEN;
cur_range_len = end - cur;
STORE_RANGE;
isComment = 0;
isMultiline = 0;
continue;
}*/
if ( *cur == '/' )
{
if ( has_next )
{
if ( *(cur+1) == '/' )
{
STORE_RANGE;
char* eol = cur;
while ( eol < end && *eol != 10 )
++eol;
cur_rank = RANK_GREEN;
cur_range_len = eol - cur;
cur = eol;
STORE_RANGE;
continue;
}
if ( *(cur+1) == '*' )
{
STORE_RANGE;
cur_rank = RANK_GREEN;
cur_range_len = 2;
isComment = 1;
cur += 2;
isMultiline = 1;
continue;
}
}
NEXT_CHAR;
}
if ( ( is_alpha( *cur ) || *(cur) == '#' )
&& has_next
)
{
if ( is_alpha( *(cur+1) ) )
{
char* start = cur;
cur += 2;
while ( cur != end && is_alpha(*cur) ) ++cur;
int wordRank;
if ( (wordRank = get_rank( start, cur )) > 0 )
{
STORE_RANGE;
store_range( results, wordRank, int(cur-start) );
cur_rank = cur_range_len = 0;
continue;
}
cur_range_len += ( cur-start );
continue;
}
else
NEXT_CHAR;
}
NEXT_CHAR;
}
if ( cur_range_len > 0 ) STORE_RANGE;
}
/***** Implementation for class SourcePainter ******/
SourcePainter::SourcePainter( bool assembleResultString )
: mCollectResultsOn( assembleResultString ),
mIsInComment( FALSE ),
mCommentIsMultiline( FALSE )
{
check_keyword_map(0);
}
void SourcePainter::ProcessSource( char* src, int srcLen )
{
// TBD:: multilne state...
heighlight_syntax( src, srcLen, mBlocks, mIsInComment );
if ( mCollectResultsOn )
mResultStr += string( src, srcLen );
}
void SourcePainter::SetState( bool isInComment,
bool commentIsMultiline )
{
mIsInComment = isInComment;
mCommentIsMultiline = commentIsMultiline;
}
void SourcePainter::Init(bool assembleResultString)
{
mIsInComment = 0;
mCommentIsMultiline = 0;
mCollectResultsOn = assembleResultString;
mResultStr = "";
mBlocks.erase( mBlocks.begin(), mBlocks.end() );
}
static int rank_tags_map[] =
{
TAG_BLACK_FONT,
TAG_BLUE_FONT,
TAG_RED_FONT,
TAG_GREEN_FONT
};
void SourcePainter::GetResultString(string& result, MarkupTagsT tags)
{
// this method works, only if results of processing
// are collected
ASSERT( mCollectResultsOn );
result = "";
int pos = 0;
for( size_t i = 0; i != mBlocks.size(); ++i )
{
int desc = mBlocks[i];
int len = desc & 0xFFFF;
int rank = (desc >> 16) & 0xFFFF;
result += tags[ rank_tags_map[rank] ].start;
for( int n = 0; n != len; ++n )
result += mResultStr[pos+n];
pos += len;
result += tags[ rank_tags_map[rank] ].end;
}
}
SPBlockListT& SourcePainter::GetBlocks()
{
return mBlocks;
}
bool SourcePainter::IsKeyword( char* word, int wordLen )
{
check_keyword_map(0);
int rank = get_rank( word, word + wordLen );
return ( rank == RANK_BLUE || rank == RANK_RED );
}

View File

@@ -1,543 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: No names yet.
// Purpose: Contrib. demo
// Author: Aleksandras Gluchovas
// Modified by:
// Created: 22/09/98
// RCS-ID: $Id$
// Copyright: (c) Aleskandars Gluchovas
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "srcparser.h"
#pragma interface
#endif
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#include <malloc.h>
#include <stdio.h>
#include "srcparser.h"
/***** Implementation for class spVisitor *****/
void spVisitor::VisitAll( spContext& atContext,
bool sortContent
)
{
mSiblingSkipped = FALSE;
mChildSkipped = FALSE;
mContextMask = SP_CTX_ANY; // FIXME:: should be an arg.
if ( sortContent && !atContext.IsSorted() )
atContext.SortMembers();
mpCurCxt = &atContext; // FIXME:: this is dirty, restoring it each time
if ( atContext.GetContextType() & mContextMask )
atContext.AcceptVisitor( *this );
MMemberListT& members = atContext.GetMembers();
for( size_t i = 0; i != members.size(); ++i )
{
if ( mSiblingSkipped )
return;
if ( !mChildSkipped )
{
size_t prevSz = members.size();
// visit members of the context recursivelly
VisitAll( *members[i], sortContent );
if ( members.size() != prevSz )
--i; // current member was removed!
mChildSkipped = 0;
}
}
}
void spVisitor::RemoveCurrentContext()
{
if ( mpCurCxt->GetParent() )
mpCurCxt->GetParent()->RemoveChild( mpCurCxt );
}
void spVisitor::SkipSiblings()
{
mSiblingSkipped = TRUE;
}
void spVisitor::SkipChildren()
{
mChildSkipped = TRUE;
}
void spVisitor::SetFilter( int contextMask )
{
mContextMask = contextMask;
}
/***** Implementation for class spComment *****/
bool spComment::IsMultiline() const
{
return mIsMultiline;
}
bool spComment::StartsParagraph() const
{
return mStartsPar;
}
string& spComment::GetText()
{
return mText;
}
string spComment::GetText() const
{
return mText;
}
/***** Implementation for class spContext *****/
spContext::spContext()
: mpParent ( NULL ),
mpFirstOccurence( NULL ),
mAlreadySorted ( FALSE ),
mSrcLineNo (-1),
mSrcOffset (-1),
mContextLength(-1),
mLastScrLineNo(-1),
mHeaderLength (-1),
mFooterLength (-1),
mFirstCharPos (-1),
mLastCharPos (-1),
mVisibility( SP_VIS_PRIVATE ),
mIsVirtualContext ( FALSE ),
mVirtualContextHasChildren( FALSE ),
mpUserData( NULL )
{}
void spContext::RemoveChildren()
{
for( size_t i = 0; i != mMembers.size(); ++i )
delete mMembers[i];
mMembers.erase( mMembers.begin(), mMembers.end() );
}
spContext::~spContext()
{
RemoveChildren();
for( size_t i = 0; i != mComments.size(); ++i )
delete mComments[i];
}
bool spContext::IsSorted()
{
return mAlreadySorted;
}
void spContext::GetContextList( MMemberListT& lst, int contextMask )
{
for( size_t i = 0; i != mMembers.size(); ++i )
{
spContext& member = *mMembers[i];
if ( member.GetContextType() & contextMask )
lst.push_back( &member );
// collect required contexts recursively
member.GetContextList( lst, contextMask );
}
}
bool spContext::HasComments()
{
return ( mComments.size() != 0 );
}
void spContext::RemoveChild( spContext* pChild )
{
for( size_t i = 0; i != mMembers.size(); ++i )
if ( mMembers[i] == pChild )
{
mMembers.erase( &mMembers[i] );
delete pChild;
return;
}
// the given child should exist on the parent's list
wxASSERT( 0 );
}
spContext* spContext::GetEnclosingContext( int mask )
{
spContext* cur = this->GetParent();
while ( cur && !(cur->GetContextType() & mask) )
cur = cur->GetParent();
return cur;
}
bool spContext::PositionIsKnown()
{
return ( mSrcOffset != (-1) && mContextLength != (-1) );
}
bool spContext::IsVirtualContext()
{
return mIsVirtualContext;
}
bool spContext::VitualContextHasChildren()
{
return mVirtualContextHasChildren;
}
string spContext::GetVirtualContextBody()
{
wxASSERT( mIsVirtualContext );
return mVirtualContextBody;
}
string spContext::GetFooterOfVirtualContextBody()
{
wxASSERT( mIsVirtualContext );
return mVittualContextFooter;
}
void spContext::SetVirtualContextBody( const string& body,
bool hasChildren,
const string& footer )
{
mVirtualContextHasChildren = hasChildren;
mVirtualContextBody = body;
mVittualContextFooter = footer;
// atuomaticllay becomes virtual context
mIsVirtualContext = TRUE;
}
string spContext::GetBody( spContext* pCtx )
{
if ( ( pCtx == NULL || pCtx == this ) && mIsVirtualContext )
return mVirtualContextBody;
if ( GetParent() )
return GetParent()->GetBody( ( pCtx != NULL ) ? pCtx : this );
else
return ""; // source-fragment cannot be found
}
string spContext::GetHeader( spContext* pCtx )
{
if ( GetParent() )
return GetParent()->GetHeader( ( pCtx != NULL ) ? pCtx : this );
else
return ""; // source-fragment cannot be found
}
bool spContext::IsFirstOccurence()
{
return ( mpFirstOccurence != 0 );
}
spContext* spContext::GetFirstOccurence()
{
// this object should not itself be
// the first occurence of the context
wxASSERT( mpFirstOccurence != 0 );
return mpFirstOccurence;
}
void spContext::AddMember( spContext* pMember )
{
mMembers.push_back( pMember );
pMember->mpParent = this;
}
void spContext::AddComment( spComment* pComment )
{
mComments.push_back( pComment );
}
MMemberListT& spContext::GetMembers()
{
return mMembers;
}
spContext* spContext::FindContext( const string& identifier,
int contextType,
bool searchSubMembers
)
{
for( size_t i = 0; i != mMembers.size(); ++i )
{
spContext& member = *mMembers[i];
if ( member.GetName() == identifier &&
( contextType & member.GetContextType() )
)
return &member;
if ( searchSubMembers )
{
spContext* result =
member.FindContext( identifier, contextType, 1 );
if ( result ) return result;
}
}
return 0;
}
void spContext::RemoveThisContext()
{
if ( mpParent )
mpParent->RemoveChild( this );
else
// context should have a parent
wxASSERT(0);
}
spContext* spContext::GetOutterContext()
{
return mpParent;
}
bool spContext::HasOutterContext()
{
return ( mpParent != 0 );
}
bool spContext::IsInFile()
{
return ( GetOutterContext()->GetContextType() == SP_CTX_FILE );
}
bool spContext::IsInNameSpace()
{
return ( GetOutterContext()->GetContextType() == SP_CTX_NAMESPACE );
}
bool spContext::IsInClass()
{
return ( GetOutterContext()->GetContextType() == SP_CTX_CLASS );
}
bool spContext::IsInOperation()
{
return ( GetOutterContext()->GetContextType() == SP_CTX_OPERATION );
}
spClass& spContext::GetClass()
{
wxASSERT( GetOutterContext()->GetType() == SP_CTX_CLASS );
return *((spClass*)mpParent );
}
spFile& spContext::GetFile()
{
wxASSERT( GetOutterContext()->GetType() == SP_CTX_FILE );
return *((spFile*)mpParent );
}
spNameSpace& spContext::GetNameSpace()
{
wxASSERT( GetOutterContext()->GetType() == SP_CTX_NAMESPACE );
return *((spNameSpace*)mpParent );
}
spOperation& spContext::GetOperation()
{
wxASSERT( GetOutterContext()->GetType() == SP_CTX_OPERATION );
return *((spOperation*)mpParent );
}
/***** Implementation for class spClass *****/
void spClass::SortMembers()
{
// TBD::
}
/***** Implementation for class spOperation *****/
spOperation::spOperation()
: mHasDefinition( FALSE )
{}
string spOperation::GetFullName(MarkupTagsT tags)
{
string txt = tags[TAG_BOLD].start + mRetType;
txt += " ";
txt += mName;
txt += "( ";
txt += tags[TAG_BOLD].end;
for( size_t i = 0; i != mMembers.size(); ++i )
{
// DBG::
wxASSERT( mMembers[i]->GetContextType() == SP_CTX_PARAMETER );
spParameter& param = *((spParameter*)mMembers[i]);
if ( i != 0 )
txt += ", ";
txt += tags[TAG_BOLD].start;
txt += param.mType;
txt += tags[TAG_BOLD].end;
txt += tags[TAG_ITALIC].start;
txt += " ";
txt += param.mName;
if ( param.mInitVal != "" )
{
txt += " = ";
txt += tags[TAG_BOLD].start;
txt += param.mInitVal;
txt += tags[TAG_BOLD].end;
}
txt += tags[TAG_ITALIC].end;;
}
txt += tags[TAG_BOLD].start;
txt += " )";
txt += tags[TAG_BOLD].end;
// TBD:: constantness of method
return txt;
}
/***** Implemenentation for class spPreprocessorLine *****/
string spPreprocessorLine::CPP_GetIncludedFileNeme()
{
wxASSERT( GetStatementType() == SP_PREP_DEF_INCLUDE_FILE );
size_t i = 0;
while( i < mLine.length() && mLine[i] != '"' && mLine[i] != '<' )
++i;
++i;
size_t start = i;
while( i < mLine.length() && mLine[i] != '"' && mLine[i] != '>' )
++i;
if ( start < mLine.length() )
{
string fname;
fname.append( mLine, start, ( i - start ) );
return fname;
}
else
return ""; // syntax error probably
}
/***** Implemenentation for class SourceParserBase *****/
SourceParserBase::SourceParserBase()
: mpFileBuf( NULL ),
mFileBufSz( 0 ),
mpPlugin( NULL )
{}
SourceParserBase::~SourceParserBase()
{
if ( mpFileBuf ) free( mpFileBuf );
if ( mpPlugin ) delete mpPlugin;
}
spFile* SourceParserBase::ParseFile( const char* fname )
{
// FIXME:: the below should not be fixed!
const size_t MAX_BUF_SIZE = 1024*256;
if ( !mpFileBuf ) mpFileBuf = (char*)malloc( MAX_BUF_SIZE );
mFileBufSz = MAX_BUF_SIZE;
FILE* fp = fopen( fname, "rt" );
if ( (int)fp == -1 || !fp ) return NULL;
int sz = fread( mpFileBuf, 1, mFileBufSz, fp );
return Parse( mpFileBuf, mpFileBuf + sz );
}
void SourceParserBase::SetPlugin( SourceParserPlugin* pPlugin )
{
if ( mpPlugin ) delete mpPlugin;
mpPlugin = pPlugin;
}

View File

@@ -1,81 +0,0 @@
////////////////////
//
// craeted by Alex
//
////////////////////
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#include <memory.h>
#ifndef WX_PRECOMP
#include "wx/defs.h"
#endif
char *
copystring (const char *s)
{
if (s == NULL) s = "";
size_t len = strlen (s) + 1;
char *news = new char[len];
memcpy (news, s, len); // Should be the fastest
return news;
}
#ifdef __WXMSW__
// from filefn.cpp
void WXDLLEXPORT wxSplitPath(const char *pszFileName,
wxString *pstrPath,
wxString *pstrName,
wxString *pstrExt)
{
wxCHECK_RET( pszFileName, _("NULL file name in wxSplitPath") );
const char *pDot = strrchr(pszFileName, FILE_SEP_EXT);
const char *pSepUnix = strrchr(pszFileName, FILE_SEP_PATH_UNIX);
const char *pSepDos = strrchr(pszFileName, FILE_SEP_PATH_DOS);
// take the last of the two
size_t nPosUnix = pSepUnix ? pSepUnix - pszFileName : 0;
size_t nPosDos = pSepDos ? pSepDos - pszFileName : 0;
if ( nPosDos > nPosUnix )
nPosUnix = nPosDos;
// size_t nLen = Strlen(pszFileName);
if ( pstrPath )
*pstrPath = wxString(pszFileName, nPosUnix);
if ( pDot ) {
size_t nPosDot = pDot - pszFileName;
if ( pstrName )
*pstrName = wxString(pszFileName + nPosUnix + 1, nPosDot - nPosUnix);
if ( pstrExt )
*pstrExt = wxString(pszFileName + nPosDot + 1);
}
else {
if ( pstrName )
*pstrName = wxString(pszFileName + nPosUnix + 1);
if ( pstrExt )
pstrExt->Empty();
}
}
wxLocale *wxGetLocale()
{
return NULL;
}
const char *wxLocale::GetString(const char *szOrigString,
const char *) const
{
return szOrigString;
}
#else // !MSW
const char *wxGetTranslation(const char *str)
{
return str;
}
#endif // MSW

View File

@@ -1 +0,0 @@
include ../setup/general/makedirs

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 B

View File

@@ -1,161 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: alignb.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 298 389 314 404
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
298 389 translate
% size of image (on paper, in 1/72inch coords)
16 15 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 9 string def
% load up the colormap
currentfile cmap readhexstring
000000 c0c0c0 ffff00
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
16 15 8 % dimensions of data
[16 0 0 -15 0 15] % mapping matrix
rlecmapimage
0f01
07010700
070181000204020000
070181000204020000
070181000204020000
070181000204020000
070181000204020000
8101000300010181000204020000
8201000201028100018201000204020000
8201000201028100018201000204020000
8201000201028100018201000204020000
8201000201028100018201000204020000
810100030001010700
0f01
0f01
%
% Compression made this file 3.12% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 B

View File

@@ -1,161 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: alignl.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 254 389 270 404
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
254 389 translate
% size of image (on paper, in 1/72inch coords)
16 15 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 9 string def
% load up the colormap
currentfile cmap readhexstring
000000 c0c0c0 ffff00
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
16 15 8 % dimensions of data
[16 0 0 -15 0 15] % mapping matrix
rlecmapimage
0f01
020105000601
020181000202028100010501
020181000202028100010501
020181000202028100010501
020105000601
0f01
0f01
02010a000101
020181000207028100010001
020181000207028100010001
020181000207028100010001
020181000207028100010001
02010a000101
0f01
%
% Compression made this file 16.11% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 B

View File

@@ -1,161 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: alignr.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 254 389 270 404
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
254 389 translate
% size of image (on paper, in 1/72inch coords)
16 15 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 9 string def
% load up the colormap
currentfile cmap readhexstring
000000 c0c0c0 ffff00
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
16 15 8 % dimensions of data
[16 0 0 -15 0 15] % mapping matrix
rlecmapimage
0f01
070105000101
070181000202028100010001
070181000202028100010001
070181000202028100010001
070105000101
0f01
0f01
02010a000101
020181000207028100010001
020181000207028100010001
020181000207028100010001
020181000207028100010001
02010a000101
0f01
%
% Compression made this file 16.11% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 B

View File

@@ -1,161 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: alignt.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 254 389 270 404
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
254 389 translate
% size of image (on paper, in 1/72inch coords)
16 15 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 9 string def
% load up the colormap
currentfile cmap readhexstring
000000 c0c0c0 ffff00
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
16 15 8 % dimensions of data
[16 0 0 -15 0 15] % mapping matrix
rlecmapimage
0f01
810100030001010700
8201000201028100018201000204020000
8201000201028100018201000204020000
8201000201028100018201000204020000
8201000201028100018201000204020000
8101000300010181000204020000
070181000204020000
070181000204020000
070181000204020000
070181000204020000
070181000204020000
07010700
0f01
0f01
%
% Compression made this file 20.28% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 B

View File

@@ -1,174 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: arrow.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 254 375 282 403
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
254 375 translate
% size of image (on paper, in 1/72inch coords)
28 28 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 12 string def
% load up the colormap
currentfile cmap readhexstring
000000 c0c0c0 808080 ffffff
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
28 28 8 % dimensions of data
[28 0 0 -28 0 28] % mapping matrix
rlecmapimage
8102001900
8100031703810200
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
8200030106018100010c0101020000
82000301060101000c0101020000
82000301060102000b0101020000
82000301060103000a0101020000
8200030106010400090101020000
8200030106010500080101020000
8200030106010600070101020000
8200030106010700060101020000
8200030106010400090101020000
8200030106010100810100810001080101020000
82000301060181000101010100080101020000
820003010a010100080101020000
820003010b010100070101020000
820003010b010100070101020000
82000301150101020000
82000301150101020000
82000301150101020000
8200030217020000
81000218020000
1b00
%
% Compression made this file 13.95% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 B

View File

@@ -1,174 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: bmpbuttn.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 254 375 282 403
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
254 375 translate
% size of image (on paper, in 1/72inch coords)
28 28 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 12 string def
% load up the colormap
currentfile cmap readhexstring
000000 c0c0c0 808080 ffffff
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
28 28 8 % dimensions of data
[28 0 0 -28 0 28] % mapping matrix
rlecmapimage
81020018000002
8100031703810200
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
8200030103010c00040101020000
8200030102018100010b01810001020101020000
82000301020181000101018100010201010002010100020101020000
8200030102018100010101810001010181000182010001810100810001010101020000
82000301020185000100010001010181000182010001810100810001010101020000
8200030102018400010001008100010101010002010100020101020000
82000301020183000100018201000106010100020101020000
82000301020182000100820001000900020101020000
820003010201810001010181000107010100020101020000
82000301020181000101018100010101010003010100020101020000
8200030103010e00020101020000
8200030104010c00030101020000
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
8200030217020000
81000218020000
81020018000002
%
% Compression made this file 18.45% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 B

View File

@@ -1,200 +0,0 @@
\chapter{Introduction}\label{introduction}
\pagenumbering{arabic}%
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%
The wxWindows Dialog Editor is a tool for creating dialog resource files, in {\tt .wxr} format.
It differs from wxBuilder in the following respectes:
\begin{enumerate}\itemsep=0pt
\item Scope. It is written for dialog editing only, and is therefore more convenient than wxBuilder for this purpose.
\item File format. Dialog editor reads and writes wxWindows resource files (extension {\tt .wxr}) and has
no independent file format.
\item Robustness. It is written in a more principled way than wxBuilder, and is less ambitious.
\item Ease of use. Windows are edited using the mouse or via consistent {\it property editors}, which
provide immediate visual feedback of changed properties.
\end{enumerate}
Dialog Editor 2.0 should be compiled and used with wxWindows 2.0.
\section{Current status}
Dialog Editor currently runs under wxMSW and wxGTK. It has yet to
be tested under wxMotif.
\section{Future developments}
\begin{itemize}\itemsep=0pt
\item Motif compilation.
\item It would be nice to have a dialog browser, showing thumbnails of
all dialogs in a particular directory.
\item Maybe add a menubar editor (from wxBuilder).
\item Maybe convert Windows .rc files.
\end{itemize}
\chapter{Commands}\label{commands}
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%
\section{Dialog editor menu bar}
\subsection{File menu}
\begin{twocollist}\itemsep=0pt
\twocolitem{New dialog}{Creates a new dialog resource.}
\twocolitem{New project}{Creates a new project (clears index and resets project name).}
\twocolitem{Open}{Opens an existing resource file.}
\twocolitem{Save}{Saves the current resources.}
\twocolitem{Save As...}{Saves the current resources in a named file.}
\twocolitem{Clear}{Clears the current resources.}
\twocolitem{Exit}{Exits the program.}
\end{twocollist}
\subsection{Edit menu}
\begin{twocollist}\itemsep=0pt
\twocolitem{Test Dialog}{Creates the current dialog for test purposes.}
\twocolitem{Recreate}{Recreates the currently selected control from the underlying resource. This may be necessary
to regenerate items that cannot be changed dynamically, and which have got out of sync with the displayed
item.}
\twocolitem{Delete}{Deletes the currently selected resource.}
\end{twocollist}
\subsection{Help menu}
\begin{twocollist}\itemsep=0pt
\twocolitem{Help topics}{Displays on-line help at the contents page.}
\twocolitem{About}{Displays an dialog showing the Dialog Editor version and author.}
\end{twocollist}
\latexonly{\newpage}
\section{Command toolbar}
The command toolbar consists of the following tools:
\begin{twocollist}%\itemsep=0pt
\twocolitem{\icon{new.eps}{New}}{Clears the project.}
\twocolitem{\icon{open.eps}{Open}}{Opens an existing resource file.}
\twocolitem{\icon{save.eps}{Save}}{Saves the current resources.}
\twocolitem{\icon{vert.eps}{Horizontal align}}{Aligns the centre of the selected items horizontally.}
\twocolitem{\icon{alignt.eps}{Horizontal top-align}}{Aligns the top sides of the selected items horizontally.}
\twocolitem{\icon{alignb.eps}{Horizontal bottom-align}}{Aligns the bottom sides of the selected items horizontally.}
\twocolitem{\icon{horiz.eps}{Vertical align}}{Aligns the centre of the selected items vertically.}
\twocolitem{\icon{alignl.eps}{Vertical left-align}}{Aligns the left sides of the selected items vertically.}
\twocolitem{\icon{alignr.eps}{Vertical right-align}}{Aligns the right sides of the selected items vertically.}
\twocolitem{\icon{copysize.eps}{Copy size}}{Copies the size of the first selected item to the subsequently selected item(s).}
\twocolitem{\icon{tofront.eps}{To front}}{Puts the selected item(s) to the front of the display list.}
\twocolitem{\icon{toback.eps}{To back}}{Puts the selected item(s) to the back of the display list.}
\twocolitem{\icon{help.eps}{Help}}{Invokes Dialog Editor help.}
\end{twocollist}
\latexonly{\newpage}
\section{Tool palette}
The tool palette is used to select a type of control to create on the dialog.
To create a new control, select a tool with left-click, then left-click on the dialog.
Select the pointer tool to use left-click for selecting and deselecting
items.
\section{Resource tree}
The resource tree shows a list of the dialogs, controls and bitmaps currently loaded
in Dialog Editor. Double-clicking on an item shows the associated resource.
\chapter{Procedures}\label{procedures}
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%
\section{Running Dialog Editor}
To run Dialog Editor under Windows, click on the Program Manager or Explorer icon.
Under UNIX, run from the command line.
The main window shows a menu bar, command toolbar, tool palette, resource list, and
status line.
\section{Creating a dialog}
To create a new dialog, click on the {\bf File: New} menu item, or equivalent
toolbar button. A dialog will appear. To put a control on the dialog, left-click
on the appropriate palette icon and then left-click on the dialog. A new item
will appear at the place you clicked.
You can edit any control or dialog by control-left clicking. A property editor
will appear, allowing any property to be selected and edited (see \helpref{Using property editors}{propeditors}).
You can also edit items by right-clicking to show a menu, and then selecting {\it Edit properties}.
To move a control, drag the item with the left mouse button, or edit
the position values in the property editor. To resize a control, you
can either select it by left-clicking and then dragging on a selection
handle, or edit the size values in the property editor.
You can delete items from the right-click menu, or by selecting the item and
choosing {\bf Edit: Delete} from the menu bar.
\section{Using property editors}\label{propeditors}
Property editors consist of a list of properties and current values, plus controls at the top of
the editor. If the property is of an appropriate type, you can edit the value directly in the
text field, and confirm or cancel the value using the two buttons to the left of it.
If the property has a predefined range of values, such as labelFontFamily, you can
see a list of permissable values by clicking on the button labelled with an ellipsis symbol ({\bf ...}).
This will show a listbox with possible values and current selection. You may also be able
to cycle through values by double-clicking the value in the listbox.
Properties may have special editors appropriate to the type. Filename properties invoke
the file selector, and properties containing list of user-definable strings use a
string editor.
When you change a property value, this value is immediately reflected in
the dialog or control. If the item allows this value to be changed
dynamically, the relevant wxWindows function will be called internally
to effect the change. If the value cannot be changed dynamically, the
item will be destroyed and re-created, which means that there will be
more flickering associated with some kinds of property changes than
others.
\section{Saving and loading files}
Use {\it File: Save} and {\it File: Save as} or the equivalent toolbar button
to save the current dialog(s) in a wxWindows resource file (extension {\tt .wxr}).
The {\tt .wxr} file can be used directly in a wxWindows program, if
wxWindows resources have been enabled when building the wxWindows library.
These files can be loaded dynamically, or included directly into program source
with a \verb$#include$ directive. See the wxWindows user manual for further details.
\section{Working with identifiers}
Dialog Editor keeps track of identifiers in your resources, and reads and writes an include file of the
form {\tt name.h} where 'name' is the root name of your {\tt .wxr} file. Dialog Editor
knows about the predefined identifiers such as wxID\_OK.
When you create a dialog or control, the identifier is initially generated. When you
edit the identifier via a property editor, you can choose a new name, such as a predefined
symbol and optionally change the integer assigned to the name (assuming it's not a
predefined symbol).
When you save the project, the identifier include file is saved as well. Include this file
in your project so that you can refer to controls and dialogs by identifier rather than
obscure integers. Note that the {\tt .wxr} file itself can only contain integer ids and not the symbols,
due to way in which the resource file is loaded.
\section{Multi-platform development}
{\tt .wxr} files generated on one environment (e.g. Windows) can be used in another (e.g. GTK).
If you use default fonts and colouring (set {\bf useSystemDefaults} to True in the dialog properties)
then the dialog fonts and colours will take on the native values, rather than ones specified in the
resource. Without this, colours in the dialog resource may not match system colours.
Also, set {\bf useDialogUnits} to True whenever possible since this will cause the dialog
to be created using a scale based on the current system font size, and will result in dialogs that are
portable between screen resolutions as well as platforms.
Because the same control can have different sizes on different GUIs,
the user should be cautious in assuming that one resource file will work for all
platforms. It may be better to plan to conditionally include or load different
resource files for different platforms, with spacing modified to suit each
environment. The best thing is to try your dialog resource on several platforms
and see whether tweaking is required for some platforms.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 438 B

View File

@@ -1,17 +0,0 @@
\chapter{Bugs}\label{bugs}
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%
Version 2.0
\begin{itemize}\itemsep=0pt
\item No Motif version yet.
\item Some control properties missing.
\item When dragging a selected item, other selected items should follow (to be
consistent with convention), but don't.
\item No grid.
\item No keyboard shortcuts.
\item No tab ordering.
\item In dialog unit mode, controls will sometimes move slightly when properties are edited,
because translating between units isn't always reversible (rounding errors?).
\end{itemize}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 B

View File

@@ -1,174 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: button.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 254 375 282 403
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
254 375 translate
% size of image (on paper, in 1/72inch coords)
28 28 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 12 string def
% load up the colormap
currentfile cmap readhexstring
000000 c0c0c0 808080 ffffff
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
28 28 8 % dimensions of data
[28 0 0 -28 0 28] % mapping matrix
rlecmapimage
81020018000002
8100031703810200
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
8200030103010c00040101020000
8200030102018100010b01810001020101020000
8200030102018100010b010100020101020000
8200030102018100010b010100020101020000
8200030102018100010b010100020101020000
8200030102018100010b010100020101020000
8200030102018100010b010100020101020000
8200030102018100010b010100020101020000
8200030102018100010b010100020101020000
8200030102018100010b010100020101020000
8200030103010e00020101020000
8200030104010c00030101020000
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
8200030217020000
81000218020000
81020018000002
%
% Compression made this file 15.35% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 B

View File

@@ -1,71 +0,0 @@
\chapter{Change log}\label{changes}
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%
December 31st 1998, Version 2.0
\begin{itemize}\itemsep=0pt
\item wxWindows 2.0 port.
\item Major user interface changes.
\item Allows identifiers to be edited and reads/writes an id header file.
\end{itemize}
March 15th 1997, Version 1.7
\begin{itemize}\itemsep=0pt
\item Added fix to wx\_rprop.cpp to avoid Fafa bitmap buttons growing every time the
button edited.
\item Added fix to wx\_resed.cpp, case wxID\_EXIT, to clean up properly on exit, avoiding double deletion of wxBitmap.
\end{itemize}
May 6th 1996, Version 1.6
\begin{itemize}\itemsep=0pt
\item Added panel editing in addition to dialog box editing.
\item Cured some bugs with changing window styles such as wxUSER\_COLOURS and label position.
\item Now preserves syntax of bitmap resources in wxr files.
\end{itemize}
March 1996, Version 1.5
\begin{itemize}\itemsep=0pt
\item Changed behaviour of New tool, and changed File menu to include New project and New dialog items.
Behaviour should be more standard now.
\end{itemize}
March 1st 1996, Version 1.4
\begin{itemize}\itemsep=0pt
\item Items (but not dialogs) can now have duplicate names.
\item Can pass a filename to the program from the command line.
\item Cured bizarre error caused by a Windows combobox sending
a fake left-mouse-up error when losing the focus (switching to another
window). This fix will be in wxWindows 1.66.
\item Rewritten code to use only the new type system, and to take account of
of new window style partitioning (flags for different items may have the same value).
Again, wxWindows 1.66 will have the new style values, to make room for more window
styles.
\end{itemize}
January 28th 1996, Version 1.2
\begin{itemize}\itemsep=0pt
\item Now starts off in non-user-colour mode under Windows
\item Dragging item drags other selected items
\item wxMessage saves size correctly, if used in conjunction with wxWin 1.66
\end{itemize}
January 19th 1996, Version 1.1
\begin{itemize}\itemsep=0pt
\item Cured crash bug when quitting dialog window
\item Added Clear menu item
\item Added window type name to property window
\end{itemize}
December 19th 1995, Version 1.0
\begin{itemize}\itemsep=0pt
\item First release.
\end{itemize}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 B

View File

@@ -1,174 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: check.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 254 375 282 403
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
254 375 translate
% size of image (on paper, in 1/72inch coords)
28 28 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 12 string def
% load up the colormap
currentfile cmap readhexstring
000000 c0c0c0 808080 ffffff
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
28 28 8 % dimensions of data
[28 0 0 -28 0 28] % mapping matrix
rlecmapimage
81020018000002
8100031703810200
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
8200030103010c00040101020000
820003010301010008010100040101020000
820003010301830001000105018300010001030101020000
82000301030181000182010001030181000182010001030101020000
820003010301810001010181000101018100010101810001030101020000
820003010301810001020183000100010201810001030101020000
82000301030181000103018100010301810001030101020000
820003010301810001020183000100010201810001030101020000
820003010301810001010181000101018100010101810001030101020000
82000301030181000182010001030181000182010001030101020000
820003010301830001000105018300010001030101020000
820003010301010008010100040101020000
8200030103010c00040101020000
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
8200030217020000
81000218020000
81020018000002
%
% Compression made this file 18.88% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 B

View File

@@ -1,174 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: choice.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 254 375 282 403
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
254 375 translate
% size of image (on paper, in 1/72inch coords)
28 28 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 12 string def
% load up the colormap
currentfile cmap readhexstring
000000 c0c0c0 808080 ffffff
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
28 28 8 % dimensions of data
[28 0 0 -28 0 28] % mapping matrix
rlecmapimage
81020018000002
8100031703810200
82000301150101020000
82000301150101020000
82000301150101020000
820003018101001200810102810200
82000301820100010a01010002010100810102810200
82000301820100010a0102008101000100810102810200
82000301820100010a010600810102810200
820003018101001200810102810200
8200030101018100010901810001030182000102810200
8200030101018100010901810001820100018301000102810200
82000301010182000100050002018200010001008301000102810200
8200030101018100010901810001030182000102810200
8200030101018100010901810001030182000102810200
8200030101018200010007008101000500810102810200
8200030101018100010901810001030182000102810200
8200030101018100010901810001030182000102810200
82000301010182000100060001018200010001008301000102810200
8200030101018100010901810001820100018301000102810200
8200030101018100010901810001030182000102810200
8200030101011200810102810200
82000301150101020000
82000301150101020000
82000301150101020000
8200030217020000
81000218020000
81020018000002
%
% Compression made this file 20.11% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 217 B

View File

@@ -1,5 +0,0 @@
\chapter{Alphabetical class reference}\label{classref}
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%
To be written.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 B

View File

@@ -1,161 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: copysize.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 254 389 270 404
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
254 389 translate
% size of image (on paper, in 1/72inch coords)
16 15 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 9 string def
% load up the colormap
currentfile cmap readhexstring
000000 c0c0c0 ffff00
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
16 15 8 % dimensions of data
[16 0 0 -15 0 15] % mapping matrix
rlecmapimage
0f01
090081010001000101
810002060281000101018100010001
810002060281000101018100010001
8100020602820001000300
810002060281000181010001000001
090002018100010001
0f01
03018b000100010001000100010001
0f01
0301810001810100040082010001
060181000202028100010101
0301810001810100040082010001
0f01
03018b000100010001000100010001
%
% Compression made this file 21.11% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 B

View File

@@ -1,174 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: dialog.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 254 375 282 403
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
254 375 translate
% size of image (on paper, in 1/72inch coords)
28 28 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 15 string def
% load up the colormap
currentfile cmap readhexstring
000000 bf0000 c0c0c0 808080 ffffff
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
28 28 8 % dimensions of data
[28 0 0 -28 0 28] % mapping matrix
rlecmapimage
81030018000003
8100041704810300
82000402150201030000
820004028102011101010201030000
8200040294020100010001000100010001000100010001000102810203810300
820004028102011001810002810203810300
82000402820200020f02810002810203810300
82000402820200020f02810002810203810300
82000402820200028102000b000102810002810203810300
820004028202000282020004090481000282020002810203810300
820004028202000282020004090481000282020002810203810300
820004028202000282020004090481000282020002810203810300
82000402820200028102000b000102810002810203810300
82000402820200020f02810002810203810300
82000402820200020f02810002810203810300
82000402820200020f02810002810203810300
8200040283020002000500810200050082020002810203810300
820004028402000200030303830002000303038300020002810203810300
820004028402000200030303830002000303038300020002810203810300
8200040283020002000500810200050082020002810203810300
82000402820200020f02810002810203810300
820004028102001100010201030000
82000402150201030000
82000402150201030000
82000402150201030000
8200040317030000
81000318030000
81030018000003
%
% Compression made this file 21.77% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 B

View File

@@ -1,17 +0,0 @@
[OPTIONS]
BMROOT=. ; Assume that bitmaps are where the source is
TITLE=Dialog Editor Manual
CONTENTS=Contents
COMPRESS=HIGH
[FILES]
dialoged.rtf
[CONFIG]
CreateButton("Up", "&Up", "JumpId(`dialoged.hlp', `Contents')")
BrowseButtons()
[MAP]
[BITMAPS]

View File

@@ -1,48 +0,0 @@
\documentstyle[a4,makeidx,verbatim,texhelp,fancyhea,mysober,mytitle]{report}
\input psbox.tex
% Remove this for processing with dvi2ps instead of dvips
%\special{!/@scaleunit 1 def}
\parskip=10pt
\parindent=0pt
\title{User Manual for Dialog Editor Version 2.0}
\winhelpignore{\author{Julian Smart, Anthemion Software}
\date{December 1998}
}
\makeindex
\begin{document}
\maketitle
\pagestyle{fancyplain}
\bibliographystyle{plain}
\setheader{{\it CONTENTS}}{}{}{}{}{{\it CONTENTS}}
\setfooter{\thepage}{}{}{}{}{\thepage}%
\pagenumbering{roman}
\tableofcontents
\chapter*{Copyright notice}
\setheader{{\it COPYRIGHT}}{}{}{}{}{{\it COPYRIGHT}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%
\begin{center}
Copyright (c) 1998 Julian Smart, Anthemion Software
\end{center}
Please see the wxWindows licence for conditions of use.
\input{body.tex}
\input{changes.tex}
\input{bugs.tex}
\input{tech.tex}
%\newpage
%
% Note: In RTF, the \printindex must come before the
% change of header/footer, since the \printindex inserts
% the RTF \sect command which divides one chapter from
% the next.
\rtfonly{\printindex
\addcontentsline{toc}{chapter}{Index}
\setheader{{\it INDEX}}{}{}{}{}{{\it INDEX}}%
\setfooter{\thepage}{}{}{}{}{\thepage}%
}
\end{document}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 B

View File

@@ -1,174 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: gauge.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 254 375 282 403
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
254 375 translate
% size of image (on paper, in 1/72inch coords)
28 28 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 15 string def
% load up the colormap
currentfile cmap readhexstring
000000 bf0000 c0c0c0 808080 ffffff
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
28 28 8 % dimensions of data
[28 0 0 -28 0 28] % mapping matrix
rlecmapimage
81030018000003
8100041704810300
82000402150201030000
82000402150201030000
8200040204020a00050201030000
8200040204028100020702810002040201030000
8200040204028100020702810002040201030000
8200040204028100020702810002040201030000
8200040204028100020702810002040201030000
8200040204028100020702810002040201030000
8200040204028100020702810002040201030000
8200040204028100010701810002040201030000
8200040204028100010701810002040201030000
8200040204028100010701810002040201030000
8200040204028100010701810002040201030000
8200040204028100010701810002040201030000
8200040204028100010701810002040201030000
8200040204028100010701810002040201030000
8200040204028100010701810002040201030000
8200040204028100010701810002040201030000
8200040204028100010701810002040201030000
8200040204028100010701810002040201030000
8200040204020a00050201030000
82000402150201030000
82000402150201030000
8200040317030000
81000318030000
81030018000003
%
% Compression made this file 18.92% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 B

View File

@@ -1,174 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: group.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 292 382 320 410
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
292 382 translate
% size of image (on paper, in 1/72inch coords)
28 28 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 12 string def
% load up the colormap
currentfile cmap readhexstring
000000 c0c0c0 808080 ffffff
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
28 28 8 % dimensions of data
[28 0 0 -28 0 28] % mapping matrix
rlecmapimage
81020018000002
8100031703810200
82000301150101020000
82000301150101020000
820003010301880001000100010001000100060101020000
82000301040181000184010001000182010001060101020000
820003018101008100018201000101018100018201000101010300010101020000
82000301820100018401000100018201000181010001000301810001810102810200
82000301820100010f01810001810102810200
82000301820100010f01810001810102810200
82000301820100010f01810001810102810200
82000301820100010f01810001810102810200
82000301820100010f01810001810102810200
82000301820100010f01810001810102810200
82000301820100010f01810001810102810200
82000301820100010f01810001810102810200
82000301820100010f01810001810102810200
82000301820100010f01810001810102810200
82000301820100010f01810001810102810200
82000301820100010f01810001810102810200
82000301820100010f01810001810102810200
82000301820100010f01810001810102810200
820003018101001100010101020000
82000301150101020000
82000301150101020000
8200030217020000
81000218020000
81020018000002
%
% Compression made this file 20.15% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 B

View File

@@ -1,161 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: help.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 254 389 270 404
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
254 389 translate
% size of image (on paper, in 1/72inch coords)
16 15 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 9 string def
% load up the colormap
currentfile cmap readhexstring
000000 008080 c0c0c0
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
16 15 8 % dimensions of data
[16 0 0 -15 0 15] % mapping matrix
rlecmapimage
0f02
040205000402
0302810001030101000302
02028100018101000100010101000202
02028200010081000283020001008100020102
02028200010083000200018101008100020102
03020100820200018101008100020202
05028100018101008100020302
0502820001008100020402
0502820001008100020402
0502820001008100020402
060201000602
05028100018101008100020302
05028100018101008100020302
060202000502
%
% Compression made this file 24.03% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 B

View File

@@ -1,161 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: horiz.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 254 389 270 404
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
254 389 translate
% size of image (on paper, in 1/72inch coords)
16 15 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 9 string def
% load up the colormap
currentfile cmap readhexstring
000000 c0c0c0 ffff00
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
16 15 8 % dimensions of data
[16 0 0 -15 0 15] % mapping matrix
rlecmapimage
0f01
050104000401
050181000201028100010301
050181000201028100010301
050181000201028100010301
050104000401
0f01
0f01
02010a000101
020181000207028100010001
020181000207028100010001
020181000207028100010001
020181000207028100010001
02010a000101
0f01
%
% Compression made this file 16.11% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 B

View File

@@ -1,174 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: listbox.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 292 382 320 410
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
292 382 translate
% size of image (on paper, in 1/72inch coords)
28 28 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 12 string def
% load up the colormap
currentfile cmap readhexstring
000000 c0c0c0 808080 ffffff
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
28 28 8 % dimensions of data
[28 0 0 -28 0 28] % mapping matrix
rlecmapimage
81020018000002
8100031703810200
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
820003018101001100010101020000
820003018201000109018100010301810001810102810200
820003018201000109018100018201000182010001810102810200
8200030183010001000500020182000100010082010001810102810200
820003018201000109018100010301810001810102810200
820003018201000109018100010301810001810102810200
82000301830100010007008101000500010101020000
820003018201000109018100010301810001810102810200
820003018201000109018100010301810001810102810200
8200030183010001000600010182000100010082010001810102810200
820003018201000109018100018201000182010001810102810200
820003018201000109018100010301810001810102810200
820003018101001100010101020000
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
8200030217020000
81000218020000
81020018000002
%
% Compression made this file 5.09% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 B

View File

@@ -1,161 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: load.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 254 389 270 404
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
254 389 translate
% size of image (on paper, in 1/72inch coords)
16 15 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 15 string def
% load up the colormap
currentfile cmap readhexstring
000000 808000 c0c0c0 ffff00 ffffff
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
16 15 8 % dimensions of data
[16 0 0 -15 0 15] % mapping matrix
rlecmapimage
0f02
090202000202
0802810002010282000200
0d020100
0102020007020200
8502000304030005000302
8c020004030403040304030400020202
8c020003040304030403040300020202
86020004030403000800
860200030403000107010000
82020004820400010701810002
84020003000107018100020002
81020081000107018100020102
81020009000302
0f02
%
% Compression made this file 20.00% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 B

View File

@@ -1,174 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: message.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 254 375 282 403
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
254 375 translate
% size of image (on paper, in 1/72inch coords)
28 28 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 12 string def
% load up the colormap
currentfile cmap readhexstring
000000 c0c0c0 808080 ffffff
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
28 28 8 % dimensions of data
[28 0 0 -28 0 28] % mapping matrix
rlecmapimage
81020018000002
8100031703810200
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
820003010901810001090101020000
8200030108010200090101020000
8200030108010200090101020000
820003010701820001000100080101020000
820003010701820001000100080101020000
82000301060181000101010200070101020000
82000301060181000101010200070101020000
82000301050181000103010200060101020000
8200030105010800060101020000
82000301040181000105010200050101020000
82000301040181000105010200050101020000
82000301030181000107010200040101020000
820003010201010008010300030101020000
820003010101030006010500020101020000
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
8200030217020000
81000218020000
81020018000002
%
% Compression made this file 15.73% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 B

View File

@@ -1,174 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: mtext.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 254 375 282 403
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
254 375 translate
% size of image (on paper, in 1/72inch coords)
28 28 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 12 string def
% load up the colormap
currentfile cmap readhexstring
000000 c0c0c0 808080 ffffff
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
28 28 8 % dimensions of data
[28 0 0 -28 0 28] % mapping matrix
rlecmapimage
81020018000002
8100031703810200
82000301150101020000
82000301150101020000
82000301150101020000
82000301150101020000
820003018101001200810102810200
820003018201000105018100010601010382000102810200
82000301820100010101010001018100010601010382000102810200
8200030182010001020181000181010002000401010282000102810200
820003018201000181010001000101810001820100010301010282000102810200
820003018201000184010001000182010001820100010301010282000102810200
8200030182010001810100010081010003000401010282000102810200
82000301820100010e01010282000102810200
820003018201000108018100010301010282000102810200
820003018201000108018100010301010282000102810200
82000301820100018101000100010103000401010282000102810200
8200030182010001820100010201810001820100010301010282000102810200
8200030182010001820100010201810001820100010301010282000102810200
82000301820100018101000100010104000301010382000102810200
82000301820100010e01010382000102810200
820003018101001200810102810200
82000301150101020000
82000301150101020000
82000301150101020000
8200030217020000
81000218020000
81020018000002
%
% Compression made this file 22.07% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 B

View File

@@ -1,161 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: new.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 254 389 270 404
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
254 389 translate
% size of image (on paper, in 1/72inch coords)
16 15 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 9 string def
% load up the colormap
currentfile cmap readhexstring
000000 c0c0c0 ffffff
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
16 15 8 % dimensions of data
[16 0 0 -15 0 15] % mapping matrix
rlecmapimage
0f01
020107000401
0201810002040201000301
0201810002040283000200010101
0201810002040203000101
020181000207028100010001
020181000207028100010001
020181000207028100010001
020181000207028100010001
020181000207028100010001
020181000207028100010001
020181000207028100010001
020181000207028100010001
02010a000101
0f01
%
% Compression made this file 20.56% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

View File

@@ -1,16 +0,0 @@
To do
-----
Nov 26th 1995
- Add wxPropertyView::OnPropertyChange(wxProperty *property) member
so that when a property is changed, this can be immediately
reflected in the object. Derive a new wxPropertyListView
in dialoged.
- Make the property list a modeless dialog or (preferably) resizeable
frame. Allow many property lists to be up at once. Associate
real window, resource and property list. When window is deleted,
delete property list.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 B

View File

@@ -1,161 +0,0 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: open.eps
%%Creator: XV Version 2.20 Rev: 4/24/92 - by John Bradley
%%BoundingBox: 254 389 270 404
%%Pages: 1
%%DocumentFonts:
%%EndComments
%%EndProlog
%%Page: 1 1
% remember original state
/origstate save def
% build a temporary dictionary
20 dict begin
% lower left corner
254 389 translate
% size of image (on paper, in 1/72inch coords)
16 15 scale
% define 'colorimage' if it isn't defined
% ('colortogray' and 'mergeprocs' come from xwd2ps
% via xgrab)
/colorimage where % do we know about 'colorimage'?
{ pop } % yes: pop off the 'dict' returned
{ % no: define one
/colortogray { % define an RGB->I function
/rgbdata exch store % call input 'rgbdata'
rgbdata length 3 idiv
/npixls exch store
/rgbindx 0 store
/grays npixls string store % str to hold the result
0 1 npixls 1 sub {
grays exch
rgbdata rgbindx get 20 mul % Red
rgbdata rgbindx 1 add get 32 mul % Green
rgbdata rgbindx 2 add get 12 mul % Blue
add add 64 idiv % I = .5G + .31R + .18B
put
/rgbindx rgbindx 3 add store
} for
grays
} bind def
% Utility procedure for colorimage operator.
% This procedure takes two procedures off the
% stack and merges them into a single procedure.
/mergeprocs { % def
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/colorimage { % def
pop pop % remove 'false 3' operands
{colortogray} mergeprocs
image
} bind def
} ifelse % end of 'false' case
% define the colormap
/cmap 12 string def
% load up the colormap
currentfile cmap readhexstring
000000 c0c0c0 808080 ffffff
pop pop % lose return values from readhexstring
% rlecmapimage expects to have 'w h bits matrix' on stack
/rlecmapimage {
/buffer 1 string def
/rgbval 3 string def
/block 384 string def
% proc to read a block from file, and return RGB data
{ currentfile buffer readhexstring pop
/bcount exch 0 get store
bcount 128 ge
{ % it's a non-run block
0 1 bcount 128 sub
{ currentfile buffer readhexstring pop pop
% look up value in color map
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
% and put it in position i*3 in block
block exch 3 mul rgbval putinterval
} for
block 0 bcount 127 sub 3 mul getinterval
}
{ % else it's a run block
currentfile buffer readhexstring pop pop
% look up value in colormap
/rgbval cmap buffer 0 get 3 mul 3 getinterval store
0 1 bcount { block exch 3 mul rgbval putinterval } for
block 0 bcount 1 add 3 mul getinterval
} ifelse
} % end of proc
false 3 colorimage
} bind def
16 15 8 % dimensions of data
[16 0 0 -15 0 15] % mapping matrix
rlecmapimage
0f01
090102000201
0801810001010182000100
0d010100
0101020007010200
82010003010306000301
8201000307038100010201
8201000307038100010201
8201000302030900
82010003010381000207020000
82010003820300020702810001
84010003000281020081000203028100010001
81010081000207028100010101
81010009000301
0f01
%
% Compression made this file 19.17% of the uncompressed size.
%
showpage
% stop using temporary dictionary
end
% restore original state
origstate restore
%%Trailer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 B

Some files were not shown because too many files have changed in this diff Show More