removed old utils (helpgen, tex2rtf, helphtml, nplugin, wxprop, wxole)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52853 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Francesco Montorsi
2008-03-27 14:03:33 +00:00
parent 1d1b48625e
commit eeb67742cd
152 changed files with 17 additions and 51809 deletions

9
configure vendored
View File

@@ -1,5 +1,5 @@
#! /bin/sh #! /bin/sh
# From configure.in Id: configure.in 52015 2008-02-22 22:27:39Z RD . # From configure.in Id: configure.in 52837 2008-03-26 16:40:54Z FM .
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61 for wxWidgets 2.9.0. # Generated by GNU Autoconf 2.61 for wxWidgets 2.9.0.
# #
@@ -50315,7 +50315,7 @@ for subdir in $SUBDIRS; do
makefiles=`(cd $srcdir ; find $subdir -name Makefile.in) | $EGREP -v "$disabled"` makefiles=`(cd $srcdir ; find $subdir -name Makefile.in) | $EGREP -v "$disabled"`
fi fi
else else
if test ${subdir} = "samples"; then if test ${subdir} = "samples"; then
makefiles="samples/Makefile.in $makefiles" makefiles="samples/Makefile.in $makefiles"
for sample in `echo $SAMPLES_SUBDIRS`; do for sample in `echo $SAMPLES_SUBDIRS`; do
if test -d $srcdir/samples/$sample; then if test -d $srcdir/samples/$sample; then
@@ -50324,10 +50324,9 @@ for subdir in $SUBDIRS; do
done done
elif test ${subdir} = "utils"; then elif test ${subdir} = "utils"; then
makefiles="" makefiles=""
for util in HelpGen tex2rtf ; do for util in ifacecheck ; do
if test -d $srcdir/utils/$util ; then if test -d $srcdir/utils/$util ; then
makefiles="utils/$util/Makefile.in \ makefiles="utils/$util/src/Makefile.in \
utils/$util/src/Makefile.in \
$makefiles" $makefiles"
fi fi
done done

View File

@@ -7905,8 +7905,7 @@ for subdir in $SUBDIRS; do
fi fi
else else
dnl we build wxBase only dnl we build wxBase only
dnl don't take all samples/utils, just those which build with dnl don't take all samples/utils, just those which build with wxBase
dnl wxBase
if test ${subdir} = "samples"; then if test ${subdir} = "samples"; then
dnl only take those samples which compile in the current dnl only take those samples which compile in the current
dnl configuration and which exist dnl configuration and which exist
@@ -7918,10 +7917,9 @@ for subdir in $SUBDIRS; do
done done
elif test ${subdir} = "utils"; then elif test ${subdir} = "utils"; then
makefiles="" makefiles=""
for util in HelpGen tex2rtf ; do for util in ifacecheck ; do
if test -d $srcdir/utils/$util ; then if test -d $srcdir/utils/$util ; then
makefiles="utils/$util/Makefile.in \ makefiles="utils/$util/src/Makefile.in \
utils/$util/src/Makefile.in \
$makefiles" $makefiles"
fi fi
done done

View File

@@ -22,11 +22,9 @@ see the wxWidgets download page: http://www.wxwidgets.org/downloads
or directly http://wxcode.sourceforge.net or http://www.wxcommunity.com/ . or directly http://wxcode.sourceforge.net or http://www.wxcommunity.com/ .
@li @ref page_utils_emulator @li @ref page_utils_emulator
@li @ref page_utils_helpgen
@li @ref page_utils_helpview @li @ref page_utils_helpview
@li @ref page_utils_hhp2cached @li @ref page_utils_hhp2cached
@li @ref page_utils_ifacecheck @li @ref page_utils_ifacecheck
@li @ref page_utils_tex2rtf
@li @ref page_utils_wxrc @li @ref page_utils_wxrc
@@ -43,15 +41,6 @@ Xnest-based display emulator for X11-based PDA applications.
This program can be found in @c utils/emulator. This program can be found in @c utils/emulator.
@section page_utils_helpgen Help Generator
Helpgen takes C++ header files and generates a Tex2RTF-compatible
documentation file for each class it finds, using comments as appropriate.
This is a good way to start a reference for a set of classes.
Helpgen can be found in @c utils/HelpGen.
@section page_utils_helpview Help Viewer @section page_utils_helpview Help Viewer
Helpview is a program for displaying wxWidgets HTML Help files. Helpview is a program for displaying wxWidgets HTML Help files.
@@ -85,17 +74,6 @@ to do the comparisons.
You can find it in @c utils/ifacecheck. You can find it in @c utils/ifacecheck.
@section page_utils_tex2rtf Tex2RTF
Supplied with wxWidgets is a utility called Tex2RTF for
converting @e LaTeX manuals HTML, MS HTML Help, wxHTML Help, RTF, and Windows
Help RTF formats. Tex2RTF was used for the wxWidgets manuals and can be used
independently by authors wishing to create on-line and printed manuals from the
same @e LaTeX source. Please see the separate documentation for Tex2RTF.
You can find it under @c utils/tex2rtf.
@section page_utils_wxrc wxWidgets XML Resource Compiler @section page_utils_wxrc wxWidgets XML Resource Compiler
This utility allows the user to compile @e binary versions of their XRC files, This utility allows the user to compile @e binary versions of their XRC files,

View File

@@ -1,7 +0,0 @@
all:
cd src; $(MAKE)
clean:
cd src; $(MAKE) clean

View File

@@ -1,471 +0,0 @@
# Microsoft Developer Studio Project File - Name="HelpGen" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=HelpGen - Win32 DLL Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "helpgen.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "helpgen.mak" CFG="HelpGen - Win32 DLL Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "HelpGen - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 Unicode Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 Unicode Release" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 Universal Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 Universal Release" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 Universal Unicode Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 Universal Unicode Release" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 DLL Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 DLL Release" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 DLL Unicode Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 DLL Unicode Release" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 DLL Universal Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 DLL Universal Release" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 DLL Universal Unicode Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 DLL Universal Unicode Release" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "HelpGen - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "vc_mswd"
# PROP BASE Intermediate_Dir "vc_mswd\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "vc_mswd"
# PROP Intermediate_Dir "vc_mswd\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /GR /GX /MDd /Zi /Gm /GZ /Fdvc_mswd\HelpGen.pdb /Od /I ".\..\..\include" /I ".\..\..\lib\vc_lib\mswd" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_CONSOLE" /c
# ADD CPP /nologo /FD /GR /GX /MDd /Zi /Gm /GZ /Fdvc_mswd\HelpGen.pdb /Od /I ".\..\..\include" /I ".\..\..\lib\vc_lib\mswd" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_CONSOLE" /c
# ADD BASE RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /i ".\..\..\include" /i ".\..\..\lib\vc_lib\mswd" /i "." /d _CONSOLE
# ADD RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /i ".\..\..\include" /i ".\..\..\lib\vc_lib\mswd" /i "." /d _CONSOLE
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase25d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswd\HelpGen.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:console
# ADD LINK32 wxbase25d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswd\HelpGen.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "vc_msw"
# PROP BASE Intermediate_Dir "vc_msw\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "vc_msw"
# PROP Intermediate_Dir "vc_msw\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /GR /GX /MD /Fdvc_msw\HelpGen.pdb /O1 /I ".\..\..\include" /I ".\..\..\lib\vc_lib\msw" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "_CONSOLE" /c
# ADD CPP /nologo /FD /GR /GX /MD /Fdvc_msw\HelpGen.pdb /O1 /I ".\..\..\include" /I ".\..\..\lib\vc_lib\msw" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "_CONSOLE" /c
# ADD BASE RSC /l 0x405 /d "__WXMSW__" /i ".\..\..\include" /i ".\..\..\lib\vc_lib\msw" /i "." /d _CONSOLE
# ADD RSC /l 0x405 /d "__WXMSW__" /i ".\..\..\include" /i ".\..\..\lib\vc_lib\msw" /i "." /d _CONSOLE
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase25.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_msw\HelpGen.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:console
# ADD LINK32 wxbase25.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_msw\HelpGen.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 Unicode Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "vc_mswud"
# PROP BASE Intermediate_Dir "vc_mswud\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "vc_mswud"
# PROP Intermediate_Dir "vc_mswud\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /GR /GX /MDd /Zi /Gm /GZ /Fdvc_mswud\HelpGen.pdb /Od /I ".\..\..\include" /I ".\..\..\lib\vc_lib\mswud" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_CONSOLE" /c
# ADD CPP /nologo /FD /GR /GX /MDd /Zi /Gm /GZ /Fdvc_mswud\HelpGen.pdb /Od /I ".\..\..\include" /I ".\..\..\lib\vc_lib\mswud" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_CONSOLE" /c
# ADD BASE RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\include" /i ".\..\..\lib\vc_lib\mswud" /i "." /d _CONSOLE
# ADD RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\include" /i ".\..\..\lib\vc_lib\mswud" /i "." /d _CONSOLE
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase25ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswud\HelpGen.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:console
# ADD LINK32 wxbase25ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswud\HelpGen.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 Unicode Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "vc_mswu"
# PROP BASE Intermediate_Dir "vc_mswu\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "vc_mswu"
# PROP Intermediate_Dir "vc_mswu\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /GR /GX /MD /Fdvc_mswu\HelpGen.pdb /O1 /I ".\..\..\include" /I ".\..\..\lib\vc_lib\mswu" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_CONSOLE" /c
# ADD CPP /nologo /FD /GR /GX /MD /Fdvc_mswu\HelpGen.pdb /O1 /I ".\..\..\include" /I ".\..\..\lib\vc_lib\mswu" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_CONSOLE" /c
# ADD BASE RSC /l 0x405 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\include" /i ".\..\..\lib\vc_lib\mswu" /i "." /d _CONSOLE
# ADD RSC /l 0x405 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\include" /i ".\..\..\lib\vc_lib\mswu" /i "." /d _CONSOLE
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase25u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswu\HelpGen.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:console
# ADD LINK32 wxbase25u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswu\HelpGen.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 Universal Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "vc_mswunivd"
# PROP BASE Intermediate_Dir "vc_mswunivd\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "vc_mswunivd"
# PROP Intermediate_Dir "vc_mswunivd\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /GR /GX /MDd /Zi /Gm /GZ /Fdvc_mswunivd\HelpGen.pdb /Od /I ".\..\..\include" /I ".\..\..\lib\vc_lib\mswunivd" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_CONSOLE" /c
# ADD CPP /nologo /FD /GR /GX /MDd /Zi /Gm /GZ /Fdvc_mswunivd\HelpGen.pdb /Od /I ".\..\..\include" /I ".\..\..\lib\vc_lib\mswunivd" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_CONSOLE" /c
# ADD BASE RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /i ".\..\..\include" /i ".\..\..\lib\vc_lib\mswunivd" /i "." /d _CONSOLE
# ADD RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /i ".\..\..\include" /i ".\..\..\lib\vc_lib\mswunivd" /i "." /d _CONSOLE
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase25d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivd\HelpGen.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:console
# ADD LINK32 wxbase25d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivd\HelpGen.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 Universal Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "vc_mswuniv"
# PROP BASE Intermediate_Dir "vc_mswuniv\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "vc_mswuniv"
# PROP Intermediate_Dir "vc_mswuniv\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /GR /GX /MD /Fdvc_mswuniv\HelpGen.pdb /O1 /I ".\..\..\include" /I ".\..\..\lib\vc_lib\mswuniv" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_CONSOLE" /c
# ADD CPP /nologo /FD /GR /GX /MD /Fdvc_mswuniv\HelpGen.pdb /O1 /I ".\..\..\include" /I ".\..\..\lib\vc_lib\mswuniv" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_CONSOLE" /c
# ADD BASE RSC /l 0x405 /d "__WXMSW__" /d "__WXUNIVERSAL__" /i ".\..\..\include" /i ".\..\..\lib\vc_lib\mswuniv" /i "." /d _CONSOLE
# ADD RSC /l 0x405 /d "__WXMSW__" /d "__WXUNIVERSAL__" /i ".\..\..\include" /i ".\..\..\lib\vc_lib\mswuniv" /i "." /d _CONSOLE
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase25.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswuniv\HelpGen.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:console
# ADD LINK32 wxbase25.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswuniv\HelpGen.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 Universal Unicode Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "vc_mswunivud"
# PROP BASE Intermediate_Dir "vc_mswunivud\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "vc_mswunivud"
# PROP Intermediate_Dir "vc_mswunivud\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /GR /GX /MDd /Zi /Gm /GZ /Fdvc_mswunivud\HelpGen.pdb /Od /I ".\..\..\include" /I ".\..\..\lib\vc_lib\mswunivud" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_CONSOLE" /c
# ADD CPP /nologo /FD /GR /GX /MDd /Zi /Gm /GZ /Fdvc_mswunivud\HelpGen.pdb /Od /I ".\..\..\include" /I ".\..\..\lib\vc_lib\mswunivud" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_CONSOLE" /c
# ADD BASE RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\include" /i ".\..\..\lib\vc_lib\mswunivud" /i "." /d _CONSOLE
# ADD RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\include" /i ".\..\..\lib\vc_lib\mswunivud" /i "." /d _CONSOLE
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase25ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivud\HelpGen.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:console
# ADD LINK32 wxbase25ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivud\HelpGen.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 Universal Unicode Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "vc_mswunivu"
# PROP BASE Intermediate_Dir "vc_mswunivu\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "vc_mswunivu"
# PROP Intermediate_Dir "vc_mswunivu\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /GR /GX /MD /Fdvc_mswunivu\HelpGen.pdb /O1 /I ".\..\..\include" /I ".\..\..\lib\vc_lib\mswunivu" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_CONSOLE" /c
# ADD CPP /nologo /FD /GR /GX /MD /Fdvc_mswunivu\HelpGen.pdb /O1 /I ".\..\..\include" /I ".\..\..\lib\vc_lib\mswunivu" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_CONSOLE" /c
# ADD BASE RSC /l 0x405 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\include" /i ".\..\..\lib\vc_lib\mswunivu" /i "." /d _CONSOLE
# ADD RSC /l 0x405 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\include" /i ".\..\..\lib\vc_lib\mswunivu" /i "." /d _CONSOLE
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase25u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivu\HelpGen.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:console
# ADD LINK32 wxbase25u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivu\HelpGen.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 DLL Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "vc_mswddll"
# PROP BASE Intermediate_Dir "vc_mswddll\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "vc_mswddll"
# PROP Intermediate_Dir "vc_mswddll\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /GR /GX /MDd /Zi /Gm /GZ /Fdvc_mswddll\HelpGen.pdb /Od /I ".\..\..\include" /I ".\..\..\lib\vc_dll\mswd" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_CONSOLE" /c
# ADD CPP /nologo /FD /GR /GX /MDd /Zi /Gm /GZ /Fdvc_mswddll\HelpGen.pdb /Od /I ".\..\..\include" /I ".\..\..\lib\vc_dll\mswd" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_CONSOLE" /c
# ADD BASE RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /i ".\..\..\include" /i ".\..\..\lib\vc_dll\mswd" /i "." /d "WXUSINGDLL" /d _CONSOLE
# ADD RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /i ".\..\..\include" /i ".\..\..\lib\vc_dll\mswd" /i "." /d "WXUSINGDLL" /d _CONSOLE
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase25d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswddll\HelpGen.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:console
# ADD LINK32 wxbase25d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswddll\HelpGen.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 DLL Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "vc_mswdll"
# PROP BASE Intermediate_Dir "vc_mswdll\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "vc_mswdll"
# PROP Intermediate_Dir "vc_mswdll\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /GR /GX /MD /Fdvc_mswdll\HelpGen.pdb /O1 /I ".\..\..\include" /I ".\..\..\lib\vc_dll\msw" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "WXUSINGDLL" /D "_CONSOLE" /c
# ADD CPP /nologo /FD /GR /GX /MD /Fdvc_mswdll\HelpGen.pdb /O1 /I ".\..\..\include" /I ".\..\..\lib\vc_dll\msw" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "WXUSINGDLL" /D "_CONSOLE" /c
# ADD BASE RSC /l 0x405 /d "__WXMSW__" /i ".\..\..\include" /i ".\..\..\lib\vc_dll\msw" /i "." /d "WXUSINGDLL" /d _CONSOLE
# ADD RSC /l 0x405 /d "__WXMSW__" /i ".\..\..\include" /i ".\..\..\lib\vc_dll\msw" /i "." /d "WXUSINGDLL" /d _CONSOLE
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase25.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswdll\HelpGen.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:console
# ADD LINK32 wxbase25.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswdll\HelpGen.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 DLL Unicode Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "vc_mswuddll"
# PROP BASE Intermediate_Dir "vc_mswuddll\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "vc_mswuddll"
# PROP Intermediate_Dir "vc_mswuddll\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /GR /GX /MDd /Zi /Gm /GZ /Fdvc_mswuddll\HelpGen.pdb /Od /I ".\..\..\include" /I ".\..\..\lib\vc_dll\mswud" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /c
# ADD CPP /nologo /FD /GR /GX /MDd /Zi /Gm /GZ /Fdvc_mswuddll\HelpGen.pdb /Od /I ".\..\..\include" /I ".\..\..\lib\vc_dll\mswud" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /c
# ADD BASE RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\include" /i ".\..\..\lib\vc_dll\mswud" /i "." /d "WXUSINGDLL" /d _CONSOLE
# ADD RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\include" /i ".\..\..\lib\vc_dll\mswud" /i "." /d "WXUSINGDLL" /d _CONSOLE
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase25ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswuddll\HelpGen.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:console
# ADD LINK32 wxbase25ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswuddll\HelpGen.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 DLL Unicode Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "vc_mswudll"
# PROP BASE Intermediate_Dir "vc_mswudll\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "vc_mswudll"
# PROP Intermediate_Dir "vc_mswudll\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /GR /GX /MD /Fdvc_mswudll\HelpGen.pdb /O1 /I ".\..\..\include" /I ".\..\..\lib\vc_dll\mswu" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /c
# ADD CPP /nologo /FD /GR /GX /MD /Fdvc_mswudll\HelpGen.pdb /O1 /I ".\..\..\include" /I ".\..\..\lib\vc_dll\mswu" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /c
# ADD BASE RSC /l 0x405 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\include" /i ".\..\..\lib\vc_dll\mswu" /i "." /d "WXUSINGDLL" /d _CONSOLE
# ADD RSC /l 0x405 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\include" /i ".\..\..\lib\vc_dll\mswu" /i "." /d "WXUSINGDLL" /d _CONSOLE
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase25u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswudll\HelpGen.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:console
# ADD LINK32 wxbase25u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswudll\HelpGen.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 DLL Universal Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "vc_mswunivddll"
# PROP BASE Intermediate_Dir "vc_mswunivddll\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "vc_mswunivddll"
# PROP Intermediate_Dir "vc_mswunivddll\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /GR /GX /MDd /Zi /Gm /GZ /Fdvc_mswunivddll\HelpGen.pdb /Od /I ".\..\..\include" /I ".\..\..\lib\vc_dll\mswunivd" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_CONSOLE" /c
# ADD CPP /nologo /FD /GR /GX /MDd /Zi /Gm /GZ /Fdvc_mswunivddll\HelpGen.pdb /Od /I ".\..\..\include" /I ".\..\..\lib\vc_dll\mswunivd" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_CONSOLE" /c
# ADD BASE RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /i ".\..\..\include" /i ".\..\..\lib\vc_dll\mswunivd" /i "." /d "WXUSINGDLL" /d _CONSOLE
# ADD RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /i ".\..\..\include" /i ".\..\..\lib\vc_dll\mswunivd" /i "." /d "WXUSINGDLL" /d _CONSOLE
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase25d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivddll\HelpGen.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:console
# ADD LINK32 wxbase25d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivddll\HelpGen.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 DLL Universal Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "vc_mswunivdll"
# PROP BASE Intermediate_Dir "vc_mswunivdll\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "vc_mswunivdll"
# PROP Intermediate_Dir "vc_mswunivdll\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /GR /GX /MD /Fdvc_mswunivdll\HelpGen.pdb /O1 /I ".\..\..\include" /I ".\..\..\lib\vc_dll\mswuniv" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "WXUSINGDLL" /D "_CONSOLE" /c
# ADD CPP /nologo /FD /GR /GX /MD /Fdvc_mswunivdll\HelpGen.pdb /O1 /I ".\..\..\include" /I ".\..\..\lib\vc_dll\mswuniv" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "WXUSINGDLL" /D "_CONSOLE" /c
# ADD BASE RSC /l 0x405 /d "__WXMSW__" /d "__WXUNIVERSAL__" /i ".\..\..\include" /i ".\..\..\lib\vc_dll\mswuniv" /i "." /d "WXUSINGDLL" /d _CONSOLE
# ADD RSC /l 0x405 /d "__WXMSW__" /d "__WXUNIVERSAL__" /i ".\..\..\include" /i ".\..\..\lib\vc_dll\mswuniv" /i "." /d "WXUSINGDLL" /d _CONSOLE
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase25.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivdll\HelpGen.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:console
# ADD LINK32 wxbase25.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivdll\HelpGen.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 DLL Universal Unicode Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "vc_mswunivuddll"
# PROP BASE Intermediate_Dir "vc_mswunivuddll\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "vc_mswunivuddll"
# PROP Intermediate_Dir "vc_mswunivuddll\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /GR /GX /MDd /Zi /Gm /GZ /Fdvc_mswunivuddll\HelpGen.pdb /Od /I ".\..\..\include" /I ".\..\..\lib\vc_dll\mswunivud" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /c
# ADD CPP /nologo /FD /GR /GX /MDd /Zi /Gm /GZ /Fdvc_mswunivuddll\HelpGen.pdb /Od /I ".\..\..\include" /I ".\..\..\lib\vc_dll\mswunivud" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /c
# ADD BASE RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\include" /i ".\..\..\lib\vc_dll\mswunivud" /i "." /d "WXUSINGDLL" /d _CONSOLE
# ADD RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\include" /i ".\..\..\lib\vc_dll\mswunivud" /i "." /d "WXUSINGDLL" /d _CONSOLE
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase25ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivuddll\HelpGen.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:console
# ADD LINK32 wxbase25ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivuddll\HelpGen.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 DLL Universal Unicode Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "vc_mswunivudll"
# PROP BASE Intermediate_Dir "vc_mswunivudll\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "vc_mswunivudll"
# PROP Intermediate_Dir "vc_mswunivudll\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /GR /GX /MD /Fdvc_mswunivudll\HelpGen.pdb /O1 /I ".\..\..\include" /I ".\..\..\lib\vc_dll\mswunivu" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /c
# ADD CPP /nologo /FD /GR /GX /MD /Fdvc_mswunivudll\HelpGen.pdb /O1 /I ".\..\..\include" /I ".\..\..\lib\vc_dll\mswunivu" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /c
# ADD BASE RSC /l 0x405 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\include" /i ".\..\..\lib\vc_dll\mswunivu" /i "." /d "WXUSINGDLL" /d _CONSOLE
# ADD RSC /l 0x405 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\include" /i ".\..\..\lib\vc_dll\mswunivu" /i "." /d "WXUSINGDLL" /d _CONSOLE
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase25u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivudll\HelpGen.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:console
# ADD LINK32 wxbase25u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivudll\HelpGen.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:console
!ENDIF
# Begin Target
# Name "HelpGen - Win32 Debug"
# Name "HelpGen - Win32 Release"
# Name "HelpGen - Win32 Unicode Debug"
# Name "HelpGen - Win32 Unicode Release"
# Name "HelpGen - Win32 Universal Debug"
# Name "HelpGen - Win32 Universal Release"
# Name "HelpGen - Win32 Universal Unicode Debug"
# Name "HelpGen - Win32 Universal Unicode Release"
# Name "HelpGen - Win32 DLL Debug"
# Name "HelpGen - Win32 DLL Release"
# Name "HelpGen - Win32 DLL Unicode Debug"
# Name "HelpGen - Win32 DLL Unicode Release"
# Name "HelpGen - Win32 DLL Universal Debug"
# Name "HelpGen - Win32 DLL Universal Release"
# Name "HelpGen - Win32 DLL Universal Unicode Debug"
# Name "HelpGen - Win32 DLL Universal Unicode Release"
# Begin Group "Source Files"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\src\HelpGen.cpp
# End Source File
# Begin Source File
SOURCE=.\src\cjparser.cpp
# End Source File
# Begin Source File
SOURCE=.\src\docripper.cpp
# End Source File
# Begin Source File
SOURCE=.\src\ifcontext.cpp
# End Source File
# Begin Source File
SOURCE=.\src\markup.cpp
# End Source File
# Begin Source File
SOURCE=.\src\scriptbinder.cpp
# End Source File
# Begin Source File
SOURCE=.\src\sourcepainter.cpp
# End Source File
# Begin Source File
SOURCE=.\src\srcparser.cpp
# End Source File
# End Group
# End Target
# End Project

View File

@@ -1,181 +0,0 @@
# =========================================================================
# This makefile was generated by
# Bakefile 0.1.1 (http://bakefile.sourceforge.net)
# Do not modify, all changes will be overwritten!
# =========================================================================
!ifndef BCCDIR
BCCDIR = $(MAKEDIR)\..
!endif
!include ../../build/msw/config.bcc
# -------------------------------------------------------------------------
# Do not modify the rest of this file!
# -------------------------------------------------------------------------
!if "$(BCCDIR)" == "\.."
!error Your Borland compiler does not define MAKEDIR. Please define the BCCDIR variable, e.g. BCCDIR=d:\bc4
!endif
### Variables: ###
HELPGEN_CXXFLAGS = $(CPPFLAGS) $(__RUNTIME_LIBS_6) -I$(BCCDIR)\include \
$(__DEBUGINFO) $(__OPTIMIZEFLAG_2) -tWM -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
$(__DEBUG_DEFINE_p) $(__UNICODE_DEFINE_p) -I.\..\..\include -I$(SETUPHDIR) \
-I. $(__DLLFLAG_p) $(CXXFLAGS)
HELPGEN_OBJECTS = \
$(OBJS)\HelpGen_HelpGen.obj \
$(OBJS)\HelpGen_cjparser.obj \
$(OBJS)\HelpGen_docripper.obj \
$(OBJS)\HelpGen_ifcontext.obj \
$(OBJS)\HelpGen_markup.obj \
$(OBJS)\HelpGen_scriptbinder.obj \
$(OBJS)\HelpGen_sourcepainter.obj \
$(OBJS)\HelpGen_srcparser.obj
OBJS = \
bcc_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)
SETUPHDIR = \
$(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
### Conditionally set variables: ###
!if "$(SHARED)" == "0"
LIBDIRNAME = .\..\..\lib\bcc_lib$(CFG)
!endif
!if "$(SHARED)" == "1"
LIBDIRNAME = .\..\..\lib\bcc_dll$(CFG)
!endif
!if "$(USE_GUI)" == "0"
PORTNAME = base
!endif
!if "$(USE_GUI)" == "1"
PORTNAME = msw
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
WXDEBUGFLAG = d
!endif
!if "$(DEBUG_FLAG)" == "1"
WXDEBUGFLAG = d
!endif
!if "$(SHARED)" == "1"
WXDLLFLAG = dll
!endif
!if "$(UNICODE)" == "1"
WXUNICODEFLAG = u
!endif
!if "$(WXUNIV)" == "1"
WXUNIVNAME = univ
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO = -v
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO = -v-
!endif
!if "$(DEBUG_INFO)" == "0"
__DEBUGINFO = -v-
!endif
!if "$(DEBUG_INFO)" == "1"
__DEBUGINFO = -v
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
__DEBUG_DEFINE_p = -D__WXDEBUG__
!endif
!if "$(DEBUG_FLAG)" == "1"
__DEBUG_DEFINE_p = -D__WXDEBUG__
!endif
!if "$(SHARED)" == "1"
__DLLFLAG_p = -DWXUSINGDLL
!endif
!if "$(USE_GUI)" == "1"
__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib
!endif
!if "$(USE_GUI)" == "1"
__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib
!endif
!if "$(USE_GUI)" == "1"
__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib
!endif
!if "$(BUILD)" == "debug"
__OPTIMIZEFLAG_2 = -Od
!endif
!if "$(BUILD)" == "release"
__OPTIMIZEFLAG_2 = -O2
!endif
!if "$(RUNTIME_LIBS)" == "dynamic"
__RUNTIME_LIBS_6 = -tWR
!endif
!if "$(RUNTIME_LIBS)" == "static"
__RUNTIME_LIBS_6 =
!endif
!if "$(RUNTIME_LIBS)" == "dynamic"
__RUNTIME_LIBS_7 = i
!endif
!if "$(RUNTIME_LIBS)" == "static"
__RUNTIME_LIBS_7 =
!endif
!if "$(UNICODE)" == "1"
__UNICODE_DEFINE_p = -D_UNICODE
!endif
!if "$(MSLU)" == "1"
__UNICOWS_LIB_p = unicows.lib
!endif
!if "$(MONOLITHIC)" == "0"
__WXLIB_BASE_p = wxbase25$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib
!endif
!if "$(MONOLITHIC)" == "1"
__WXLIB_MONO_p = \
wx$(PORTNAME)$(WXUNIVNAME)25$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib
!endif
!if "$(WXUNIV)" == "1"
__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
!endif
all: $(OBJS)
$(OBJS):
-if not exist $(OBJS) mkdir $(OBJS)
### Targets: ###
all: $(OBJS)\HelpGen.exe
$(OBJS)\HelpGen_HelpGen.obj: .\src\HelpGen.cpp
$(CXX) -q -c -P -o$@ $(HELPGEN_CXXFLAGS) $**
$(OBJS)\HelpGen_cjparser.obj: .\src\cjparser.cpp
$(CXX) -q -c -P -o$@ $(HELPGEN_CXXFLAGS) $**
$(OBJS)\HelpGen_docripper.obj: .\src\docripper.cpp
$(CXX) -q -c -P -o$@ $(HELPGEN_CXXFLAGS) $**
$(OBJS)\HelpGen_ifcontext.obj: .\src\ifcontext.cpp
$(CXX) -q -c -P -o$@ $(HELPGEN_CXXFLAGS) $**
$(OBJS)\HelpGen_markup.obj: .\src\markup.cpp
$(CXX) -q -c -P -o$@ $(HELPGEN_CXXFLAGS) $**
$(OBJS)\HelpGen_scriptbinder.obj: .\src\scriptbinder.cpp
$(CXX) -q -c -P -o$@ $(HELPGEN_CXXFLAGS) $**
$(OBJS)\HelpGen_sourcepainter.obj: .\src\sourcepainter.cpp
$(CXX) -q -c -P -o$@ $(HELPGEN_CXXFLAGS) $**
$(OBJS)\HelpGen_srcparser.obj: .\src\srcparser.cpp
$(CXX) -q -c -P -o$@ $(HELPGEN_CXXFLAGS) $**
$(OBJS)\HelpGen.exe: $(HELPGEN_OBJECTS)
ilink32 -Tpe -q $(LDFLAGS) -L$(BCCDIR)\lib $(__DEBUGINFO) -L$(LIBDIRNAME) -ap @&&|
c0x32.obj $(HELPGEN_OBJECTS),$@,, $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(__UNICOWS_LIB_p) import32.lib ole2w32.lib import32.lib cw32mt$(__RUNTIME_LIBS_7).lib,,
|
clean:
-if exist $(OBJS)\*.obj del $(OBJS)\*.obj
-if exist $(OBJS)\*.res del $(OBJS)\*.res
-if exist $(OBJS)\HelpGen.exe del $(OBJS)\HelpGen.exe
-if exist $(OBJS)\HelpGen.tds del $(OBJS)\HelpGen.tds
-if exist $(OBJS)\HelpGen.ilc del $(OBJS)\HelpGen.ilc
-if exist $(OBJS)\HelpGen.ild del $(OBJS)\HelpGen.ild
-if exist $(OBJS)\HelpGen.ilf del $(OBJS)\HelpGen.ilf
-if exist $(OBJS)\HelpGen.ils del $(OBJS)\HelpGen.ils

View File

@@ -1,166 +0,0 @@
# =========================================================================
# This makefile was generated by
# Bakefile 0.1.1 (http://bakefile.sourceforge.net)
# Do not modify, all changes will be overwritten!
# =========================================================================
include ../../build/msw/config.gcc
# -------------------------------------------------------------------------
# Do not modify the rest of this file!
# -------------------------------------------------------------------------
### Variables: ###
HELPGEN_CXXFLAGS = $(CPPFLAGS) $(__DEBUGINFO) $(__OPTIMIZEFLAG_2) $(GCCFLAGS) \
-DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \
$(__UNICODE_DEFINE_p) -I.\..\..\include -I$(SETUPHDIR) -Wall -I. \
$(__DLLFLAG_p) $(CXXFLAGS)
HELPGEN_OBJECTS = \
$(OBJS)\HelpGen_HelpGen.o \
$(OBJS)\HelpGen_cjparser.o \
$(OBJS)\HelpGen_docripper.o \
$(OBJS)\HelpGen_ifcontext.o \
$(OBJS)\HelpGen_markup.o \
$(OBJS)\HelpGen_scriptbinder.o \
$(OBJS)\HelpGen_sourcepainter.o \
$(OBJS)\HelpGen_srcparser.o
OBJS = \
gcc_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)
SETUPHDIR = \
$(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
### Conditionally set variables: ###
ifeq ($(GCC_VERSION),2.95)
GCCFLAGS = -fvtable-thunks
endif
ifeq ($(SHARED),0)
LIBDIRNAME = .\..\..\lib\gcc_lib$(CFG)
endif
ifeq ($(SHARED),1)
LIBDIRNAME = .\..\..\lib\gcc_dll$(CFG)
endif
ifeq ($(USE_GUI),0)
PORTNAME = base
endif
ifeq ($(USE_GUI),1)
PORTNAME = msw
endif
ifeq ($(BUILD),debug)
ifeq ($(DEBUG_FLAG),default)
WXDEBUGFLAG = d
endif
endif
ifeq ($(DEBUG_FLAG),1)
WXDEBUGFLAG = d
endif
ifeq ($(SHARED),1)
WXDLLFLAG = dll
endif
ifeq ($(UNICODE),1)
WXUNICODEFLAG = u
endif
ifeq ($(WXUNIV),1)
WXUNIVNAME = univ
endif
ifeq ($(BUILD),debug)
ifeq ($(DEBUG_INFO),default)
__DEBUGINFO = -g
endif
endif
ifeq ($(BUILD),release)
ifeq ($(DEBUG_INFO),default)
__DEBUGINFO =
endif
endif
ifeq ($(DEBUG_INFO),0)
__DEBUGINFO =
endif
ifeq ($(DEBUG_INFO),1)
__DEBUGINFO = -g
endif
ifeq ($(BUILD),debug)
ifeq ($(DEBUG_FLAG),default)
__DEBUG_DEFINE_p = -D__WXDEBUG__
endif
endif
ifeq ($(DEBUG_FLAG),1)
__DEBUG_DEFINE_p = -D__WXDEBUG__
endif
ifeq ($(SHARED),1)
__DLLFLAG_p = -DWXUSINGDLL
endif
ifeq ($(USE_GUI),1)
__LIB_JPEG_p = -lwxjpeg$(WXDEBUGFLAG)
endif
ifeq ($(USE_GUI),1)
__LIB_PNG_p = -lwxpng$(WXDEBUGFLAG)
endif
ifeq ($(USE_GUI),1)
__LIB_TIFF_p = -lwxtiff$(WXDEBUGFLAG)
endif
ifeq ($(BUILD),debug)
__OPTIMIZEFLAG_2 = -O0
endif
ifeq ($(BUILD),release)
__OPTIMIZEFLAG_2 = -O2
endif
ifeq ($(UNICODE),1)
__UNICODE_DEFINE_p = -D_UNICODE
endif
ifeq ($(MSLU),1)
__UNICOWS_LIB_p = -lunicows
endif
ifeq ($(MONOLITHIC),0)
__WXLIB_BASE_p = -lwxbase25$(WXUNICODEFLAG)$(WXDEBUGFLAG)
endif
ifeq ($(MONOLITHIC),1)
__WXLIB_MONO_p = \
-lwx$(PORTNAME)$(WXUNIVNAME)25$(WXUNICODEFLAG)$(WXDEBUGFLAG)
endif
ifeq ($(WXUNIV),1)
__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
endif
all: $(OBJS)
$(OBJS):
-if not exist $(OBJS) mkdir $(OBJS)
### Targets: ###
all: $(OBJS)\HelpGen.exe
$(OBJS)\HelpGen_HelpGen.o: ./src/HelpGen.cpp
$(CXX) -c -o $@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_cjparser.o: ./src/cjparser.cpp
$(CXX) -c -o $@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_docripper.o: ./src/docripper.cpp
$(CXX) -c -o $@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_ifcontext.o: ./src/ifcontext.cpp
$(CXX) -c -o $@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_markup.o: ./src/markup.cpp
$(CXX) -c -o $@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_scriptbinder.o: ./src/scriptbinder.cpp
$(CXX) -c -o $@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_sourcepainter.o: ./src/sourcepainter.cpp
$(CXX) -c -o $@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_srcparser.o: ./src/srcparser.cpp
$(CXX) -c -o $@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen.exe: $(HELPGEN_OBJECTS)
$(CXX) -o $@ $(HELPGEN_OBJECTS) $(LDFLAGS) $(__DEBUGINFO) -mthreads -L$(LIBDIRNAME) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(__UNICOWS_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lodbc32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32
clean:
-if exist $(OBJS)\*.o del $(OBJS)\*.o
-if exist $(OBJS)\HelpGen.exe del $(OBJS)\HelpGen.exe
.PHONY: all clean

View File

@@ -1,219 +0,0 @@
# =========================================================================
# This makefile was generated by
# Bakefile 0.1.1 (http://bakefile.sourceforge.net)
# Do not modify, all changes will be overwritten!
# =========================================================================
!include <../../build/msw/config.vc>
# -------------------------------------------------------------------------
# Do not modify the rest of this file!
# -------------------------------------------------------------------------
### Variables: ###
HELPGEN_CXXFLAGS = $(CPPFLAGS) /M$(__RUNTIME_LIBS_7)$(__DEBUGRUNTIME_3) \
/DWIN32 $(__DEBUGINFO_0) /Fd$(OBJS)\HelpGen.pdb $(____DEBUGRUNTIME_2_p) \
$(__OPTIMIZEFLAG_4) /D__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \
$(__UNICODE_DEFINE_p) /I.\..\..\include /I$(SETUPHDIR) /W4 /I. $(__DLLFLAG_p) \
/D_CONSOLE $(CXXFLAGS) /GR /GX
HELPGEN_OBJECTS = \
$(OBJS)\HelpGen_HelpGen.obj \
$(OBJS)\HelpGen_cjparser.obj \
$(OBJS)\HelpGen_docripper.obj \
$(OBJS)\HelpGen_ifcontext.obj \
$(OBJS)\HelpGen_markup.obj \
$(OBJS)\HelpGen_scriptbinder.obj \
$(OBJS)\HelpGen_sourcepainter.obj \
$(OBJS)\HelpGen_srcparser.obj
OBJS = \
vc_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)
SETUPHDIR = \
$(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
### Conditionally set variables: ###
!if "$(SHARED)" == "0"
LIBDIRNAME = .\..\..\lib\vc_lib$(CFG)
!endif
!if "$(SHARED)" == "1"
LIBDIRNAME = .\..\..\lib\vc_dll$(CFG)
!endif
!if "$(USE_GUI)" == "0"
PORTNAME = base
!endif
!if "$(USE_GUI)" == "1"
PORTNAME = msw
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
WXDEBUGFLAG = d
!endif
!if "$(DEBUG_FLAG)" == "1"
WXDEBUGFLAG = d
!endif
!if "$(SHARED)" == "1"
WXDLLFLAG = dll
!endif
!if "$(UNICODE)" == "1"
WXUNICODEFLAG = u
!endif
!if "$(WXUNIV)" == "1"
WXUNIVNAME = univ
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_0 = /Zi
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_0 =
!endif
!if "$(DEBUG_INFO)" == "0"
__DEBUGINFO_0 =
!endif
!if "$(DEBUG_INFO)" == "1"
__DEBUGINFO_0 = /Zi
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_1 = /DEBUG
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_1 =
!endif
!if "$(DEBUG_INFO)" == "0"
__DEBUGINFO_1 =
!endif
!if "$(DEBUG_INFO)" == "1"
__DEBUGINFO_1 = /DEBUG
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_3 = d
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_3 =
!endif
!if "$(DEBUG_INFO)" == "0"
__DEBUGINFO_3 =
!endif
!if "$(DEBUG_INFO)" == "1"
__DEBUGINFO_3 = d
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "0"
__DEBUGRUNTIME_3 =
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "1"
__DEBUGRUNTIME_3 = d
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "default"
__DEBUGRUNTIME_3 = $(__DEBUGINFO_3)
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
__DEBUG_DEFINE_p = /D__WXDEBUG__
!endif
!if "$(DEBUG_FLAG)" == "1"
__DEBUG_DEFINE_p = /D__WXDEBUG__
!endif
!if "$(SHARED)" == "1"
__DLLFLAG_p = /DWXUSINGDLL
!endif
!if "$(USE_GUI)" == "1"
__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib
!endif
!if "$(USE_GUI)" == "1"
__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib
!endif
!if "$(USE_GUI)" == "1"
__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib
!endif
!if "$(BUILD)" == "debug"
__OPTIMIZEFLAG_4 = /Od
!endif
!if "$(BUILD)" == "release"
__OPTIMIZEFLAG_4 = /O2
!endif
!if "$(RUNTIME_LIBS)" == "dynamic"
__RUNTIME_LIBS_7 = D
!endif
!if "$(RUNTIME_LIBS)" == "static"
__RUNTIME_LIBS_7 = T
!endif
!if "$(UNICODE)" == "1"
__UNICODE_DEFINE_p = /D_UNICODE
!endif
!if "$(MSLU)" == "1"
__UNICOWS_LIB_p = unicows.lib
!endif
!if "$(MONOLITHIC)" == "0"
__WXLIB_BASE_p = wxbase25$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib
!endif
!if "$(MONOLITHIC)" == "1"
__WXLIB_MONO_p = \
wx$(PORTNAME)$(WXUNIVNAME)25$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib
!endif
!if "$(WXUNIV)" == "1"
__WXUNIV_DEFINE_p = /D__WXUNIVERSAL__
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default"
____DEBUGINFO_2_p = /D_DEBUG
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default"
____DEBUGINFO_2_p =
!endif
!if "$(DEBUG_INFO)" == "0"
____DEBUGINFO_2_p =
!endif
!if "$(DEBUG_INFO)" == "1"
____DEBUGINFO_2_p = /D_DEBUG
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "0"
____DEBUGRUNTIME_2_p =
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "1"
____DEBUGRUNTIME_2_p = /D_DEBUG
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "default"
____DEBUGRUNTIME_2_p = $(____DEBUGINFO_2_p)
!endif
all: $(OBJS)
$(OBJS):
-if not exist $(OBJS) mkdir $(OBJS)
### Targets: ###
all: $(OBJS)\HelpGen.exe
$(OBJS)\HelpGen_HelpGen.obj: .\src\HelpGen.cpp
$(CXX) /c /nologo /TP /Fo$@ $(HELPGEN_CXXFLAGS) $**
$(OBJS)\HelpGen_cjparser.obj: .\src\cjparser.cpp
$(CXX) /c /nologo /TP /Fo$@ $(HELPGEN_CXXFLAGS) $**
$(OBJS)\HelpGen_docripper.obj: .\src\docripper.cpp
$(CXX) /c /nologo /TP /Fo$@ $(HELPGEN_CXXFLAGS) $**
$(OBJS)\HelpGen_ifcontext.obj: .\src\ifcontext.cpp
$(CXX) /c /nologo /TP /Fo$@ $(HELPGEN_CXXFLAGS) $**
$(OBJS)\HelpGen_markup.obj: .\src\markup.cpp
$(CXX) /c /nologo /TP /Fo$@ $(HELPGEN_CXXFLAGS) $**
$(OBJS)\HelpGen_scriptbinder.obj: .\src\scriptbinder.cpp
$(CXX) /c /nologo /TP /Fo$@ $(HELPGEN_CXXFLAGS) $**
$(OBJS)\HelpGen_sourcepainter.obj: .\src\sourcepainter.cpp
$(CXX) /c /nologo /TP /Fo$@ $(HELPGEN_CXXFLAGS) $**
$(OBJS)\HelpGen_srcparser.obj: .\src\srcparser.cpp
$(CXX) /c /nologo /TP /Fo$@ $(HELPGEN_CXXFLAGS) $**
$(OBJS)\HelpGen.exe: $(HELPGEN_OBJECTS)
link /NOLOGO /OUT:$@ $(LDFLAGS) $(__DEBUGINFO_1) /LIBPATH:$(LIBDIRNAME) /SUBSYSTEM:CONSOLE @<<
$(HELPGEN_OBJECTS) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(__UNICOWS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib
<<
clean:
-if exist $(OBJS)\*.obj del $(OBJS)\*.obj
-if exist $(OBJS)\*.res del $(OBJS)\*.res
-if exist $(OBJS)\HelpGen.exe del $(OBJS)\HelpGen.exe
-if exist $(OBJS)\HelpGen.ilk del $(OBJS)\HelpGen.ilk
-if exist $(OBJS)\HelpGen.pdb del $(OBJS)\HelpGen.pdb

View File

@@ -1,225 +0,0 @@
# =========================================================================
# This makefile was generated by
# Bakefile 0.1.1 (http://bakefile.sourceforge.net)
# Do not modify, all changes will be overwritten!
# =========================================================================
!include ../../build/msw/config.wat
# -------------------------------------------------------------------------
# Do not modify the rest of this file!
# -------------------------------------------------------------------------
# Speed up compilation a bit:
!ifdef __LOADDLL__
! loaddll wcc wccd
! loaddll wccaxp wccdaxp
! loaddll wcc386 wccd386
! loaddll wpp wppdi86
! loaddll wppaxp wppdaxp
! loaddll wpp386 wppd386
! loaddll wlink wlink
! loaddll wlib wlibd
!endif
# We need these variables in some bakefile-made rules:
WATCOM_CWD = $+ $(%cdrive):$(%cwd) $-
### Conditionally set variables: ###
LIBDIRNAME =
!ifeq SHARED 0
LIBDIRNAME = .\..\..\lib\wat_lib$(CFG)
!endif
!ifeq SHARED 1
LIBDIRNAME = .\..\..\lib\wat_dll$(CFG)
!endif
PORTNAME =
!ifeq USE_GUI 0
PORTNAME = base
!endif
!ifeq USE_GUI 1
PORTNAME = msw
!endif
WXDEBUGFLAG =
!ifeq BUILD debug
!ifeq DEBUG_FLAG default
WXDEBUGFLAG = d
!endif
!endif
!ifeq DEBUG_FLAG 1
WXDEBUGFLAG = d
!endif
WXDLLFLAG =
!ifeq SHARED 1
WXDLLFLAG = dll
!endif
WXUNICODEFLAG =
!ifeq UNICODE 1
WXUNICODEFLAG = u
!endif
WXUNIVNAME =
!ifeq WXUNIV 1
WXUNIVNAME = univ
!endif
__DEBUGINFO_0 =
!ifeq BUILD debug
!ifeq DEBUG_INFO default
__DEBUGINFO_0 = -d2
!endif
!endif
!ifeq BUILD release
!ifeq DEBUG_INFO default
__DEBUGINFO_0 = -d0
!endif
!endif
!ifeq DEBUG_INFO 0
__DEBUGINFO_0 = -d0
!endif
!ifeq DEBUG_INFO 1
__DEBUGINFO_0 = -d2
!endif
__DEBUGINFO_1 =
!ifeq BUILD debug
!ifeq DEBUG_INFO default
__DEBUGINFO_1 = debug all
!endif
!endif
!ifeq BUILD release
!ifeq DEBUG_INFO default
__DEBUGINFO_1 =
!endif
!endif
!ifeq DEBUG_INFO 0
__DEBUGINFO_1 =
!endif
!ifeq DEBUG_INFO 1
__DEBUGINFO_1 = debug all
!endif
__DEBUG_DEFINE_p =
!ifeq BUILD debug
!ifeq DEBUG_FLAG default
__DEBUG_DEFINE_p = -d__WXDEBUG__
!endif
!endif
!ifeq DEBUG_FLAG 1
__DEBUG_DEFINE_p = -d__WXDEBUG__
!endif
__DLLFLAG_p =
!ifeq SHARED 1
__DLLFLAG_p = -dWXUSINGDLL
!endif
__LIB_JPEG_p =
!ifeq USE_GUI 1
__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib
!endif
__LIB_PNG_p =
!ifeq USE_GUI 1
__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib
!endif
__LIB_TIFF_p =
!ifeq USE_GUI 1
__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib
!endif
__OPTIMIZEFLAG_2 =
!ifeq BUILD debug
__OPTIMIZEFLAG_2 = -od
!endif
!ifeq BUILD release
__OPTIMIZEFLAG_2 = -ot -ox
!endif
__RUNTIME_LIBS_5 =
!ifeq RUNTIME_LIBS dynamic
__RUNTIME_LIBS_5 = -br
!endif
!ifeq RUNTIME_LIBS static
__RUNTIME_LIBS_5 =
!endif
__UNICODE_DEFINE_p =
!ifeq UNICODE 1
__UNICODE_DEFINE_p = -d_UNICODE
!endif
__WXLIB_BASE_p =
!ifeq MONOLITHIC 0
__WXLIB_BASE_p = wxbase25$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib
!endif
__WXLIB_MONO_p =
!ifeq MONOLITHIC 1
__WXLIB_MONO_p = &
wx$(PORTNAME)$(WXUNIVNAME)25$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib
!endif
__WXUNIV_DEFINE_p =
!ifeq WXUNIV 1
__WXUNIV_DEFINE_p = -d__WXUNIVERSAL__
!endif
### Variables: ###
HELPGEN_CXXFLAGS = $(CPPFLAGS) $(__DEBUGINFO_0) $(__OPTIMIZEFLAG_2) -bm &
$(__RUNTIME_LIBS_5) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) &
$(__UNICODE_DEFINE_p) -i=.\..\..\include -i=$(SETUPHDIR) -i=. $(__DLLFLAG_p) &
$(CXXFLAGS)
HELPGEN_OBJECTS = &
$(OBJS)\HelpGen_HelpGen.obj &
$(OBJS)\HelpGen_cjparser.obj &
$(OBJS)\HelpGen_docripper.obj &
$(OBJS)\HelpGen_ifcontext.obj &
$(OBJS)\HelpGen_markup.obj &
$(OBJS)\HelpGen_scriptbinder.obj &
$(OBJS)\HelpGen_sourcepainter.obj &
$(OBJS)\HelpGen_srcparser.obj
OBJS = &
wat_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)
SETUPHDIR = &
$(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
all : $(OBJS)
$(OBJS) :
-if not exist $(OBJS) mkdir $(OBJS)
### Targets: ###
all : .SYMBOLIC $(OBJS)\HelpGen.exe
$(OBJS)\HelpGen_HelpGen.obj : .AUTODEPEND .\src\HelpGen.cpp
$(CXX) -zq -fo=$^@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_cjparser.obj : .AUTODEPEND .\src\cjparser.cpp
$(CXX) -zq -fo=$^@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_docripper.obj : .AUTODEPEND .\src\docripper.cpp
$(CXX) -zq -fo=$^@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_ifcontext.obj : .AUTODEPEND .\src\ifcontext.cpp
$(CXX) -zq -fo=$^@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_markup.obj : .AUTODEPEND .\src\markup.cpp
$(CXX) -zq -fo=$^@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_scriptbinder.obj : .AUTODEPEND .\src\scriptbinder.cpp
$(CXX) -zq -fo=$^@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_sourcepainter.obj : .AUTODEPEND .\src\sourcepainter.cpp
$(CXX) -zq -fo=$^@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_srcparser.obj : .AUTODEPEND .\src\srcparser.cpp
$(CXX) -zq -fo=$^@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen.exe : $(HELPGEN_OBJECTS)
@%create $(OBJS)\HelpGen.lbc
@%append $(OBJS)\HelpGen.lbc option quiet
@%append $(OBJS)\HelpGen.lbc name $^@
@%append $(OBJS)\HelpGen.lbc option caseexact
@%append $(OBJS)\HelpGen.lbc $(LDFLAGS) $(__DEBUGINFO_1) libpath $(LIBDIRNAME) system nt ref 'main_'
@for %i in ($(HELPGEN_OBJECTS)) do @%append $(OBJS)\HelpGen.lbc file %i
@for %i in ( $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib) do @%append $(OBJS)\HelpGen.lbc library %i
@%append $(OBJS)\HelpGen.lbc
wlink @$(OBJS)\HelpGen.lbc
clean : .SYMBOLIC
-if exist $(OBJS)\*.obj del $(OBJS)\*.obj
-if exist $(OBJS)\*.res del $(OBJS)\*.res
-if exist $(OBJS)\*.lbc del $(OBJS)\*.lbc
-if exist $(OBJS)\*.ilk del $(OBJS)\*.ilk
-if exist $(OBJS)\HelpGen.exe del $(OBJS)\HelpGen.exe

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1,139 +0,0 @@
# =========================================================================
# This makefile was generated by
# Bakefile 0.2.3 (http://www.bakefile.org)
# Do not modify, all changes will be overwritten!
# =========================================================================
@MAKE_SET@
prefix = @prefix@
exec_prefix = @exec_prefix@
datarootdir = @datarootdir@
INSTALL = @INSTALL@
EXEEXT = @EXEEXT@
SETFILE = @SETFILE@
BK_DEPS = @BK_DEPS@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
LIBS = @LIBS@
CXX = @CXX@
CXXFLAGS = @CXXFLAGS@
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
WX_LIB_FLAVOUR = @WX_LIB_FLAVOUR@
TOOLKIT = @TOOLKIT@
TOOLKIT_LOWERCASE = @TOOLKIT_LOWERCASE@
TOOLKIT_VERSION = @TOOLKIT_VERSION@
EXTRALIBS = @EXTRALIBS@
EXTRALIBS_GUI = @EXTRALIBS_GUI@
CXXWARNINGS = @CXXWARNINGS@
HOST_SUFFIX = @HOST_SUFFIX@
wx_top_builddir = @wx_top_builddir@
### Variables: ###
DESTDIR =
WX_RELEASE = 2.9
LIBDIRNAME = $(wx_top_builddir)/lib
HELPGEN_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
-I$(srcdir) $(__DLLFLAG_p) -DwxUSE_GUI=0 $(CXXWARNINGS) $(CPPFLAGS) \
$(CXXFLAGS)
HELPGEN_OBJECTS = \
HelpGen_HelpGen.o \
HelpGen_cjparser.o \
HelpGen_docripper.o \
HelpGen_ifcontext.o \
HelpGen_markup.o \
HelpGen_scriptbinder.o \
HelpGen_sourcepainter.o \
HelpGen_srcparser.o
### Conditionally set variables: ###
@COND_DEPS_TRACKING_0@CXXC = $(CXX)
@COND_DEPS_TRACKING_1@CXXC = $(BK_DEPS) $(CXX)
@COND_USE_GUI_0@PORTNAME = base
@COND_USE_GUI_1@PORTNAME = $(TOOLKIT_LOWERCASE)$(TOOLKIT_VERSION)
@COND_TOOLKIT_MAC@WXBASEPORT = _carbon
@COND_BUILD_DEBUG_DEBUG_FLAG_DEFAULT@WXDEBUGFLAG = d
@COND_DEBUG_FLAG_1@WXDEBUGFLAG = d
@COND_UNICODE_1@WXUNICODEFLAG = u
@COND_WXUNIV_1@WXUNIVNAME = univ
@COND_MONOLITHIC_0@EXTRALIBS_FOR_BASE = $(EXTRALIBS)
@COND_MONOLITHIC_1@EXTRALIBS_FOR_BASE = $(EXTRALIBS) $(EXTRALIBS_GUI)
@COND_PLATFORM_MAC_0@__HelpGen___mac_setfilecmd = @true
@COND_PLATFORM_MAC_1@__HelpGen___mac_setfilecmd = \
@COND_PLATFORM_MAC_1@ $(SETFILE) -t APPL HelpGen$(EXEEXT)
@COND_WXUNIV_1@__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
@COND_USE_RTTI_0@__RTTI_DEFINE_p = -DwxNO_RTTI
@COND_USE_THREADS_0@__THREAD_DEFINE_p = -DwxNO_THREADS
@COND_SHARED_1@__DLLFLAG_p = -DWXUSINGDLL
COND_MONOLITHIC_0___WXLIB_BASE_p = \
-lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
@COND_MONOLITHIC_0@__WXLIB_BASE_p = $(COND_MONOLITHIC_0___WXLIB_BASE_p)
COND_MONOLITHIC_1___WXLIB_MONO_p = \
-lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
@COND_MONOLITHIC_1@__WXLIB_MONO_p = $(COND_MONOLITHIC_1___WXLIB_MONO_p)
@COND_WXUSE_ZLIB_BUILTIN@__LIB_ZLIB_p = \
@COND_WXUSE_ZLIB_BUILTIN@ -lwxzlib$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
COND_WXUSE_REGEX_BUILTIN___LIB_REGEX_p = \
-lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
@COND_WXUSE_REGEX_BUILTIN@__LIB_REGEX_p = $(COND_WXUSE_REGEX_BUILTIN___LIB_REGEX_p)
@COND_WXUSE_EXPAT_BUILTIN@__LIB_EXPAT_p = \
@COND_WXUSE_EXPAT_BUILTIN@ -lwxexpat$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
### Targets: ###
all: HelpGen$(EXEEXT)
install: all
uninstall:
install-strip: install
clean:
rm -rf ./.deps ./.pch
rm -f ./*.o
rm -f HelpGen$(EXEEXT)
distclean: clean
rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile
HelpGen$(EXEEXT): $(HELPGEN_OBJECTS)
$(CXX) -o $@ $(HELPGEN_OBJECTS) $(LDFLAGS) -L$(LIBDIRNAME) $(LIBS) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_ZLIB_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE)
$(__HelpGen___mac_setfilecmd)
HelpGen_HelpGen.o: $(srcdir)/HelpGen.cpp
$(CXXC) -c -o $@ $(HELPGEN_CXXFLAGS) $(srcdir)/HelpGen.cpp
HelpGen_cjparser.o: $(srcdir)/cjparser.cpp
$(CXXC) -c -o $@ $(HELPGEN_CXXFLAGS) $(srcdir)/cjparser.cpp
HelpGen_docripper.o: $(srcdir)/docripper.cpp
$(CXXC) -c -o $@ $(HELPGEN_CXXFLAGS) $(srcdir)/docripper.cpp
HelpGen_ifcontext.o: $(srcdir)/ifcontext.cpp
$(CXXC) -c -o $@ $(HELPGEN_CXXFLAGS) $(srcdir)/ifcontext.cpp
HelpGen_markup.o: $(srcdir)/markup.cpp
$(CXXC) -c -o $@ $(HELPGEN_CXXFLAGS) $(srcdir)/markup.cpp
HelpGen_scriptbinder.o: $(srcdir)/scriptbinder.cpp
$(CXXC) -c -o $@ $(HELPGEN_CXXFLAGS) $(srcdir)/scriptbinder.cpp
HelpGen_sourcepainter.o: $(srcdir)/sourcepainter.cpp
$(CXXC) -c -o $@ $(HELPGEN_CXXFLAGS) $(srcdir)/sourcepainter.cpp
HelpGen_srcparser.o: $(srcdir)/srcparser.cpp
$(CXXC) -c -o $@ $(HELPGEN_CXXFLAGS) $(srcdir)/srcparser.cpp
# Include dependency info, if present:
@IF_GNU_MAKE@-include .deps/*.d
.PHONY: all install uninstall clean distclean

File diff suppressed because it is too large Load Diff

View File

@@ -1,130 +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 <memory.h>
#include <stdlib.h>
#include <stdio.h>
#if wxUSE_IOSTREAMH
#include <iostream.h>
#else
#include <iostream>
#endif
// 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* m_cur;
// about the current class
bool mIsVirtual;
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 wxString& tab, wxSTD ostream& os );
void DumpClassHeader( spClass& info, wxSTD ostream& os );
void DumpClassBody( spClass& info, wxSTD 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 wxString 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( wxString& type, wxString& identifier );
static bool is_keyword( char* cur );
static inline void get_string_between( char* start, char* end, wxString* pStr );
static char* set_comment_text( wxString& text, char* start );
*/
#endif

View File

@@ -1,559 +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"
#if wxUSE_IOSTREAMH
#include <iostream.h>
#else
#include <iostream>
#endif
// 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" , wxEmptyString, &mTopTempl , 0 );
mpClassIdx = new ScriptSection( "Classes Reference" , wxEmptyString, &mContentIdxTempl, &mRefTempl );
mpEnumIdx = new ScriptSection( "Enumerations Reference" , wxEmptyString, &mContentIdxTempl, &mRefTempl );
mpTypeDefIdx = new ScriptSection( "Type Definitions Reference" , wxEmptyString, &mContentIdxTempl, &mRefTempl );
mpMacroIdx = new ScriptSection( "Macros Reference" , wxEmptyString, &mContentIdxTempl, &mRefTempl );
mpGlobalVarsIdx = new ScriptSection( "Global Variables Reference" , wxEmptyString, &mContentIdxTempl, &mRefTempl );
mpGlobalFuncIdx = new ScriptSection( "Global Functions Reference", wxEmptyString, &mContentIdxTempl, &mRefTempl );
mpConstIdx = new ScriptSection( "Constants Reference" , wxEmptyString, &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
m_Tags = 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, wxString& str )
{
if ( !fromContext.HasComments() ) return;
size_t start = str.length();
str += m_Tags[TAG_BOLD].end;
str += m_Tags[TAG_PARAGRAPH].start;
MCommentListT& lst = fromContext.GetCommentList();
for( size_t i = 0; i != lst.size(); ++i )
{
if ( i != 0 )
if ( lst[i]->StartsParagraph() )
{
str += m_Tags[TAG_PARAGRAPH].start;
}
str += lst[i]->m_Text;
}
// 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, _T("<p>") ); // FIXME:: quick-hack
len += 3;
}
}
str[n] = _T(' ');
}
str += m_Tags[TAG_PARAGRAPH].end;
}
void RipperDocGen::AppendMulitilineStr( wxString& st, wxString& mlStr )
{
st = m_Tags[TAG_FIXED_FONT].start;
st += mlStr;
st += m_Tags[TAG_FIXED_FONT].end;
}
void RipperDocGen::AppendHighlightedSource( wxString& st, wxString source )
{
// FIXME:: below should not be fixed :)
char buf[1024*32];
// DBG:::
// ASSERT( source.length() + 1 < sizeof(buf) );
wxStrcpy( buf, source.c_str() );
// highlight things
mSrcPainter.Init();
mSrcPainter.ProcessSource( buf, strlen(buf) );
mSrcPainter.GetResultString( st, m_Tags );
}
bool RipperDocGen::CheckIfUncommented( spContext& ctx, ScriptSection& toSect )
{
if ( ctx.HasComments() ) return 0;
toSect.AddReference(
new ScriptSection( GetScopedName( ctx ), wxEmptyString, 0, &mDeadRefTempl )
);
return 1;
}
ScriptTemplate* RipperDocGen::GetRefTemplFor( spContext& ctx )
{
if ( ctx.HasComments() )
return &mRefTempl;
else
return &mDeadRefTempl;
}
wxString RipperDocGen::GetScopedName( spContext& ofCtx )
{
if ( ofCtx.IsInFile() )
return ofCtx.GetName();
else
return ofCtx.GetOutterContext()->GetName() +
_T("::") + ofCtx.GetName();
}
void RipperDocGen::AddToCurrentClass( ScriptSection* pSection, spContext& ctx,
const char* subSectionName )
{
wxString 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.m_SuperClassNames.size(); ++n )
{
wxString& superClName = cl.m_SuperClassNames[n];
spClass* pFound = NULL;
for( size_t k = 0; k != clLst.size(); ++k )
{
if ( clLst[k]->GetName() == superClName )
{
pFound = (spClass*)clLst[k];
break;
}
}
if ( !pFound )
{
ScriptSection* pNotFound =
new ScriptSection( superClName, wxEmptyString, 0, &mDeadRefTempl );
pSuperSect->AddReference( pNotFound );
}
else
if ( pFound->GetUserData() )
pSuperSect->AddReference(
(ScriptSection*)pFound->GetUserData() );
}
}
}
void RipperDocGen::ProcessFile( const char* sourceFile )
{
wxSTD cout << "Processing file " << sourceFile << "..." << wxSTD endl;
spFile* pCtx = mpParser->ParseFile( sourceFile );
if ( pCtx == NULL )
{
wxSTD cout << "Cannot open file " << sourceFile << ", skipped..." << wxSTD 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().empty() ) return;
if ( CheckIfUncommented( en, *mpEnumIdx ) )
return;
wxString body;
body += m_Tags[TAG_BOLD].start;
AppendMulitilineStr( body, en.m_EnumContent );
body += m_Tags[TAG_BOLD].end;
wxString 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;
wxString body;
body += m_Tags[TAG_BOLD].start;
body += "typdef ";
body += m_Tags[TAG_BOLD].end;
AppendMulitilineStr( body, td.m_OriginalType );
body += td.m_OriginalType;
body += ' ';
body += m_Tags[TAG_BOLD].start;
body += td.GetName();
body += m_Tags[TAG_BOLD].end;
wxString 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;
wxString body;
body += m_Tags[TAG_FIXED_FONT].start;
wxString coloredLine = pd.m_Line;
AppendHighlightedSource( coloredLine, pd.m_Line );
AppendMulitilineStr( body, coloredLine );
body += m_Tags[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;
}
wxString 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" ,wxEmptyString, &mOutLine1Templ,0, 1 );
ScriptSection* pPublic = new ScriptSection( "Public members" ,wxEmptyString, &mOutLineTempl,0, 1 );
ScriptSection* pProtected = new ScriptSection( "Protected members" ,wxEmptyString, &mOutLineTempl,0, 1 );
ScriptSection* pPrivate = new ScriptSection( "Private members" ,wxEmptyString, &mOutLineTempl,0, 1 );
pPublic->AddSection( new ScriptSection( "Operations", wxEmptyString, &mOutLine1Templ, 0, 1 ) );
pPublic->AddSection( new ScriptSection( "Attributes", wxEmptyString, &mOutLine1Templ, 0, 1 ) );
pProtected->AddSection( new ScriptSection( "Operations", wxEmptyString, &mOutLine1Templ, 0, 1 ) );
pProtected->AddSection( new ScriptSection( "Attributes", wxEmptyString, &mOutLine1Templ, 0, 1 ) );
pPrivate->AddSection( new ScriptSection( "Operations", wxEmptyString, &mOutLine1Templ, 0, 1 ) );
pPrivate->AddSection( new ScriptSection( "Attributes", wxEmptyString, &mOutLine1Templ, 0, 1 ) );
mpCurClassSect->AddSection( pSuper );
mpCurClassSect->AddSection( pPublic );
mpCurClassSect->AddSection( pProtected );
mpCurClassSect->AddSection( pPrivate );
mpClassIdx->AddSection( mpCurClassSect, true );
}
void RipperDocGen::VisitAttribute( spAttribute& attr )
{
wxString body;
body += m_Tags[TAG_BOLD].start;
body += attr.m_Type;
body += m_Tags[TAG_BOLD].end;
body += m_Tags[TAG_ITALIC].start;
body += ' ';
body += attr.GetName();
body += m_Tags[TAG_ITALIC].end;
wxString 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 )
{
wxString body;
AppendHighlightedSource( body, op.GetFullName(m_Tags) );
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& WXUNUSED(stm) )
{
LinkSuperClassRefs();
// FOR NOW:: doesn't work yet
//mpTopIdx->RemoveEmptySections();
return 1; // saving can proceed now
}

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 m_Tags;
protected:
// helpers
void AppendComments( spContext& fromContext, wxString& str );
void AppendMulitilineStr( wxString& st, wxString& mlStr );
void AppendHighlightedSource( wxString& st, wxString 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)
wxString 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();
virtual ~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,23 +0,0 @@
<?xml version="1.0" ?>
<!-- $Id$ -->
<makefile>
<include file="../../../build/bakefiles/common_samples.bkl"/>
<exe id="HelpGen" template="wx_util_console"
template_append="wx_append_base">
<sources>
HelpGen.cpp
cjparser.cpp
docripper.cpp
ifcontext.cpp
markup.cpp
scriptbinder.cpp
sourcepainter.cpp
srcparser.cpp
</sources>
<wx-lib>base</wx-lib>
</exe>
</makefile>

View File

@@ -1,271 +0,0 @@
# Microsoft Developer Studio Project File - Name="helpgen" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=HelpGen - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "helpgen.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "helpgen.mak" CFG="HelpGen - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "HelpGen - Win32 DLL Universal Release" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 DLL Universal Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 DLL Release" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 DLL Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 Universal Release" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 Universal Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "HelpGen - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "HelpGen - Win32 DLL Universal Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "vc_mswunivudll"
# PROP BASE Intermediate_Dir "vc_mswunivudll\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "vc_mswunivudll"
# PROP Intermediate_Dir "vc_mswunivudll\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /MD /Zi /Fdvc_mswunivudll\HelpGen.pdb /O2 /GR /EHsc /I ".\..\..\..\lib\vc_dll\mswunivu" /I ".\..\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
# ADD CPP /nologo /FD /MD /Zi /Fdvc_mswunivudll\HelpGen.pdb /O2 /GR /EHsc /I ".\..\..\..\lib\vc_dll\mswunivu" /I ".\..\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\..\lib\vc_dll\mswunivu" /i ".\..\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
# ADD RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\..\lib\vc_dll\mswunivu" /i ".\..\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivudll\HelpGen.exe" /debug /pdb:"vc_mswunivudll\HelpGen.pdb" /libpath:".\..\..\..\lib\vc_dll" /subsystem:console
# ADD LINK32 wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivudll\HelpGen.exe" /debug /pdb:"vc_mswunivudll\HelpGen.pdb" /libpath:".\..\..\..\lib\vc_dll" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 DLL Universal Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "vc_mswunivuddll"
# PROP BASE Intermediate_Dir "vc_mswunivuddll\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "vc_mswunivuddll"
# PROP Intermediate_Dir "vc_mswunivuddll\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /MDd /Zi /Fdvc_mswunivuddll\HelpGen.pdb /Od /Gm /GR /EHsc /I ".\..\..\..\lib\vc_dll\mswunivud" /I ".\..\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
# ADD CPP /nologo /FD /MDd /Zi /Fdvc_mswunivuddll\HelpGen.pdb /Od /Gm /GR /EHsc /I ".\..\..\..\lib\vc_dll\mswunivud" /I ".\..\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\..\lib\vc_dll\mswunivud" /i ".\..\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\..\lib\vc_dll\mswunivud" /i ".\..\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivuddll\HelpGen.exe" /debug /pdb:"vc_mswunivuddll\HelpGen.pdb" /libpath:".\..\..\..\lib\vc_dll" /subsystem:console
# ADD LINK32 wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivuddll\HelpGen.exe" /debug /pdb:"vc_mswunivuddll\HelpGen.pdb" /libpath:".\..\..\..\lib\vc_dll" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 DLL Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "vc_mswudll"
# PROP BASE Intermediate_Dir "vc_mswudll\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "vc_mswudll"
# PROP Intermediate_Dir "vc_mswudll\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /MD /Zi /Fdvc_mswudll\HelpGen.pdb /O2 /GR /EHsc /I ".\..\..\..\lib\vc_dll\mswu" /I ".\..\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
# ADD CPP /nologo /FD /MD /Zi /Fdvc_mswudll\HelpGen.pdb /O2 /GR /EHsc /I ".\..\..\..\lib\vc_dll\mswu" /I ".\..\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\..\lib\vc_dll\mswu" /i ".\..\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
# ADD RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\..\lib\vc_dll\mswu" /i ".\..\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswudll\HelpGen.exe" /debug /pdb:"vc_mswudll\HelpGen.pdb" /libpath:".\..\..\..\lib\vc_dll" /subsystem:console
# ADD LINK32 wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswudll\HelpGen.exe" /debug /pdb:"vc_mswudll\HelpGen.pdb" /libpath:".\..\..\..\lib\vc_dll" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 DLL Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "vc_mswuddll"
# PROP BASE Intermediate_Dir "vc_mswuddll\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "vc_mswuddll"
# PROP Intermediate_Dir "vc_mswuddll\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /MDd /Zi /Fdvc_mswuddll\HelpGen.pdb /Od /Gm /GR /EHsc /I ".\..\..\..\lib\vc_dll\mswud" /I ".\..\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
# ADD CPP /nologo /FD /MDd /Zi /Fdvc_mswuddll\HelpGen.pdb /Od /Gm /GR /EHsc /I ".\..\..\..\lib\vc_dll\mswud" /I ".\..\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_CONSOLE" /D wxUSE_GUI=0 /c
# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\..\lib\vc_dll\mswud" /i ".\..\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\..\lib\vc_dll\mswud" /i ".\..\..\..\include" /i "." /d "WXUSINGDLL" /d "_CONSOLE" /d wxUSE_GUI=0
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswuddll\HelpGen.exe" /debug /pdb:"vc_mswuddll\HelpGen.pdb" /libpath:".\..\..\..\lib\vc_dll" /subsystem:console
# ADD LINK32 wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswuddll\HelpGen.exe" /debug /pdb:"vc_mswuddll\HelpGen.pdb" /libpath:".\..\..\..\lib\vc_dll" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 Universal Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "vc_mswunivu"
# PROP BASE Intermediate_Dir "vc_mswunivu\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "vc_mswunivu"
# PROP Intermediate_Dir "vc_mswunivu\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /MD /Zi /Fdvc_mswunivu\HelpGen.pdb /O2 /GR /EHsc /I ".\..\..\..\lib\vc_lib\mswunivu" /I ".\..\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
# ADD CPP /nologo /FD /MD /Zi /Fdvc_mswunivu\HelpGen.pdb /O2 /GR /EHsc /I ".\..\..\..\lib\vc_lib\mswunivu" /I ".\..\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\..\lib\vc_lib\mswunivu" /i ".\..\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
# ADD RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\..\lib\vc_lib\mswunivu" /i ".\..\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivu\HelpGen.exe" /debug /pdb:"vc_mswunivu\HelpGen.pdb" /libpath:".\..\..\..\lib\vc_lib" /subsystem:console
# ADD LINK32 wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivu\HelpGen.exe" /debug /pdb:"vc_mswunivu\HelpGen.pdb" /libpath:".\..\..\..\lib\vc_lib" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 Universal Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "vc_mswunivud"
# PROP BASE Intermediate_Dir "vc_mswunivud\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "vc_mswunivud"
# PROP Intermediate_Dir "vc_mswunivud\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /MDd /Zi /Fdvc_mswunivud\HelpGen.pdb /Od /Gm /GR /EHsc /I ".\..\..\..\lib\vc_lib\mswunivud" /I ".\..\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
# ADD CPP /nologo /FD /MDd /Zi /Fdvc_mswunivud\HelpGen.pdb /Od /Gm /GR /EHsc /I ".\..\..\..\lib\vc_lib\mswunivud" /I ".\..\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\..\lib\vc_lib\mswunivud" /i ".\..\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\..\lib\vc_lib\mswunivud" /i ".\..\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivud\HelpGen.exe" /debug /pdb:"vc_mswunivud\HelpGen.pdb" /libpath:".\..\..\..\lib\vc_lib" /subsystem:console
# ADD LINK32 wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivud\HelpGen.exe" /debug /pdb:"vc_mswunivud\HelpGen.pdb" /libpath:".\..\..\..\lib\vc_lib" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "vc_mswu"
# PROP BASE Intermediate_Dir "vc_mswu\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "vc_mswu"
# PROP Intermediate_Dir "vc_mswu\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /MD /Zi /Fdvc_mswu\HelpGen.pdb /O2 /GR /EHsc /I ".\..\..\..\lib\vc_lib\mswu" /I ".\..\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
# ADD CPP /nologo /FD /MD /Zi /Fdvc_mswu\HelpGen.pdb /O2 /GR /EHsc /I ".\..\..\..\lib\vc_lib\mswu" /I ".\..\..\..\include" /W4 /I "." /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\..\lib\vc_lib\mswu" /i ".\..\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
# ADD RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\..\lib\vc_lib\mswu" /i ".\..\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswu\HelpGen.exe" /debug /pdb:"vc_mswu\HelpGen.pdb" /libpath:".\..\..\..\lib\vc_lib" /subsystem:console
# ADD LINK32 wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswu\HelpGen.exe" /debug /pdb:"vc_mswu\HelpGen.pdb" /libpath:".\..\..\..\lib\vc_lib" /subsystem:console
!ELSEIF "$(CFG)" == "HelpGen - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "vc_mswud"
# PROP BASE Intermediate_Dir "vc_mswud\HelpGen"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "vc_mswud"
# PROP Intermediate_Dir "vc_mswud\HelpGen"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /FD /MDd /Zi /Fdvc_mswud\HelpGen.pdb /Od /Gm /GR /EHsc /I ".\..\..\..\lib\vc_lib\mswud" /I ".\..\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
# ADD CPP /nologo /FD /MDd /Zi /Fdvc_mswud\HelpGen.pdb /Od /Gm /GR /EHsc /I ".\..\..\..\lib\vc_lib\mswud" /I ".\..\..\..\include" /W4 /I "." /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_CONSOLE" /D wxUSE_GUI=0 /c
# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\..\lib\vc_lib\mswud" /i ".\..\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\..\lib\vc_lib\mswud" /i ".\..\..\..\include" /i "." /d "_CONSOLE" /d wxUSE_GUI=0
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswud\HelpGen.exe" /debug /pdb:"vc_mswud\HelpGen.pdb" /libpath:".\..\..\..\lib\vc_lib" /subsystem:console
# ADD LINK32 wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswud\HelpGen.exe" /debug /pdb:"vc_mswud\HelpGen.pdb" /libpath:".\..\..\..\lib\vc_lib" /subsystem:console
!ENDIF
# Begin Target
# Name "HelpGen - Win32 DLL Universal Release"
# Name "HelpGen - Win32 DLL Universal Debug"
# Name "HelpGen - Win32 DLL Release"
# Name "HelpGen - Win32 DLL Debug"
# Name "HelpGen - Win32 Universal Release"
# Name "HelpGen - Win32 Universal Debug"
# Name "HelpGen - Win32 Release"
# Name "HelpGen - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\HelpGen.cpp
# End Source File
# Begin Source File
SOURCE=.\cjparser.cpp
# End Source File
# Begin Source File
SOURCE=.\docripper.cpp
# End Source File
# Begin Source File
SOURCE=.\ifcontext.cpp
# End Source File
# Begin Source File
SOURCE=.\markup.cpp
# End Source File
# Begin Source File
SOURCE=.\scriptbinder.cpp
# End Source File
# Begin Source File
SOURCE=.\sourcepainter.cpp
# End Source File
# Begin Source File
SOURCE=.\srcparser.cpp
# End Source File
# End Group
# End Target
# End Project

View File

@@ -1,650 +0,0 @@
<?xml version="1.0" ?>
<!--
This makefile was generated by
Bakefile 0.2.3 (http://www.bakefile.org)
Do not modify, all changes will be overwritten!
-->
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="HelpGen"
ProjectGUID="{C7F52383-60B2-5A7E-A909-145DA57B5577}">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="DLL Universal Release|Win32"
OutputDirectory="vc_mswunivudll"
IntermediateDirectory="vc_mswunivudll\HelpGen"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1">
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCIDLTool"/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswunivu;.\..\..\..\include;."
MinimalRebuild="false"
ExceptionHandling="1"
AdditionalOptions=""
RuntimeLibrary="2"
PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXUSINGDLL;_CONSOLE;wxUSE_GUI=0"
BasicRuntimeChecks="3"
DebugInformationFormat="3"
Detect64BitPortabilityProblems="true"
RuntimeTypeInfo="true"
AssemblerListingLocation="vc_mswunivudll\HelpGen\"
ObjectFile="vc_mswunivudll\HelpGen\"
ProgramDataBaseFileName="vc_mswunivudll\HelpGen.pdb"
WarningLevel="4"
SuppressStartupBanner="true"/>
<Tool
Name="VCManagedResourceCompilerTool"/>
<Tool
Name="VCResourceCompilerTool"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswunivu;.\..\..\..\include;."
PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXUSINGDLL;_CONSOLE;wxUSE_GUI=0"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib"
AdditionalOptions=""
OutputFile="vc_mswunivudll\HelpGen.exe"
LinkIncremental="2"
SubSystem="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_dll"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswunivudll\HelpGen.pdb"
TargetMachine="1"/>
<Tool
Name="VCALinkTool"/>
<Tool
Name="VCXDCMakeTool"/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswunivudll\helpgen_vc7.bsc"
SuppressStartupBanner="true"/>
<Tool
Name="VCFxCopTool"/>
<Tool
Name="VCAppVerifierTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCPostBuildEventTool"/>
</Configuration>
<Configuration
Name="DLL Universal Debug|Win32"
OutputDirectory="vc_mswunivuddll"
IntermediateDirectory="vc_mswunivuddll\HelpGen"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1">
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCIDLTool"/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswunivud;.\..\..\..\include;."
MinimalRebuild="true"
ExceptionHandling="1"
AdditionalOptions=""
RuntimeLibrary="3"
PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_CONSOLE;wxUSE_GUI=0"
BasicRuntimeChecks="3"
DebugInformationFormat="3"
Detect64BitPortabilityProblems="true"
RuntimeTypeInfo="true"
AssemblerListingLocation="vc_mswunivuddll\HelpGen\"
ObjectFile="vc_mswunivuddll\HelpGen\"
ProgramDataBaseFileName="vc_mswunivuddll\HelpGen.pdb"
WarningLevel="4"
SuppressStartupBanner="true"/>
<Tool
Name="VCManagedResourceCompilerTool"/>
<Tool
Name="VCResourceCompilerTool"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswunivud;.\..\..\..\include;."
PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_CONSOLE;wxUSE_GUI=0"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib"
AdditionalOptions=""
OutputFile="vc_mswunivuddll\HelpGen.exe"
LinkIncremental="2"
SubSystem="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_dll"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswunivuddll\HelpGen.pdb"
TargetMachine="1"/>
<Tool
Name="VCALinkTool"/>
<Tool
Name="VCXDCMakeTool"/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswunivuddll\helpgen_vc7.bsc"
SuppressStartupBanner="true"/>
<Tool
Name="VCFxCopTool"/>
<Tool
Name="VCAppVerifierTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCPostBuildEventTool"/>
</Configuration>
<Configuration
Name="DLL Release|Win32"
OutputDirectory="vc_mswudll"
IntermediateDirectory="vc_mswudll\HelpGen"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1">
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCIDLTool"/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswu;.\..\..\..\include;."
MinimalRebuild="false"
ExceptionHandling="1"
AdditionalOptions=""
RuntimeLibrary="2"
PreprocessorDefinitions="__WXMSW__;_UNICODE;WXUSINGDLL;_CONSOLE;wxUSE_GUI=0"
BasicRuntimeChecks="3"
DebugInformationFormat="3"
Detect64BitPortabilityProblems="true"
RuntimeTypeInfo="true"
AssemblerListingLocation="vc_mswudll\HelpGen\"
ObjectFile="vc_mswudll\HelpGen\"
ProgramDataBaseFileName="vc_mswudll\HelpGen.pdb"
WarningLevel="4"
SuppressStartupBanner="true"/>
<Tool
Name="VCManagedResourceCompilerTool"/>
<Tool
Name="VCResourceCompilerTool"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswu;.\..\..\..\include;."
PreprocessorDefinitions="__WXMSW__;_UNICODE;WXUSINGDLL;_CONSOLE;wxUSE_GUI=0"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib"
AdditionalOptions=""
OutputFile="vc_mswudll\HelpGen.exe"
LinkIncremental="2"
SubSystem="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_dll"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswudll\HelpGen.pdb"
TargetMachine="1"/>
<Tool
Name="VCALinkTool"/>
<Tool
Name="VCXDCMakeTool"/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswudll\helpgen_vc7.bsc"
SuppressStartupBanner="true"/>
<Tool
Name="VCFxCopTool"/>
<Tool
Name="VCAppVerifierTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCPostBuildEventTool"/>
</Configuration>
<Configuration
Name="DLL Debug|Win32"
OutputDirectory="vc_mswuddll"
IntermediateDirectory="vc_mswuddll\HelpGen"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1">
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCIDLTool"/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswud;.\..\..\..\include;."
MinimalRebuild="true"
ExceptionHandling="1"
AdditionalOptions=""
RuntimeLibrary="3"
PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_CONSOLE;wxUSE_GUI=0"
BasicRuntimeChecks="3"
DebugInformationFormat="3"
Detect64BitPortabilityProblems="true"
RuntimeTypeInfo="true"
AssemblerListingLocation="vc_mswuddll\HelpGen\"
ObjectFile="vc_mswuddll\HelpGen\"
ProgramDataBaseFileName="vc_mswuddll\HelpGen.pdb"
WarningLevel="4"
SuppressStartupBanner="true"/>
<Tool
Name="VCManagedResourceCompilerTool"/>
<Tool
Name="VCResourceCompilerTool"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswud;.\..\..\..\include;."
PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_CONSOLE;wxUSE_GUI=0"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib"
AdditionalOptions=""
OutputFile="vc_mswuddll\HelpGen.exe"
LinkIncremental="2"
SubSystem="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_dll"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswuddll\HelpGen.pdb"
TargetMachine="1"/>
<Tool
Name="VCALinkTool"/>
<Tool
Name="VCXDCMakeTool"/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswuddll\helpgen_vc7.bsc"
SuppressStartupBanner="true"/>
<Tool
Name="VCFxCopTool"/>
<Tool
Name="VCAppVerifierTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCPostBuildEventTool"/>
</Configuration>
<Configuration
Name="Universal Release|Win32"
OutputDirectory="vc_mswunivu"
IntermediateDirectory="vc_mswunivu\HelpGen"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1">
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCIDLTool"/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswunivu;.\..\..\..\include;."
MinimalRebuild="false"
ExceptionHandling="1"
AdditionalOptions=""
RuntimeLibrary="2"
PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;_CONSOLE;wxUSE_GUI=0"
BasicRuntimeChecks="3"
DebugInformationFormat="3"
Detect64BitPortabilityProblems="true"
RuntimeTypeInfo="true"
AssemblerListingLocation="vc_mswunivu\HelpGen\"
ObjectFile="vc_mswunivu\HelpGen\"
ProgramDataBaseFileName="vc_mswunivu\HelpGen.pdb"
WarningLevel="4"
SuppressStartupBanner="true"/>
<Tool
Name="VCManagedResourceCompilerTool"/>
<Tool
Name="VCResourceCompilerTool"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswunivu;.\..\..\..\include;."
PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;_CONSOLE;wxUSE_GUI=0"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib"
AdditionalOptions=""
OutputFile="vc_mswunivu\HelpGen.exe"
LinkIncremental="2"
SubSystem="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_lib"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswunivu\HelpGen.pdb"
TargetMachine="1"/>
<Tool
Name="VCALinkTool"/>
<Tool
Name="VCXDCMakeTool"/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswunivu\helpgen_vc7.bsc"
SuppressStartupBanner="true"/>
<Tool
Name="VCFxCopTool"/>
<Tool
Name="VCAppVerifierTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCPostBuildEventTool"/>
</Configuration>
<Configuration
Name="Universal Debug|Win32"
OutputDirectory="vc_mswunivud"
IntermediateDirectory="vc_mswunivud\HelpGen"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1">
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCIDLTool"/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswunivud;.\..\..\..\include;."
MinimalRebuild="true"
ExceptionHandling="1"
AdditionalOptions=""
RuntimeLibrary="3"
PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;_CONSOLE;wxUSE_GUI=0"
BasicRuntimeChecks="3"
DebugInformationFormat="3"
Detect64BitPortabilityProblems="true"
RuntimeTypeInfo="true"
AssemblerListingLocation="vc_mswunivud\HelpGen\"
ObjectFile="vc_mswunivud\HelpGen\"
ProgramDataBaseFileName="vc_mswunivud\HelpGen.pdb"
WarningLevel="4"
SuppressStartupBanner="true"/>
<Tool
Name="VCManagedResourceCompilerTool"/>
<Tool
Name="VCResourceCompilerTool"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswunivud;.\..\..\..\include;."
PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;_CONSOLE;wxUSE_GUI=0"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib"
AdditionalOptions=""
OutputFile="vc_mswunivud\HelpGen.exe"
LinkIncremental="2"
SubSystem="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_lib"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswunivud\HelpGen.pdb"
TargetMachine="1"/>
<Tool
Name="VCALinkTool"/>
<Tool
Name="VCXDCMakeTool"/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswunivud\helpgen_vc7.bsc"
SuppressStartupBanner="true"/>
<Tool
Name="VCFxCopTool"/>
<Tool
Name="VCAppVerifierTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCPostBuildEventTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="vc_mswu"
IntermediateDirectory="vc_mswu\HelpGen"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1">
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCIDLTool"/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswu;.\..\..\..\include;."
MinimalRebuild="false"
ExceptionHandling="1"
AdditionalOptions=""
RuntimeLibrary="2"
PreprocessorDefinitions="__WXMSW__;_UNICODE;_CONSOLE;wxUSE_GUI=0"
BasicRuntimeChecks="3"
DebugInformationFormat="3"
Detect64BitPortabilityProblems="true"
RuntimeTypeInfo="true"
AssemblerListingLocation="vc_mswu\HelpGen\"
ObjectFile="vc_mswu\HelpGen\"
ProgramDataBaseFileName="vc_mswu\HelpGen.pdb"
WarningLevel="4"
SuppressStartupBanner="true"/>
<Tool
Name="VCManagedResourceCompilerTool"/>
<Tool
Name="VCResourceCompilerTool"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswu;.\..\..\..\include;."
PreprocessorDefinitions="__WXMSW__;_UNICODE;_CONSOLE;wxUSE_GUI=0"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib"
AdditionalOptions=""
OutputFile="vc_mswu\HelpGen.exe"
LinkIncremental="2"
SubSystem="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_lib"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswu\HelpGen.pdb"
TargetMachine="1"/>
<Tool
Name="VCALinkTool"/>
<Tool
Name="VCXDCMakeTool"/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswu\helpgen_vc7.bsc"
SuppressStartupBanner="true"/>
<Tool
Name="VCFxCopTool"/>
<Tool
Name="VCAppVerifierTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCPostBuildEventTool"/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory="vc_mswud"
IntermediateDirectory="vc_mswud\HelpGen"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1">
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCIDLTool"/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswud;.\..\..\..\include;."
MinimalRebuild="true"
ExceptionHandling="1"
AdditionalOptions=""
RuntimeLibrary="3"
PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;_CONSOLE;wxUSE_GUI=0"
BasicRuntimeChecks="3"
DebugInformationFormat="3"
Detect64BitPortabilityProblems="true"
RuntimeTypeInfo="true"
AssemblerListingLocation="vc_mswud\HelpGen\"
ObjectFile="vc_mswud\HelpGen\"
ProgramDataBaseFileName="vc_mswud\HelpGen.pdb"
WarningLevel="4"
SuppressStartupBanner="true"/>
<Tool
Name="VCManagedResourceCompilerTool"/>
<Tool
Name="VCResourceCompilerTool"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswud;.\..\..\..\include;."
PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;_CONSOLE;wxUSE_GUI=0"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib"
AdditionalOptions=""
OutputFile="vc_mswud\HelpGen.exe"
LinkIncremental="2"
SubSystem="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_lib"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswud\HelpGen.pdb"
TargetMachine="1"/>
<Tool
Name="VCALinkTool"/>
<Tool
Name="VCXDCMakeTool"/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswud\helpgen_vc7.bsc"
SuppressStartupBanner="true"/>
<Tool
Name="VCFxCopTool"/>
<Tool
Name="VCAppVerifierTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCPostBuildEventTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx">
<File
RelativePath=".\HelpGen.cpp"/>
<File
RelativePath=".\cjparser.cpp"/>
<File
RelativePath=".\docripper.cpp"/>
<File
RelativePath=".\ifcontext.cpp"/>
<File
RelativePath=".\markup.cpp"/>
<File
RelativePath=".\scriptbinder.cpp"/>
<File
RelativePath=".\sourcepainter.cpp"/>
<File
RelativePath=".\srcparser.cpp"/>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -1,816 +0,0 @@
<?xml version="1.0" ?>
<!--
This makefile was generated by
Bakefile 0.2.3 (http://www.bakefile.org)
Do not modify, all changes will be overwritten!
-->
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="HelpGen"
ProjectGUID="{89310150-233B-5DDC-9173-35B7F50CF9B4}"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="DLL Universal Release|Win32"
OutputDirectory="vc_mswunivudll"
IntermediateDirectory="vc_mswunivudll\HelpGen"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswunivu;.\..\..\..\include;."
MinimalRebuild="false"
ExceptionHandling="1"
AdditionalOptions=""
RuntimeLibrary="2"
PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXUSINGDLL;_CONSOLE;wxUSE_GUI=0"
BasicRuntimeChecks="3"
DebugInformationFormat="3"
Detect64BitPortabilityProblems="true"
RuntimeTypeInfo="true"
AssemblerListingLocation="vc_mswunivudll\HelpGen\"
ObjectFile="vc_mswunivudll\HelpGen\"
ProgramDataBaseFileName="vc_mswunivudll\HelpGen.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswunivu;.\..\..\..\include;."
PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;WXUSINGDLL;_CONSOLE;wxUSE_GUI=0"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib"
AdditionalOptions=""
OutputFile="vc_mswunivudll\HelpGen.exe"
LinkIncremental="2"
SubSystem="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_dll"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswunivudll\HelpGen.pdb"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswunivudll\helpgen_vc8.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DLL Universal Debug|Win32"
OutputDirectory="vc_mswunivuddll"
IntermediateDirectory="vc_mswunivuddll\HelpGen"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswunivud;.\..\..\..\include;."
MinimalRebuild="true"
ExceptionHandling="1"
AdditionalOptions=""
RuntimeLibrary="3"
PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_CONSOLE;wxUSE_GUI=0"
BasicRuntimeChecks="3"
DebugInformationFormat="3"
Detect64BitPortabilityProblems="true"
RuntimeTypeInfo="true"
AssemblerListingLocation="vc_mswunivuddll\HelpGen\"
ObjectFile="vc_mswunivuddll\HelpGen\"
ProgramDataBaseFileName="vc_mswunivuddll\HelpGen.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswunivud;.\..\..\..\include;."
PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_CONSOLE;wxUSE_GUI=0"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib"
AdditionalOptions=""
OutputFile="vc_mswunivuddll\HelpGen.exe"
LinkIncremental="2"
SubSystem="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_dll"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswunivuddll\HelpGen.pdb"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswunivuddll\helpgen_vc8.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DLL Release|Win32"
OutputDirectory="vc_mswudll"
IntermediateDirectory="vc_mswudll\HelpGen"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswu;.\..\..\..\include;."
MinimalRebuild="false"
ExceptionHandling="1"
AdditionalOptions=""
RuntimeLibrary="2"
PreprocessorDefinitions="__WXMSW__;_UNICODE;WXUSINGDLL;_CONSOLE;wxUSE_GUI=0"
BasicRuntimeChecks="3"
DebugInformationFormat="3"
Detect64BitPortabilityProblems="true"
RuntimeTypeInfo="true"
AssemblerListingLocation="vc_mswudll\HelpGen\"
ObjectFile="vc_mswudll\HelpGen\"
ProgramDataBaseFileName="vc_mswudll\HelpGen.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswu;.\..\..\..\include;."
PreprocessorDefinitions="__WXMSW__;_UNICODE;WXUSINGDLL;_CONSOLE;wxUSE_GUI=0"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib"
AdditionalOptions=""
OutputFile="vc_mswudll\HelpGen.exe"
LinkIncremental="2"
SubSystem="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_dll"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswudll\HelpGen.pdb"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswudll\helpgen_vc8.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="DLL Debug|Win32"
OutputDirectory="vc_mswuddll"
IntermediateDirectory="vc_mswuddll\HelpGen"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswud;.\..\..\..\include;."
MinimalRebuild="true"
ExceptionHandling="1"
AdditionalOptions=""
RuntimeLibrary="3"
PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_CONSOLE;wxUSE_GUI=0"
BasicRuntimeChecks="3"
DebugInformationFormat="3"
Detect64BitPortabilityProblems="true"
RuntimeTypeInfo="true"
AssemblerListingLocation="vc_mswuddll\HelpGen\"
ObjectFile="vc_mswuddll\HelpGen\"
ProgramDataBaseFileName="vc_mswuddll\HelpGen.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_dll\mswud;.\..\..\..\include;."
PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;WXUSINGDLL;_CONSOLE;wxUSE_GUI=0"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib"
AdditionalOptions=""
OutputFile="vc_mswuddll\HelpGen.exe"
LinkIncremental="2"
SubSystem="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_dll"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswuddll\HelpGen.pdb"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswuddll\helpgen_vc8.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Universal Release|Win32"
OutputDirectory="vc_mswunivu"
IntermediateDirectory="vc_mswunivu\HelpGen"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswunivu;.\..\..\..\include;."
MinimalRebuild="false"
ExceptionHandling="1"
AdditionalOptions=""
RuntimeLibrary="2"
PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;_CONSOLE;wxUSE_GUI=0"
BasicRuntimeChecks="3"
DebugInformationFormat="3"
Detect64BitPortabilityProblems="true"
RuntimeTypeInfo="true"
AssemblerListingLocation="vc_mswunivu\HelpGen\"
ObjectFile="vc_mswunivu\HelpGen\"
ProgramDataBaseFileName="vc_mswunivu\HelpGen.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswunivu;.\..\..\..\include;."
PreprocessorDefinitions="__WXMSW__;__WXUNIVERSAL__;_UNICODE;_CONSOLE;wxUSE_GUI=0"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib"
AdditionalOptions=""
OutputFile="vc_mswunivu\HelpGen.exe"
LinkIncremental="2"
SubSystem="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_lib"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswunivu\HelpGen.pdb"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswunivu\helpgen_vc8.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Universal Debug|Win32"
OutputDirectory="vc_mswunivud"
IntermediateDirectory="vc_mswunivud\HelpGen"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswunivud;.\..\..\..\include;."
MinimalRebuild="true"
ExceptionHandling="1"
AdditionalOptions=""
RuntimeLibrary="3"
PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;_CONSOLE;wxUSE_GUI=0"
BasicRuntimeChecks="3"
DebugInformationFormat="3"
Detect64BitPortabilityProblems="true"
RuntimeTypeInfo="true"
AssemblerListingLocation="vc_mswunivud\HelpGen\"
ObjectFile="vc_mswunivud\HelpGen\"
ProgramDataBaseFileName="vc_mswunivud\HelpGen.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswunivud;.\..\..\..\include;."
PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXUNIVERSAL__;__WXDEBUG__;_UNICODE;_CONSOLE;wxUSE_GUI=0"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib"
AdditionalOptions=""
OutputFile="vc_mswunivud\HelpGen.exe"
LinkIncremental="2"
SubSystem="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_lib"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswunivud\HelpGen.pdb"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswunivud\helpgen_vc8.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="vc_mswu"
IntermediateDirectory="vc_mswu\HelpGen"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswu;.\..\..\..\include;."
MinimalRebuild="false"
ExceptionHandling="1"
AdditionalOptions=""
RuntimeLibrary="2"
PreprocessorDefinitions="__WXMSW__;_UNICODE;_CONSOLE;wxUSE_GUI=0"
BasicRuntimeChecks="3"
DebugInformationFormat="3"
Detect64BitPortabilityProblems="true"
RuntimeTypeInfo="true"
AssemblerListingLocation="vc_mswu\HelpGen\"
ObjectFile="vc_mswu\HelpGen\"
ProgramDataBaseFileName="vc_mswu\HelpGen.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswu;.\..\..\..\include;."
PreprocessorDefinitions="__WXMSW__;_UNICODE;_CONSOLE;wxUSE_GUI=0"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib"
AdditionalOptions=""
OutputFile="vc_mswu\HelpGen.exe"
LinkIncremental="2"
SubSystem="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_lib"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswu\HelpGen.pdb"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswu\helpgen_vc8.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory="vc_mswud"
IntermediateDirectory="vc_mswud\HelpGen"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswud;.\..\..\..\include;."
MinimalRebuild="true"
ExceptionHandling="1"
AdditionalOptions=""
RuntimeLibrary="3"
PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;_CONSOLE;wxUSE_GUI=0"
BasicRuntimeChecks="3"
DebugInformationFormat="3"
Detect64BitPortabilityProblems="true"
RuntimeTypeInfo="true"
AssemblerListingLocation="vc_mswud\HelpGen\"
ObjectFile="vc_mswud\HelpGen\"
ProgramDataBaseFileName="vc_mswud\HelpGen.pdb"
WarningLevel="4"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
Culture="1033"
AdditionalIncludeDirectories=".\..\..\..\lib\vc_lib\mswud;.\..\..\..\include;."
PreprocessorDefinitions="_DEBUG;__WXMSW__;__WXDEBUG__;_UNICODE;_CONSOLE;wxUSE_GUI=0"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib"
AdditionalOptions=""
OutputFile="vc_mswud\HelpGen.exe"
LinkIncremental="2"
SubSystem="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=".\..\..\..\lib\vc_lib"
GenerateManifest="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="vc_mswud\HelpGen.pdb"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
OutputFile="vc_mswud\helpgen_vc8.bsc"
SuppressStartupBanner="true"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
>
<File
RelativePath=".\HelpGen.cpp"
/>
<File
RelativePath=".\cjparser.cpp"
/>
<File
RelativePath=".\docripper.cpp"
/>
<File
RelativePath=".\ifcontext.cpp"
/>
<File
RelativePath=".\markup.cpp"
/>
<File
RelativePath=".\scriptbinder.cpp"
/>
<File
RelativePath=".\sourcepainter.cpp"
/>
<File
RelativePath=".\srcparser.cpp"
/>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -1,290 +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
/////////////////////////////////////////////////////////////////////////////
// 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 <stdio.h>
#include "ifcontext.h"
/***** Implementation for class spInterFileContext *****/
size_t spInterFileContext::GetFileNo( const wxString& fname )
{
for ( size_t i = 0; i != m_Files.size(); ++i )
{
if ( fname == m_Files[i] )
return i;
}
wxFAIL_MSG("File not found in array in function spInterFileContext::GetFileNo()");
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)->m_FileName );
}
/*** public interface ***/
spInterFileContext::spInterFileContext()
{}
spInterFileContext::~spInterFileContext()
{}
void spInterFileContext::AddFile( const wxString& fname, const wxString& content )
{
m_Files.push_back( fname );
m_Contents.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( wxString& source,
wxString& 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
wxFAIL_MSG("Overstepped the current source fragment in function\nspInterFileContext::DoAppendSourceFragment()");
cur = pos + len; break;
}
}
result.append( source, cur, ( pos + len ) - cur );
}
void spInterFileContext::GenerateContextBody( spContext& ctx,
wxString& source,
wxString& 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().empty() )
{
// 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 )
{
wxString& fname = ((spFile*)lst[f])->m_FileName;
size_t fileNo = GetFileNo( fname );
wxString& source = m_Contents[ fileNo ];
wxString 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 = m_Contents[ fileNo ].length();
// append the reminder
DoAppendSourceFragment( source, result,
size_t(lastSavedPos),
size_t(lastKnownPos - lastSavedPos) );
// replace original contnet with newly generated one
m_Contents[ 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 != m_Files.size(); ++i )
{
wxWritableCharBuffer s(m_Contents[i].char_str());
spFile* pFCtx = mParser.Parse( s, s + m_Contents[i].length() );
pFCtx->m_FileName = m_Files[i];
AddMember( pFCtx );
}
}
void spInterFileContext::WriteToFiles()
{
for( size_t i = 0; i != m_Files.size(); ++i )
{
FILE* fp = fopen( m_Files[i].c_str(), "w+t" );
if ( fp != NULL )
{
fwrite( m_Contents[i].c_str(), sizeof(char), m_Contents[i].length(), fp );
fclose( fp );
}
}
}
wxString spInterFileContext::GetBody( spContext* pCtx )
{
wxASSERT( pCtx->PositionIsKnown() ); // DBG:: should be checked by-user code
wxString& source = m_Contents[ GetFileNoOfContext( *pCtx ) ];
return wxString( source.c_str() + pCtx->mSrcOffset, pCtx->mContextLength );
}
wxString spInterFileContext::GetHeader( spContext* pCtx )
{
wxASSERT( pCtx->PositionIsKnown() ); // DBG:: should be checked by-user code
wxASSERT( pCtx->mHeaderLength != -1 ); // DBG:: -/-
wxString& source = m_Contents[ GetFileNoOfContext( *pCtx ) ];
return wxString( source.c_str() + pCtx->mSrcOffset, pCtx->mHeaderLength );
}

View File

@@ -1,101 +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 wxString& fname );
void InsertBookmarkSorted( BookmarkListT& lst, spBookmark& mark );
void DoAppendSourceFragment( wxString& source,
wxString& result,
size_t pos,
size_t len );
void GenerateContextBody( spContext& ctx,
wxString& source,
wxString& result,
size_t& lastSavedPos,
size_t& lastKnownPos );
public:
StrListT m_Files;
StrListT m_Contents;
public:
spInterFileContext();
virtual ~spInterFileContext();
void AddFile( const wxString& fname, const wxString& 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 wxString GetBody( spContext* pCtx = NULL );
virtual wxString GetHeader( spContext* pCtx = NULL );
};
#endif

View File

@@ -1,220 +0,0 @@
# =========================================================================
# This makefile was generated by
# Bakefile 0.2.3 (http://www.bakefile.org)
# Do not modify, all changes will be overwritten!
# =========================================================================
.autodepend
!ifndef BCCDIR
!ifndef MAKEDIR
!error Your Borland compiler does not define MAKEDIR. Please define the BCCDIR variable, e.g. BCCDIR=d:\bc4
!endif
BCCDIR = $(MAKEDIR)\..
!endif
!include ../../../build/msw/config.bcc
# -------------------------------------------------------------------------
# Do not modify the rest of this file!
# -------------------------------------------------------------------------
### Variables: ###
WX_RELEASE_NODOT = 29
COMPILER_PREFIX = bcc
OBJS = \
$(COMPILER_PREFIX)_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)
LIBDIRNAME = .\..\..\..\lib\$(COMPILER_PREFIX)_$(LIBTYPE_SUFFIX)$(CFG)
SETUPHDIR = \
$(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
HELPGEN_CXXFLAGS = $(__RUNTIME_LIBS_7) -I$(BCCDIR)\include $(__DEBUGINFO) \
$(__OPTIMIZEFLAG_2) $(__THREADSFLAG_6) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
$(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \
$(__GFXCTX_DEFINE_p) -I$(SETUPHDIR) -I.\..\..\..\include -I. $(__DLLFLAG_p) \
-DwxUSE_GUI=0 $(CPPFLAGS) $(CXXFLAGS)
HELPGEN_OBJECTS = \
$(OBJS)\HelpGen_HelpGen.obj \
$(OBJS)\HelpGen_cjparser.obj \
$(OBJS)\HelpGen_docripper.obj \
$(OBJS)\HelpGen_ifcontext.obj \
$(OBJS)\HelpGen_markup.obj \
$(OBJS)\HelpGen_scriptbinder.obj \
$(OBJS)\HelpGen_sourcepainter.obj \
$(OBJS)\HelpGen_srcparser.obj
### Conditionally set variables: ###
!if "$(USE_GUI)" == "0"
PORTNAME = base
!endif
!if "$(USE_GUI)" == "1"
PORTNAME = msw
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
WXDEBUGFLAG = d
!endif
!if "$(DEBUG_FLAG)" == "1"
WXDEBUGFLAG = d
!endif
!if "$(UNICODE)" == "1"
WXUNICODEFLAG = u
!endif
!if "$(WXUNIV)" == "1"
WXUNIVNAME = univ
!endif
!if "$(SHARED)" == "1"
WXDLLFLAG = dll
!endif
!if "$(SHARED)" == "0"
LIBTYPE_SUFFIX = lib
!endif
!if "$(SHARED)" == "1"
LIBTYPE_SUFFIX = dll
!endif
!if "$(MONOLITHIC)" == "0"
EXTRALIBS_FOR_BASE =
!endif
!if "$(MONOLITHIC)" == "1"
EXTRALIBS_FOR_BASE =
!endif
!if "$(BUILD)" == "debug"
__OPTIMIZEFLAG_2 = -Od
!endif
!if "$(BUILD)" == "release"
__OPTIMIZEFLAG_2 = -O2
!endif
!if "$(USE_THREADS)" == "0"
__THREADSFLAG_5 =
!endif
!if "$(USE_THREADS)" == "1"
__THREADSFLAG_5 = mt
!endif
!if "$(USE_THREADS)" == "0"
__THREADSFLAG_6 =
!endif
!if "$(USE_THREADS)" == "1"
__THREADSFLAG_6 = -tWM
!endif
!if "$(RUNTIME_LIBS)" == "dynamic"
__RUNTIME_LIBS_7 = -tWR
!endif
!if "$(RUNTIME_LIBS)" == "static"
__RUNTIME_LIBS_7 =
!endif
!if "$(RUNTIME_LIBS)" == "dynamic"
__RUNTIME_LIBS_8 = i
!endif
!if "$(RUNTIME_LIBS)" == "static"
__RUNTIME_LIBS_8 =
!endif
!if "$(WXUNIV)" == "1"
__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
__DEBUG_DEFINE_p = -D__WXDEBUG__
!endif
!if "$(DEBUG_FLAG)" == "1"
__DEBUG_DEFINE_p = -D__WXDEBUG__
!endif
!if "$(USE_EXCEPTIONS)" == "0"
__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
!endif
!if "$(USE_RTTI)" == "0"
__RTTI_DEFINE_p = -DwxNO_RTTI
!endif
!if "$(USE_THREADS)" == "0"
__THREAD_DEFINE_p = -DwxNO_THREADS
!endif
!if "$(UNICODE)" == "0"
__UNICODE_DEFINE_p = -DwxUSE_UNICODE=0
!endif
!if "$(UNICODE)" == "1"
__UNICODE_DEFINE_p = -D_UNICODE
!endif
!if "$(MSLU)" == "1"
__MSLU_DEFINE_p = -DwxUSE_UNICODE_MSLU=1
!endif
!if "$(USE_GDIPLUS)" == "1"
__GFXCTX_DEFINE_p = -DwxUSE_GRAPHICS_CONTEXT=1
!endif
!if "$(SHARED)" == "1"
__DLLFLAG_p = -DWXUSINGDLL
!endif
!if "$(MONOLITHIC)" == "0"
__WXLIB_BASE_p = \
wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
!endif
!if "$(MONOLITHIC)" == "1"
__WXLIB_MONO_p = \
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
!endif
!if "$(MSLU)" == "1"
__UNICOWS_LIB_p = unicows.lib
!endif
!if "$(USE_GDIPLUS)" == "1"
__GDIPLUS_LIB_p = gdiplus.lib
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO = -v
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO = -v-
!endif
!if "$(DEBUG_INFO)" == "0"
__DEBUGINFO = -v-
!endif
!if "$(DEBUG_INFO)" == "1"
__DEBUGINFO = -v
!endif
all: $(OBJS)
$(OBJS):
-if not exist $(OBJS) mkdir $(OBJS)
### Targets: ###
all: $(OBJS)\HelpGen.exe
clean:
-if exist $(OBJS)\*.obj del $(OBJS)\*.obj
-if exist $(OBJS)\*.res del $(OBJS)\*.res
-if exist $(OBJS)\*.csm del $(OBJS)\*.csm
-if exist $(OBJS)\HelpGen.exe del $(OBJS)\HelpGen.exe
-if exist $(OBJS)\HelpGen.tds del $(OBJS)\HelpGen.tds
-if exist $(OBJS)\HelpGen.ilc del $(OBJS)\HelpGen.ilc
-if exist $(OBJS)\HelpGen.ild del $(OBJS)\HelpGen.ild
-if exist $(OBJS)\HelpGen.ilf del $(OBJS)\HelpGen.ilf
-if exist $(OBJS)\HelpGen.ils del $(OBJS)\HelpGen.ils
$(OBJS)\HelpGen.exe: $(HELPGEN_OBJECTS)
ilink32 -Tpe -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) -ap @&&|
c0x32.obj $(HELPGEN_OBJECTS),$@,, $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib import32.lib cw32$(__THREADSFLAG_5)$(__RUNTIME_LIBS_8).lib,,
|
$(OBJS)\HelpGen_HelpGen.obj: .\HelpGen.cpp
$(CXX) -q -c -P -o$@ $(HELPGEN_CXXFLAGS) .\HelpGen.cpp
$(OBJS)\HelpGen_cjparser.obj: .\cjparser.cpp
$(CXX) -q -c -P -o$@ $(HELPGEN_CXXFLAGS) .\cjparser.cpp
$(OBJS)\HelpGen_docripper.obj: .\docripper.cpp
$(CXX) -q -c -P -o$@ $(HELPGEN_CXXFLAGS) .\docripper.cpp
$(OBJS)\HelpGen_ifcontext.obj: .\ifcontext.cpp
$(CXX) -q -c -P -o$@ $(HELPGEN_CXXFLAGS) .\ifcontext.cpp
$(OBJS)\HelpGen_markup.obj: .\markup.cpp
$(CXX) -q -c -P -o$@ $(HELPGEN_CXXFLAGS) .\markup.cpp
$(OBJS)\HelpGen_scriptbinder.obj: .\scriptbinder.cpp
$(CXX) -q -c -P -o$@ $(HELPGEN_CXXFLAGS) .\scriptbinder.cpp
$(OBJS)\HelpGen_sourcepainter.obj: .\sourcepainter.cpp
$(CXX) -q -c -P -o$@ $(HELPGEN_CXXFLAGS) .\sourcepainter.cpp
$(OBJS)\HelpGen_srcparser.obj: .\srcparser.cpp
$(CXX) -q -c -P -o$@ $(HELPGEN_CXXFLAGS) .\srcparser.cpp

View File

@@ -1,217 +0,0 @@
# =========================================================================
# This makefile was generated by
# Bakefile 0.2.3 (http://www.bakefile.org)
# Do not modify, all changes will be overwritten!
# =========================================================================
include ../../../build/msw/config.gcc
# -------------------------------------------------------------------------
# Do not modify the rest of this file!
# -------------------------------------------------------------------------
### Variables: ###
CPPDEPS = -MT$@ -MF$@.d -MD
WX_RELEASE_NODOT = 29
COMPILER_PREFIX = gcc
OBJS = \
$(COMPILER_PREFIX)_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)
LIBDIRNAME = .\..\..\..\lib\$(COMPILER_PREFIX)_$(LIBTYPE_SUFFIX)$(CFG)
SETUPHDIR = \
$(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
HELPGEN_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG_2) $(__THREADSFLAG) \
$(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
$(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \
$(__GFXCTX_DEFINE_p) -I$(SETUPHDIR) -I.\..\..\..\include -W -Wall -I. \
$(__DLLFLAG_p) -DwxUSE_GUI=0 $(__RTTIFLAG_5) $(__EXCEPTIONSFLAG_6) \
-Wno-ctor-dtor-privacy $(CPPFLAGS) $(CXXFLAGS)
HELPGEN_OBJECTS = \
$(OBJS)\HelpGen_HelpGen.o \
$(OBJS)\HelpGen_cjparser.o \
$(OBJS)\HelpGen_docripper.o \
$(OBJS)\HelpGen_ifcontext.o \
$(OBJS)\HelpGen_markup.o \
$(OBJS)\HelpGen_scriptbinder.o \
$(OBJS)\HelpGen_sourcepainter.o \
$(OBJS)\HelpGen_srcparser.o
### Conditionally set variables: ###
ifeq ($(GCC_VERSION),2.95)
GCCFLAGS = -fvtable-thunks
endif
ifeq ($(USE_GUI),0)
PORTNAME = base
endif
ifeq ($(USE_GUI),1)
PORTNAME = msw
endif
ifeq ($(BUILD),debug)
ifeq ($(DEBUG_FLAG),default)
WXDEBUGFLAG = d
endif
endif
ifeq ($(DEBUG_FLAG),1)
WXDEBUGFLAG = d
endif
ifeq ($(UNICODE),1)
WXUNICODEFLAG = u
endif
ifeq ($(WXUNIV),1)
WXUNIVNAME = univ
endif
ifeq ($(SHARED),1)
WXDLLFLAG = dll
endif
ifeq ($(SHARED),0)
LIBTYPE_SUFFIX = lib
endif
ifeq ($(SHARED),1)
LIBTYPE_SUFFIX = dll
endif
ifeq ($(MONOLITHIC),0)
EXTRALIBS_FOR_BASE =
endif
ifeq ($(MONOLITHIC),1)
EXTRALIBS_FOR_BASE =
endif
ifeq ($(BUILD),debug)
__OPTIMIZEFLAG_2 = -O0
endif
ifeq ($(BUILD),release)
__OPTIMIZEFLAG_2 = -O2
endif
ifeq ($(USE_RTTI),0)
__RTTIFLAG_5 = -fno-rtti
endif
ifeq ($(USE_RTTI),1)
__RTTIFLAG_5 =
endif
ifeq ($(USE_EXCEPTIONS),0)
__EXCEPTIONSFLAG_6 = -fno-exceptions
endif
ifeq ($(USE_EXCEPTIONS),1)
__EXCEPTIONSFLAG_6 =
endif
ifeq ($(WXUNIV),1)
__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
endif
ifeq ($(BUILD),debug)
ifeq ($(DEBUG_FLAG),default)
__DEBUG_DEFINE_p = -D__WXDEBUG__
endif
endif
ifeq ($(DEBUG_FLAG),1)
__DEBUG_DEFINE_p = -D__WXDEBUG__
endif
ifeq ($(USE_EXCEPTIONS),0)
__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
endif
ifeq ($(USE_RTTI),0)
__RTTI_DEFINE_p = -DwxNO_RTTI
endif
ifeq ($(USE_THREADS),0)
__THREAD_DEFINE_p = -DwxNO_THREADS
endif
ifeq ($(UNICODE),0)
__UNICODE_DEFINE_p = -DwxUSE_UNICODE=0
endif
ifeq ($(UNICODE),1)
__UNICODE_DEFINE_p = -D_UNICODE
endif
ifeq ($(MSLU),1)
__MSLU_DEFINE_p = -DwxUSE_UNICODE_MSLU=1
endif
ifeq ($(USE_GDIPLUS),1)
__GFXCTX_DEFINE_p = -DwxUSE_GRAPHICS_CONTEXT=1
endif
ifeq ($(SHARED),1)
__DLLFLAG_p = -DWXUSINGDLL
endif
ifeq ($(MONOLITHIC),0)
__WXLIB_BASE_p = \
-lwxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)
endif
ifeq ($(MONOLITHIC),1)
__WXLIB_MONO_p = \
-lwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)
endif
ifeq ($(MSLU),1)
__UNICOWS_LIB_p = -lunicows
endif
ifeq ($(USE_GDIPLUS),1)
__GDIPLUS_LIB_p = -lgdiplus
endif
ifeq ($(BUILD),debug)
ifeq ($(DEBUG_INFO),default)
__DEBUGINFO = -g
endif
endif
ifeq ($(BUILD),release)
ifeq ($(DEBUG_INFO),default)
__DEBUGINFO =
endif
endif
ifeq ($(DEBUG_INFO),0)
__DEBUGINFO =
endif
ifeq ($(DEBUG_INFO),1)
__DEBUGINFO = -g
endif
ifeq ($(USE_THREADS),0)
__THREADSFLAG =
endif
ifeq ($(USE_THREADS),1)
__THREADSFLAG = -mthreads
endif
all: $(OBJS)
$(OBJS):
-if not exist $(OBJS) mkdir $(OBJS)
### Targets: ###
all: $(OBJS)\HelpGen.exe
clean:
-if exist $(OBJS)\*.o del $(OBJS)\*.o
-if exist $(OBJS)\*.d del $(OBJS)\*.d
-if exist $(OBJS)\HelpGen.exe del $(OBJS)\HelpGen.exe
$(OBJS)\HelpGen.exe: $(HELPGEN_OBJECTS)
$(CXX) -o $@ $(HELPGEN_OBJECTS) $(LDFLAGS) $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32
$(OBJS)\HelpGen_HelpGen.o: ./HelpGen.cpp
$(CXX) -c -o $@ $(HELPGEN_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\HelpGen_cjparser.o: ./cjparser.cpp
$(CXX) -c -o $@ $(HELPGEN_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\HelpGen_docripper.o: ./docripper.cpp
$(CXX) -c -o $@ $(HELPGEN_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\HelpGen_ifcontext.o: ./ifcontext.cpp
$(CXX) -c -o $@ $(HELPGEN_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\HelpGen_markup.o: ./markup.cpp
$(CXX) -c -o $@ $(HELPGEN_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\HelpGen_scriptbinder.o: ./scriptbinder.cpp
$(CXX) -c -o $@ $(HELPGEN_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\HelpGen_sourcepainter.o: ./sourcepainter.cpp
$(CXX) -c -o $@ $(HELPGEN_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\HelpGen_srcparser.o: ./srcparser.cpp
$(CXX) -c -o $@ $(HELPGEN_CXXFLAGS) $(CPPDEPS) $<
.PHONY: all clean
SHELL := $(COMSPEC)
# Dependencies tracking:
-include $(OBJS)/*.d

View File

@@ -1,277 +0,0 @@
# =========================================================================
# This makefile was generated by
# Bakefile 0.2.3 (http://www.bakefile.org)
# Do not modify, all changes will be overwritten!
# =========================================================================
!include <../../../build/msw/config.vc>
# -------------------------------------------------------------------------
# Do not modify the rest of this file!
# -------------------------------------------------------------------------
### Variables: ###
WX_RELEASE_NODOT = 29
COMPILER_PREFIX = vc
OBJS = \
$(COMPILER_PREFIX)_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)$(DIR_SUFFIX_CPU)
LIBDIRNAME = \
.\..\..\..\lib\$(COMPILER_PREFIX)$(DIR_SUFFIX_CPU)_$(LIBTYPE_SUFFIX)$(CFG)
SETUPHDIR = \
$(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
HELPGEN_CXXFLAGS = /M$(__RUNTIME_LIBS_8)$(__DEBUGRUNTIME_3) /DWIN32 \
$(__DEBUGINFO_0) /Fd$(OBJS)\HelpGen.pdb $(____DEBUGRUNTIME_2_p) \
$(__OPTIMIZEFLAG_4) $(__NO_VC_CRTDBG_p) /D__WXMSW__ $(__WXUNIV_DEFINE_p) \
$(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \
$(__GFXCTX_DEFINE_p) /I$(SETUPHDIR) /I.\..\..\..\include /W4 /I. \
$(__DLLFLAG_p) /D_CONSOLE /DwxUSE_GUI=0 $(__RTTIFLAG_9) \
$(__EXCEPTIONSFLAG_10) $(CPPFLAGS) $(CXXFLAGS)
HELPGEN_OBJECTS = \
$(OBJS)\HelpGen_HelpGen.obj \
$(OBJS)\HelpGen_cjparser.obj \
$(OBJS)\HelpGen_docripper.obj \
$(OBJS)\HelpGen_ifcontext.obj \
$(OBJS)\HelpGen_markup.obj \
$(OBJS)\HelpGen_scriptbinder.obj \
$(OBJS)\HelpGen_sourcepainter.obj \
$(OBJS)\HelpGen_srcparser.obj
### Conditionally set variables: ###
!if "$(USE_GUI)" == "0"
PORTNAME = base
!endif
!if "$(USE_GUI)" == "1"
PORTNAME = msw
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
WXDEBUGFLAG = d
!endif
!if "$(DEBUG_FLAG)" == "1"
WXDEBUGFLAG = d
!endif
!if "$(UNICODE)" == "1"
WXUNICODEFLAG = u
!endif
!if "$(WXUNIV)" == "1"
WXUNIVNAME = univ
!endif
!if "$(TARGET_CPU)" == "amd64"
DIR_SUFFIX_CPU = _amd64
!endif
!if "$(TARGET_CPU)" == "amd64"
DIR_SUFFIX_CPU = _amd64
!endif
!if "$(TARGET_CPU)" == "ia64"
DIR_SUFFIX_CPU = _ia64
!endif
!if "$(TARGET_CPU)" == "ia64"
DIR_SUFFIX_CPU = _ia64
!endif
!if "$(SHARED)" == "1"
WXDLLFLAG = dll
!endif
!if "$(SHARED)" == "0"
LIBTYPE_SUFFIX = lib
!endif
!if "$(SHARED)" == "1"
LIBTYPE_SUFFIX = dll
!endif
!if "$(TARGET_CPU)" == "amd64"
LINK_TARGET_CPU = /MACHINE:AMD64
!endif
!if "$(TARGET_CPU)" == "amd64"
LINK_TARGET_CPU = /MACHINE:AMD64
!endif
!if "$(TARGET_CPU)" == "ia64"
LINK_TARGET_CPU = /MACHINE:IA64
!endif
!if "$(TARGET_CPU)" == "ia64"
LINK_TARGET_CPU = /MACHINE:IA64
!endif
!if "$(MONOLITHIC)" == "0"
EXTRALIBS_FOR_BASE =
!endif
!if "$(MONOLITHIC)" == "1"
EXTRALIBS_FOR_BASE =
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_0 = /Zi
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_0 =
!endif
!if "$(DEBUG_INFO)" == "0"
__DEBUGINFO_0 =
!endif
!if "$(DEBUG_INFO)" == "1"
__DEBUGINFO_0 = /Zi
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_1 = /DEBUG
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default"
__DEBUGINFO_1 =
!endif
!if "$(DEBUG_INFO)" == "0"
__DEBUGINFO_1 =
!endif
!if "$(DEBUG_INFO)" == "1"
__DEBUGINFO_1 = /DEBUG
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default"
____DEBUGRUNTIME_2_p = /D_DEBUG
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default"
____DEBUGRUNTIME_2_p =
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "0"
____DEBUGRUNTIME_2_p =
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "1"
____DEBUGRUNTIME_2_p = /D_DEBUG
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default"
__DEBUGRUNTIME_3 = d
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default"
__DEBUGRUNTIME_3 =
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "0"
__DEBUGRUNTIME_3 =
!endif
!if "$(DEBUG_RUNTIME_LIBS)" == "1"
__DEBUGRUNTIME_3 = d
!endif
!if "$(BUILD)" == "debug"
__OPTIMIZEFLAG_4 = /Od
!endif
!if "$(BUILD)" == "release"
__OPTIMIZEFLAG_4 = /O2
!endif
!if "$(USE_THREADS)" == "0"
__THREADSFLAG_7 = L
!endif
!if "$(USE_THREADS)" == "1"
__THREADSFLAG_7 = T
!endif
!if "$(RUNTIME_LIBS)" == "dynamic"
__RUNTIME_LIBS_8 = D
!endif
!if "$(RUNTIME_LIBS)" == "static"
__RUNTIME_LIBS_8 = $(__THREADSFLAG_7)
!endif
!if "$(USE_RTTI)" == "0"
__RTTIFLAG_9 =
!endif
!if "$(USE_RTTI)" == "1"
__RTTIFLAG_9 = /GR
!endif
!if "$(USE_EXCEPTIONS)" == "0"
__EXCEPTIONSFLAG_10 =
!endif
!if "$(USE_EXCEPTIONS)" == "1"
__EXCEPTIONSFLAG_10 = /EHsc
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "0"
__NO_VC_CRTDBG_p = /D__NO_VC_CRTDBG__
!endif
!if "$(BUILD)" == "release" && "$(DEBUG_FLAG)" == "1"
__NO_VC_CRTDBG_p = /D__NO_VC_CRTDBG__
!endif
!if "$(WXUNIV)" == "1"
__WXUNIV_DEFINE_p = /D__WXUNIVERSAL__
!endif
!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default"
__DEBUG_DEFINE_p = /D__WXDEBUG__
!endif
!if "$(DEBUG_FLAG)" == "1"
__DEBUG_DEFINE_p = /D__WXDEBUG__
!endif
!if "$(USE_EXCEPTIONS)" == "0"
__EXCEPTIONS_DEFINE_p = /DwxNO_EXCEPTIONS
!endif
!if "$(USE_RTTI)" == "0"
__RTTI_DEFINE_p = /DwxNO_RTTI
!endif
!if "$(USE_THREADS)" == "0"
__THREAD_DEFINE_p = /DwxNO_THREADS
!endif
!if "$(UNICODE)" == "0"
__UNICODE_DEFINE_p = /DwxUSE_UNICODE=0
!endif
!if "$(UNICODE)" == "1"
__UNICODE_DEFINE_p = /D_UNICODE
!endif
!if "$(MSLU)" == "1"
__MSLU_DEFINE_p = /DwxUSE_UNICODE_MSLU=1
!endif
!if "$(USE_GDIPLUS)" == "1"
__GFXCTX_DEFINE_p = /DwxUSE_GRAPHICS_CONTEXT=1
!endif
!if "$(SHARED)" == "1"
__DLLFLAG_p = /DWXUSINGDLL
!endif
!if "$(MONOLITHIC)" == "0"
__WXLIB_BASE_p = \
wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
!endif
!if "$(MONOLITHIC)" == "1"
__WXLIB_MONO_p = \
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
!endif
!if "$(MSLU)" == "1"
__UNICOWS_LIB_p = unicows.lib
!endif
!if "$(USE_GDIPLUS)" == "1"
__GDIPLUS_LIB_p = gdiplus.lib
!endif
all: $(OBJS)
$(OBJS):
-if not exist $(OBJS) mkdir $(OBJS)
### Targets: ###
all: $(OBJS)\HelpGen.exe
clean:
-if exist $(OBJS)\*.obj del $(OBJS)\*.obj
-if exist $(OBJS)\*.res del $(OBJS)\*.res
-if exist $(OBJS)\*.pch del $(OBJS)\*.pch
-if exist $(OBJS)\HelpGen.exe del $(OBJS)\HelpGen.exe
-if exist $(OBJS)\HelpGen.ilk del $(OBJS)\HelpGen.ilk
-if exist $(OBJS)\HelpGen.pdb del $(OBJS)\HelpGen.pdb
$(OBJS)\HelpGen.exe: $(HELPGEN_OBJECTS)
link /NOLOGO /OUT:$@ $(LDFLAGS) $(__DEBUGINFO_1) /pdb:"$(OBJS)\HelpGen.pdb" $(LINK_TARGET_CPU) /LIBPATH:$(LIBDIRNAME) /SUBSYSTEM:CONSOLE @<<
$(HELPGEN_OBJECTS) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib
<<
$(OBJS)\HelpGen_HelpGen.obj: .\HelpGen.cpp
$(CXX) /c /nologo /TP /Fo$@ $(HELPGEN_CXXFLAGS) .\HelpGen.cpp
$(OBJS)\HelpGen_cjparser.obj: .\cjparser.cpp
$(CXX) /c /nologo /TP /Fo$@ $(HELPGEN_CXXFLAGS) .\cjparser.cpp
$(OBJS)\HelpGen_docripper.obj: .\docripper.cpp
$(CXX) /c /nologo /TP /Fo$@ $(HELPGEN_CXXFLAGS) .\docripper.cpp
$(OBJS)\HelpGen_ifcontext.obj: .\ifcontext.cpp
$(CXX) /c /nologo /TP /Fo$@ $(HELPGEN_CXXFLAGS) .\ifcontext.cpp
$(OBJS)\HelpGen_markup.obj: .\markup.cpp
$(CXX) /c /nologo /TP /Fo$@ $(HELPGEN_CXXFLAGS) .\markup.cpp
$(OBJS)\HelpGen_scriptbinder.obj: .\scriptbinder.cpp
$(CXX) /c /nologo /TP /Fo$@ $(HELPGEN_CXXFLAGS) .\scriptbinder.cpp
$(OBJS)\HelpGen_sourcepainter.obj: .\sourcepainter.cpp
$(CXX) /c /nologo /TP /Fo$@ $(HELPGEN_CXXFLAGS) .\sourcepainter.cpp
$(OBJS)\HelpGen_srcparser.obj: .\srcparser.cpp
$(CXX) /c /nologo /TP /Fo$@ $(HELPGEN_CXXFLAGS) .\srcparser.cpp

View File

@@ -1,274 +0,0 @@
# =========================================================================
# This makefile was generated by
# Bakefile 0.2.3 (http://www.bakefile.org)
# Do not modify, all changes will be overwritten!
# =========================================================================
!include ../../../build/msw/config.wat
# -------------------------------------------------------------------------
# Do not modify the rest of this file!
# -------------------------------------------------------------------------
# Speed up compilation a bit:
!ifdef __LOADDLL__
! loaddll wcc wccd
! loaddll wccaxp wccdaxp
! loaddll wcc386 wccd386
! loaddll wpp wppdi86
! loaddll wppaxp wppdaxp
! loaddll wpp386 wppd386
! loaddll wlink wlink
! loaddll wlib wlibd
!endif
# We need these variables in some bakefile-made rules:
WATCOM_CWD = $+ $(%cdrive):$(%cwd) $-
### Conditionally set variables: ###
PORTNAME =
!ifeq USE_GUI 0
PORTNAME = base
!endif
!ifeq USE_GUI 1
PORTNAME = msw
!endif
WXDEBUGFLAG =
!ifeq BUILD debug
!ifeq DEBUG_FLAG default
WXDEBUGFLAG = d
!endif
!endif
!ifeq DEBUG_FLAG 1
WXDEBUGFLAG = d
!endif
WXUNICODEFLAG =
!ifeq UNICODE 1
WXUNICODEFLAG = u
!endif
WXUNIVNAME =
!ifeq WXUNIV 1
WXUNIVNAME = univ
!endif
WXDLLFLAG =
!ifeq SHARED 1
WXDLLFLAG = dll
!endif
LIBTYPE_SUFFIX =
!ifeq SHARED 0
LIBTYPE_SUFFIX = lib
!endif
!ifeq SHARED 1
LIBTYPE_SUFFIX = dll
!endif
EXTRALIBS_FOR_BASE =
!ifeq MONOLITHIC 0
EXTRALIBS_FOR_BASE =
!endif
!ifeq MONOLITHIC 1
EXTRALIBS_FOR_BASE =
!endif
__DEBUGINFO_0 =
!ifeq BUILD debug
!ifeq DEBUG_INFO default
__DEBUGINFO_0 = -d2
!endif
!endif
!ifeq BUILD release
!ifeq DEBUG_INFO default
__DEBUGINFO_0 = -d0
!endif
!endif
!ifeq DEBUG_INFO 0
__DEBUGINFO_0 = -d0
!endif
!ifeq DEBUG_INFO 1
__DEBUGINFO_0 = -d2
!endif
__DEBUGINFO_1 =
!ifeq BUILD debug
!ifeq DEBUG_INFO default
__DEBUGINFO_1 = debug all
!endif
!endif
!ifeq BUILD release
!ifeq DEBUG_INFO default
__DEBUGINFO_1 =
!endif
!endif
!ifeq DEBUG_INFO 0
__DEBUGINFO_1 =
!endif
!ifeq DEBUG_INFO 1
__DEBUGINFO_1 = debug all
!endif
__OPTIMIZEFLAG_2 =
!ifeq BUILD debug
__OPTIMIZEFLAG_2 = -od
!endif
!ifeq BUILD release
__OPTIMIZEFLAG_2 = -ot -ox
!endif
__THREADSFLAG_5 =
!ifeq USE_THREADS 0
__THREADSFLAG_5 =
!endif
!ifeq USE_THREADS 1
__THREADSFLAG_5 = -bm
!endif
__RUNTIME_LIBS_6 =
!ifeq RUNTIME_LIBS dynamic
__RUNTIME_LIBS_6 = -br
!endif
!ifeq RUNTIME_LIBS static
__RUNTIME_LIBS_6 =
!endif
__RTTIFLAG_7 =
!ifeq USE_RTTI 0
__RTTIFLAG_7 =
!endif
!ifeq USE_RTTI 1
__RTTIFLAG_7 = -xr
!endif
__EXCEPTIONSFLAG_8 =
!ifeq USE_EXCEPTIONS 0
__EXCEPTIONSFLAG_8 =
!endif
!ifeq USE_EXCEPTIONS 1
__EXCEPTIONSFLAG_8 = -xs
!endif
__WXUNIV_DEFINE_p =
!ifeq WXUNIV 1
__WXUNIV_DEFINE_p = -d__WXUNIVERSAL__
!endif
__DEBUG_DEFINE_p =
!ifeq BUILD debug
!ifeq DEBUG_FLAG default
__DEBUG_DEFINE_p = -d__WXDEBUG__
!endif
!endif
!ifeq DEBUG_FLAG 1
__DEBUG_DEFINE_p = -d__WXDEBUG__
!endif
__EXCEPTIONS_DEFINE_p =
!ifeq USE_EXCEPTIONS 0
__EXCEPTIONS_DEFINE_p = -dwxNO_EXCEPTIONS
!endif
__RTTI_DEFINE_p =
!ifeq USE_RTTI 0
__RTTI_DEFINE_p = -dwxNO_RTTI
!endif
__THREAD_DEFINE_p =
!ifeq USE_THREADS 0
__THREAD_DEFINE_p = -dwxNO_THREADS
!endif
__UNICODE_DEFINE_p =
!ifeq UNICODE 0
__UNICODE_DEFINE_p = -dwxUSE_UNICODE=0
!endif
!ifeq UNICODE 1
__UNICODE_DEFINE_p = -d_UNICODE
!endif
__GFXCTX_DEFINE_p =
!ifeq USE_GDIPLUS 1
__GFXCTX_DEFINE_p = -dwxUSE_GRAPHICS_CONTEXT=1
!endif
__DLLFLAG_p =
!ifeq SHARED 1
__DLLFLAG_p = -dWXUSINGDLL
!endif
__WXLIB_BASE_p =
!ifeq MONOLITHIC 0
__WXLIB_BASE_p = &
wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
!endif
__WXLIB_MONO_p =
!ifeq MONOLITHIC 1
__WXLIB_MONO_p = &
wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib
!endif
__GDIPLUS_LIB_p =
!ifeq USE_GDIPLUS 1
__GDIPLUS_LIB_p = gdiplus.lib
!endif
### Variables: ###
WX_RELEASE_NODOT = 29
COMPILER_PREFIX = wat
OBJS = &
$(COMPILER_PREFIX)_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)
LIBDIRNAME = .\..\..\..\lib\$(COMPILER_PREFIX)_$(LIBTYPE_SUFFIX)$(CFG)
SETUPHDIR = &
$(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
HELPGEN_CXXFLAGS = $(__DEBUGINFO_0) $(__OPTIMIZEFLAG_2) $(__THREADSFLAG_5) &
$(__RUNTIME_LIBS_6) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) &
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) &
$(__UNICODE_DEFINE_p) $(__GFXCTX_DEFINE_p) -i=$(SETUPHDIR) &
-i=.\..\..\..\include -wx -wcd=549 -wcd=656 -wcd=657 -wcd=667 -i=. &
$(__DLLFLAG_p) -dwxUSE_GUI=0 $(__RTTIFLAG_7) $(__EXCEPTIONSFLAG_8) &
$(CPPFLAGS) $(CXXFLAGS)
HELPGEN_OBJECTS = &
$(OBJS)\HelpGen_HelpGen.obj &
$(OBJS)\HelpGen_cjparser.obj &
$(OBJS)\HelpGen_docripper.obj &
$(OBJS)\HelpGen_ifcontext.obj &
$(OBJS)\HelpGen_markup.obj &
$(OBJS)\HelpGen_scriptbinder.obj &
$(OBJS)\HelpGen_sourcepainter.obj &
$(OBJS)\HelpGen_srcparser.obj
all : $(OBJS)
$(OBJS) :
-if not exist $(OBJS) mkdir $(OBJS)
### Targets: ###
all : .SYMBOLIC $(OBJS)\HelpGen.exe
clean : .SYMBOLIC
-if exist $(OBJS)\*.obj del $(OBJS)\*.obj
-if exist $(OBJS)\*.res del $(OBJS)\*.res
-if exist $(OBJS)\*.lbc del $(OBJS)\*.lbc
-if exist $(OBJS)\*.ilk del $(OBJS)\*.ilk
-if exist $(OBJS)\*.pch del $(OBJS)\*.pch
-if exist $(OBJS)\HelpGen.exe del $(OBJS)\HelpGen.exe
$(OBJS)\HelpGen.exe : $(HELPGEN_OBJECTS)
@%create $(OBJS)\HelpGen.lbc
@%append $(OBJS)\HelpGen.lbc option quiet
@%append $(OBJS)\HelpGen.lbc name $^@
@%append $(OBJS)\HelpGen.lbc option caseexact
@%append $(OBJS)\HelpGen.lbc $(LDFLAGS) $(__DEBUGINFO_1) libpath $(LIBDIRNAME) system nt ref 'main_'
@for %i in ($(HELPGEN_OBJECTS)) do @%append $(OBJS)\HelpGen.lbc file %i
@for %i in ( $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib) do @%append $(OBJS)\HelpGen.lbc library %i
@%append $(OBJS)\HelpGen.lbc
@for %i in () do @%append $(OBJS)\HelpGen.lbc option stack=%i
wlink @$(OBJS)\HelpGen.lbc
$(OBJS)\HelpGen_HelpGen.obj : .AUTODEPEND .\HelpGen.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_cjparser.obj : .AUTODEPEND .\cjparser.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_docripper.obj : .AUTODEPEND .\docripper.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_ifcontext.obj : .AUTODEPEND .\ifcontext.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_markup.obj : .AUTODEPEND .\markup.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_scriptbinder.obj : .AUTODEPEND .\scriptbinder.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_sourcepainter.obj : .AUTODEPEND .\sourcepainter.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(HELPGEN_CXXFLAGS) $<
$(OBJS)\HelpGen_srcparser.obj : .AUTODEPEND .\srcparser.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(HELPGEN_CXXFLAGS) $<

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,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,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,617 +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 <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 wx_log2(size_t nr)
{
size_t tmp = 0;
while (nr >= 2 )
{
nr /= 2;
++tmp;
}
return tmp;
}
/***** Implementation for class ScriptStream *****/
ScriptStream::ScriptStream()
: m_pBuf(0),
m_Size(0),
m_Capacity(0)
{}
ScriptStream::~ScriptStream()
{
if ( m_pBuf ) delete m_pBuf;
}
void ScriptStream::WriteBytes( const void* srcBuf, size_t count )
{
if ( !count ) return;
// increase the capacity if necessary
if ( m_Size + count > m_Capacity )
{
m_Capacity =
( 0x2 << (wx_log2( m_Size + count ) + 1 ) );
if ( m_Capacity < 128 ) m_Capacity = 128;
char* oldBuf = m_pBuf;
m_pBuf = new char[m_Capacity];
if ( oldBuf )
{
memcpy( m_pBuf, oldBuf, m_Size );
delete oldBuf;
}
}
// append new data
memcpy( &m_pBuf[m_Size], srcBuf, count );
m_Size += count;
}
ScriptStream& ScriptStream::operator<<( const char* str )
{
WriteBytes( str, strlen( str ) );
return *this;
}
ScriptStream& ScriptStream::operator<<( const wxString& 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 wxString& templateText )
{
wxString tmp = templateText;
m_TText = (char*)malloc( tmp.length() + 1 );
strcpy( m_TText, tmp.c_str() );
}
ScriptTemplate::~ScriptTemplate()
{
for( size_t i = 0; i != m_Vars.size(); ++i )
delete m_Vars[i];
free( m_TText );
}
bool ScriptTemplate::HasVar( const char* name )
{
for( size_t i = 0; i != m_Vars.size(); ++i )
if ( strcmp( m_Vars[i]->m_Name, name ) == 0 )
return 1;
return 0;
}
void ScriptTemplate::AddStringVar ( const char* name, int ofs )
{
m_Vars.push_back( new TVarInfo( name, ofs, TVAR_STRING ) );
}
void ScriptTemplate::AddIntegerVar( const char* name, int ofs )
{
m_Vars.push_back( new TVarInfo( name, ofs, TVAR_INTEGER ) );
}
void ScriptTemplate::AddDoubleVar ( const char* name, int ofs )
{
m_Vars.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 );
m_Vars.push_back( pInfo );
pInfo->m_RefOfs = ofsRefToFirstObj;
pInfo->m_SizeIntOfs = ofsObjSizeInt;
pInfo->m_ObjRefTemplOfs = ofsObjRefTempl;
}
inline void ScriptTemplate::PrintVar( TVarInfo* pInfo,
void* dataObj,
ScriptStream& stm )
{
char buf[128];
switch ( pInfo->m_Type )
{
case TVAR_INTEGER :
{
sprintf(buf, "%d",*( (int*) ((char*)dataObj + pInfo->m_Ofs) ) );
stm.WriteBytes( buf, strlen(buf ) );
break;
}
case TVAR_STRING :
{
wxString& str = *( (wxString*) ((char*)dataObj+pInfo->m_Ofs) );
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->m_Ofs value is " << (int)pInfo->m_Ofs << endl;
cout << "DBG:: d+pInfo->m_Ofs is " << (int)((char*)dataObj + pInfo->m_Ofs) << endl;
cout << "DBG:: pInfo->m_Name is " << pInfo->m_Name << endl;
cout << "DBG:: pInfo->m_Type is " << pInfo->m_Type << 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->m_Ofs) ) );
stm.WriteBytes( buf, strlen(buf ) );
break;
}
case TVAR_REF_ARRAY :
{
TArrayInfo& info = *((TArrayInfo*)pInfo);
int sz = *((int*) ( (char*)dataObj+info.m_SizeIntOfs ));
if ( !sz )
{
// DBG::
int u = 0;
++u;
break;
}
int* array = *((int**)( (char*)dataObj+info.m_RefOfs ));
ScriptTemplate* pRefTempl;
for( int i = 0; i != sz; ++i )
{
pRefTempl =
*((ScriptTemplate**)((char*)(array[i])+info.m_ObjRefTemplOfs));
pRefTempl->PrintScript( (void*)array[i], stm );
}
break;
}
default : break;
}
}
void ScriptTemplate::PrintScript( void* dataObj, ScriptStream& stm )
{
char* cur = m_TText;
// 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 = m_Vars.size();
// bool found = false;
for( size_t i = 0; i != sz; ++i )
{
if ( strcmp( m_Vars[i]->m_Name, start ) == 0 )
{
PrintVar( m_Vars[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::m_IdCounter = 0;
ScriptSection::ScriptSection( const wxString& name,
const wxString& body,
ScriptTemplate* pSectionTemplate,
ScriptTemplate* pReferenceTemplate,
bool autoHide,
bool sorted
)
: m_pParent ( NULL ),
m_Name ( name ),
m_Body ( body ),
m_AutoHide ( autoHide ),
m_SortOn ( sorted ),
m_pSectTempl( pSectionTemplate ),
m_pRefTempl ( pReferenceTemplate ),
m_RefCount( 0 ),
m_ArrSize( 0 )
{
// generate GUID
wxChar buf[32];
wxSprintf( buf, _T("%d"), ++m_IdCounter );
m_Id = buf;
}
ScriptSection::~ScriptSection()
{
SectListT lst = m_Subsections;
while( m_Subsections.size() )
m_Subsections[0]->RemoveRef();
for( size_t i = 0; i != m_References.size(); ++i )
m_References[i]->RemoveRef();
}
void ScriptSection::AddRef()
{
++m_RefCount;
}
void ScriptSection::RemoveRef()
{
if ( !m_RefCount || !(--m_RefCount) )
{
if (m_pParent)
{
// remove ourselves from parent's list
SectListT& lst = m_pParent->m_Subsections;
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 = m_Subsections.size();
for( size_t i = 0; i != sz; ++i )
{
// DBG::
//ScriptSection& sect = *m_Subsections[i];
if ( m_Subsections[i]->m_Name == buf )
{
if ( name[cur] == '/' )
// search recursivelly
return m_Subsections[i]->GetSubsection( &name[cur+1] );
else
return m_Subsections[i];
}
}
return 0;
}
void ScriptSection::AddSection( ScriptSection* pSection,
bool addToReferencesToo
)
{
m_Subsections.push_back( pSection );
pSection->AddRef();
// can add section to multiple containers
// ASSERT( pSection->m_pParent == 0 );
pSection->m_pParent = this;
if ( addToReferencesToo )
AddReference( pSection );
}
void ScriptSection::AddReference( ScriptSection* pReferredSection )
{
m_References.push_back( pReferredSection );
pReferredSection->AddRef();
// set up mandatory fields used by ScriptTemplate
m_ArrSize = m_References.size();
if ( m_ArrSize )
m_RefFirst = (void*)&m_References[0];
}
SectListT& ScriptSection::GetSubsections()
{
return m_Subsections;
}
// static method:
void ScriptSection::RegisterTemplate( ScriptTemplate& sectionTempalte )
{
int nameOfs, bodyOfs, idOfs,
arrRefOfs, arrSizeOfs, refTemplOfs;
// obtaining offsets of member vars
GET_VAR_OFS( ScriptSection, m_Name, &nameOfs )
GET_VAR_OFS( ScriptSection, m_Body, &bodyOfs )
GET_VAR_OFS( ScriptSection, m_Id, &idOfs )
GET_VAR_OFS( ScriptSection, m_RefFirst,&arrRefOfs )
GET_VAR_OFS( ScriptSection, m_ArrSize, &arrSizeOfs )
GET_VAR_OFS( ScriptSection, m_pRefTempl, &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 ( m_pSectTempl )
m_pSectTempl->PrintScript( this, stm );
// attach contents subsections at the end of this content
for( size_t i = 0; i != m_Subsections.size(); ++i )
m_Subsections[i]->Print( stm );
}
void ScriptSection::DoRemoveEmptySections(int& nRemoved, SectListT& removedLst)
{
for( size_t i = 0; i != m_Subsections.size(); ++i )
{
ScriptSection& sect = *m_Subsections[i];
sect.DoRemoveEmptySections( nRemoved, removedLst );
if (sect.m_AutoHide )
if ( sect.m_References.size() == 0 )
{
bool found = false;
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 != m_Subsections.size(); ++i )
{
m_Subsections[i]->DoRemoveDeadLinks( removedLst );
}
for( size_t n = 0; n != m_References.size(); ++n )
{
for( size_t k = 0; k != dsz; ++k )
if ( removedLst[k] == m_References[n] )
{
m_References.erase( &m_References[n] );
--n;
// set up mandatory fields used by ScriptTemplate
m_ArrSize = m_References.size();
if ( m_ArrSize )
m_RefFirst = (void*)&m_References[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 ( !fp ) 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,373 +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"
#endif
#ifndef ASSERT
// assert yourself
#define ASSERT(x) if (!(x) ) throw;
#endif
#include "markup.h"
// just another portable stream class...
class ScriptStream
{
protected:
char* m_pBuf;
size_t m_Size;
size_t m_Capacity;
public:
ScriptStream();
~ScriptStream();
void WriteBytes( const void* srcBuf, size_t count );
ScriptStream& operator<<( const char* str );
ScriptStream& operator<<( const wxString& str );
ScriptStream& operator<<( char ch );
void endl();
inline char* GetBuf() { return m_pBuf; }
inline size_t GetBufSize() { return m_Size; }
// clears current contents of the stream
void Reset() { m_Size = 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* m_Name;
int m_Type;
int m_Ofs;
TVarInfo( const char* name, int ofs, int varType )
: m_Name(name),
m_Type( varType ),
m_Ofs( ofs )
{}
};
struct TArrayInfo : public TVarInfo
{
public:
int m_RefOfs;
int m_SizeIntOfs;
int m_ObjRefTemplOfs;
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 wxString object here - parsing of
// C string can be much faster (in debug v.)
char* m_TText;
TVarListT m_Vars;
inline void PrintVar( TVarInfo* pInfo,
void* dataObj,
ScriptStream& stm );
public:
ScriptTemplate( const wxString& 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)" are
// reseved template variables of ScriptSection
// the below there members are registered to ScriptTemplate,
// GUID within the section tree (numeric)
ScriptSection* m_pParent;
wxString m_Id; // $(ID)
wxString m_Name;// $(NAME)
wxString m_Body; // $(BODY)
// NULL, if this section is not aggregated anywhere
SectListT m_Subsections; // aggregated sectons
SectListT m_References; // registered as $(REFLIST)
bool m_AutoHide; // see autoHide arg, in constructor
bool m_SortOn; // true, if sort subsectons by naem
// tempalte for this section
ScriptTemplate* m_pSectTempl;
// template used for links (or references) to this section
ScriptTemplate* m_pRefTempl;
// do not call destructor of this object,
// call RemoveRef() instead
int m_RefCount;
static int m_IdCounter; // generator of GUIDs
// fields registered and used by ScriptTemplate object
void* m_RefFirst;
int m_ArrSize;
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 wxString& name = wxEmptyString,
const wxString& body = wxEmptyString,
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 m_Tags;
// 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& WXUNUSED(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()
: m_Tags(0) // no defaul script
{}
// dectrouctors of polymorphic classes SHOULD be virtual
virtual ~DocGeneratorBase() {}
// returns tags, being used for specific target script
MarkupTagsT GetScriptMarkupTags() { return m_Tags; }
// 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 )
{ m_Tags = 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 successful
virtual bool SaveDocument( const char* fname,
const char* fopenOptions = "w",
ScriptSection* pFromSection = NULL
);
};
#endif

View File

@@ -1,679 +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 WXUNUSED(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; \
wxUnusedVar( cur_rank );
#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 = false;
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;
wxUnusedVar(isMultiline);
}
/***** 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 += wxString( 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 = wxEmptyString;
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(wxString& result, MarkupTagsT tags)
{
// this method works, only if results of processing
// are collected
// ASSERT( mCollectResultsOn );
result = wxEmptyString;
unsigned pos = 0;
for( size_t i = 0; i != mBlocks.size(); ++i )
{
int desc = mBlocks[i];
unsigned len = desc & 0xFFFF;
int rank = (desc >> 16) & 0xFFFF;
result += tags[ rank_tags_map[rank] ].start;
for( unsigned n = 0; n != len; ++n )
{
result += mResultStr[(unsigned int)(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,101 +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"
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:
wxString 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(wxString& result, MarkupTagsT tags);
// returns vector of block descriptors, see SPBlockListT definition
// (block descriptors can be used for fast custom highlighted 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,703 +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 <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;
}
wxString& spComment::GetText()
{
return m_Text;
}
wxString spComment::GetText() const
{
return m_Text;
}
/***** Implementation for class spContext *****/
spContext::spContext()
: m_pParent ( 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;
}
wxString spContext::GetVirtualContextBody()
{
wxASSERT( mIsVirtualContext );
return mVirtualContextBody;
}
wxString spContext::GetFooterOfVirtualContextBody()
{
wxASSERT( mIsVirtualContext );
return mVittualContextFooter;
}
void spContext::SetVirtualContextBody( const wxString& body,
bool hasChildren,
const wxString& footer )
{
mVirtualContextHasChildren = hasChildren;
mVirtualContextBody = body;
mVittualContextFooter = footer;
// atuomaticllay becomes virtual context
mIsVirtualContext = true;
}
wxString spContext::GetBody( spContext* pCtx )
{
if ( ( pCtx == NULL || pCtx == this ) && mIsVirtualContext )
return mVirtualContextBody;
if ( GetParent() )
return GetParent()->GetBody( ( pCtx != NULL ) ? pCtx : this );
else
return wxEmptyString; // source-fragment cannot be found
}
wxString spContext::GetHeader( spContext* pCtx )
{
if ( GetParent() )
return GetParent()->GetHeader( ( pCtx != NULL ) ? pCtx : this );
else
return wxEmptyString; // 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->m_pParent = this;
}
void spContext::AddComment( spComment* pComment )
{
mComments.push_back( pComment );
}
MMemberListT& spContext::GetMembers()
{
return mMembers;
}
spContext* spContext::FindContext( const wxString& 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 ( m_pParent )
m_pParent->RemoveChild( this );
else
// context should have a parent
wxFAIL_MSG("Context should have a parent");
}
spContext* spContext::GetOutterContext()
{
return m_pParent;
}
bool spContext::HasOutterContext()
{
return ( m_pParent != 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*)m_pParent );
}
spFile& spContext::GetFile()
{
wxASSERT( GetOutterContext()->GetType() == SP_CTX_FILE );
return *((spFile*)m_pParent );
}
spNameSpace& spContext::GetNameSpace()
{
wxASSERT( GetOutterContext()->GetType() == SP_CTX_NAMESPACE );
return *((spNameSpace*)m_pParent );
}
spOperation& spContext::GetOperation()
{
wxASSERT( GetOutterContext()->GetType() == SP_CTX_OPERATION );
return *((spOperation*)m_pParent );
}
/***** Implementation for class spClass *****/
void spClass::SortMembers()
{
// TBD::
}
/***** Implementation for class spOperation *****/
spOperation::spOperation()
: mHasDefinition( false )
{
mIsConstant =
mIsVirtual =
mHasDefinition = false;
}
wxString spOperation::GetFullName(MarkupTagsT tags)
{
wxString txt = tags[TAG_BOLD].start + m_RetType;
txt += _T(" ");
txt += m_Name;
txt += _T("( ");
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 += _T(", ");
txt += tags[TAG_BOLD].start;
txt += param.m_Type;
txt += tags[TAG_BOLD].end;
txt += tags[TAG_ITALIC].start;
txt += _T(" ");
txt += param.m_Name;
if ( !param.m_InitVal.empty() )
{
txt += _T(" = ");
txt += tags[TAG_BOLD].start;
txt += param.m_InitVal;
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 *****/
wxString spPreprocessorLine::CPP_GetIncludedFileNeme() const
{
wxASSERT( GetStatementType() == SP_PREP_DEF_INCLUDE_FILE );
size_t i = 0;
while( i < m_Line.length() && m_Line[i] != _T('"') && m_Line[i] != _T('<') )
++i;
++i;
size_t start = i;
while( i < m_Line.length() && m_Line[i] != _T('"') && m_Line[i] != _T('>') )
++i;
if ( start < m_Line.length() )
{
wxString fname;
fname.append( m_Line, start, ( i - start ) );
return fname;
}
else
return wxEmptyString; // 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 ( !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;
}
// ===========================================================================
// debug methods
// ===========================================================================
#ifdef __WXDEBUG__
void spContext::Dump(const wxString& indent) const
{
DumpThis(indent);
// increase it for the children
wxString indentChild = indent + " ";
for ( MMemberListT::const_iterator i = mMembers.begin();
i != mMembers.end();
i++ ) {
(*i)->Dump(indentChild);
}
}
void spContext::DumpThis(const wxString& WXUNUSED(indent)) const
{
wxFAIL_MSG("abstract base class can't be found in parser tree!");
}
void spParameter::DumpThis(const wxString& indent) const
{
wxLogDebug("%sparam named '%s' of type '%s'",
indent.c_str(), m_Name.c_str(), m_Type.c_str());
}
void spAttribute::DumpThis(const wxString& indent) const
{
wxLogDebug("%svariable named '%s' of type '%s'",
indent.c_str(), m_Name.c_str(), m_Type.c_str());
}
void spOperation::DumpThis(const wxString& indent) const
{
wxString protection;
if ( !mScope.empty() ) {
switch ( mVisibility ) {
case SP_VIS_PUBLIC:
protection = "public";
break;
case SP_VIS_PROTECTED:
protection = "protected";
break;
case SP_VIS_PRIVATE:
protection = "private";
break;
default:
wxFAIL_MSG("unknown protection type");
}
}
else {
protection = "global";
}
wxString constStr,virtualStr;
if(mIsConstant) constStr = _T("const ");
if(mIsVirtual) virtualStr = _T("virtual ");
wxLogDebug("%s%s%s%s function named '%s::%s' of type '%s'",
indent.c_str(),
constStr.c_str(),
virtualStr.c_str(),
protection.c_str(),
mScope.c_str(), m_Name.c_str(), m_RetType.c_str());
}
void spPreprocessorLine::DumpThis(const wxString& indent) const
{
wxString kind;
switch ( mDefType ) {
case SP_PREP_DEF_DEFINE_SYMBOL:
kind = "define";
break;
case SP_PREP_DEF_REDEFINE_SYMBOL:
kind = "redefine";
break;
case SP_PREP_DEF_INCLUDE_FILE:
kind.Printf("include (%s)", CPP_GetIncludedFileNeme().c_str());
break;
case SP_PREP_DEF_OTHER:
kind = "other";
break;
}
wxLogDebug("%spreprocessor statement: %s",
indent.c_str(), kind.c_str());
}
void spClass::DumpThis(const wxString& indent) const
{
wxString base;
for ( StrListT::const_iterator i = m_SuperClassNames.begin();
i != m_SuperClassNames.end();
i++ ) {
if ( !base.empty() )
base += ", ";
base += *i;
}
if ( !base )
base = "none";
wxString kind;
switch ( mClassSubType ) {
case SP_CLTYPE_CLASS:
kind = "class";
break;
case SP_CLTYPE_TEMPLATE_CLASS:
kind = "template class";
break;
case SP_CLTYPE_STRUCTURE:
kind = "struc";
break;
case SP_CLTYPE_UNION:
kind = "union";
break;
case SP_CLTYPE_INTERFACE:
kind = "interface";
break;
default:
wxFAIL_MSG("unknown class subtype");
}
wxLogDebug("%s%s named '%s' (base classes: %s)",
indent.c_str(), kind.c_str(),
m_Name.c_str(), base.c_str());
}
void spEnumeration::DumpThis(const wxString& indent) const
{
wxLogDebug("%senum named '%s'",
indent.c_str(), m_Name.c_str());
}
void spTypeDef::DumpThis(const wxString& indent) const
{
wxLogDebug("%stypedef %s = %s",
indent.c_str(), m_Name.c_str(), m_OriginalType.c_str());
}
void spFile::DumpThis(const wxString& indent) const
{
wxLogDebug("%sfile '%s'",
indent.c_str(), m_FileName.c_str());
}
#endif // __WXDEBUG__

View File

@@ -1,769 +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"
#endif
#include "markup.h" // markup tags used in spOperator::GetFullName()
// these methods are used for debugging only and disappear in the release build
#ifdef __WXDEBUG__
#define DECLARE_DUMP virtual void DumpThis(const wxString& indent) const;
#else
#define DECLARE_DUMP
#endif
// 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_INVALID,
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;
// wxString list
typedef vector<wxString> 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(wxString) 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& WXUNUSED(fl) ) {}
virtual void VisitNameSpace( spNameSpace& WXUNUSED(ns) ) {}
virtual void VisitClass( spClass& WXUNUSED(cl) ) {}
virtual void VisitEnumeration( spEnumeration& WXUNUSED(en) ) {}
virtual void VisitTypeDef( spTypeDef& WXUNUSED(td) ) {}
virtual void VisitPreprocessorLine( spPreprocessorLine& WXUNUSED(pd) ) {}
virtual void VisitAttribute( spAttribute& WXUNUSED(attr) ) {}
virtual void VisitOperation( spOperation& WXUNUSED(op) ) {}
virtual void VisitParameter( spParameter& WXUNUSED(param) ) {}
virtual void VisitCustomContext( spContext& WXUNUSED(ctx) ) {}
virtual ~spVisitor() { }
};
// stores one section of comments,
// multiple sections can be put to geather
// and attached to some context
class spComment
{
public:
wxString m_Text;
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;
wxString& GetText();
// contstant version of GetText()
wxString 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* m_pParent;
// 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)
wxString mVirtualContextBody;
wxString 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)
wxString m_Name;
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 wxString& body,
bool hasChildren = false,
const wxString& footer = wxEmptyString );
wxString GetVirtualContextBody();
wxString 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 wxString GetBody( spContext* pCtx = NULL );
virtual wxString 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 wxString& GetName() { return m_Name; }
// 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 m_pParent; }
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 wxString& 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() const { return SP_CTX_UNKNOWN; }
// perhaps more intuitive short-cut
inline int GetType() { return GetContextType(); }
// cast this context to the desired type - returns NULL if type is wrong
spAttribute *CastToAttribute()
{
return GetContextType() == SP_CTX_ATTRIBUTE ? (spAttribute *)this
: NULL;
}
// 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 );
#ifdef __WXDEBUG__
virtual void Dump(const wxString& indent) const;
#endif // __WXDEBUG__
DECLARE_DUMP
};
// stores information about single argument of operation
class spParameter : public spContext
{
public:
// type of argument (parameter)
wxString m_Type;
// "stringified" initial value
wxString m_InitVal;
public:
virtual int GetContextType() const { return SP_CTX_PARAMETER; }
virtual void AcceptVisitor( spVisitor& visitor )
{ visitor.VisitParameter( *this ); }
DECLARE_DUMP
};
// stores information about member(or global) variable
class spAttribute : public spContext
{
public:
// type of the attribute
wxString m_Type;
// it's initial value
wxString m_InitVal;
// constantness
bool mIsConstant;
public:
virtual int GetContextType() const { return SP_CTX_ATTRIBUTE; }
virtual void AcceptVisitor( spVisitor& visitor )
{ visitor.VisitAttribute( *this ); }
DECLARE_DUMP
};
class spOperation : public spContext
{
public:
// type of return value
wxString m_RetType;
// 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
wxString 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 wxString GetFullName(MarkupTagsT tags);
virtual int GetContextType() const { return SP_CTX_OPERATION; }
virtual void AcceptVisitor( spVisitor& visitor )
{ visitor.VisitOperation( *this ); }
DECLARE_DUMP
};
// stores infromation about preprocessor directive
class spPreprocessorLine : public spContext
{
public:
// prepocessor statement including '#' and
// attached multiple lines with '\' character
wxString m_Line;
int mDefType; // see SP_PREP_DEFINITION_TYPES enumeration
public:
virtual int GetContextType() const { return SP_CTX_PREPROCESSOR; }
virtual int GetStatementType() const { return mDefType; }
wxString CPP_GetIncludedFileNeme() const;
virtual void AcceptVisitor( spVisitor& visitor )
{ visitor.VisitPreprocessorLine( *this ); }
DECLARE_DUMP
};
// stores information about the class
class spClass : public spContext
{
public:
// list of superclasses/interfaces
StrListT m_SuperClassNames;
// see SP_CLASS_TYPES enumeration
int mClassSubType;
// see SP_INHERITANCE_TYPES enumeration
int mInheritanceType;
// valid if mClassSubType is SP_CLTYPE_TEMPLATE_CLASS
wxString 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() const { return SP_CTX_CLASS; }
virtual void AcceptVisitor( spVisitor& visitor )
{ visitor.VisitClass( *this ); }
DECLARE_DUMP
};
// stores information about enum statement
class spEnumeration : public spContext
{
public:
wxString m_EnumContent; // full-text content of enumeration
public:
virtual int GetContextType() const { return SP_CTX_ENUMERATION; }
virtual void AcceptVisitor( spVisitor& visitor )
{ visitor.VisitEnumeration( *this ); }
DECLARE_DUMP
};
class spTypeDef : public spContext
{
public:
// the original type which is redefined
// by this type definition
wxString m_OriginalType;
public:
virtual int GetContextType() const { return SP_CTX_TYPEDEF; }
virtual void AcceptVisitor( spVisitor& visitor )
{ visitor.VisitTypeDef( *this ); }
DECLARE_DUMP
};
// 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
wxString m_FileName;
public:
virtual int GetContextType() const { return SP_CTX_FILE; }
virtual void AcceptVisitor( spVisitor& visitor )
{ visitor.VisitFile( *this ); }
DECLARE_DUMP
};
//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;
virtual ~SourceParserPlugin() { }
};
// 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,64 +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
#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, wxFILE_SEP_EXT);
const char *pSepUnix = strrchr(pszFileName, wxFILE_SEP_PATH_UNIX);
const char *pSepDos = strrchr(pszFileName, wxFILE_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;
}
#endif // MSW

View File

@@ -1,673 +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>
#if !defined(__WXMAC__) || defined(__DARWIN__)
# include <sys/types.h>
#endif
#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* m_pParent;\
tree_node* mpLeft;\
tree_node* mpRight;\
\
value_type mData;\
};\
\
public:\
typedef tree_node* node_ref_type;\
protected:\
\
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->m_pParent )\
{\
if ( pNode == pNode->m_pParent->mpLeft )\
\
return pNode->m_pParent;\
\
pNode = pNode->m_pParent;\
\
node_ref_type prevNode = pNode;\
pNode = pNode->m_pParent;\
\
while(pNode)\
{\
if ( pNode->mpRight &&\
pNode->mpRight != prevNode\
) return pNode;\
\
prevNode = pNode;\
pNode= pNode->m_pParent;\
}\
\
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->m_pParent )\
{\
if ( pNode == pNode->m_pParent->mpRight )\
return pNode->m_pParent;\
\
pNode = pNode->m_pParent;\
\
node_ref_type prevNode = pNode;\
pNode = pNode->m_pParent;\
\
while(pNode)\
{\
if ( pNode->mpLeft &&\
pNode->mpLeft != prevNode\
) return pNode;\
\
prevNode = pNode;\
pNode= pNode->m_pParent;\
}\
\
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->m_pParent = \
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->m_pParent = 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->m_pParent = pY->m_pParent;\
\
if (pY->m_pParent)\
\
if (pY == pY->m_pParent->mpLeft )\
\
pY->m_pParent->mpLeft = pX;\
else\
pY->m_pParent->mpRight = pX;\
else\
mpRoot = pX;\
\
node_ref_type toRemove = 0;\
\
if (pY != pZ) {\
\
pY->mpLeft = pZ->mpLeft;\
\
if (pY->mpLeft) pY->mpLeft->m_pParent = pY;\
\
pY->mpRight = pZ->mpRight;\
\
if ( pY->mpRight ) \
\
pY->mpRight->m_pParent = pY;\
\
pY->m_pParent = pZ->m_pParent;\
\
if (pZ->m_pParent)\
\
if (pZ == pZ->m_pParent->mpLeft)\
\
pZ->m_pParent->mpLeft = pY;\
else\
pZ->m_pParent->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,561 +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>
#if !defined(__WXMAC__) || defined(__DARWIN__)
# include <sys/types.h>
#endif
#include <memory.h>
#include <limits.h>
#include <new.h>
// VERSION:: 0.2 (copy-constructor/assign-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 m_Size;\
\
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 ),\
m_Size(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 ),\
m_Size(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 (m_Size == 0); }\
\
inline size_type size() const { return m_Size; }\
\
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);\
\
++m_Size;\
\
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;\
\
m_Size += other.m_Size;\
other.m_Size = 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;\
}\
\
m_Size += sz;\
other.m_Size -= 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;\
\
--m_Size;\
}\
}\
\
inline void remove(const value_type& value)\
{\
for( iterator i = begin(); i != end(); ++i )\
\
if ( (*i) == value ) \
{\
erase( i ); break;\
}\
}\
\
void sort()\
{\
if ( m_Size < 2 ) return;\
\
iterator from = begin();\
iterator other_end = end();\
--other_end;\
\
for( size_type i = 0; i != m_Size; ++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,783 +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>
#if !defined(__WXMAC__) || defined(__DARWIN__)
# include <sys/types.h>
#endif
#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 WXUNUSED(low), int WXUNUSED(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 WXUNUSED(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 WXUNUSED(low), int WXUNUSED(hi)) \
{\
}\
\
inline void DestructRange( iterator WXUNUSED(first), iterator WXUNUSED(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 WXUNUSED(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,58 +0,0 @@
HelpHTML : Support scripts for generating external HTML help files
------------------------------------------------------------------
The scripts in this directory can be used to generate external HTML
help files for use with wxHTMLHelpControllerBase derived help implemen-
tations. Currently the only implementation using this is the
wxExtHelpController class, using an external HTML browser. I hope to
add a class using a wxWindows-built-in HTML viewer soon.
These viewers need a "wxhelp.map" file in the help directory which
maps numeric help IDs to relative URLs, having entries like:
1000 overview.html;Overview
1010 mainmanu.html;Main Menu
...
The numeric help ids are used to refer to the help in the application,
the URL specifies the file to be displayed, relative to the help base
directory (extended by the locale name if that directory exists) and the
text behind the semicolon is used to display and search a list of all help
topics.
html2wxhelp:
------------
The html2wxhelp script in this directory allow you to automatically generate
this file from a set of HTML pages. All you need is to append the numeric ID
to the section header in the HTML file like this:
<H1>Overview_1000_</H1>
html2wxhelp will scan all html files in the directory in which it is called
and find these lines. It will create a wxhelp.map file and strip the help
IDs from the HTML files. So you should have a backup of the files before
running it, or a way to regenerate them.
striphelpids:
-------------
Called with the name of a .tex file, it will strip the help IDs from the file,
so the IDs do not show up in the printed documentation.
How to use them:
----------------
I use LyX to generate the docs, export the text as LaTeX. I then use
latex2html to generate the set of HTML pages and html2wxhelp to generate
the map file from them. Then I run striphelpids on the .tex file before
generating PostScript documentation from that.
The whole process can easily be automated with a Makefile. For an example
of how to do this, see the source of my mail program, available from
http://www.phy.hw.ac.uk/~karsten/M/
Karsten Ballueder <Ballueder@usa.net>

View File

@@ -1,44 +0,0 @@
#!/bin/sh
#
# $Id$
#
# html2wxhelp Creates a wxhelp.map file from a directory full of html files.
# It takes header lines, extracts the NAME=xxx section for the URL and the help
# id which must be added to the header using _ID_.
#
# It also removes all _ID_ tags from the html sources.
make_map()
{
cat $1 | tr -d '\n' | \
sed "1,$ s/^.*<[hH][0-9]\([^<].*\)<\/[hH][0-9]>.*$/
#__#\1
/g" | \
fgrep \#__\# | tr '
' '\n' | egrep -v '^$' | \
sed "1,$ s/^.*NAME=\"\([^\"]*\)\".*>\([^>]*\)<.*$/$1#\1;\2/g" | \
sed "1,$ s/^\#__\#[^>]*>\([^<>][^<>]*\)<.*$/;\1/g" | \
sed "1,$ s/^\(.*\);\(.*\)_\(.*\)_.*$/\3 \1 ;\2/g" | \
sed "1,$ s/^\([^+-0123456789]\)\(.*\);\(.*\)$/-1 \1\2 ;\3/g" | \
fgrep -v \#__\#
}
remove_ids()
{
cat $1 | \
sed "1,$ s/_[0-9][0-9]*_//g" > tmp$$ && mv tmp$$ $1
# cat $1 | tr -d '\n' | \
# sed "1,$ s/^\(.*<[hH][0-9]\)\([^<_][^_]*\)_.*_*\(<\/[hH][0-9]>.*\)$/\1\2\3
/g" | \
# tr '
' '\n' > tmp$$ \
# && mv tmp$$ $1
}
for i in *.html
do
make_map $i
remove_ids $i
done

View File

@@ -1,17 +0,0 @@
#!/bin/sh
# $Id$
# small script to strip wxhelp IDs from latex source
cat $1 | \
sed '1,$ s/\(^.*\\part{.*\)\\_[0-9][0-9]*\\_\(.*$\)/\1\2/g' | \
sed '1,$ s/\(^.*\\chapter{.*\)\\_[0-9][0-9]*\\_\(.*$\)/\1\2/g' | \
sed '1,$ s/\(^.*\\section{.*\)\\_[0-9][0-9]*\\_\(.*$\)/\1\2/g' | \
sed '1,$ s/\(^.*\\subsection{.*\)\\_[0-9][0-9]*\\_\(.*$\)/\1\2/g' | \
sed '1,$ s/\(^.*\\subsubsection{.*\)\\_[0-9][0-9]*\\_\(.*$\)/\1\2/g' | \
sed '1,$ s/\(^.*\\paragraph{.*\)\\_[0-9][0-9]*\\_\(.*$\)/\1\2/g' | \
sed '1,$ s/\(^.*\\part\*{.*\)\\_[0-9][0-9]*\\_\(.*$\)/\1\2/g' | \
sed '1,$ s/\(^.*\\chapter\*{.*\)\\_[0-9][0-9]*\\_\(.*$\)/\1\2/g' | \
sed '1,$ s/\(^.*\\section\*{.*\)\\_[0-9][0-9]*\\_\(.*$\)/\1\2/g' | \
sed '1,$ s/\(^.*\\subsection\*{.*\)\\_[0-9][0-9]*\\_\(.*$\)/\1\2/g' | \
sed '1,$ s/\(^.*\\subsubsection\*{.*\)\\_[0-9][0-9]*\\_\(.*$\)/\1\2/g' | \
sed '1,$ s/\(^.*\\paragraph\*{.*\)\\_[0-9][0-9]*\\_\(.*$\)/\1\2/g' >/tmp/strip$$ && mv /tmp/strip$$ $1

View File

@@ -21,29 +21,25 @@ DESTDIR =
### Targets: ### ### Targets: ###
all: emulator helpview tex2rtf helpgen ifacecheck all: emulator helpview ifacecheck
install: all install_tex2rtf install_helpgen install_ifacecheck install: all install_ifacecheck
uninstall: uninstall_tex2rtf uninstall_helpgen uninstall_ifacecheck uninstall: uninstall_ifacecheck
install-strip: install install-strip_tex2rtf install-strip_helpgen install-strip_ifacecheck install-strip: install install-strip_ifacecheck
clean: clean:
rm -rf ./.deps ./.pch rm -rf ./.deps ./.pch
rm -f ./*.o rm -f ./*.o
-(cd emulator/src && $(MAKE) clean) -(cd emulator/src && $(MAKE) clean)
-(cd helpview/src && $(MAKE) clean) -(cd helpview/src && $(MAKE) clean)
-(cd tex2rtf/src && $(MAKE) clean)
-(cd HelpGen/src && $(MAKE) clean)
-(cd ifacecheck/src && $(MAKE) clean) -(cd ifacecheck/src && $(MAKE) clean)
distclean: clean distclean: clean
rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile
-(cd emulator/src && $(MAKE) distclean) -(cd emulator/src && $(MAKE) distclean)
-(cd helpview/src && $(MAKE) distclean) -(cd helpview/src && $(MAKE) distclean)
-(cd tex2rtf/src && $(MAKE) distclean)
-(cd HelpGen/src && $(MAKE) distclean)
-(cd ifacecheck/src && $(MAKE) distclean) -(cd ifacecheck/src && $(MAKE) distclean)
emulator: emulator:
@@ -52,30 +48,6 @@ emulator:
helpview: helpview:
(cd helpview/src && $(MAKE) all) (cd helpview/src && $(MAKE) all)
tex2rtf:
(cd tex2rtf/src && $(MAKE) all)
install_tex2rtf:
(cd tex2rtf/src && $(MAKE) install)
uninstall_tex2rtf:
(cd tex2rtf/src && $(MAKE) uninstall)
install-strip_tex2rtf:
(cd tex2rtf/src && $(MAKE) install-strip)
helpgen:
(cd HelpGen/src && $(MAKE) all)
install_helpgen:
(cd HelpGen/src && $(MAKE) install)
uninstall_helpgen:
(cd HelpGen/src && $(MAKE) uninstall)
install-strip_helpgen:
(cd HelpGen/src && $(MAKE) install-strip)
ifacecheck: ifacecheck:
(cd ifacecheck/src && $(MAKE) all) (cd ifacecheck/src && $(MAKE) all)
@@ -92,4 +64,4 @@ install-strip_ifacecheck:
# Include dependency info, if present: # Include dependency info, if present:
@IF_GNU_MAKE@-include .deps/*.d @IF_GNU_MAKE@-include .deps/*.d
.PHONY: all install uninstall clean distclean emulator helpview tex2rtf install_tex2rtf uninstall_tex2rtf install-strip_tex2rtf helpgen install_helpgen uninstall_helpgen install-strip_helpgen ifacecheck install_ifacecheck uninstall_ifacecheck install-strip_ifacecheck .PHONY: all install uninstall clean distclean emulator helpview ifacecheck install_ifacecheck uninstall_ifacecheck install-strip_ifacecheck

View File

@@ -43,7 +43,7 @@ MAKEARGS = -DCC="$(CC)" -DCXX="$(CXX)" -DCFLAGS="$(CFLAGS)" \
### Targets: ### ### Targets: ###
all: emulator helpview tex2rtf helpgen ifacecheck all: emulator helpview ifacecheck
clean: clean:
-if exist .\*.obj del .\*.obj -if exist .\*.obj del .\*.obj
@@ -57,14 +57,6 @@ clean:
@echo $(MAKE) -f makefile.bcc $(MAKEARGS) clean >>helpview.bat @echo $(MAKE) -f makefile.bcc $(MAKEARGS) clean >>helpview.bat
call helpview.bat call helpview.bat
@del helpview.bat @del helpview.bat
@echo cd tex2rtf\src >tex2rtf.bat
@echo $(MAKE) -f makefile.bcc $(MAKEARGS) clean >>tex2rtf.bat
call tex2rtf.bat
@del tex2rtf.bat
@echo cd HelpGen\src >helpgen.bat
@echo $(MAKE) -f makefile.bcc $(MAKEARGS) clean >>helpgen.bat
call helpgen.bat
@del helpgen.bat
@echo cd ifacecheck\src >ifacecheck.bat @echo cd ifacecheck\src >ifacecheck.bat
@echo $(MAKE) -f makefile.bcc $(MAKEARGS) clean >>ifacecheck.bat @echo $(MAKE) -f makefile.bcc $(MAKEARGS) clean >>ifacecheck.bat
call ifacecheck.bat call ifacecheck.bat
@@ -82,18 +74,6 @@ helpview:
call helpview.bat call helpview.bat
@del helpview.bat @del helpview.bat
tex2rtf:
@echo cd tex2rtf\src >tex2rtf.bat
@echo $(MAKE) -f makefile.bcc $(MAKEARGS) all >>tex2rtf.bat
call tex2rtf.bat
@del tex2rtf.bat
helpgen:
@echo cd HelpGen\src >helpgen.bat
@echo $(MAKE) -f makefile.bcc $(MAKEARGS) all >>helpgen.bat
call helpgen.bat
@del helpgen.bat
ifacecheck: ifacecheck:
@echo cd ifacecheck\src >ifacecheck.bat @echo cd ifacecheck\src >ifacecheck.bat
@echo $(MAKE) -f makefile.bcc $(MAKEARGS) all >>ifacecheck.bat @echo $(MAKE) -f makefile.bcc $(MAKEARGS) all >>ifacecheck.bat

View File

@@ -35,15 +35,13 @@ MAKEARGS = LINK_DLL_FLAGS="$(LINK_DLL_FLAGS)" \
### Targets: ### ### Targets: ###
all: emulator helpview tex2rtf helpgen ifacecheck all: emulator helpview ifacecheck
clean: clean:
-if exist .\*.o del .\*.o -if exist .\*.o del .\*.o
-if exist .\*.d del .\*.d -if exist .\*.d del .\*.d
$(MAKE) -C emulator\src -f makefile.gcc $(MAKEARGS) clean $(MAKE) -C emulator\src -f makefile.gcc $(MAKEARGS) clean
$(MAKE) -C helpview\src -f makefile.gcc $(MAKEARGS) clean $(MAKE) -C helpview\src -f makefile.gcc $(MAKEARGS) clean
$(MAKE) -C tex2rtf\src -f makefile.gcc $(MAKEARGS) clean
$(MAKE) -C HelpGen\src -f makefile.gcc $(MAKEARGS) clean
$(MAKE) -C ifacecheck\src -f makefile.gcc $(MAKEARGS) clean $(MAKE) -C ifacecheck\src -f makefile.gcc $(MAKEARGS) clean
emulator: emulator:
@@ -52,16 +50,10 @@ emulator:
helpview: helpview:
$(MAKE) -C helpview\src -f makefile.gcc $(MAKEARGS) all $(MAKE) -C helpview\src -f makefile.gcc $(MAKEARGS) all
tex2rtf:
$(MAKE) -C tex2rtf\src -f makefile.gcc $(MAKEARGS) all
helpgen:
$(MAKE) -C HelpGen\src -f makefile.gcc $(MAKEARGS) all
ifacecheck: ifacecheck:
$(MAKE) -C ifacecheck\src -f makefile.gcc $(MAKEARGS) all $(MAKE) -C ifacecheck\src -f makefile.gcc $(MAKEARGS) all
.PHONY: all clean emulator helpview tex2rtf helpgen ifacecheck .PHONY: all clean emulator helpview ifacecheck
SHELL := $(COMSPEC) SHELL := $(COMSPEC)

View File

@@ -34,7 +34,7 @@ MAKEARGS = CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" \
### Targets: ### ### Targets: ###
all: sub_emulator sub_helpview sub_tex2rtf sub_helpgen sub_ifacecheck all: sub_emulator sub_helpview sub_ifacecheck
clean: clean:
-if exist .\*.obj del .\*.obj -if exist .\*.obj del .\*.obj
@@ -46,12 +46,6 @@ clean:
cd helpview\src cd helpview\src
$(MAKE) -f makefile.vc $(MAKEARGS) clean $(MAKE) -f makefile.vc $(MAKEARGS) clean
cd "$(MAKEDIR)" cd "$(MAKEDIR)"
cd tex2rtf\src
$(MAKE) -f makefile.vc $(MAKEARGS) clean
cd "$(MAKEDIR)"
cd HelpGen\src
$(MAKE) -f makefile.vc $(MAKEARGS) clean
cd "$(MAKEDIR)"
cd ifacecheck\src cd ifacecheck\src
$(MAKE) -f makefile.vc $(MAKEARGS) clean $(MAKE) -f makefile.vc $(MAKEARGS) clean
cd "$(MAKEDIR)" cd "$(MAKEDIR)"
@@ -66,16 +60,6 @@ sub_helpview:
$(MAKE) -f makefile.vc $(MAKEARGS) all $(MAKE) -f makefile.vc $(MAKEARGS) all
cd "$(MAKEDIR)" cd "$(MAKEDIR)"
sub_tex2rtf:
cd tex2rtf\src
$(MAKE) -f makefile.vc $(MAKEARGS) all
cd "$(MAKEDIR)"
sub_helpgen:
cd HelpGen\src
$(MAKE) -f makefile.vc $(MAKEARGS) all
cd "$(MAKEDIR)"
sub_ifacecheck: sub_ifacecheck:
cd ifacecheck\src cd ifacecheck\src
$(MAKE) -f makefile.vc $(MAKEARGS) all $(MAKE) -f makefile.vc $(MAKEARGS) all

View File

@@ -48,7 +48,7 @@ MAKEARGS = CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" &
### Targets: ### ### Targets: ###
all : .SYMBOLIC emulator helpview tex2rtf helpgen ifacecheck all : .SYMBOLIC emulator helpview ifacecheck
clean : .SYMBOLIC clean : .SYMBOLIC
-if exist .\*.obj del .\*.obj -if exist .\*.obj del .\*.obj
@@ -62,12 +62,6 @@ clean : .SYMBOLIC
cd helpview\src cd helpview\src
wmake $(__MAKEOPTS__) -f makefile.wat $(MAKEARGS) clean wmake $(__MAKEOPTS__) -f makefile.wat $(MAKEARGS) clean
cd $(WATCOM_CWD) cd $(WATCOM_CWD)
cd tex2rtf\src
wmake $(__MAKEOPTS__) -f makefile.wat $(MAKEARGS) clean
cd $(WATCOM_CWD)
cd HelpGen\src
wmake $(__MAKEOPTS__) -f makefile.wat $(MAKEARGS) clean
cd $(WATCOM_CWD)
cd ifacecheck\src cd ifacecheck\src
wmake $(__MAKEOPTS__) -f makefile.wat $(MAKEARGS) clean wmake $(__MAKEOPTS__) -f makefile.wat $(MAKEARGS) clean
cd $(WATCOM_CWD) cd $(WATCOM_CWD)
@@ -82,16 +76,6 @@ helpview : .SYMBOLIC
wmake $(__MAKEOPTS__) -f makefile.wat $(MAKEARGS) all wmake $(__MAKEOPTS__) -f makefile.wat $(MAKEARGS) all
cd $(WATCOM_CWD) cd $(WATCOM_CWD)
tex2rtf : .SYMBOLIC
cd tex2rtf\src
wmake $(__MAKEOPTS__) -f makefile.wat $(MAKEARGS) all
cd $(WATCOM_CWD)
helpgen : .SYMBOLIC
cd HelpGen\src
wmake $(__MAKEOPTS__) -f makefile.wat $(MAKEARGS) all
cd $(WATCOM_CWD)
ifacecheck : .SYMBOLIC ifacecheck : .SYMBOLIC
cd ifacecheck\src cd ifacecheck\src
wmake $(__MAKEOPTS__) -f makefile.wat $(MAKEARGS) all wmake $(__MAKEOPTS__) -f makefile.wat $(MAKEARGS) all

View File

@@ -1,32 +0,0 @@
Notes about plugins
I have users that want to visit my pages with tclets, but they do not
have the plugin. What can I do?
Add a pluginspage=http://www.sunlabs.com/tcl/plugin/ name=value
pair to the embed statement. This will cause Navigator to find
the plugin for your user and suggest they install it. The user
is then prompted to download and install the plugin, and then she
has to restart the browser and revisit your page. Very inconvenient
and only slightly better than giving your users the broken image
icon. Netscape says they are working on a more automatic solution.
14. Your demos work just fine, but when I visit my own pages with tclets in
them, at http://www.myserver.com/~mypages/mypage.html, I still get the
broken image icon. Why doesn't it work for me?
This is likely because your web server -- the program that sends
the pages to your browser when you click on a URL -- is not
sending the right mime-type when it sends the '.tcl' file. You
can work around this by adding a type=application/x-tcl name=value
pair to the embed statement, which will cause Navigator to infer
that it should use the Tcl plugin anyways. A better solution is
to ask your system administrator to configure the web server to
send the mime type application/x-tcl when it sends files with a
'.tcl' extension. Nearly all web servers in the world nowadays
are already configured to do this, the only ones we are aware of
that do not are some older versions of Apache.

View File

@@ -1 +0,0 @@
I'm just here to force the creation of a LIB directory.

View File

@@ -1,32 +0,0 @@
#
# File: makefile.nt
# Author: Julian Smart
# Created: 1993
# Updated:
# Copyright:
#
# "%W% %G%"
#
# Makefile : Builds utilities for Win95, VC++ 4.0
# Use FINAL=1 argument to nmake to build final version with no debugging
# info
# Set WXDIR for your system
WXDIR = $(WXWIN)
THISDIR=$(WXDIR)\utils\nplugin
!include $(WXDIR)\src\makevc.env
DEBUG_FLAGS="/Zi /FR"
LINK_DEBUG_FLAGS="/RELEASE"
clean:
cd $(WXDIR)\utils\nplugin\src
nmake -f makefile.vc clean
cd $(WXDIR)\utils\nplugin\samples\simple
nmake -f makefile.vc clean
cd $(WXDIR)\utils\nplugin\samples\gui
nmake -f makefile.vc clean
cd $(WXDIR)\utils\nplugin

View File

@@ -1,181 +0,0 @@
/*
* File: simple.cpp
* Purpose: Minimal wxWidgets plugin
* Author: Julian Smart
* Created: 1997
* Updated:
* Copyright: (c) Julian Smart
*/
/* static const char sccsid[] = "%W% %G%"; */
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#include <fstream.h>
#include "NPApp.h"
#include "NPFrame.h"
#define ID_HELLO 10
// Define a new application type
class MyApp: public wxPluginApp
{ public:
virtual wxFrame *OnInit(void);
virtual wxPluginFrame* OnNewInstance(const wxPluginData& data);
};
// Define a new frame type
class MyFrame: public wxPluginFrame
{ public:
MyFrame(const wxPluginData& data);
public:
// Let's paint directly onto the 'frame'; we don't need a subwindow
void OnPaint(wxPaintEvent& event);
void OnMouseEvent(wxMouseEvent& event);
void OnHello(wxCommandEvent& event);
// Called when the file has been downloaded
virtual void OnNPNewFile(NPStream *stream, const wxString& fname);
void CentreStrings(wxDC& dc);
DECLARE_EVENT_TABLE()
protected:
wxStringList m_strings;
float m_xpos;
float m_ypos;
};
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_SIZE(MyFrame::OnSize)
EVT_PAINT(MyFrame::OnPaint)
EVT_MOUSE_EVENTS(MyFrame::OnMouseEvent)
EVT_BUTTON(ID_HELLO, MyFrame::OnHello)
END_EVENT_TABLE()
IMPLEMENT_APP(MyApp)
// No app initialisation necessary, and for a plugin there is no
// top frame.
wxFrame *MyApp::OnInit(void)
{
return NULL;
}
// Called whenever a new plugin instance is called. We could check
// various things here in 'data' but we won't bother.
wxPluginFrame* MyApp::OnNewInstance(const wxPluginData& data)
{
// Implicitly added to list of plugin frames
return new MyFrame(data);
}
// My frame constructor
MyFrame::MyFrame(const wxPluginData& data):
wxPluginFrame(data)
{
m_xpos = -1;
m_ypos = -1;
wxMenuBar *menuBar = new wxMenuBar;
wxMenu *menu = new wxMenu;
menu->Append(1, "E&xit");
menuBar->Append(menu, "&File");
SetMenuBar(menuBar);
new wxTextCtrl(this, -1, "", wxPoint(10, 30), wxSize(200, 25), wxSUNKEN_BORDER);
new wxButton(this, ID_HELLO, "Hello", wxPoint(10, 70));
}
void MyFrame::OnPaint(wxPaintEvent& event)
{
wxPaintDC dc(this);
dc.SetBrush(*wxCYAN_BRUSH);
dc.SetPen(*wxRED_PEN);
int w, h;
GetClientSize(&w, &h);
dc.DrawRectangle(0, 0, w, h);
wxFont swissFont(10, wxSWISS, wxNORMAL, wxNORMAL);
dc.SetFont(swissFont);
dc.SetBackgroundMode(wxTRANSPARENT);
CentreStrings(dc);
}
// Called when the file has been downloaded
void MyFrame::OnNPNewFile(NPStream *stream, const wxString& fname)
{
ifstream str(fname);
char buf[201];
while ( !str.eof() )
{
buf[0] = 0;
str.getline(buf, 200);
if ( buf[0] != 0 )
m_strings.Add(buf);
}
Refresh();
}
void MyFrame::CentreStrings(wxDC& dc)
{
int y = 5;
int cw, ch;
GetClientSize(&cw, &ch);
wxNode *node = m_strings.First();
while ( node )
{
char *s = (char *)node->Data();
float w, h;
dc.GetTextExtent(s, &w, &h);
int x = wxMax(0, (cw - w)/2);
dc.DrawText(s, x, y);
y += h + (h/2);
node = node->Next();
}
}
// This implements a tiny doodling program. Drag the mouse using
// the left button.
void MyFrame::OnMouseEvent(wxMouseEvent& event)
{
float x, y;
event.Position(&x, &y);
wxClientDC dc(this);
if (m_xpos > -1 && m_ypos > -1 && event.Dragging() && event.LeftIsDown())
{
dc.SetPen(wxBLACK_PEN);
dc.SetBrush(wxTRANSPARENT_BRUSH);
dc.DrawLine(m_xpos, m_ypos, x, y);
}
m_xpos = x;
m_ypos = y;
}
void MyFrame::OnHello(wxCommandEvent& event)
{
wxMessageBox("Hello!");
}

View File

@@ -1,59 +0,0 @@
/*
* File: gui.h
* Purpose: wxWidgets plugin with a few GUI elements
* Author: Julian Smart
* Created: 1997
* Updated:
* Copyright: (c) Julian Smart
*/
#ifndef __GUIH__
#define __GUIH__
// Define a new application type
class MyApp: public wxPluginApp
{ public:
virtual wxFrame *OnInit(void);
virtual wxPluginFrame* OnNewInstance(const wxPluginData& data);
};
class MyApp;
class MyFrame;
class MyCanvas;
class MyFrame: public wxPluginFrame
{
public:
MyFrame(const wxPluginData& data);
virtual ~MyFrame();
void OldOnMenuCommand(int id);
private:
wxMenu* fileMenu;
wxMenuBar* menuBar;
MyCanvas* leftCanvas;
MyCanvas* rightCanvas;
wxSplitterWindow* splitter;
};
class MyCanvas: public wxScrolledWindow
{
public:
MyCanvas(wxWindow* parent, int x, int y, int w, int h);
virtual ~MyCanvas();
void OnPaint(wxPaintEvent& event);
DECLARE_EVENT_TABLE()
};
// ID for the menu quit command
#define SPLIT_QUIT 1
#define SPLIT_HORIZONTAL 2
#define SPLIT_VERTICAL 3
#define SPLIT_UNSPLIT 4
#endif

View File

@@ -1,34 +0,0 @@
<HTML>
<HEAD>
<TITLE>GUI Plugin Demo</TITLE>
</HEAD>
<BODY>
<H1>GUI Plugin Demo</H1>
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.<P>
<EMBED ALIGN=RIGHT SRC="sample.gui" WIDTH=300 HEIGHT=200>
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.<P>
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.<P>
</BODY>
</HTML>

View File

@@ -1,70 +0,0 @@
#
# File: makefile.vc
# Author: Julian Smart
# Created: 1997
# Updated:
# Copyright: (c) 1997, Julian Smart
#
# "%W% %G%"
#
# Makefile : Builds gui plugin example (MS VC++).
# Use FINAL=1 argument to nmake to build final version with no debugging
# info
# Set WXDIR for your system
WXDIR = $(WXWIN)
# Application is a DLL
DLL=1
EXTRAINC=/I$(WXDIR)\utils\nplugin\src
!include $(WXDIR)\src\makevc.env
THISDIR = $(WXDIR)\utils\nplugin\examples\gui
PROGRAM=npgui32
PLUGINLIB=$(WXDIR)\utils\nplugin\lib\nplugin.lib
OBJECTS = gui.obj
all: $(PROGRAM).dll
$(PROGRAM): $(PROGRAM).exe
wx:
cd $(WXDIR)\src\msw
nmake -f makefile.vc dllnp FINAL=$(FINAL)
cd $(THISDIR)
# Update the dynamic link library
$(PROGRAM).dll: $(DUMMYOBJ) $(OBJECTS) $(WXLIB) $(PLUGINLIB) $(PROGRAM).res $(PROGRAM).def
$(link) $(LINKFLAGS) \
-out:$(PROGRAM).dll \
-def:$(PROGRAM).def \
$(DUMMYOBJ) $(OBJECTS) $(PROGRAM).res $(WXLIB) $(PLUGINLIB) \
$(guilibsdll) shell32.lib comctl32.lib ctl3d32.lib
gui.obj: gui.$(SRCSUFF) gui.h $(DUMMYOBJ)
$(cc) @<<
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
<<
$(PROGRAM).res : $(PROGRAM).rc $(WXDIR)\include\wx\msw\wx.rc
$(rc) -r /i$(WXDIR)\include -fo$@ $(PROGRAM).rc
copy:
copy npgui32.dll "c:\program files\Netscape\Navigator\program\plugins"
copy npgui32.dll "c:\program files\Internet Explorer\plugins"
clean:
-erase *.obj
-erase *.exe
-erase *.res
-erase *.map
-erase *.sbr
-erase *.pdb
-erase *.dll
-erase *.exp
-erase *.lib
-erase *.ilk

View File

@@ -1,44 +0,0 @@
#include "wx/msw/wx.rc"
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904e4"
BEGIN
VALUE "CompanyName", "Julian Smart\0"
VALUE "FileDescription", "wxWindows GUI example plugin file\0"
VALUE "FileVersion", "0.0.0.1\0"
VALUE "InternalName", "wxWindows GUI Plugin\0"
VALUE "LegalCopyright", "Copyright Julian Smart 1997\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename","npgui32.dll\0"
VALUE "ProductName", "wxWindows GUI Plugin Sample\0"
VALUE "ProductVersion", "0.0.0.1\0"
VALUE "MIMEType", "wxgui/mime-type\0"
VALUE "FileExtents", "gui\0"
VALUE "FileOpenName", "wxWindows GUI (*.gui)\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1252
END
END

View File

@@ -1,34 +0,0 @@
<HTML>
<HEAD>
<TITLE>Simple Plugin Demo</TITLE>
</HEAD>
<BODY>
<H1>Simple Plugin Demo</H1>
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.<P>
<EMBED ALIGN=RIGHT SRC="sample.smp" WIDTH=300 HEIGHT=200>
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.<P>
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.
This just demonstrates how to embed an object into an HTML file.<P>
</BODY>
</HTML>

View File

@@ -1,70 +0,0 @@
#
# File: makefile.vc
# Author: Julian Smart
# Created: 1997
# Updated:
# Copyright: (c) 1997, Julian Smart
#
# "%W% %G%"
#
# Makefile : Builds simple plugin example (MS VC++).
# Use FINAL=1 argument to nmake to build final version with no debugging
# info
# Set WXDIR for your system
WXDIR = $(WXWIN)
# Application is a DLL
DLL=1
EXTRAINC=/I$(WXDIR)\utils\nplugin\src
!include $(WXDIR)\src\makevc.env
THISDIR = $(WXDIR)\utils\nplugin\smples\simple
PROGRAM=npsimple32
PLUGINLIB=$(WXDIR)\utils\nplugin\lib\nplugin.lib
OBJECTS = simple.obj
all: $(PROGRAM).dll
$(PROGRAM): $(PROGRAM).exe
wx:
cd $(WXDIR)\src\msw
nmake -f makefile.vc dllnp FINAL=$(FINAL)
cd $(THISDIR)
# Update the dynamic link library
$(PROGRAM).dll: $(DUMMYOBJ) $(OBJECTS) $(WXLIB) $(PLUGINLIB) $(PROGRAM).res $(PROGRAM).def
$(link) $(LINKFLAGS) \
-out:$(PROGRAM).dll \
-def:$(PROGRAM).def \
$(DUMMYOBJ) $(OBJECTS) $(PROGRAM).res $(WXLIB) $(PLUGINLIB) \
$(guilibsdll) lib shell32.lib comctl32.lib ctl3d32.lib ole32.lib
simple.obj: simple.$(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
copy:
copy npsimple32.dll "c:\program files\Netscape\Navigator\program\plugins"
copy npsimple32.dll "c:\program files\Internet Explorer\plugins"
clean:
-erase *.obj
-erase *.exe
-erase *.res
-erase *.map
-erase *.sbr
-erase *.pdb
-erase *.dll
-erase *.exp
-erase *.lib
-erase *.ilk

View File

@@ -1,44 +0,0 @@
#include "wx/msw/wx.rc"
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904e4"
BEGIN
VALUE "CompanyName", "Julian Smart\0"
VALUE "FileDescription", "wxWindows simple example plugin file\0"
VALUE "FileVersion", "0.0.0.1\0"
VALUE "InternalName", "wxWindows Simple Plugin\0"
VALUE "LegalCopyright", "Copyright Julian Smart 1997\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename","npsimple32.dll\0"
VALUE "ProductName", "wxWindows Simple Plugin Sample\0"
VALUE "ProductVersion", "0.0.0.1\0"
VALUE "MIMEType", "wxsimple/mime-type\0"
VALUE "FileExtents", "smp\0"
VALUE "FileOpenName", "wxWindows Simple (*.smp)\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1252
END
END

View File

@@ -1,169 +0,0 @@
/*
* File: simple.cpp
* Purpose: Minimal wxWidgets plugin
* Author: Julian Smart
* Created: 1997
* Updated:
* Copyright: (c) Julian Smart
*/
/* static const char sccsid[] = "%W% %G%"; */
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#include <fstream.h>
#include "NPApp.h"
#include "NPFrame.h"
// Define a new application type
class MyApp: public wxPluginApp
{ public:
virtual bool OnInit(void);
virtual wxPluginFrame* OnNewInstance(const wxPluginData& data);
};
// Define a new frame type
class MyFrame: public wxPluginFrame
{ public:
MyFrame(const wxPluginData& data);
public:
// Let's paint directly onto the 'frame'; we don't need a subwindow
void OnPaint(wxPaintEvent& event);
void OnDraw(wxDC& dc);
void OnMouseEvent(wxMouseEvent& event);
// Called when the file has been downloaded
virtual void OnNPNewFile(NPStream *stream, const wxString& fname);
void CentreStrings(wxDC& dc);
DECLARE_EVENT_TABLE()
protected:
wxStringList m_strings;
long m_xpos;
long m_ypos;
};
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_SIZE(MyFrame::OnSize)
EVT_PAINT(MyFrame::OnPaint)
EVT_MOUSE_EVENTS(MyFrame::OnMouseEvent)
END_EVENT_TABLE()
IMPLEMENT_APP(MyApp)
// No app initialisation necessary, and for a plugin there is no
// top frame.
bool MyApp::OnInit(void)
{
return TRUE;
}
// Called whenever a new plugin instance is called. We could check
// various things here in 'data' but we won't bother.
wxPluginFrame* MyApp::OnNewInstance(const wxPluginData& data)
{
// Implicitly added to list of plugin frames
return new MyFrame(data);
}
// My frame constructor
MyFrame::MyFrame(const wxPluginData& data):
wxPluginFrame(data)
{
m_xpos = -1;
m_ypos = -1;
}
void MyFrame::OnPaint(wxPaintEvent& event)
{
wxPaintDC dc(this);
OnDraw(dc);
}
void MyFrame::OnDraw(wxDC& dc)
{
dc.SetBrush(*wxCYAN_BRUSH);
dc.SetPen(*wxRED_PEN);
int w, h;
GetClientSize(&w, &h);
dc.DrawRectangle(0, 0, w, h);
wxFont swissFont(10, wxSWISS, wxNORMAL, wxNORMAL);
dc.SetFont(swissFont);
dc.SetBackgroundMode(wxTRANSPARENT);
CentreStrings(dc);
}
// Called when the file has been downloaded
void MyFrame::OnNPNewFile(NPStream *stream, const wxString& fname)
{
ifstream str(fname);
char buf[201];
while ( !str.eof() )
{
buf[0] = 0;
str.getline(buf, 200);
if ( buf[0] != 0 )
m_strings.Add(buf);
}
Refresh();
}
void MyFrame::CentreStrings(wxDC& dc)
{
int y = 5;
int cw, ch;
GetClientSize(&cw, &ch);
wxNode *node = m_strings.First();
while ( node )
{
char *s = (char *)node->Data();
long w, h;
dc.GetTextExtent(s, &w, &h);
int x = wxMax(0, (cw - w)/2);
dc.DrawText(s, x, y);
y += h + (h/2);
node = node->Next();
}
}
// This implements a tiny doodling program. Drag the mouse using
// the left button.
void MyFrame::OnMouseEvent(wxMouseEvent& event)
{
long x, y;
event.Position(&x, &y);
wxClientDC dc(this);
if (m_xpos > -1 && m_ypos > -1 && event.Dragging() && event.LeftIsDown())
{
dc.SetPen(wxBLACK_PEN);
dc.SetBrush(wxTRANSPARENT_BRUSH);
dc.DrawLine(m_xpos, m_ypos, x, y);
}
m_xpos = x;
m_ypos = y;
}

View File

@@ -1,78 +0,0 @@
#
# File: makefile.vc
# Author: Julian Smart
# Created: 1993
# Updated:
# Copyright:
#
# "%W% %G%"
#
# Makefile : Builds controls example (MS VC++).
# Use FINAL=1 argument to nmake to build final version with no debugging
# info
# Set WXDIR for your system
WXDIR = $(WXWIN)
# Application is a DLL
DLL=1
!include $(WXDIR)\src\makevc.env
PLUGINDIR = $(WXDIR)\utils\nplugin
THISDIR = $(PLUGINDIR)\src
LIBTARGET=$(PLUGINDIR)\lib\nplugin.lib
OBJECTS = npwin.obj npshell.obj NPFrame.obj NPApp.obj
all: $(LIBTARGET)
wx:
cd $(WXDIR)\src\msw
nmake -f makefile.vc FINAL=$(FINAL)
cd $(THISDIR)
wxclean:
cd $(WXDIR)\src\msw
nmake -f makefile.vc clean
cd $(THISDIR)
$(LIBTARGET): $(OBJECTS)
-erase $(LIBTARGET)
$(implib) @<<
-out:$(LIBTARGET)
-machine:$(CPU)
$(OBJECTS)
<<
npwin.obj: npwin.cpp npapi.h npupp.h
$(cc) @<<
$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF)
<<
npshell.obj: npshell.cpp npapi.h NPApp.h NPFrame.h
$(cc) @<<
$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF)
<<
NPFrame.obj: NPFrame.cpp NPFrame.h NPApp.h npapi.h
$(cc) @<<
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
<<
NPApp.obj: NPApp.cpp NPApp.h NPFrame.h npapi.h
$(cc) @<<
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF)
<<
clean:
-erase *.obj
-erase *.exe
-erase *.res
-erase *.map
-erase *.sbr
-erase *.pdb
-erase *.dll
-erase *.exp
-erase *.ilk
-erase $(LIBTARGET)

View File

@@ -1,258 +0,0 @@
/*
* npapi.h $Revision$
* Netscape client plug-in API spec
*/
#ifndef _NPAPI_H_
#define _NPAPI_H_
/* XXX this needs to get out of here */
#if defined(__MWERKS__)
#ifndef XP_MAC
#define XP_MAC
#endif
#endif
/*
* Version constants
*/
#define NP_VERSION_MAJOR 0
#define NP_VERSION_MINOR 6
/*
* Basic types
*/
#ifndef _UINT16
typedef unsigned short uint16;
#endif
#ifndef _UINT32
typedef unsigned long uint32;
#endif
#ifndef _INT16
typedef short int16;
#endif
#ifndef _INT32
typedef long int32;
#endif
#ifndef FALSE
#define FALSE (0)
#endif
#ifndef TRUE
#define TRUE (1)
#endif
#ifndef NULL
#define NULL (0L)
#endif
typedef unsigned char NPBool;
typedef void* NPEvent;
typedef int16 NPError;
typedef char* NPMIMEType;
/*
* NPP is a plug-in's opaque instance handle
*/
typedef struct _NPP
{
void* pdata; /* plug-in private data */
void* ndata; /* netscape private data */
} NPP_t;
typedef NPP_t* NPP;
typedef struct _NPStream
{
void* pdata; /* plug-in private data */
void* ndata; /* netscape private data */
const char* url;
uint32 end;
uint32 lastmodified;
} NPStream;
typedef struct _NPByteRange
{
int32 offset; /* negative offset means from the end */
uint32 length;
struct _NPByteRange* next;
} NPByteRange;
typedef struct _NPSavedData
{
int32 len;
void* buf;
} NPSavedData;
typedef struct _NPRect
{
uint16 top;
uint16 left;
uint16 bottom;
uint16 right;
} NPRect;
typedef struct _NPWindow
{
void* window; /* platform specific window handle */
uint32 x; /* position of top left corner relative to a netscape page */
uint32 y;
uint32 width; /* maximum window size */
uint32 height;
NPRect clipRect; /* clipping rectangle in port coordinates */
} NPWindow;
typedef struct _NPFullPrint
{
NPBool pluginPrinted; /* Set TRUE if plugin handled fullscreen printing */
NPBool printOne; /* TRUE if plugin should print one copy to default printer */
void* platformPrint; /* Platform-specific printing info */
} NPFullPrint;
typedef struct _NPEmbedPrint
{
NPWindow window;
void* platformPrint; /* Platform-specific printing info */
} NPEmbedPrint;
typedef struct _NPPrint
{
uint16 mode; /* NP_FULL or NP_EMBED */
union
{
NPFullPrint fullPrint; /* if mode is NP_FULL */
NPEmbedPrint embedPrint; /* if mode is NP_EMBED */
} print;
} NPPrint;
#ifdef XP_MAC
/*
* Mac-specific structures and definitions.
*/
#include <Quickdraw.h>
#include <Events.h>
typedef struct NP_Port
{
CGrafPtr port; /* Grafport */
int32 portx; /* position inside the topmost window */
int32 porty;
} NP_Port;
/*
* Non-standard event types that can be passed to HandleEvent
*/
#define getFocusEvent (osEvt + 16)
#define loseFocusEvent (osEvt + 17)
#define adjustCursorEvent (osEvt + 18)
#endif /* XP_MAC */
#define NP_EMBED 1
#define NP_FULL 2
#define NP_BACKGROUND 3
#define NP_NORMAL 1
#define NP_SEEK 2
#define NP_ASFILE 3
#define NP_MAXREADY (((unsigned)(~0)<<1)>>1)
/*
* Error and reason code definitions.
*/
#define NP_NOERR 0
#define NP_EINVAL 1
#define NP_EABORT 2
#define NPERR_BASE 0
#define NPERR_NO_ERROR (NPERR_BASE + 0)
#define NPERR_GENERIC_ERROR (NPERR_BASE + 1)
#define NPERR_INVALID_INSTANCE_ERROR (NPERR_BASE + 2)
#define NPERR_INVALID_FUNCTABLE_ERROR (NPERR_BASE + 3)
#define NPERR_MODULE_LOAD_FAILED_ERROR (NPERR_BASE + 4)
#define NPERR_OUT_OF_MEMORY_ERROR (NPERR_BASE + 5)
#define NPERR_INVALID_PLUGIN_ERROR (NPERR_BASE + 6)
#define NPERR_INVALID_PLUGIN_DIR_ERROR (NPERR_BASE + 7)
#define NPERR_INCOMPATIBLE_VERSION_ERROR (NPERR_BASE + 8)
#define NPRES_BASE 0
#define NPRES_NETWORK_ERR (NPRES_BASE + 0)
#define NPRES_USER_BREAK (NPRES_BASE + 1)
#define NPRES_DONE (NPRES_BASE + 3)
/*
* Function prototypes.
* Functions beginning with 'NPP' are functions provided by the plugin that Netscape will call.
* Functions beginning with 'NPN' are functions provided by Netscape that the plugin will call.
*/
#if defined(_WINDOWS) && !defined(__WIN32__)
#define NP_LOADDS _loadds
#else
#define NP_LOADDS
#endif
#ifdef __cplusplus
extern "C" {
#endif
NPError NPP_Initialize(void);
void NPP_Shutdown(void);
NPError NP_LOADDS NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved);
NPError NP_LOADDS NPP_Destroy(NPP instance, NPSavedData** save);
NPError NP_LOADDS NPP_SetWindow(NPP instance, NPWindow* window);
NPError NP_LOADDS NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype);
NPError NP_LOADDS NPP_DestroyStream(NPP instance, NPStream* stream, NPError reason);
int32 NP_LOADDS NPP_WriteReady(NPP instance, NPStream* stream);
int32 NP_LOADDS NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer);
void NP_LOADDS NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname);
void NP_LOADDS NPP_Print(NPP instance, NPPrint* platformPrint);
int16 NPP_HandleEvent(NPP instance, void* event);
void NPN_Version(int* plugin_major, int* plugin_minor, int* netscape_major, int* netscape_minor);
NPError NPN_GetURL(NPP instance, const char* url, const char* window);
NPError NPN_PostURL(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file);
NPError NPN_RequestRead(NPStream* stream, NPByteRange* rangeList);
NPError NPN_NewStream(NPP instance, NPMIMEType type, NPStream* stream);
int32 NPN_Write(NPP instance, NPStream* stream, int32 len, void* buffer);
NPError NPN_DestroyStream(NPP instance, NPStream* stream, NPError reason);
void NPN_Status(NPP instance, const char* message);
const char* NPN_UserAgent(NPP instance);
void* NPN_MemAlloc(uint32 size);
void NPN_MemFree(void* ptr);
uint32 NPN_MemFlush(uint32 size);
void NPN_ReloadPlugins(NPBool reloadPages);
#ifdef __cplusplus
} /* end extern "C" */
#endif
#endif /* _NPAPI_H_ */

View File

@@ -1,278 +0,0 @@
/*
* File: NPApp.cc
* Purpose: wxPluginApp implementation
* Author: Julian Smart
* Created: 1997
* Updated:
* Copyright: (c) Julian Smart
*/
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "NPApp.h"
#include "NPFrame.h"
#include <windows.h>
IMPLEMENT_ABSTRACT_CLASS(wxPluginApp, wxApp)
wxPluginApp *wxGetPluginApp(void)
{
if ( wxTheApp && wxTheApp->IsKindOf(CLASSINFO(wxPluginApp)))
return (wxPluginApp *)wxTheApp;
else
return NULL;
}
wxPluginApp::wxPluginApp(void)
{
m_data.m_argc = NULL;
m_data.m_argn = NULL;
m_data.m_argv = NULL;
m_data.m_type = 0;
m_data.m_instance = 0;
m_data.m_mode = 0;
m_data.m_window = 0;
}
wxPluginApp::~wxPluginApp(void)
{
if ( m_data.m_argn )
delete[] m_data.m_argn;
if ( m_data.m_argv )
delete[] m_data.m_argv;
}
// Add a frame
void wxPluginApp::AddFrame(wxPluginFrame *frame)
{
m_frames.Append(frame);
}
// Remove a frame
void wxPluginApp::RemoveFrame(wxPluginFrame *frame)
{
m_frames.DeleteObject(frame);
}
// Find a frame given a NP instance
wxPluginFrame *wxPluginApp::FindFrame(NPP instance)
{
wxNode *node = m_frames.First();
while ( node )
{
wxPluginFrame *frame = (wxPluginFrame *)node->Data();
if ( frame->GetInstance() == instance )
{
return frame;
}
node = node->Next();
}
return NULL;
}
void wxPluginApp::SetAttributeValues(const int n, char *argn[], char *argv[])
{
if ( m_data.m_argn )
delete[] m_data.m_argn;
if ( m_data.m_argv )
delete[] m_data.m_argv;
m_data.m_argc = n;
m_data.m_argn = new wxString[n];
m_data.m_argv = new wxString[n];
int i;
for ( i = 0; i < n ; i ++)
{
m_data.m_argn[i] = argn[i];
m_data.m_argv[i] = argv[i];
}
}
///////////////////////////////////////////////////////////////
// Netscape Plugin API calls routed via wxPluginApp
NPError wxPluginApp::NPP_Destroy(NPP instance, NPSavedData** save)
{
wxPluginFrame *frame = FindFrame(instance);
if ( frame )
{
frame->Close();
}
return NPERR_NO_ERROR;
}
NPError wxPluginApp::NPP_DestroyStream(NPP instance, NPStream* stream, NPError reason)
{
return NPERR_NO_ERROR;
}
/*
jref wxPluginApp::NPP_GetJavaClass(void)
{
return 0;
}
*/
// This can't work now because we don't have a global app until wxEntry is called.
// We'll put the wxEntry call in npshell.cpp instead.
NPError wxPluginApp::NPP_Initialize(void)
{
static int init = FALSE;
if ( init == TRUE )
MessageBox(NULL, "wxPluginApp::NPP_Initialize:\nabout to call wxEntry for 2nd time!!!", "wxPlugin", MB_OK);
wxEntry((WXHINSTANCE) GetModuleHandle(NULL));
init = TRUE;
// MessageBox(NULL, "wxPluginApp::NPP_Initialize: have called wxEntry", "wxPlugin", MB_OK);
return NPERR_NO_ERROR;
}
NPError wxPluginApp::NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode,
int16 argc, char* argn[], char* argv[], NPSavedData* saved)
{
// MessageBox(NULL, "wxPluginApp::NPP_New", "wxPlugin", MB_OK);
// Save values so frame can be created in first NPP_SetWindow
if ( m_data.m_instance != 0 )
{
MessageBox(NULL, "wxPluginApp::NPP_New: whoops, 2 NPP_New calls in succession without NPP_SetWindow.\n Need to modify my code!", "wxPlugin", MB_OK);
return NPERR_NO_ERROR;
}
m_data.m_instance = instance;
m_data.m_type = pluginType;
m_data.m_mode = mode;
SetAttributeValues(argc, argn, argv);
// Unfortunately, we may get a stream event before we've got a valid window
// handle, so we just have to go ahead and create a new instance.
wxPluginFrame *frame = OnNewInstance(m_data);
m_data.m_instance = NULL;
m_data.m_window = NULL;
delete[] m_data.m_argv;
delete[] m_data.m_argn;
m_data.m_argv = NULL;
m_data.m_argn = NULL;
return NPERR_NO_ERROR;
}
NPError wxPluginApp::NPP_NewStream(NPP instance, NPMIMEType type, NPStream *stream,
NPBool seekable, uint16* stype)
{
// By default, we want to receive a file instead of a stream.
wxPluginFrame *frame = FindFrame(instance);
if ( frame )
{
return frame->OnNPNewStream(type, stream, seekable, stype);
}
return NPERR_NO_ERROR;
}
void wxPluginApp::NPP_Print(NPP instance, NPPrint* printInfo)
{
if (instance == NULL)
return;
wxPluginFrame *frame = FindFrame(instance);
if ( frame )
{
frame->OnNPPrint(printInfo);
}
}
NPError wxPluginApp::NPP_SetWindow(NPP instance, NPWindow* window)
{
// MessageBox(NULL, "wxPluginApp::NPP_SetWindow", "wxPlugin", MB_OK);
if ( window )
wxDebugMsg("%d\n", (int) window->window);
wxPluginFrame *frame = FindFrame(instance);
if ( frame )
{
frame->SetNPWindow(window);
}
else
{
#if 0
// No such frame: must make it.
if ( m_data.m_instance == NULL )
{
MessageBox(NULL, "wxPluginApp::NPP_SetWindow: whoops, no data to create window. SetWindow called in funny order?", "wxPlugin", MB_OK);
return NPERR_NO_ERROR;
}
if ( window->window == NULL )
{
// We're receiving a NULL window before we've even received
// a valid window. Ignore this silly thing.
return NPERR_NO_ERROR;
}
m_data.m_window = window;
m_data.m_instance = instance;
// wxPluginFrame *frame = OnNewInstance(m_data);
m_data.m_instance = NULL;
m_data.m_window = NULL;
delete[] m_data.m_argv;
delete[] m_data.m_argn;
m_data.m_argv = NULL;
m_data.m_argn = NULL;
#endif
}
return NPERR_NO_ERROR;
}
void wxPluginApp::NPP_Shutdown(void)
{
// Clean up wxWidgets
CleanUp();
}
void wxPluginApp::NPP_StreamAsFile(NPP instance, NPStream* stream, const char *fname)
{
wxPluginFrame *frame = FindFrame(instance);
if ( frame )
{
wxString str(fname);
frame->OnNPNewFile(stream, str);
}
}
/*
void wxPluginApp::NPP_URLNotify(NPP instance, const char* url, NPReason reason,
void* notifyData)
{
}
*/
int32 wxPluginApp::NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len,
void* buf)
{
return len; // The number of bytes accepted
}
static int32 STREAMBUFSIZE = 0X0FFFFFFF; // If we are reading from a file in NPAsFile
// mode so we can take any size stream in our
// write call (since we ignore it)
int32 wxPluginApp::NPP_WriteReady(NPP instance, NPStream* stream)
{
return STREAMBUFSIZE; // Number of bytes ready to accept in NPP_Write()
}

View File

@@ -1,91 +0,0 @@
/*
* File: NPApp.h
* Purpose: wxPluginApp declaration
* Author: Julian Smart
* Created: 1997
* Updated:
* Copyright: (c) Julian Smart
*/
#ifndef __PLUGINAPP__
#define __PLUGINAPP__
#include "wx/wx.h"
#include "npapi.h"
class wxPluginFrame;
// Data passed to OnNewInstance
class wxPluginData
{
public:
NPP m_instance;
NPMIMEType m_type;
NPWindow* m_window;
int m_mode;
int m_argc;
wxString* m_argn;
wxString* m_argv;
};
class WXDLLEXPORT wxPluginApp: public wxApp
{
DECLARE_ABSTRACT_CLASS(wxPluginApp)
public:
wxPluginApp(void);
virtual ~wxPluginApp(void);
// Find a frame given a NP instance
wxPluginFrame *FindFrame(NPP instance);
// Add a frame
void AddFrame(wxPluginFrame *frame);
// Remove a frame
void RemoveFrame(wxPluginFrame *frame);
// Set attribute/values for the last instance
void SetAttributeValues(const int n, char *argn[], char *argv[]);
///////////////////////////////////////////////////////////////
// Higher-level API than NP API
virtual wxPluginFrame *OnNewInstance(const wxPluginData& data) = 0;
///////////////////////////////////////////////////////////////
// Netscape Plugin API calls routed via wxPluginApp
virtual NPError NPP_Destroy(NPP instance, NPSavedData** save);
virtual NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPError reason);
// virtual jref NPP_GetJavaClass(void);
virtual NPError NPP_Initialize(void);
virtual NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode,
int16 argc, char* argn[], char* argv[], NPSavedData* saved);
virtual NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream *stream,
NPBool seekable, uint16* stype);
virtual void NPP_Print(NPP instance, NPPrint* platformPrint);
virtual NPError NPP_SetWindow(NPP instance, NPWindow* window);
virtual void NPP_Shutdown(void);
virtual void NPP_StreamAsFile(NPP instance, NPStream* stream, const char *fname);
/*
virtual void NPP_URLNotify(NPP instance, const char* url, NPReason reason,
void* notifyData);
*/
virtual int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len,
void* buf);
virtual int32 NPP_WriteReady(NPP instance, NPStream* stream);
protected:
// List of plugin frames
wxList m_frames;
// Temporary NPP_New arguments so we can wait until NPP_SetWindow is called
// before creating a frame
wxPluginData m_data;
};
wxPluginApp *wxGetPluginApp(void);
#endif

View File

@@ -1,293 +0,0 @@
/*
* File: NPFrame.cc
* Purpose: wxPluginFrame implementation
* Author: Julian Smart
* Created: 1997
* Updated:
* Copyright: (c) Julian Smart
*/
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/frame.h"
#endif
#include "wx/dcprint.h"
#include "NPFrame.h"
#include "NPApp.h"
#include <windows.h>
extern wxList wxModelessWindows;
extern char wxFrameClassName[];
IMPLEMENT_DYNAMIC_CLASS(wxPluginFrame, wxFrame)
wxPluginFrame::wxPluginFrame(void)
{
m_npWindow = NULL;
m_npInstance = NULL;
m_nAttributes = 0;
m_names = NULL;
m_values = NULL;
}
bool wxPluginFrame::Create(const wxPluginData& data)
{
SetName("pluginFrame");
m_npWindow = NULL;
m_npInstance = NULL;
m_nAttributes = 0;
m_names = NULL;
m_values = NULL;
m_npWindow = data.m_window;
m_npInstance = data.m_instance;
SetAttributeValues(data.m_argc, data.m_argn, data.m_argv);
SetNPWindow(data.m_window);
wxModelessWindows.Append(this);
if (wxTheApp->IsKindOf(CLASSINFO(wxPluginApp)))
{
((wxPluginApp *)wxTheApp)->AddFrame(this);
}
return TRUE;
}
wxPluginFrame::~wxPluginFrame(void)
{
if (wxTheApp->IsKindOf(CLASSINFO(wxPluginApp)))
{
((wxPluginApp *)wxTheApp)->RemoveFrame(this);
}
if ( GetHWND() )
UnsubclassWin();
m_hWnd = 0;
if ( m_names )
delete[] m_names;
if ( m_values )
delete[] m_values;
}
// Get size *available for subwindows* i.e. excluding menu bar etc.
// For XView, this is the same as GetSize
void wxPluginFrame::GetClientSize(int *x, int *y) const
{
if ( !m_hWnd )
{
*x = 0; *y = 0;
return;
}
wxFrame::GetClientSize(x, y);
}
// Set the client size (i.e. leave the calculation of borders etc.
// to wxWidgets)
void wxPluginFrame::SetClientSize(const int width, const int height)
{
if ( !m_hWnd )
return ;
wxFrame::SetClientSize(width, height);
}
void wxPluginFrame::GetSize(int *width, int *height) const
{
if ( !m_hWnd )
{
*width = 0; *height = 0;
return;
}
wxFrame::GetSize(width, height);
}
void wxPluginFrame::GetPosition(int *x, int *y) const
{
if ( !m_hWnd )
{
*x = 0; *y = 0;
return;
}
wxFrame::GetPosition(x, y);
}
void wxPluginFrame::SetAttributeValues(const int n, const char *argn[], const char *argv[])
{
if ( m_names )
delete[] m_names;
if ( m_values )
delete[] m_values;
m_nAttributes = n;
m_names = new wxString[n];
m_values = new wxString[n];
int i;
for ( i = 0; i < n ; i ++)
{
m_names[i] = argn[i];
m_values[i] = argv[i];
}
}
void wxPluginFrame::SetAttributeValues(const int n, const wxString* argn, const wxString* argv)
{
if ( m_names )
delete[] m_names;
if ( m_values )
delete[] m_values;
m_nAttributes = n;
m_names = new wxString[n];
m_values = new wxString[n];
int i;
for ( i = 0; i < n ; i ++)
{
m_names[i] = argn[i];
m_values[i] = argv[i];
}
}
void wxPluginFrame::SetSize(const int x, const int y, const int width, const int height, const int sizeFlags)
{
// Can't allow app to set the size.
return;
}
// Sets and subclasses the platform-specific window handle
bool wxPluginFrame::SetNPWindow(NPWindow *window)
{
if ( !window || !window->window)
{
if ( m_hWnd )
{
wxMessageBox("Unsubclassing window prematurely");
UnsubclassWin();
m_hWnd = 0;
}
m_npWindow = NULL;
}
else
{
if ( m_hWnd )
{
if ( m_hWnd == (WXHWND) window->window )
{
// Does this mean a resize?
return TRUE;
}
}
m_npWindow = window;
m_hWnd = (WXHWND) window->window;
SubclassWin(m_hWnd);
m_windowId = ::GetWindowLong((HWND) m_hWnd, GWL_ID);
}
return TRUE;
}
NPError wxPluginFrame::OnNPNewStream(NPMIMEType type, NPStream *stream, bool seekable, uint16* stype)
{
*stype = NP_ASFILE;
return NPERR_NO_ERROR;
}
void wxPluginFrame::OnNPNewFile(NPStream *stream, const wxString& fname)
{
}
void wxPluginFrame::OnNPPrint(NPPrint* printInfo)
{
if (printInfo->mode == NP_FULL)
{
//
// *Developers*: If your plugin would like to take over
// printing completely when it is in full-screen mode,
// set printInfo->pluginPrinted to TRUE and print your
// plugin as you see fit. If your plugin wants Netscape
// to handle printing in this case, set printInfo->pluginPrinted
// to FALSE (the default) and do nothing. If you do want
// to handle printing yourself, printOne is true if the
// print button (as opposed to the print menu) was clicked.
// On the Macintosh, platformPrint is a THPrint; on Windows,
// platformPrint is a structure (defined in npapi.h) containing
// the printer name, port, etc.
//
void* platformPrint = printInfo->print.fullPrint.platformPrint;
NPBool printOne = printInfo->print.fullPrint.printOne;
printInfo->print.fullPrint.pluginPrinted = FALSE; // Do the default
}
else // If not fullscreen, we must be embedded
{
//
// *Developers*: If your plugin is embedded, or is full-screen
// but you returned false in pluginPrinted above, NPP_Print
// will be called with mode == NP_EMBED. The NPWindow
// in the printInfo gives the location and dimensions of
// the embedded plugin on the printed page. On the Macintosh,
// platformPrint is the printer port; on Windows, platformPrint
// is the handle to the printing device context.
//
NPWindow* printWindow = &(printInfo->print.embedPrint.window);
void* platformPrint = printInfo->print.embedPrint.platformPrint;
HDC hDC = (HDC) platformPrint;
wxRect rect;
rect.x = printWindow->x;
rect.y = printWindow->y;
rect.width = printWindow->width;
rect.height = printWindow->height;
int saveIt = ::SaveDC(hDC);
wxPrinterDC *printerDC = new wxPrinterDC((WXHDC) hDC);
OnPrint(*printerDC, rect);
printerDC->SetHDC(0);
delete printerDC;
::RestoreDC(hDC, saveIt);
}
}
void wxPluginFrame::OnPrint(wxPrinterDC& dc, wxRect& rect)
{
// We must do some transformations here
RECT winRect;
/*
winRect.left = rect.x;
winRect.top = rect.y;
winRect.right = rect.x + rect.right;
winRect.bottom = rect.y + rect.height;
*/
POINT winPoint[2];
winPoint[0].x = rect.x;
winPoint[0].y = rect.y;
winPoint[1].x = rect.x + rect.width;
winPoint[1].y = rect.y + rect.height;
if (!LPtoDP((HDC) dc.GetHDC(), winPoint, 2))
wxMessageBox("LPtoDP failed.");
OnDraw(dc);
}
void wxPluginFrame::OnDraw(wxDC& dc)
{
}

View File

@@ -1,81 +0,0 @@
/*
* File: NPFrame.h
* Purpose: wxPluginFrame declaration
* Author: Julian Smart
* Created: 1997
* Updated:
* Copyright: (c) Julian Smart
*/
#ifndef __PLUGINFRAME__
#define __PLUGINFRAME__
#include "wx/frame.h"
#include "NPApp.h"
#include "npapi.h"
WXDLLEXPORT extern const char *wxFrameNameStr;
class wxPrinterDC;
class WXDLLEXPORT wxPluginFrame: public wxFrame
{
DECLARE_DYNAMIC_CLASS(wxPluginFrame)
public:
wxPluginFrame(void);
inline wxPluginFrame(const wxPluginData& data)
{
m_npWindow = NULL;
m_npInstance = NULL;
m_nAttributes = 0;
m_names = NULL;
m_values = NULL;
Create(data);
}
virtual ~wxPluginFrame(void);
bool Create(const wxPluginData& data);
// Sets and subclasses the platform-specific window handle
virtual bool SetNPWindow(NPWindow *window);
inline NPWindow *GetNPWindow(void) { return m_npWindow; }
void SetClientSize(const int width, const int height);
void GetClientSize(int *width, int *height) const;
void GetSize(int *width, int *height) const ;
void GetPosition(int *x, int *y) const ;
void SetSize(const int x, const int y, const int width, const int height, const int sizeFlags = wxSIZE_AUTO);
// Accessors
inline int GetAttributeCount(void) const { return m_nAttributes; }
inline wxString GetAttributeName(const int n) { return m_names[n]; }
inline wxString GetAttributeValue(const int n) { return m_values[n]; }
void SetAttributeValues(const int n, const char* argn[], const char *argv[]);
void SetAttributeValues(const int n, const wxString* argn, const wxString* argv);
inline void SetInstance(const NPP instance) { m_npInstance = instance; };
inline NPP GetInstance(void) { return m_npInstance; }
// Overridables: low-level
virtual NPError OnNPNewStream(NPMIMEType type, NPStream *stream, bool seekable, uint16* stype);
virtual void OnNPNewFile(NPStream *stream, const wxString& fname);
virtual void OnNPPrint(NPPrint* printInfo);
// Overridables: high-level
virtual void OnPrint(wxPrinterDC& dc, wxRect& rect);
virtual void OnDraw(wxDC& dc);
protected:
wxString* m_names;
wxString* m_values;
int m_nAttributes;
NPP m_npInstance;
NPWindow* m_npWindow;
};
#endif

View File

@@ -1,282 +0,0 @@
//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
//
// npshell.cpp
//
// This file defines a "shell" plugin that plugin developers can use
// as the basis for a real plugin. This shell just provides empty
// implementations of all functions that the plugin can implement
// that will be called by Netscape (the NPP_xxx methods defined in
// npapi.h).
//
//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#ifndef _NPAPI_H_
#include "npapi.h"
#endif
#include <windows.h>
#include <string.h>
#include <stdio.h>
#include "NPApp.h"
//
// Instance state information about the plugin.
//
// *Developers*: Use this struct to hold per-instance
// information that you'll need in the
// various functions in this file.
//
typedef struct _PluginInstance
{
NPWindow* fWindow;
uint16 fMode;
} PluginInstance;
//------------------------------------------------------------------------------------
// NPP_Initialize:
//------------------------------------------------------------------------------------
NPError NPP_Initialize(void)
{
// MessageBox(NULL, "NPP_Initialize", "NPTest", MB_OK);
/*
wxPluginApp *app = wxGetPluginApp();
if ( app )
return app->NPP_Initialize();
else
return NPERR_NO_ERROR;
*/
wxEntry((WXHINSTANCE) GetModuleHandle(NULL));
return NPERR_NO_ERROR;
}
//------------------------------------------------------------------------------------
// NPP_Shutdown:
//------------------------------------------------------------------------------------
void NPP_Shutdown(void)
{
// MessageBox(NULL, "NPP_Shutdown", "wxPlugin", MB_OK);
wxPluginApp *app = wxGetPluginApp();
if ( app )
app->NPP_Shutdown();
}
//------------------------------------------------------------------------------------
// NPP_New:
//------------------------------------------------------------------------------------
NPError NP_LOADDS
NPP_New(NPMIMEType pluginType,
NPP instance,
uint16 mode,
int16 argc,
char* argn[],
char* argv[],
NPSavedData* saved)
{
// MessageBox(NULL, "NPP_New", "NPTest", MB_OK);
if (instance == NULL)
return NPERR_INVALID_INSTANCE_ERROR;
wxPluginApp *app = wxGetPluginApp();
if ( app )
return app->NPP_New(pluginType, instance, mode, argc, argn, argv, saved);
else
return NPERR_NO_ERROR;
}
//------------------------------------------------------------------------------------
// NPP_Destroy:
//------------------------------------------------------------------------------------
NPError NP_LOADDS
NPP_Destroy(NPP instance, NPSavedData** save)
{
// MessageBox(NULL, "NPP_Destroy", "NPTest", MB_OK);
if (instance == NULL)
return NPERR_INVALID_INSTANCE_ERROR;
wxPluginApp *app = wxGetPluginApp();
if ( app )
return app->NPP_Destroy(instance, save);
else
return NPERR_NO_ERROR;
}
//------------------------------------------------------------------------------------
// NPP_SetWindow:
//------------------------------------------------------------------------------------
NPError NP_LOADDS
NPP_SetWindow(NPP instance, NPWindow* window)
{
// MessageBox(NULL, "NPP_SetWindow", "NPTest", MB_OK);
if (instance == NULL)
return NPERR_INVALID_INSTANCE_ERROR;
wxPluginApp *app = wxGetPluginApp();
if ( app )
return app->NPP_SetWindow(instance, window);
else
return NPERR_NO_ERROR;
}
//------------------------------------------------------------------------------------
// NPP_NewStream:
//------------------------------------------------------------------------------------
NPError NP_LOADDS
NPP_NewStream(NPP instance,
NPMIMEType type,
NPStream *stream,
NPBool seekable,
uint16 *stype)
{
// MessageBox(NULL, "NPP_NewStream", "NPTest", MB_OK);
if (instance == NULL)
return NPERR_INVALID_INSTANCE_ERROR;
wxPluginApp *app = wxGetPluginApp();
if ( app )
return app->NPP_NewStream(instance, type, stream, seekable, stype);
else
return NPERR_NO_ERROR;
}
//
// *Developers*:
// These next 2 functions are directly relevant in a plug-in which handles the
// data in a streaming manner. If you want zero bytes because no buffer space
// is YET available, return 0. As long as the stream has not been written
// to the plugin, Navigator will continue trying to send bytes. If the plugin
// doesn't want them, just return some large number from NPP_WriteReady(), and
// ignore them in NPP_Write(). For a NP_ASFILE stream, they are still called
// but can safely be ignored using this strategy.
//
static int32 STREAMBUFSIZE = 0X0FFFFFFF; // If we are reading from a file in NPAsFile
// mode so we can take any size stream in our
// write call (since we ignore it)
//------------------------------------------------------------------------------------
// NPP_WriteReady:
//------------------------------------------------------------------------------------
int32 NP_LOADDS
NPP_WriteReady(NPP instance, NPStream *stream)
{
wxPluginApp *app = wxGetPluginApp();
if ( app )
return app->NPP_WriteReady(instance, stream);
else
return STREAMBUFSIZE;
return STREAMBUFSIZE; // Number of bytes ready to accept in NPP_Write()
}
//------------------------------------------------------------------------------------
// NPP_Write:
//------------------------------------------------------------------------------------
int32 NP_LOADDS
NPP_Write(NPP instance, NPStream *stream, int32 offset, int32 len, void *buffer)
{
wxPluginApp *app = wxGetPluginApp();
if ( app )
return app->NPP_Write(instance, stream, offset, len, buffer);
else
return len; // The number of bytes accepted
}
//------------------------------------------------------------------------------------
// NPP_DestroyStream:
//------------------------------------------------------------------------------------
NPError NP_LOADDS
NPP_DestroyStream(NPP instance, NPStream *stream, NPError reason)
{
if (instance == NULL)
return NPERR_INVALID_INSTANCE_ERROR;
wxPluginApp *app = wxGetPluginApp();
if ( app )
return app->NPP_DestroyStream(instance, stream, reason);
else
return NPERR_NO_ERROR;
}
//------------------------------------------------------------------------------------
// NPP_StreamAsFile:
//------------------------------------------------------------------------------------
void NP_LOADDS
NPP_StreamAsFile(NPP instance, NPStream *stream, const char* fname)
{
wxPluginApp *app = wxGetPluginApp();
if ( app )
app->NPP_StreamAsFile(instance, stream, fname);
}
//------------------------------------------------------------------------------------
// NPP_Print:
//------------------------------------------------------------------------------------
void NP_LOADDS
NPP_Print(NPP instance, NPPrint* printInfo)
{
if (printInfo == NULL) // trap invalid parm
return;
if ( instance == NULL )
return;
wxPluginApp *app = wxGetPluginApp();
if ( app )
app->NPP_Print(instance, printInfo);
}
//------------------------------------------------------------------------------------
// NPP_HandleEvent:
// Mac-only.
//------------------------------------------------------------------------------------
int16 NPP_HandleEvent(NPP instance, void* event)
{
NPBool eventHandled = FALSE;
if (instance == NULL)
return eventHandled;
PluginInstance* This = (PluginInstance*) instance->pdata;
//
// *Developers*: The "event" passed in is a Macintosh
// EventRecord*. The event.what field can be any of the
// normal Mac event types, or one of the following additional
// types defined in npapi.h: getFocusEvent, loseFocusEvent,
// adjustCursorEvent. The focus events inform your plugin
// that it will become, or is no longer, the recepient of
// key events. If your plugin doesn't want to receive key
// events, return false when passed at getFocusEvent. The
// adjustCursorEvent is passed repeatedly when the mouse is
// over your plugin; if your plugin doesn't want to set the
// cursor, return false. Handle the standard Mac events as
// normal. The return value for all standard events is currently
// ignored except for the key event: for key events, only return
// true if your plugin has handled that particular key event.
//
return eventHandled;
}

View File

@@ -1,799 +0,0 @@
/*
* npupp.h $Revision$
* function call mecahnics needed by platform specific glue code.
*/
#ifndef _NPUPP_H_
#define _NPUPP_H_
#ifndef GENERATINGCFM
#define GENERATINGCFM 0
#endif
#ifndef _NPAPI_H_
#include "npapi.h"
#endif
/******************************************************************************************
plug-in function table macros
for each function in and out of the plugin API we define
typedef NPP_FooUPP
#define NewNPP_FooProc
#define CallNPP_FooProc
for mac, define the UPP magic for PPC/68K calling
*******************************************************************************************/
/* NPP_Initialize */
#if GENERATINGCFM
typedef UniversalProcPtr NPP_InitializeUPP;
enum {
uppNPP_InitializeProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(0))
| RESULT_SIZE(SIZE_CODE(0))
};
#define NewNPP_InitializeProc(FUNC) \
(NPP_InitializeUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_InitializeProcInfo, GetCurrentArchitecture())
#define CallNPP_InitializeProc(FUNC) \
(void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_InitializeProcInfo)
#else
typedef void (*NPP_InitializeUPP)(void);
#define NewNPP_InitializeProc(FUNC) \
((NPP_InitializeUPP) (FUNC))
#define CallNPP_InitializeProc(FUNC) \
(*(FUNC))()
#endif
/* NPP_Shutdown */
#if GENERATINGCFM
typedef UniversalProcPtr NPP_ShutdownUPP;
enum {
uppNPP_ShutdownProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(0))
| RESULT_SIZE(SIZE_CODE(0))
};
#define NewNPP_ShutdownProc(FUNC) \
(NPP_ShutdownUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_ShutdownProcInfo, GetCurrentArchitecture())
#define CallNPP_ShutdownProc(FUNC) \
(void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_ShutdownProcInfo)
#else
typedef void (*NPP_ShutdownUPP)(void);
#define NewNPP_ShutdownProc(FUNC) \
((NPP_ShutdownUPP) (FUNC))
#define CallNPP_ShutdownProc(FUNC) \
(*(FUNC))()
#endif
/* NPP_New */
#if GENERATINGCFM
typedef UniversalProcPtr NPP_NewUPP;
enum {
uppNPP_NewProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPMIMEType)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPP)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(uint16)))
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(int16)))
| STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(char **)))
| STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(char **)))
| STACK_ROUTINE_PARAMETER(7, SIZE_CODE(sizeof(NPSavedData *)))
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
};
#define NewNPP_NewProc(FUNC) \
(NPP_NewUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_NewProcInfo, GetCurrentArchitecture())
#define CallNPP_NewProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7) \
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_NewProcInfo, \
(ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6), (ARG7))
#else
typedef NPError (*NPP_NewUPP)(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved);
#define NewNPP_NewProc(FUNC) \
((NPP_NewUPP) (FUNC))
#define CallNPP_NewProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7) \
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6), (ARG7))
#endif
/* NPP_Destroy */
#if GENERATINGCFM
typedef UniversalProcPtr NPP_DestroyUPP;
enum {
uppNPP_DestroyProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPSavedData **)))
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
};
#define NewNPP_DestroyProc(FUNC) \
(NPP_DestroyUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_DestroyProcInfo, GetCurrentArchitecture())
#define CallNPP_DestroyProc(FUNC, ARG1, ARG2) \
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_DestroyProcInfo, (ARG1), (ARG2))
#else
typedef NPError (*NPP_DestroyUPP)(NPP instance, NPSavedData** save);
#define NewNPP_DestroyProc(FUNC) \
((NPP_DestroyUPP) (FUNC))
#define CallNPP_DestroyProc(FUNC, ARG1, ARG2) \
(*(FUNC))((ARG1), (ARG2))
#endif
/* NPP_SetWindow */
#if GENERATINGCFM
typedef UniversalProcPtr NPP_SetWindowUPP;
enum {
uppNPP_SetWindowProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPWindow *)))
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
};
#define NewNPP_SetWindowProc(FUNC) \
(NPP_SetWindowUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_SetWindowProcInfo, GetCurrentArchitecture())
#define CallNPP_SetWindowProc(FUNC, ARG1, ARG2) \
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_SetWindowProcInfo, (ARG1), (ARG2))
#else
typedef NPError (*NPP_SetWindowUPP)(NPP instance, NPWindow* window);
#define NewNPP_SetWindowProc(FUNC) \
((NPP_SetWindowUPP) (FUNC))
#define CallNPP_SetWindowProc(FUNC, ARG1, ARG2) \
(*(FUNC))((ARG1), (ARG2))
#endif
/* NPP_NewStream */
#if GENERATINGCFM
typedef UniversalProcPtr NPP_NewStreamUPP;
enum {
uppNPP_NewStreamProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPMIMEType)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPStream *)))
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(NPBool)))
| STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(uint16 *)))
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
};
#define NewNPP_NewStreamProc(FUNC) \
(NPP_NewStreamUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_NewStreamProcInfo, GetCurrentArchitecture())
#define CallNPP_NewStreamProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5) \
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_NewStreamProcInfo, (ARG1), (ARG2), (ARG3), (ARG4), (ARG5))
#else
typedef NPError (*NPP_NewStreamUPP)(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype);
#define NewNPP_NewStreamProc(FUNC) \
((NPP_NewStreamUPP) (FUNC))
#define CallNPP_NewStreamProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5) \
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5))
#endif
/* NPP_DestroyStream */
#if GENERATINGCFM
typedef UniversalProcPtr NPP_DestroyStreamUPP;
enum {
uppNPP_DestroyStreamProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPError)))
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
};
#define NewNPP_DestroyStreamProc(FUNC) \
(NPP_DestroyStreamUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_DestroyStreamProcInfo, GetCurrentArchitecture())
#define CallNPP_DestroyStreamProc(FUNC, NPParg, NPStreamPtr, NPErrorArg) \
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_DestroyStreamProcInfo, (NPParg), (NPStreamPtr), (NPErrorArg))
#else
typedef NPError (*NPP_DestroyStreamUPP)(NPP instance, NPStream* stream, NPError reason);
#define NewNPP_DestroyStreamProc(FUNC) \
((NPP_DestroyStreamUPP) (FUNC))
#define CallNPP_DestroyStreamProc(FUNC, NPParg, NPStreamPtr, NPErrorArg) \
(*(FUNC))((NPParg), (NPStreamPtr), (NPErrorArg))
#endif
/* NPP_WriteReady */
#if GENERATINGCFM
typedef UniversalProcPtr NPP_WriteReadyUPP;
enum {
uppNPP_WriteReadyProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *)))
| RESULT_SIZE(SIZE_CODE(sizeof(int32)))
};
#define NewNPP_WriteReadyProc(FUNC) \
(NPP_WriteReadyUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_WriteReadyProcInfo, GetCurrentArchitecture())
#define CallNPP_WriteReadyProc(FUNC, NPParg, NPStreamPtr) \
(int32)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_WriteReadyProcInfo, (NPParg), (NPStreamPtr))
#else
typedef int32 (*NPP_WriteReadyUPP)(NPP instance, NPStream* stream);
#define NewNPP_WriteReadyProc(FUNC) \
((NPP_WriteReadyUPP) (FUNC))
#define CallNPP_WriteReadyProc(FUNC, NPParg, NPStreamPtr) \
(*(FUNC))((NPParg), (NPStreamPtr))
#endif
/* NPP_Write */
#if GENERATINGCFM
typedef UniversalProcPtr NPP_WriteUPP;
enum {
uppNPP_WriteProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(int32)))
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(int32)))
| STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(void*)))
| RESULT_SIZE(SIZE_CODE(sizeof(int32)))
};
#define NewNPP_WriteProc(FUNC) \
(NPP_WriteUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_WriteProcInfo, GetCurrentArchitecture())
#define CallNPP_WriteProc(FUNC, NPParg, NPStreamPtr, offsetArg, lenArg, bufferPtr) \
(int32)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_WriteProcInfo, (NPParg), (NPStreamPtr), (offsetArg), (lenArg), (bufferPtr))
#else
typedef int32 (*NPP_WriteUPP)(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer);
#define NewNPP_WriteProc(FUNC) \
((NPP_WriteUPP) (FUNC))
#define CallNPP_WriteProc(FUNC, NPParg, NPStreamPtr, offsetArg, lenArg, bufferPtr) \
(*(FUNC))((NPParg), (NPStreamPtr), (offsetArg), (lenArg), (bufferPtr))
#endif
/* NPP_StreamAsFile */
#if GENERATINGCFM
typedef UniversalProcPtr NPP_StreamAsFileUPP;
enum {
uppNPP_StreamAsFileProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const char *)))
| RESULT_SIZE(SIZE_CODE(0))
};
#define NewNPP_StreamAsFileProc(FUNC) \
(NPP_StreamAsFileUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_StreamAsFileProcInfo, GetCurrentArchitecture())
#define CallNPP_StreamAsFileProc(FUNC, ARG1, ARG2, ARG3) \
(void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_StreamAsFileProcInfo, (ARG1), (ARG2), (ARG3))
#else
typedef void (*NPP_StreamAsFileUPP)(NPP instance, NPStream* stream, const char* fname);
#define NewNPP_StreamAsFileProc(FUNC) \
((NPP_StreamAsFileUPP) (FUNC))
#define CallNPP_StreamAsFileProc(FUNC, ARG1, ARG2, ARG3) \
(*(FUNC))((ARG1), (ARG2), (ARG3))
#endif
/* NPP_Print */
#if GENERATINGCFM
typedef UniversalProcPtr NPP_PrintUPP;
enum {
uppNPP_PrintProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPPrint *)))
| RESULT_SIZE(SIZE_CODE(0))
};
#define NewNPP_PrintProc(FUNC) \
(NPP_PrintUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_PrintProcInfo, GetCurrentArchitecture())
#define CallNPP_PrintProc(FUNC, NPParg, voidPtr) \
(void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_PrintProcInfo, (NPParg), (voidPtr))
#else
typedef void (*NPP_PrintUPP)(NPP instance, NPPrint* platformPrint);
#define NewNPP_PrintProc(FUNC) \
((NPP_PrintUPP) (FUNC))
#define CallNPP_PrintProc(FUNC, NPParg, NPPrintArg) \
(*(FUNC))((NPParg), (NPPrintArg))
#endif
/* NPP_HandleEvent */
#if GENERATINGCFM
typedef UniversalProcPtr NPP_HandleEventUPP;
enum {
uppNPP_HandleEventProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(void *)))
| RESULT_SIZE(SIZE_CODE(sizeof(int16)))
};
#define NewNPP_HandleEventProc(FUNC) \
(NPP_HandleEventUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_HandleEventProcInfo, GetCurrentArchitecture())
#define CallNPP_HandleEventProc(FUNC, NPParg, voidPtr) \
(int16)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_HandleEventProcInfo, (NPParg), (voidPtr))
#else
typedef int16 (*NPP_HandleEventUPP)(NPP instance, void* event);
#define NewNPP_HandleEventProc(FUNC) \
((NPP_HandleEventUPP) (FUNC))
#define CallNPP_HandleEventProc(FUNC, NPParg, voidPtr) \
(*(FUNC))((NPParg), (voidPtr))
#endif
/*
* Netscape entry points
*/
/* NPN_GetUrl */
#if GENERATINGCFM
typedef UniversalProcPtr NPN_GetURLUPP;
enum {
uppNPN_GetURLProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(const char*)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const char*)))
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
};
#define NewNPN_GetURLProc(FUNC) \
(NPN_GetURLUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_GetURLProcInfo, GetCurrentArchitecture())
#define CallNPN_GetURLProc(FUNC, ARG1, ARG2, ARG3) \
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_GetURLProcInfo, (ARG1), (ARG2), (ARG3))
#else
typedef NPError (*NPN_GetURLUPP)(NPP instance, const char* url, const char* window);
#define NewNPN_GetURLProc(FUNC) \
((NPN_GetURLUPP) (FUNC))
#define CallNPN_GetURLProc(FUNC, ARG1, ARG2, ARG3) \
(*(FUNC))((ARG1), (ARG2), (ARG3))
#endif
/* NPN_PostUrl */
#if GENERATINGCFM
typedef UniversalProcPtr NPN_PostURLUPP;
enum {
uppNPN_PostURLProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(const char*)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const char*)))
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(uint32)))
| STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(const char*)))
| STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(NPBool)))
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
};
#define NewNPN_PostURLProc(FUNC) \
(NPN_PostURLUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_PostURLProcInfo, GetCurrentArchitecture())
#define CallNPN_PostURLProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6) \
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_PostURLProcInfo, (ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6))
#else
typedef NPError (*NPN_PostURLUPP)(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file);
#define NewNPN_PostURLProc(FUNC) \
((NPN_PostURLUPP) (FUNC))
#define CallNPN_PostURLProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6) \
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6))
#endif
/* NPN_RequestRead */
#if GENERATINGCFM
typedef UniversalProcPtr NPN_RequestReadUPP;
enum {
uppNPN_RequestReadProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPStream *)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPByteRange *)))
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
};
#define NewNPN_RequestReadProc(FUNC) \
(NPN_RequestReadUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_RequestReadProcInfo, GetCurrentArchitecture())
#define CallNPN_RequestReadProc(FUNC, stream, range) \
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_RequestReadProcInfo, (stream), (range))
#else
typedef NPError (*NPN_RequestReadUPP)(NPStream* stream, NPByteRange* rangeList);
#define NewNPN_RequestReadProc(FUNC) \
((NPN_RequestReadUPP) (FUNC))
#define CallNPN_RequestReadProc(FUNC, stream, range) \
(*(FUNC))((stream), (range))
#endif
/* NPN_NewStream */
#if GENERATINGCFM
typedef UniversalProcPtr NPN_NewStreamUPP;
enum {
uppNPN_NewStreamProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP )))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPMIMEType)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPStream *)))
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(NPBool)))
| STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(uint16*)))
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
};
#define NewNPN_NewStreamProc(FUNC) \
(NPN_NewStreamUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_NewStreamProcInfo, GetCurrentArchitecture())
#define CallNPN_NewStreamProc(FUNC, npp, type, stream) \
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_NewStreamProcInfo, (npp), (type), (stream))
#else
typedef NPError (*NPN_NewStreamUPP)(NPP instance, NPMIMEType type, NPStream* stream);
#define NewNPN_NewStreamProc(FUNC) \
((NPN_NewStreamUPP) (FUNC))
#define CallNPN_NewStreamProc(FUNC, npp, type, stream) \
(*(FUNC))((npp), (type), (stream))
#endif
/* NPN_Write */
#if GENERATINGCFM
typedef UniversalProcPtr NPN_WriteUPP;
enum {
uppNPN_WriteProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP )))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(int32)))
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(void*)))
| RESULT_SIZE(SIZE_CODE(sizeof(int32)))
};
#define NewNPN_WriteProc(FUNC) \
(NPN_WriteUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_WriteProcInfo, GetCurrentArchitecture())
#define CallNPN_WriteProc(FUNC, npp, stream, len, buffer) \
(int32)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_WriteProcInfo, (npp), (stream), (len), (buffer))
#else
typedef int32 (*NPN_WriteUPP)(NPP instance, NPStream* stream, int32 len, void* buffer);
#define NewNPN_WriteProc(FUNC) \
((NPN_WriteUPP) (FUNC))
#define CallNPN_WriteProc(FUNC, npp, stream, len, buffer) \
(*(FUNC))((npp), (stream), (len), (buffer))
#endif
/* NPN_DestroyStream */
#if GENERATINGCFM
typedef UniversalProcPtr NPN_DestroyStreamUPP;
enum {
uppNPN_DestroyStreamProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP )))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPError)))
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
};
#define NewNPN_DestroyStreamProc(FUNC) \
(NPN_DestroyStreamUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_DestroyStreamProcInfo, GetCurrentArchitecture())
#define CallNPN_DestroyStreamProc(FUNC, npp, stream, err) \
(NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_DestroyStreamProcInfo, (npp), (stream), (err))
#else
typedef NPError (*NPN_DestroyStreamUPP)(NPP instance, NPStream* stream, NPError reason);
#define NewNPN_DestroyStreamProc(FUNC) \
((NPN_DestroyStreamUPP) (FUNC))
#define CallNPN_DestroyStreamProc(FUNC, npp, stream, err) \
(*(FUNC))((npp), (stream), (err))
#endif
/* NPN_Status */
#if GENERATINGCFM
typedef UniversalProcPtr NPN_StatusUPP;
enum {
uppNPN_StatusProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(char *)))
};
#define NewNPN_StatusProc(FUNC) \
(NPN_StatusUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_StatusProcInfo, GetCurrentArchitecture())
#define CallNPN_StatusProc(FUNC, npp, msg) \
(void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_StatusProcInfo, (npp), (msg))
#else
typedef void (*NPN_StatusUPP)(NPP instance, const char* message);
#define NewNPN_StatusProc(FUNC) \
((NPN_StatusUPP) (FUNC))
#define CallNPN_StatusProc(FUNC, npp, msg) \
(*(FUNC))((npp), (msg))
#endif
/* NPN_UserAgent */
#if GENERATINGCFM
typedef UniversalProcPtr NPN_UserAgentUPP;
enum {
uppNPN_UserAgentProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
| RESULT_SIZE(SIZE_CODE(sizeof(const char *)))
};
#define NewNPN_UserAgentProc(FUNC) \
(NPN_UserAgentUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_UserAgentProcInfo, GetCurrentArchitecture())
#define CallNPN_UserAgentProc(FUNC, ARG1) \
(const char*)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_UserAgentProcInfo, (ARG1))
#else
typedef const char* (*NPN_UserAgentUPP)(NPP instance);
#define NewNPN_UserAgentProc(FUNC) \
((NPN_UserAgentUPP) (FUNC))
#define CallNPN_UserAgentProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
#endif
/* NPN_MemAlloc */
#if GENERATINGCFM
typedef UniversalProcPtr NPN_MemAllocUPP;
enum {
uppNPN_MemAllocProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(uint32)))
| RESULT_SIZE(SIZE_CODE(sizeof(void *)))
};
#define NewNPN_MemAllocProc(FUNC) \
(NPN_MemAllocUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_MemAllocProcInfo, GetCurrentArchitecture())
#define CallNPN_MemAllocProc(FUNC, ARG1) \
(void*)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_MemAllocProcInfo, (ARG1))
#else
typedef void* (*NPN_MemAllocUPP)(uint32 size);
#define NewNPN_MemAllocProc(FUNC) \
((NPN_MemAllocUPP) (FUNC))
#define CallNPN_MemAllocProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
#endif
/* NPN__MemFree */
#if GENERATINGCFM
typedef UniversalProcPtr NPN_MemFreeUPP;
enum {
uppNPN_MemFreeProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(void *)))
};
#define NewNPN_MemFreeProc(FUNC) \
(NPN_MemFreeUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_MemFreeProcInfo, GetCurrentArchitecture())
#define CallNPN_MemFreeProc(FUNC, ARG1) \
(void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_MemFreeProcInfo, (ARG1))
#else
typedef void (*NPN_MemFreeUPP)(void* ptr);
#define NewNPN_MemFreeProc(FUNC) \
((NPN_MemFreeUPP) (FUNC))
#define CallNPN_MemFreeProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
#endif
/* NPN_MemFlush */
#if GENERATINGCFM
typedef UniversalProcPtr NPN_MemFlushUPP;
enum {
uppNPN_MemFlushProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(uint32)))
| RESULT_SIZE(SIZE_CODE(sizeof(uint32)))
};
#define NewNPN_MemFlushProc(FUNC) \
(NPN_MemFlushUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_MemFlushProcInfo, GetCurrentArchitecture())
#define CallNPN_MemFlushProc(FUNC, ARG1) \
(uint32)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_MemFlushProcInfo, (ARG1))
#else
typedef uint32 (*NPN_MemFlushUPP)(uint32 size);
#define NewNPN_MemFlushProc(FUNC) \
((NPN_MemFlushUPP) (FUNC))
#define CallNPN_MemFlushProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
#endif
/* NPN_ReloadPlugins */
#if GENERATINGCFM
typedef UniversalProcPtr NPN_ReloadPluginsUPP;
enum {
uppNPN_ReloadPluginsProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPBool)))
| RESULT_SIZE(SIZE_CODE(0))
};
#define NewNPN_ReloadPluginsProc(FUNC) \
(NPN_ReloadPluginsUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_ReloadPluginsProcInfo, GetCurrentArchitecture())
#define CallNPN_ReloadPluginsProc(FUNC, ARG1) \
(void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_ReloadPluginsProcInfo, (ARG1))
#else
typedef void (*NPN_ReloadPluginsUPP)(NPBool reloadPages);
#define NewNPN_ReloadPluginsProc(FUNC) \
((NPN_ReloadPluginsUPP) (FUNC))
#define CallNPN_ReloadPluginsProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
#endif
/******************************************************************************************
* The actual plugin function table definitions
*******************************************************************************************/
typedef struct _NPPluginFuncs {
uint16 size;
uint16 version;
NPP_NewUPP newp;
NPP_DestroyUPP destroy;
NPP_SetWindowUPP setwindow;
NPP_NewStreamUPP newstream;
NPP_DestroyStreamUPP destroystream;
NPP_StreamAsFileUPP asfile;
NPP_WriteReadyUPP writeready;
NPP_WriteUPP write;
NPP_PrintUPP print;
NPP_HandleEventUPP event;
} NPPluginFuncs;
typedef struct _NPNetscapeFuncs {
uint16 size;
uint16 version;
NPN_GetURLUPP geturl;
NPN_PostURLUPP posturl;
NPN_RequestReadUPP requestread;
NPN_NewStreamUPP newstream;
NPN_WriteUPP write;
NPN_DestroyStreamUPP destroystream;
NPN_StatusUPP status;
NPN_UserAgentUPP uagent;
NPN_MemAllocUPP memalloc;
NPN_MemFreeUPP memfree;
NPN_MemFlushUPP memflush;
NPN_ReloadPluginsUPP reloadplugins;
} NPNetscapeFuncs;
#ifdef XP_MAC
/******************************************************************************************
* Mac platform-specific plugin glue stuff
*******************************************************************************************/
/*
* Main entry point of the plugin.
* This routine will be called when the plugin is loaded. The function
* tables are passed in and the plugin fills in the NPPluginFuncs table
* and NPPShutdownUPP for Netscape's use.
*/
#if GENERATINGCFM
typedef UniversalProcPtr NPP_MainEntryUPP;
enum {
uppNPP_MainEntryProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPNetscapeFuncs*)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPPluginFuncs*)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPP_ShutdownUPP*)))
| RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
};
#define NewNPP_MainEntryProc(FUNC) \
(NPP_MainEntryUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_MainEntryProcInfo, GetCurrentArchitecture())
#define CallNPP_MainEntryProc(FUNC, netscapeFunc, pluginFunc, shutdownUPP) \
CallUniversalProc((UniversalProcPtr)(FUNC), (ProcInfoType)uppNPP_MainEntryProcInfo, (netscapeFunc), (pluginFunc), (shutdownUPP))
#else
typedef NPError (*NPP_MainEntryUPP)(NPNetscapeFuncs*, NPPluginFuncs*, NPP_ShutdownUPP*);
#define NewNPP_MainEntryProc(FUNC) \
((NPP_MainEntryUPP) (FUNC))
#define CallNPP_MainEntryProc(FUNC, netscapeFunc, pluginFunc, shutdownUPP) \
(*(FUNC))((netscapeFunc), (pluginFunc), (shutdownUPP))
#endif
#endif /* MAC */
#ifdef _WINDOWS
#ifdef __cplusplus
extern "C" {
#endif
/* plugin meta member functions */
NPError WINAPI NP_GetEntryPoints(NPPluginFuncs* pFuncs);
NPError WINAPI NP_Initialize(NPNetscapeFuncs* pFuncs);
NPError WINAPI NP_Shutdown();
#ifdef __cplusplus
}
#endif
#endif /* _WINDOWS */
#endif /* _NPUPP_H_ */

View File

@@ -1,186 +0,0 @@
/* npwin.cpp */
#include "windows.h"
#include "npapi.h"
#include "npupp.h"
#ifdef __WIN32__
#define NP_EXPORT
#else
#define NP_EXPORT _export
#endif
static NPNetscapeFuncs* g_pNavigatorFuncs = NULL;
/* PLUGIN DLL entry points */
/* These are the Windows specific DLL entry points, not the "normal" plugin
entry points. The "normal" ones are in NPSHELL.CPP
*/
/* fills in the func table used by Navigator to call entry points in
plugin DLL. Note that these entry points ensure that DS is loaded
by using the NP_LOADDS macro, when compiling for Win16
*/
NPError WINAPI NP_EXPORT NP_GetEntryPoints(NPPluginFuncs* pFuncs)
{
/* trap a NULL ptr */
if(pFuncs == NULL)
return NPERR_INVALID_FUNCTABLE_ERROR;
/* if the plugin's function table is smaller than the plugin expects,
then they are incompatible, and should return an error */
if(pFuncs->size < sizeof NPPluginFuncs)
return NPERR_INVALID_FUNCTABLE_ERROR;
pFuncs->version = (NP_VERSION_MAJOR << 8) | NP_VERSION_MINOR;
pFuncs->newp = NPP_New;
pFuncs->destroy = NPP_Destroy;
pFuncs->setwindow = NPP_SetWindow;
pFuncs->newstream = NPP_NewStream;
pFuncs->destroystream = NPP_DestroyStream;
pFuncs->asfile = NPP_StreamAsFile;
pFuncs->writeready = NPP_WriteReady;
pFuncs->write = NPP_Write;
pFuncs->print = NPP_Print;
pFuncs->event = NULL; /* reserved */
return NPERR_NO_ERROR;
}
/* called immediately after the plugin DLL is loaded
*/
NPError WINAPI NP_EXPORT NP_Initialize(NPNetscapeFuncs* pFuncs)
{
/* trap a NULL ptr */
if(pFuncs == NULL)
return NPERR_INVALID_FUNCTABLE_ERROR;
g_pNavigatorFuncs = pFuncs; /* save it for future reference */
/* if the plugin's major ver level is lower than the Navigator's,
then they are incompatible, and should return an error */
if(HIBYTE(pFuncs->version) > NP_VERSION_MAJOR)
return NPERR_INCOMPATIBLE_VERSION_ERROR;
/* if the Navigator's function table is smaller than the plugin expects,
then they are incompatible, and should return an error */
if(pFuncs->size < sizeof NPNetscapeFuncs)
return NPERR_INVALID_FUNCTABLE_ERROR;
return NPP_Initialize();
}
/* called immediately before the plugin DLL is unloaded
*/
NPError WINAPI NP_EXPORT NP_Shutdown()
{
NPP_Shutdown();
g_pNavigatorFuncs = NULL;
return NPERR_NO_ERROR;
}
/* NAVIGATOR Entry points */
/* These entry points expect to be called from within the plugin. The
noteworthy assumption is that DS has already been set to point to the
plugin's DLL data segment. Don't call these functions from outside
the plugin without ensuring DS is set to the DLLs data segment first,
typically using the NP_LOADDS macro
*/
/* returns the major/minor version numbers of the Plugin API for the plugin
and the Navigator
*/
void NPN_Version(int* plugin_major, int* plugin_minor, int* netscape_major, int* netscape_minor)
{
*plugin_major = NP_VERSION_MAJOR;
*plugin_minor = NP_VERSION_MINOR;
*netscape_major = HIBYTE(g_pNavigatorFuncs->version);
*netscape_minor = LOBYTE(g_pNavigatorFuncs->version);
}
/* causes the specified URL to be fetched and streamed in
*/
NPError NPN_GetURL(NPP instance, const char *url, const char *window)
{
return g_pNavigatorFuncs->geturl(instance, url, window);
}
NPError NPN_PostURL(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file)
{
return g_pNavigatorFuncs->posturl(instance, url, window, len, buf, file);
}
/* Requests that a number of bytes be provided on a stream. Typically
this would be used if a stream was in "pull" mode. An optional
position can be provided for streams which are seekable.
*/
NPError NPN_RequestRead(NPStream* stream, NPByteRange* rangeList)
{
return g_pNavigatorFuncs->requestread(stream, rangeList);
}
/* Creates a new stream of data from the plug-in to be interpreted
by Netscape in the current window.
*/
NPError NPN_NewStream(NPP instance, NPMIMEType type, NPStream *stream)
{
return g_pNavigatorFuncs->newstream(instance, type, stream);
}
/* Provides len bytes of data.
*/
int32 NPN_Write(NPP instance, NPStream *stream,
int32 len, void *buffer)
{
return g_pNavigatorFuncs->write(instance, stream, len, buffer);
}
/* Closes a stream object.
reason indicates why the stream was closed.
*/
NPError NPN_DestroyStream(NPP instance, NPStream* stream, NPError reason)
{
return g_pNavigatorFuncs->destroystream(instance, stream, reason);
}
/* Provides a text status message in the Netscape client user interface
*/
void NPN_Status(NPP instance, const char *message)
{
g_pNavigatorFuncs->status(instance, message);
}
/* returns the user agent string of Navigator, which contains version info
*/
const char* NPN_UserAgent(NPP instance)
{
return g_pNavigatorFuncs->uagent(instance);
}
/* allocates memory from the Navigator's memory space. Necessary so that
saved instance data may be freed by Navigator when exiting.
*/
void* NPN_MemAlloc(uint32 size)
{
return g_pNavigatorFuncs->memalloc(size);
}
/* reciprocal of MemAlloc() above
*/
void NPN_MemFree(void* ptr)
{
g_pNavigatorFuncs->memfree(ptr);
}
/* private function to Netscape. do not use!
*/
void NPN_ReloadPlugins(NPBool reloadPages)
{
g_pNavigatorFuncs->reloadplugins(reloadPages);
}

View File

@@ -1,7 +0,0 @@
all:
cd src; $(MAKE)
clean:
cd src; $(MAKE) clean

View File

@@ -1,26 +0,0 @@
docs/*.tex
docs/*.sty
docs/*.bib
docs/*.hpj
docs/*.ini
docs/*.txt
docs/*.cnt
docs/*.eps
docs/*.bmp
docs/*.gif
docs/*.wmf
docs/*.shg
docs/makefile.vc
docs/Makefile
tex2rtf.exe
tex2rtf.chm
lacheck.exe
lacheck.txt
readme.txt
licence.txt
lgpl.txt
gpl.txt
tex2rtf.exe.manifest
tex2rtf_src.zip

View File

@@ -1,23 +0,0 @@
How to make an RPM distribution of Tex2RTF
==================================================
You can make the RPM with standard commands: first make source tarball
with zipsrc.sh and then run
rpm -ta tex2rtf-2.01-source.tar.bz2
to create both tex2rtf-2.01-1.src.rpm and tex2rtf-2.01-1.$(arch).rpm
This builds the Tex2RTF binary using wxBase.
Note that the 2.01 binaries have been built in completely
different ways right now :-(
The RPM has been built with wxBase, and the .tar.gz
distribution has been built using wxGTK (but with no
UI). All command-line versions should be built
with wxBase in future, since the wxBase one is
smaller.
Julian Smart/Vaclav Slavik, August 2002

View File

@@ -1,38 +0,0 @@
; For debug beta only
; Source: c:\winnt\system32\msvcrtd.dll; DestDir: {sys}\; DestName: msvcrtd.dll; CopyMode: onlyifdoesntexist; Flags: uninsneveruninstall
[Tasks]
Name: desktopicon; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"
[Icons]
Name: {group}\Tex2RTF TEX2RTFVERSION; Filename: {app}\tex2rtf.exe; WorkingDir: {app}; IconFilename: {app}\tex2rtf.exe; IconIndex: 0
Name: {group}\Tex2RTF Help; Filename: {app}\tex2rtf.chm; WorkingDir: {app}; IconIndex: 0; Flags: useapppaths
Name: {group}\Tex2RTF Licence; Filename: {app}\licence.txt; WorkingDir: {app}; IconIndex: 0; Flags: useapppaths
Name: {userdesktop}\Tex2RTF TEX2RTFVERSION; Filename: {app}\tex2rtf.exe; WorkingDir: {app}; IconFilename: {app}\tex2rtf.exe; IconIndex: 0; Tasks: desktopicon
[Registry]
[UninstallDelete]
[InstallDelete]
[Run]
Filename: "{app}\tex2rtf.exe"; Description: "Launch Tex2RTF"; Flags: postinstall nowait skipifsilent
[UninstallRun]
; ==============================================
; The lines below are used by ScriptMaker
; They are not required by Inno Setup
; DO NOT DELETE THEM or you may be unable to reload the script
;[ScriptSetup]
;VerNum=TEX2RTFVERSION
;InnoVer=1.3
;AddVerTo=AppVerName
;SetupFilename=setup.exe
;OutputFolder=C:\wx2dev\wxWidgets\deliver
;CopyrightText=Copyright <20> Julian Smart, 2002

View File

@@ -1,47 +0,0 @@
; Inno Setup Script
; Created with ScriptMaker Version 1.3.22
; 14 February 2001 at 10:38
[Setup]
MinVersion=4.0,4.0
AppName=Tex2RTF TEX2RTFVERSION
AppId=Tex2RTF
CreateUninstallRegKey=1
UsePreviousAppDir=1
UsePreviousGroup=1
AppVersion=TEX2RTFVERSION
AppVerName=Tex2RTF TEX2RTFVERSION
AppCopyright=Copyright <20> Julian Smart and others, 2002
; BackColor=$FF0000
; BackColor2=$000000
BackColor=$800000
BackColor2=$C71F1F
BackColorDirection=toptobottom
WindowShowCaption=1
WindowStartMaximized=1
WindowVisible=1
WindowResizable=1
UninstallLogMode=Append
DirExistsWarning=auto
UninstallFilesDir={app}
DisableDirPage=0
DisableStartupPrompt=1
CreateAppDir=1
DisableProgramGroupPage=0
AlwaysCreateUninstallIcon=1
Uninstallable=1
UninstallIconName=Uninstall Tex2RTF TEX2RTFVERSION
UninstallDisplayName=Tex2RTF TEX2RTFVERSION
DefaultDirName={pf}\Tex2RTF
DefaultGroupName=Tex2RTF TEX2RTFVERSION
MessagesFile=compiler:default.isl
DiskSpanning=0
DiskSize=1457664
DiskClusterSize=512
ReserveBytes=0
UseSetupLdr=1
LicenseFile=c:\wx2dev\wxWidgets\utils\tex2rtf\docs\licence.txt
InfoAfterFile=c:\wx2dev\wxWidgets\utils\tex2rtf\docs\readme.txt
SourceDir=c:\wx2dev\wxWidgets\deliver\tex2rtf
OutputDir=c:\wx2dev\wxWidgets\deliver

View File

@@ -1,12 +0,0 @@
#!/bin/sh
# Example script to call the maketarball.sh
# script, for creating the Tex2RTF distribution.
echo Make the Tex2RTF distribution
WXWIN=/opt/julians/wx2dev/wxWindows
VERSION=2.01
TEX2RTFBIN=$WXWIN/utils/tex2rtf/deliver/tex2rtf
DESTDIR=$WXWIN/utils/tex2rtf/deliver
$WXWIN/utils/tex2rtf/distrib/maketarball.sh $WXWIN $TEX2RTFBIN $DESTDIR $VERSION
sh zipsrc.sh $VERSION

View File

@@ -1,70 +0,0 @@
@echo off
Rem Make an Inno Setup distribution list, where files and dirs are represented by
Rem sections like this:
Rem [Dirs]
Rem Name: {app}\backgrounds
Rem
Rem [Files]
Rem Source: C:\dir\file.htm; DestDir: {app}\; DestName: file.htm
set tex2rtf=%WXWIN%\utils\tex2rtf
Rem Generate a list of all files in the distribution.
Rem We have to be in the right directory already.
dir /BS >& %TEMP%\files1.tmp
Rem Now we iterate through the list of files, writing out the middle section of
Rem the file.
Rem We have to remove the first part of the path,
Rem by truncating the start by the size of the current directory.
set sz=%@EVAL[%@LEN[%_CWD]+1]
set len=%@LINES[%TEMP\files1.tmp]
erase /Y %TEMP\files2.tmp
Rem Add directories
echo. >> %temp\files2.tmp
echo [Dirs] >> %temp\files2.tmp
do i = 0 to %len by 1
set line=%@LINE[%TEMP\files1.tmp,%i]
Rem Skip files.
if not isdir %line enddo
set sz2=%@LEN[%line]
set n=%@EVAL[%sz2-%sz]
set line2=%@SUBSTR[%line,%sz,%n]
if "%line2%" == "" enddo
echo Name: {app}\%line2 >> %TEMP\files2.tmp
enddo
echo. >>%TEMP\files2.tmp
Rem Add files
echo. >> %temp\files2.tmp
echo [Files] >> %temp\files2.tmp
do i = 0 to %len by 1
set line=%@LINE[%TEMP\files1.tmp,%i]
Rem Skip directories.
if isdir %line enddo
set sz2=%@LEN[%line]
set n=%@EVAL[%sz2-%sz]
set line2=%@SUBSTR[%line,%sz,%n]
set filename=%@FILENAME[%line2]
set dirname=%@PATH[%line2]
echo Source: %line; DestDir: {app}\%dirname; DestName: %filename >> %TEMP\files2.tmp
enddo
Rem Concatenate the 3 sections
cat %tex2rtf%\distrib\innotop.txt %TEMP%\files2.tmp %tex2rtf%\distrib\innobott.txt > %tex2rtf%\distrib\tex2rtf.iss
erase /Y %TEMP\files1.tmp
rem erase /Y %TEMP\files2.tmp
goto end
:end

View File

@@ -1,119 +0,0 @@
#!/bin/sh
# Make a distribution of Tex2RTF for Unix
# Julian Smart 2002-08-07
# Usage: maketarball.sh wx-dir bin-file deliver-dir version-no [ options ]
# For example: maketarball.sh ~/wx2dev/wxWindows /bin/tex2rtf /tmp/tex2rtf-deliver
# Where:
# wx-dir is the wxWindows source tree
# bin-file is the Tex2RTF binary, already compiled
# deliver-dir is the directory the distribution will be put in
# version-no is the version, e.g. 2.01
TEX2RTFDIR=$1/utils/tex2rtf
SRC=$TEX2RTFDIR/src
BINARYSRC=$2
DEST=$3
BUILD=0
UPX=0
PROGNAME=$0
VERSION=$4
dotar()
{
# Make the documentation first
cd $TEX2RTFDIR/docs
make htb
rm -f -r $DEST/tex2rtf-*.*
mkdir -p $DEST/tex2rtf-$VERSION
mkdir -p $DEST/tex2rtf-$VERSION/tools
mkdir -p $DEST/tex2rtf-$VERSION/docs
mkdir -p $DEST/tex2rtf-$VERSION/html
# Make the source archive
cd $TEX2RTFDIR
ls `cat $TEX2RTFDIR/distrib/src.rsp` > /tmp/tex2rtf.txt
tar cvf $DEST/tex2rtf-$VERSION/tex2rtf-$VERSION-source.tar -T /tmp/tex2rtf.txt
gzip $DEST/tex2rtf-$VERSION/tex2rtf-$VERSION-source.tar
rm /tmp/tex2rtf.txt
cd $DEST/tex2rtf-$VERSION
# Copy the binary and other files
cp $BINARYSRC tex2rtf
cp $TEX2RTFDIR/docs/readme.txt readme.txt
cp $TEX2RTFDIR/docs/licence.txt .
cp $TEX2RTFDIR/docs/gpl.txt .
cp $TEX2RTFDIR/docs/lgpl.txt .
cp $TEX2RTFDIR/docs/*.html $TEX2RTFDIR/docs/*.gif html
cp $TEX2RTFDIR/docs/tex2rtf.htb .
# Copy all the doc sources, so that the user can experiment
# on the Tex2RTF docs
cp $TEX2RTFDIR/docs/*.tex $TEX2RTFDIR/docs/*.ini $TEX2RTFDIR/docs/*.sty $TEX2RTFDIR/docs/*.bib $TEX2RTFDIR/docs/*.gif $TEX2RTFDIR/docs/*.tex docs
strip tex2rtf
if [ "$UPX" != "0" ]; then
upx tex2rtf
fi
cd ..
tar cvf $DEST/tex2rtf-$VERSION-i386.tar tex2rtf-$VERSION/*
gzip -c $DEST/tex2rtf-$VERSION-i386.tar > $DEST/tex2rtf-$VERSION-i386.tar.gz
bzip2 -c $DEST/tex2rtf-$VERSION-i386.tar > $DEST/tex2rtf-$VERSION-i386.tar.bz2
}
usage()
{
echo Usage: $PROGNAME "wx-dir bin-file deliver-dir version-no [ options ]"
echo Options:
echo " --help Display this help message"
echo " --upx Compress executable with UPX"
echo For example: $PROGNAME ~/wx2dev/wxWindows /tmp/tex2rtf /tmp/tex2rtf-deliver 2.0
exit 1
}
# Process command line options.
shift 4
for i in "$@"; do
case "$i" in
--upx) UPX=1 ;;
*)
usage
exit
;;
esac
done
if [ ! -d "$DEST" ]; then
mkdir -p $DEST
fi
if [ ! -d "$SRC" ]; then
echo Source directory $SRC not found.
usage
exit 1
fi
if [ ! -f "$BINARYSRC" ]; then
echo tex2rtf binary $BINARYSRC not found.
usage
exit 1
fi
if [ "$VERSION" = "" ]; then
echo Pass the version number as the fourth argument.
usage
exit 1
fi
echo Creating Version $VERSION distribution in $DEST, using source directory $SRC and tex2rtf binary $BINARYSRC.
dotar
echo Tex2RTF archived.

View File

@@ -1,44 +0,0 @@
Makefile.in
src/*.cpp
src/*.h
src/makefile.vc
src/makefile.bcc
src/makefile.dos
src/makefile.b32
src/makefile.wat
src/makefile.unx
src/makefile.g95
src/makengui.nt
src/Makefile.in
src/*.dsp
src/*.dsw
src/*.xpm
src/*.ini
src/*.bmp
src/*.ico
src/*.def
src/*.rc
tools/*.*
distrib/*.sh
distrib/*.bat
distrib/*.txt
distrib/*.rsp
distrib/tex2rtf.exe.manifest
distrib/*.spec
docs/*.tex
docs/*.sty
docs/*.bib
docs/*.hpj
docs/*.ini
docs/*.txt
docs/*.bmp
docs/*.gif
docs/*.wmf
docs/*.shg
docs/makefile.vc
docs/Makefile

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly
xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
processorArchitecture="x86"
version="5.1.0.0"
type="win32"
name="tex2rtf.exe"/>
<description>Foo program</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="x86"/>
</dependentAssembly>
</dependency>
</assembly>

View File

@@ -1,67 +0,0 @@
Name: tex2rtf
Version: 2.01
Release: 1
Source: %{name}-%{version}-source.tar.bz2
Prefix: /usr
Summary: Program to convert from LaTeX to RTF and HTML
Copyright: wxWindows Library License
Group: Applications/Editors
URL: http://www.wxwindows.org/tex2rtf
Packager: Vaclav Slavik <vaclav.slavik@matfyz.cz>
%define wxwin_version 2.3
BuildRequires: wxBase-devel >= 2.3.2
BuildRequires: wxBase-static >= 2.3.2
BuildRoot: /var/tmp/%{name}-%{version}-root
%description
Tex2RTF is a program originally written by Julian Smart to convert
from a LaTeX subset to four other formats:
* Linear RTF, for importing into a wide range of word processors.
* Windows Help hypertext RTF, for compilation with HC (Help Compiler).
* HTML (Hypertext Markup Language), with ordinary HTML mode and
Microsoft HTML Help/wxWindows HTML Help mode.
* XLP wxHelp format, the original wxWindows toolkit help format.
This format is now obsolete.
Tex2RTF parses a 'reasonable' subset of LaTeX, notable blind spots being
the tabbing environment and maths. However, don't expect to translate
your LaTeX files immediately with no alteration of your source files, since
the objective is more to have a portable document source language than to
convert old LaTeX files.
%prep
%setup -n %{name}-%{version}-source
%build
# build tex2rtf binary:
pushd `pwd`
cd src
make -f makefile.unx \
"CXXFLAGS=$RPM_OPT_FLAGS `wxbase-%{wxwin_version}-config --static --cxxflags` -DNO_GUI" \
"LDFLAGS=`wxbase-%{wxwin_version}-config --static --libs`"
popd
# and use it to generate documentation:
mkdir -p html
src/tex2rtf docs/tex2rtf.tex html/tex2rtf.html -html
ln -sf tex2rtf_contents.html html/index.html
cp -f docs/*.gif html
cp -f docs/*.txt .
%install
rm -rf ${RPM_BUILD_ROOT}
mkdir -p ${RPM_BUILD_ROOT}%{_bindir}
cp -f src/tex2rtf ${RPM_BUILD_ROOT}%{_bindir}
%clean
rm -Rf ${RPM_BUILD_ROOT}
%files
%defattr(-,root,root)
%doc *.txt html/
%{_bindir}/*

View File

@@ -1,123 +0,0 @@
@echo off
rem Zip up a distribution of Tex2RTF using Inno Setup.
Rem This batch file requires the 4DOS/4NT command processor.
set src=%WXWIN%\utils\tex2rtf
set dest=%WXWIN%\deliver
set inno=1
set ReleaseDir=Release
if "%src%" == "" goto usage
if "%dest%" == "" goto usage
if "%1" == "innoonly" set inno=1
if "%1" == "innoonly" goto dounzip
if "%1" == "inno" set inno=1
echo About to archive Tex2RTF
echo From %src%
echo To %dest%
echo CTRL-C if this is not correct.
pause
erase /E %dest%\tex2rtf.zip
erase /E %dest%\tex2rtf_setup.exe
erase /E %dest\tex2rtf_src.zip
if direxist %dest%\tex2rtf erase /sxzy %dest%\tex2rtf\
Rem *** First, determine version from symbols.h
call ming2952
echo `#include <stdio.h>` > tex2rtfver.c
echo `#include "symbols.h"` >> tex2rtfver.c
echo `int main() { printf("%.2f", TEX2RTF_VERSION_NUMBER); }` >> tex2rtfver.c
gcc tex2rtfver.c -I%src%\src -o tex2rtfver.exe
tex2rtfver.exe > tex2rtfversion.txt
set ver=%@LINE[tex2rtfversion.txt,0]
echo %ver%
erase tex2rtfver.exe tex2rtfver.c
set ver_filename=%ver%
echo Updating docs...
call msvc6
pushd %src%\docs
erase /Y tex2rtf_contents.html
nmake -f makefile.vc htmlhelp htb
popd
cd %src%
echo Zipping source...
zip32 -@ %src%\tex2rtf_src.zip < %src%\distrib\src.rsp
echo Adding files...
copy %src%\src\%ReleaseDir%\tex2rtf.exe %src%
copy %src%\docs\licence.txt %src%
copy %src%\docs\lgpl.txt %src%
copy %src%\docs\gpl.txt %src%
copy %src%\docs\readme.txt %src%
copy %src%\docs\tex2rtf.chm %src%
copy %src%\distrib\tex2rtf.exe.manifest %src%
copy %src%\tools\lacheck.exe %src%
copy %src%\tools\lacheck.txt %src%
Rem goto end
upx %src%\tex2rtf.exe
zip -@ %dest%\tex2rtf.zip < %src%\distrib\distrib.rsp
zip -j -u %dest%\tex2rtf.zip %src%\tex2rtf.exe
:dounzip
cd %dest%
mkdir tex2rtf
cd tex2rtf
unzip32 -o ..\tex2rtf.zip
cd %dest%
echo inno = %inno%
Rem Skip Inno Setup setup if inno is 0.
if "%inno%" == "0" goto end
set tex2rtfver=%ver%
echo ver is %ver%
echo tex2rtfver is %tex2rtfver%
echo Calling 'makeinno' to generate tex2rtf.iss...
cd %dest%\tex2rtf
call %src%\distrib\makeinno.bat
sed -e "s/TEX2RTFVERSION/%tex2rtfver%/g" %src%\distrib\tex2rtf.iss > %TEMP%\tex2rtf.iss
move %TEMP%\tex2rtf.iss %src%\distrib\tex2rtf.iss
rem Now invoke Inno Setup install on the new tex2rtf.iss
set innocmd="C:\Program Files\Inno Setup 2\compil32.exe" /cc %src%\distrib\tex2rtf.iss
echo Invoking %innocmd%...
cd %dest%
start "Inno Setup" /w %innocmd%
Rem Rename to give it a version
move setup.exe tex2rtf_%ver_filename%_setup.exe
Rem Copy the source
move %src%\tex2rtf_src.zip %dest%\tex2rtf-source-%tex2rtfver%.zip
Rem clean up files
cd %src%
erase /EFY *.bmp *.htm *.exe *.hlp *.cnt *.txt *.rtf *.doc *.gif *.jpg *.manifest *.chm
cd %dest%
echo Tex2RTF archived.
goto end
:usage
echo Tex2RTF distribution.
:end

View File

@@ -1,28 +0,0 @@
@echo off
rem Zip up a source distribution of Tex2RTF and associated apps.
set src=c:\wx2dev\wxWindows\utils\tex2rtf
set dest=%src\deliver
if "%src" == "" goto usage
if "%dest" == "" goto usage
echo About to archive Tex2RTF
echo From %src
echo To %dest
echo CTRL-C if this is not correct.
pause
erase %dest\tex2rtf_src.zip
cd %src
echo Zipping...
zip32 -@ %dest\tex2rtf_src.zip < %src\tex2rtf\distrib\src.rsp
cd %dest
echo Tex2RTF source archived.
goto end
:usage
echo Tex2RTF source distribution.
:end

View File

@@ -1,29 +0,0 @@
#!/bin/sh
# Zip up Tex2RTF source
VERSION=-$1
if [ "$VERSION" = "-" ] ; then
VERSION=""
fi
TEX2RTFDIR=`pwd`/..
rm -f $TEX2RTFDIR/deliver/tex2rtf$VERSION-source.zip
rm -f $TEX2RTFDIR/deliver/tex2rtf$VERSION-source.tar.gz
mkdir $TEX2RTFDIR/tex2rtf$VERSION-source
cd $TEX2RTFDIR
tar -c `cat $TEX2RTFDIR/distrib/src.rsp` | (cd tex2rtf$VERSION-source ; tar -x)
# Make a zip archive
zip -9 -r $TEX2RTFDIR/deliver/tex2rtf$VERSION-source.zip tex2rtf$VERSION-source
# Now make a tar archive
tar cf $TEX2RTFDIR/deliver/tex2rtf$VERSION-source.tar tex2rtf$VERSION-source
gzip -9 $TEX2RTFDIR/deliver/tex2rtf$VERSION-source.tar
tar cf $TEX2RTFDIR/deliver/tex2rtf$VERSION-source.tar tex2rtf$VERSION-source
bzip2 -9 $TEX2RTFDIR/deliver/tex2rtf$VERSION-source.tar
rm -rf $TEX2RTFDIR/tex2rtf$VERSION-source

View File

@@ -1,36 +0,0 @@
#
# File: Makefile
# Author: Julian Smart
# Created: 1999
#
# Makefile : Builds Tex2RTF manual
#
DOCDIR=..
LOCALDOCDIR=.
DOCSOURCES=tex2rtf.tex
all: tex2rtf.htb
hlp: tex2rtf.hlp
htb: tex2rtf.htb
html: tex2rtf.html
htmlhelp: tex2rtf.chm
pdfrtf: tex2rtf_rtf.rtf
tex2rtf_rtf.rtf: $(DOCSOURCES) tex2rtf.ini
tex2rtf tex2rtf.tex tex2rtf_rtf.rtf -twice -rtf
tex2rtf.rtf: $(DOCSOURCES) tex2rtf.ini
tex2rtf tex2rtf.tex tex2rtf.rtf -twice -winhelp
tex2rtf_contents.html: $(DOCSOURCES) tex2rtf.ini
tex2rtf tex2rtf.tex tex2rtf.html -twice -html
rm -f *.con
rm -f *.ref
rm -f *.con
rm -f *.ref
tex2rtf.htb: tex2rtf_contents.html
zip tex2rtf.htb tex2rtf*.html *.hhp *.hhk *.hhc *.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 978 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 996 B

View File

@@ -1,145 +0,0 @@
% fancyheadings.sty version 1.92
% Fancy headers and footers.
% Piet van Oostrum, Dept of Computer Science, University of Utrecht
% Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands
% Telephone: +31-30-531806. piet@cs.ruu.nl (mcvax!sun4nl!ruuinf!piet)
% Sep 16, 1994
% version 1.4: Correction for use with \reversemargin
% Sep 29, 1994:
% version 1.5: Added the \iftopfloat, \ifbotfloat and \iffloatpage commands
% Oct 4, 1994:
% version 1.6: Reset single spacing in headers/footers for use with
% setspace.sty or doublespace.sty
% Oct 4, 1994:
% version 1.7: changed \let\@mkboth\markboth to
% \def\@mkboth{\protect\markboth} to make it more robust
% Dec 5, 1994:
% version 1.8: corrections for amsbook/amsart: define \@chapapp and (more
% importantly) use the \chapter/sectionmark definitions from ps@headings if
% they exist (which should be true for all standard classes).
% May 31, 1995:
% version 1.9: The proposed \renewcommand{\headrulewidth}{\iffloatpage...
% construction in the doc did not work properly with the fancyplain style.
% June 1, 1995:
% version 1.91: The definition of \@mkboth wasn't restored on subsequent
% \pagestyle{fancy}'s.
% June 1, 1995:
% version 1.92: The sequence \pagestyle{fancyplain} \pagestyle{plain}
% \pagestyle{fancy} would erroneously select the plain version.
\def\lhead{\@ifnextchar[{\@xlhead}{\@ylhead}}
\def\@xlhead[#1]#2{\gdef\@elhead{#1}\gdef\@olhead{#2}}
\def\@ylhead#1{\gdef\@elhead{#1}\gdef\@olhead{#1}}
\def\chead{\@ifnextchar[{\@xchead}{\@ychead}}
\def\@xchead[#1]#2{\gdef\@echead{#1}\gdef\@ochead{#2}}
\def\@ychead#1{\gdef\@echead{#1}\gdef\@ochead{#1}}
\def\rhead{\@ifnextchar[{\@xrhead}{\@yrhead}}
\def\@xrhead[#1]#2{\gdef\@erhead{#1}\gdef\@orhead{#2}}
\def\@yrhead#1{\gdef\@erhead{#1}\gdef\@orhead{#1}}
\def\lfoot{\@ifnextchar[{\@xlfoot}{\@ylfoot}}
\def\@xlfoot[#1]#2{\gdef\@elfoot{#1}\gdef\@olfoot{#2}}
\def\@ylfoot#1{\gdef\@elfoot{#1}\gdef\@olfoot{#1}}
\def\cfoot{\@ifnextchar[{\@xcfoot}{\@ycfoot}}
\def\@xcfoot[#1]#2{\gdef\@ecfoot{#1}\gdef\@ocfoot{#2}}
\def\@ycfoot#1{\gdef\@ecfoot{#1}\gdef\@ocfoot{#1}}
\def\rfoot{\@ifnextchar[{\@xrfoot}{\@yrfoot}}
\def\@xrfoot[#1]#2{\gdef\@erfoot{#1}\gdef\@orfoot{#2}}
\def\@yrfoot#1{\gdef\@erfoot{#1}\gdef\@orfoot{#1}}
\newdimen\headrulewidth
\newdimen\footrulewidth
\newdimen\plainheadrulewidth
\newdimen\plainfootrulewidth
\newdimen\headwidth
\newif\if@fancyplain
\def\fancyplain#1#2{\if@fancyplain#1\else#2\fi}
% Command to reset various things in the headers:
% a.o. single spacing (taken from setspace.sty)
% and the catcode of ^^M (so that epsf files in the header work if a
% verbatim crosses a page boundary)
\def\fancy@reset{\restorecr
\def\baselinestretch{1}%
\ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e
\ifx\@currsize\normalsize\@normalsize\else\@currsize\fi%
\else% NFSS (2.09) present
\@newbaseline%
\fi}
% Initialization of the head and foot text.
\headrulewidth 0.4pt
\footrulewidth\z@
\plainheadrulewidth\z@
\plainfootrulewidth\z@
\lhead[\fancyplain{}{\sl\rightmark}]{\fancyplain{}{\sl\leftmark}}
% i.e. empty on ``plain'' pages, \rightmark on even, \leftmark on odd pages
\chead{}
\rhead[\fancyplain{}{\sl\leftmark}]{\fancyplain{}{\sl\rightmark}}
% i.e. empty on ``plain'' pages, \leftmark on even, \rightmark on odd pages
\lfoot{}
\cfoot{\rm\thepage} % page number
\rfoot{}
% Put together a header or footer given the left, center and
% right text, fillers at left and right and a rule.
% The \lap commands put the text into an hbox of zero size,
% so overlapping text does not generate an errormessage.
\def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset\vbox{\hbox
{\rlap{\parbox[b]{\headwidth}{\raggedright#2\strut}}\hfill
\parbox[b]{\headwidth}{\centering#3\strut}\hfill
\llap{\parbox[b]{\headwidth}{\raggedleft#4\strut}}}\headrule}}#5}
\def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset\vbox{\footrule
\hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2\strut}}\hfill
\parbox[t]{\headwidth}{\centering#3\strut}\hfill
\llap{\parbox[t]{\headwidth}{\raggedleft#4\strut}}}}}#5}
\def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi
\hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}}
\def\footrule{{\if@fancyplain\let\footrulewidth\plainfootrulewidth\fi
\vskip-0.3\normalbaselineskip\vskip-\footrulewidth
\hrule\@width\headwidth\@height\footrulewidth\vskip0.3\normalbaselineskip}}
\def\ps@fancy{%
\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%for amsbook
\@ifundefined{chapter}{\def\sectionmark##1{\markboth
{\uppercase{\ifnum \c@secnumdepth>\z@
\thesection\hskip 1em\relax \fi ##1}}{}}%
\def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne
\thesubsection\hskip 1em\relax \fi ##1}}}%
{\def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth>\m@ne
\@chapapp\ \thechapter. \ \fi ##1}}{}}
\def\sectionmark##1{\markright{\uppercase{\ifnum \c@secnumdepth >\z@
\thesection. \ \fi ##1}}}}%
\csname ps@headings\endcsname % use \ps@headings defaults if they exist
\ps@@fancy
\gdef\ps@fancy{\@fancyplainfalse\ps@@fancy}%
\headwidth\textwidth}
\def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy}
\def\ps@plain@fancy{\@fancyplaintrue\ps@@fancy}
\def\ps@@fancy{%
\def\@mkboth{\protect\markboth}%
\def\@oddhead{\@fancyhead\@lodd\@olhead\@ochead\@orhead\@rodd}%
\def\@oddfoot{\@fancyfoot\@lodd\@olfoot\@ocfoot\@orfoot\@rodd}%
\def\@evenhead{\@fancyhead\@rodd\@elhead\@echead\@erhead\@lodd}%
\def\@evenfoot{\@fancyfoot\@rodd\@elfoot\@ecfoot\@erfoot\@lodd}%
}
\def\@lodd{\if@reversemargin\hss\else\relax\fi}
\def\@rodd{\if@reversemargin\relax\else\hss\fi}
\let\latex@makecol\@makecol
\def\@makecol{\let\topfloat\@toplist\let\botfloat\@botlist\latex@makecol}
\def\iftopfloat#1#2{\ifx\topfloat\empty #2\else #1\fi}
\def\ifbotfloat#1#2{\ifx\botfloat\empty #2\else #1\fi}
\def\iffloatpage#1#2{\if@fcolmade #1\else #2\fi}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 959 B

View File

@@ -1,339 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

@@ -1,43 +0,0 @@
Installation Instructions for Tex2RTF
-------------------------------------
Binaries are supplied for Windows 3.1 and for Sun workstations.
If these don't work for you, or you are using a different system, you
will need to compile Tex2RTF. There are several options for doing this.
(1) GUI version
If you want to have a graphical interface for Tex2RTF
(not essential for a conversion utility!) then you
will need to download wxWidgets from skye.aiai.ed.ac.uk
(192.41.104.6) in the directory /pub/wxwin/beta, files
wx150?_*.tar.Z (or .gz) where ? is the latest beta letter,
currently i.
On UNIX, you will then need to decide whether you want to produce
an XView or Motif version (provided you have one of these
toolkits), and change the makefiles in accordingly,
in wx/src/x, wx/src/base and wx/utils/tex2rtf/src.
Use the makefile target 'xview' or 'motif' from each of the directories
wx/src/x and wx/utils/tex2rtf/src.
Under Windows, just type 'nmake -f makefile.vc' if you're
using a Microsoft-compatible compiler (you'll need to
change the makefiles or build project files for other compilers.)
(2) Non-GUI version
Under UNIX, simply use the target 'nogui'. The supplied files in the
src/wxwin directory supply the essential utilities from wxWidgets, and
Tex2RTF will be built as a command-line program.
On a PC, add 'NOGUI=1' to the makefile command line. Note that the small
amount of memory available under DOS can cause catastrophic crashes for
large input files, due to the lack of memory checking, so be warned! The
Windows version is a more sensible choice.
-------------------------------------------------------------------------
Julian Smart, February 1993
J.Smart@ed.ac.uk

View File

@@ -1,517 +0,0 @@
GNU LIBRARY GENERAL PUBLIC LICENSE
==================================
Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the library GPL. It is
numbered 2 because it goes with version 2 of the ordinary GPL.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General
Public Licenses are intended to guarantee your freedom to share
and change free software--to make sure the software is free for
all its users.
This license, the Library General Public License, applies to
some specially designated Free Software Foundation software, and
to any other libraries whose authors decide to use it. You can
use it for your libraries, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure
that you have the freedom to distribute copies of free software
(and charge for this service if you wish), that you receive
source code or can get it if you want it, that you can change
the software or use pieces of it in new free programs; and that
you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the
rights. These restrictions translate to certain responsibilities
for you if you distribute copies of the library, or if you
modify it.
For example, if you distribute copies of the library, whether
gratis or for a fee, you must give the recipients all the rights
that we gave you. You must make sure that they, too, receive or
can get the source code. If you link a program with the
library, you must provide complete object files to the
recipients so that they can relink them with the library, after
making changes to the library and recompiling it. And you must
show them these terms so they know their rights.
Our method of protecting your rights has two steps: (1)
copyright the library, and (2) offer you this license which
gives you legal permission to copy, distribute and/or modify the
library.
Also, for each distributor's protection, we want to make certain
that everyone understands that there is no warranty for this
free library. If the library is modified by someone else and
passed on, we want its recipients to know that what they have is
not the original version, so that any problems introduced by
others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that companies
distributing free software will individually obtain patent
licenses, thus in effect transforming the program into
proprietary software. To prevent this, we have made it clear
that any patent must be licensed for everyone's free use or not
licensed at all.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License, which was designed for
utility programs. This license, the GNU Library General Public
License, applies to certain designated libraries. This license
is quite different from the ordinary one; be sure to read it in
full, and don't assume that anything in it is the same as in the
ordinary license.
The reason we have a separate public license for some libraries
is that they blur the distinction we usually make between
modifying or adding to a program and simply using it. Linking a
program with a library, without changing the library, is in some
sense simply using the library, and is analogous to running a
utility program or application program. However, in a textual
and legal sense, the linked executable is a combined work, a
derivative of the original library, and the ordinary General
Public License treats it as such.
Because of this blurred distinction, using the ordinary General
Public License for libraries did not effectively promote
software sharing, because most developers did not use the
libraries. We concluded that weaker conditions might promote
sharing better.
However, unrestricted linking of non-free programs would deprive
the users of those programs of all benefit from the free status
of the libraries themselves. This Library General Public
License is intended to permit developers of non-free programs to
use free libraries, while preserving your freedom as a user of
such programs to change the free libraries that are incorporated
in them. (We have not seen how to achieve this as regards
changes in header files, but we have achieved it as regards
changes in the actual functions of the Library.) The hope is
that this will lead to faster development of free libraries.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference
between a "work based on the library" and a "work that uses the
library". The former contains code derived from the library,
while the latter only works together with the library.
Note that it is possible for a library to be covered by the
ordinary General Public License rather than by this special one.
GNU LIBRARY GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which
contains a notice placed by the copyright holder or other
authorized party saying it may be distributed under the terms of
this Library General Public License (also called "this
License"). Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application
programs (which use some of those functions and data) to form
executables.
The "Library", below, refers to any such software library or
work which has been distributed under these terms. A "work
based on the Library" means either the Library or any derivative
work under copyright law: that is to say, a work containing the
Library or a portion of it, either verbatim or with
modifications and/or translated straightforwardly into another
language. (Hereinafter, translation is included without
limitation in the term "modification".)
"Source code" for a work means the preferred form of the work
for making modifications to it. For a library, complete source
code means all the source code for all modules it contains, plus
any associated interface definition files, plus the scripts used
to control compilation and installation of the library.
Activities other than copying, distribution and modification are
not covered by this License; they are outside its scope. The
act of running a program using the Library is not restricted,
and output from such a program is covered only if its contents
constitute a work based on the Library (independent of the use
of the Library in a tool for writing it). Whether that is true
depends on what the Library does and what the program that uses
the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided
that you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep
intact all the notices that refer to this License and to the
absence of any warranty; and distribute a copy of this License
along with the Library.
You may charge a fee for the physical act of transferring a
copy, and you may at your option offer warranty protection in
exchange for a fee.
2. You may modify your copy or copies of the Library or any
portion of it, thus forming a work based on the Library, and
copy and distribute such modifications or work under the terms
of Section 1 above, provided that you also meet all of these
conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the
Library, and can be reasonably considered independent and
separate works in themselves, then this License, and its terms,
do not apply to those sections when you distribute them as
separate works. But when you distribute the same sections as
part of a whole which is a work based on the Library, the
distribution of the whole must be on the terms of this License,
whose permissions for other licensees extend to the entire
whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or
contest your rights to work written entirely by you; rather, the
intent is to exercise the right to control the distribution of
derivative or collective works based on the Library.
In addition, mere aggregation of another work not based on the
Library with the Library (or with a work based on the Library)
on a volume of a storage or distribution medium does not bring
the other work under the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General
Public License instead of this License to a given copy of the
Library. To do this, you must alter all the notices that refer
to this License, so that they refer to the ordinary GNU General
Public License, version 2, instead of to this License. (If a
newer version than version 2 of the ordinary GNU General Public
License has appeared, then you can specify that version instead
if you wish.) Do not make any other change in these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to
all subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable
form under the terms of Sections 1 and 2 above provided that you
accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of
Sections 1 and 2 above on a medium customarily used for software
interchange.
If distribution of object code is made by offering access to
copy from a designated place, then offering equivalent access to
copy the source code from the same place satisfies the
requirement to distribute the source code, even though third
parties are not compelled to copy the source along with the
object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being
compiled or linked with it, is called a "work that uses the
Library". Such a work, in isolation, is not a derivative work
of the Library, and therefore falls outside the scope of this
License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library
(because it contains portions of the Library), rather than a
"work that uses the library". The executable is therefore
covered by this License. Section 6 states terms for distribution
of such executables.
When a "work that uses the Library" uses material from a header
file that is part of the Library, the object code for the work
may be a derivative work of the Library even though the source
code is not. Whether this is true is especially significant if
the work can be linked without the Library, or if the work is
itself a library. The threshold for this to be true is not
precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small
inline functions (ten lines or less in length), then the use of
the object file is unrestricted, regardless of whether it is
legally a derivative work. (Executables containing this object
code plus portions of the Library will still fall under Section
6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of
Section 6. Any executables containing that work also fall under
Section 6, whether or not they are linked directly with the
Library itself.
6. As an exception to the Sections above, you may also compile
or link a "work that uses the Library" with the Library to
produce a work containing portions of the Library, and
distribute that work under terms of your choice, provided that
the terms permit modification of the work for the customer's own
use and reverse engineering for debugging such modifications.
You must give prominent notice with each copy of the work that
the Library is used in it and that the Library and its use are
covered by this License. You must supply a copy of this
License. If the work during execution displays copyright
notices, you must include the copyright notice for the Library
among them, as well as a reference directing the user to the
copy of this License. Also, you must do one of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
c) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
d) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special
exception, the source code distributed need not include anything
that is normally distributed (in either source or binary form)
with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that
component itself accompanies the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you
cannot use both them and the Library together in an executable
that you distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other
library facilities not covered by this License, and distribute
such a combined library, provided that the separate distribution
of the work based on the Library and of the other library
facilities is otherwise permitted, and provided that you do
these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or
distribute the Library except as expressly provided under this
License. Any attempt otherwise to copy, modify, sublicense,
link with, or distribute the Library is void, and will
automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you
under this License will not have their licenses terminated so
long as such parties remain in full compliance.
9. You are not required to accept this License, since you have
not signed it. However, nothing else grants you permission to
modify or distribute the Library or its derivative works. These
actions are prohibited by law if you do not accept this
License. Therefore, by modifying or distributing the Library
(or any work based on the Library), you indicate your acceptance
of this License to do so, and all its terms and conditions for
copying, distributing or modifying the Library or works based on
it.
10. Each time you redistribute the Library (or any work based on
the Library), the recipient automatically receives a license
from the original licensor to copy, distribute, link with or
modify the Library subject to these terms and conditions. You
may not impose any further restrictions on the recipients'
exercise of the rights granted herein. You are not responsible
for enforcing compliance by third parties to this License.
11. If, as a consequence of a court judgment or allegation of
patent infringement or for any other reason (not limited to
patent issues), conditions are imposed on you (whether by court
order, agreement or otherwise) that contradict the conditions of
this License, they do not excuse you from the conditions of this
License. If you cannot distribute so as to satisfy
simultaneously your obligations under this License and any other
pertinent obligations, then as a consequence you may not
distribute the Library at all. For example, if a patent license
would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you,
then the only way you could satisfy both it and this License
would be to refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable
under any particular circumstance, the balance of the section is
intended to apply, and the section as a whole is intended to
apply in other circumstances.
It is not the purpose of this section to induce you to infringe
any patents or other property right claims or to contest
validity of any such claims; this section has the sole purpose
of protecting the integrity of the free software distribution
system which is implemented by public license practices. Many
people have made generous contributions to the wide range of
software distributed through that system in reliance on
consistent application of that system; it is up to the
author/donor to decide if he or she is willing to distribute
software through any other system and a licensee cannot impose
that choice.
This section is intended to make thoroughly clear what is
believed to be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted
in certain countries either by patents or by copyrighted
interfaces, the original copyright holder who places the Library
under this License may add an explicit geographical distribution
limitation excluding those countries, so that distribution is
permitted only in or among countries not thus excluded. In such
case, this License incorporates the limitation as if written in
the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Library General Public License from time to
time. Such new versions will be similar in spirit to the present
version, but may differ in detail to address new problems or
concerns.
Each version is given a distinguishing version number. If the
Library specifies a version number of this License which applies
to it and "any later version", you have the option of following
the terms and conditions either of that version or of any later
version published by the Free Software Foundation. If the
Library does not specify a license version number, you may
choose any version ever published by the Free Software
Foundation.
14. If you wish to incorporate parts of the Library into other
free programs whose distribution conditions are incompatible
with these, write to the author to ask for permission. For
software which is copyrighted by the Free Software Foundation,
write to the Free Software Foundation; we sometimes make
exceptions for this. Our decision will be guided by the two
goals of preserving the free status of all derivatives of our
free software and of promoting the sharing and reuse of software
generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND,
EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the
greatest possible use to the public, we recommend making it free
software that everyone can redistribute and change. You can do
so by permitting redistribution under these terms (or,
alternatively, under the terms of the ordinary General Public
License).
To apply these terms, attach the following notices to the
library. It is safest to attach them to the start of each
source file to most effectively convey the exclusion of
warranty; and each file should have at least the "copyright"
line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

View File

@@ -1,53 +0,0 @@
wxWindows Library Licence, Version 3
====================================
Copyright (c) 1998 Julian Smart, Robert Roebling et al
Everyone is permitted to copy and distribute verbatim copies
of this licence document, but changing it is not allowed.
WXWINDOWS LIBRARY LICENCE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public Licence as published by
the Free Software Foundation; either version 2 of the Licence, or (at
your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
General Public Licence for more details.
You should have received a copy of the GNU Library General Public Licence
along with this software, usually in a file named COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA.
EXCEPTION NOTICE
1. As a special exception, the copyright holders of this library give
permission for additional uses of the text contained in this release of
the library as licenced under the wxWindows Library Licence, applying
either version 3 of the Licence, or (at your option) any later version of
the Licence as published by the copyright holders of version 3 of the
Licence document.
2. The exception is that you may use, copy, link, modify and distribute
under the user's own terms, binary object code versions of works based
on the Library.
3. If you copy code from files distributed under the terms of the GNU
General Public Licence or the GNU Library General Public Licence into a
copy of this library, as this licence permits, the exception does not
apply to the code that you add in this way. To avoid misleading anyone as
to the status of such modified files, you must delete this exception
notice from such code and/or adjust the licensing conditions notice
accordingly.
4. If you write modifications of your own for this library, it is your
choice whether to permit this exception to apply to your modifications.
If you do not wish that, you must delete the exception notice from such
code and/or adjust the licensing conditions notice accordingly.

View File

@@ -1,48 +0,0 @@
#
# File: Makefile
# Author: Julian Smart
# Created: 1999
#
# Makefile : Builds Tex2RTF manual
#
DOCDIR=..
LOCALDOCDIR=.
DOCSOURCES=tex2rtf.tex
all: chm htb hlp html htmlhelp pdfrtf
chm: tex2rtf.chm
hlp: tex2rtf.hlp
htb: tex2rtf.htb
html: tex2rtf.html
htmlhelp: tex2rtf.chm
pdfrtf: tex2rtf_rtf.rtf
tex2rtf.hlp: tex2rtf.rtf tex2rtf.hpj
-erase tex2rtf.ph
hcw /E /C tex2rtf.hpj
tex2rtf.chm : tex2rtf.html tex2rtf.hhp
-hhc tex2rtf.hhp
tex2rtf_rtf.rtf: $(DOCSOURCES) tex2rtf.ini
-start /w tex2rtf tex2rtf.tex tex2rtf_rtf.rtf -twice -rtf
tex2rtf.rtf: $(DOCSOURCES) tex2rtf.ini
-start /w tex2rtf tex2rtf.tex tex2rtf.rtf -twice -winhelp
tex2rtf.html: $(DOCSOURCES) tex2rtf.ini
-start /w tex2rtf tex2rtf.tex tex2rtf.html -twice -html
-erase *.con
-erase *.ref
-erase *.con
-erase *.ref
-mkdir html
-copy *.html html
-copy *.gif html
tex2rtf.htb: tex2rtf_contents.html
-zip tex2rtf.htb tex2rtf*.html *.hhp *.hhk *.hhc *.gif

View File

@@ -1,11 +0,0 @@
% makeidx.sty 20-Jan-87 modified for international usage
%
% Modified by J.Schrod (TeXsys).
% according to the suggestion of H.Partl (TU Wien) in german.sty
% to make caption names adaptable to other languages.
\@ifundefined{seeterm}{\def\seeterm{see}}{} % <-----------
\def\see#1#2{{\em \seeterm\/} #1}
\def\printindex{\@input{\jobname.ind}}

View File

@@ -1,154 +0,0 @@
% SOBER.STY van Nico Poppelier
% Adapted by Julian Smart for his own
% nefarious purposes
% --------------------------------------
% Koppen van secties, subsecties, ...
% --------------------------------------
%
% --------------------------------------
% fontgrootte en regelafstand
% (met de notatie X/Y wordt bedoeld
% 'letter X op regelafstand Y')
% --------------------------------------
%
% 10pt 11pt 12pt
% \scriptsize 7/ 8 8/ 9.5 8/ 9.5
% \tiny 5/ 6 6/ 7 6/ 7
% \small 9/11 10/12 11/13.6
% \footnotesize 8/ 9.5 9/11 10/12
% \@normalsize 10/12 11/13.6 12/15
% \large 12/14 12/14 14/18
% \Large 14/18 14/18 17/22
% \LARGE 17/22 17/22 20/25
% \huge 20/25 20/25 25/30
% \Huge 25/30 25/30 25/30
%
% de syntax van \@startsection is:
% \@startsection
% {Name}{Level}{Indent}{Before_skip}{After_Skip}{Type_face}
% Indent : inspring van kop vanaf linkermarge
% Before_skip: wit boven kopje
% (< 0 geeft aan dat eerste alinea niet inspringt)
% After_skip : wit onder kopje indien >= 0
% horizontaal wit na kopje,
% met kopje op de regel indien < 0
%
% notatie voor <glue>: <dimen>(<stretch>)(<shrink>)
%
% in LaTeX's standaard-stijlen (onafhankelijk van \@ptsize):
%
% Indent Before_skip After_skip Type_face
% section 0 -3.5ex (-1ex)(-0.2ex) 2.3ex(0.2ex) \Large\bf
% subsection 0 -3.25ex(-1ex)(-0.2ex) 1.5ex(0.2ex) \large\bf
% subsubsection 0 -3.25ex(-1ex)(-0.2ex) 1.5ex(0.2ex) \normalsize\bf
% paragraph 0 3.25ex( 1ex)( 0.2ex) -1em()() \normalsize\bf
% subparagraph \parindent 3.25ex( 1ex)( 0.2ex) -1em()() \normalsize\bf
%
%
% in een soberder uitvoering (onafhankelijk van \@ptsize):
%
\def\section{\@startsection{section}{1}
%{\z@}{-2.5ex plus -0.5ex minus -0.1ex}{0.5ex plus 0.1ex}{\large\bf}}
{\z@}{-2.5ex plus -0.5ex minus -0.1ex}{0.5ex plus 0.1ex}{\large\bf}}
\def\subsection{\@startsection{subsection}{2}
{\z@}{-2.25ex plus -0.3ex minus -0.2ex}{0.05ex plus 0.05ex}{\normalsize\bf}}
\def\subsubsection{\@startsection{subsubsection}{3}
{\z@}{-2.25ex plus -0.3ex minus -0.2ex}{0.05ex plus 0.05ex}{\normalsize\sc}}
\def\paragraph{\@startsection{paragraph}{4}
{\z@}{2ex plus 0.5ex minus 0.1ex}{-0.7em}{\normalsize\it}}
\def\subparagraph{\@startsection{subparagraph}{4}
{\parindent}{2ex plus 0.5ex minus 0.1ex}{-0.7em}{\normalsize\it}}
%
% --------------------------------------
% Hoofdstuk-koppen
% --------------------------------------
%
% LaTeX's book style (standaard documentstijl) definieert
% de hoofdstuk-koppen onafhankelijk van \@ptsize
%
\def\@makechapterhead#1{\vspace*{20pt}%
% Next line repaired by Piet van Oostrum - June 14, 1991.
%{\parindent 0pt\Large\bf \ifnum\c@secnumdepth>\m@ne\thechapter \fi
{\parindent 0pt\LARGE\bf \ifnum\c@secnumdepth>\m@ne\thechapter. \hskip 1em \fi%
{\raggedright\LARGE\bf #1}\\\rule[10pt]{\textwidth}{0.3mm}\par\nobreak \vskip25pt} }
\def\@makeschapterhead#1{
\vspace*{20pt} { \parindent 0pt \raggedright
\LARGE\bf#1\par\nobreak\vskip25pt } }
%
% --------------------------------------
% List-omgevingen (itemize en enumerate)
% --------------------------------------
%
% De volgende parameters zijn relevant in een list-omgeving:
%
% \labelsep : afstand tussen label en item
% \labelwidth : breedte van label
% \leftmargin : afstand tussen linkermarge en item
% \rightmargin : afstand tussen item en rechtermarge
% \listparindent: indentatie voor vervolg-alinea's in item
% \parsep : verticaal wit tussen vervolg-alinea's in item
% \itemsep : verticaal wit tussen opeenvolgende item's
% \topsep,
% \partopsep : wit boven item 1 = \topsep + \parskip
% (geen alinea-overgang boven lijst)
% wit boven item 1 = \topsep + \parskip + \partopsep
% (alinea-overgang boven lijst)
%
% zie verder LaTeX-boek 5.7.1 en C.5.3
% --------------------------------------
%
% De parameters voor niveau 1 worden gedefinieerd op top-niveau en
% \@listi definieert uitsluitend \leftmargin
%
% size = small (9pt, 10pt, 11pt)
\def\@listi{\topsep 0.4ex \parsep 0pt \itemsep \parsep}
% \topsep 4pt(2pt)(2pt) 6pt(2pt)(2pt) 9pt(3pt)(5pt)
% \parsep 2pt(1pt)(1pt) 3pt(2pt)(1pt) 4.5pt(2pt)(1pt)
%
% size = footnotesize (8pt, 9pt, 10pt)
\def\@listi{\topsep 0.4ex \parsep 0pt \itemsep \parsep}
% \topsep 3pt(1pt)(1pt) 4pt(2pt)(2pt) 6pt(2pt)(2pt)
% \parsep 2pt(1pt)(1pt) 2pt(1pt)(1pt) 3pt(2pt)(1pt)
%
% size = normalsize (and bigger)
% \parskip 0pt(1pt) 0pt(1pt) 0pt(1pt)
% \parindent 15pt 17pt 1.5em
% \topsep 8pt(2pt)(4pt) 9pt(3pt)(5pt) 10pt(4pt)(6pt)
% \partopsep 2pt(1pt)(1pt) 3pt(1pt)(2pt) 3pt(2pt)(2pt)
% \itemsep 4pt(2pt)(1pt) 4.5pt(2pt)(1pt) 5pt(2.5pt)(1pt
% \parsep 4pt(2pt)(1pt) 4.5pt(2pt)(1pt) 5pt(2.5pt)(1pt)
\topsep 0.4ex \partopsep 0pt \itemsep 0pt \parsep 0pt
%
% \leftmargini 2.5em \leftmarginii 2.2em \leftmarginiii 1.87em
% \leftmarginiv 1.7em \leftmarginv 1.0em \leftmarginvi 1.0em
%
% \leftmargin\leftmargini
% \labelwidth\leftmargini\advance\labelwidth-\labelsep
% \labelsep 0.5em
%
% \def\@listi{\leftmargin\leftmargini}
%
\def\@listii{\leftmargin\leftmarginii
\labelwidth\leftmarginii\advance\labelwidth-\labelsep
% \topsep 4pt(2pt)(1pt) 4.5pt(2pt)(1pt) 5pt(2.5pt)(1pt)
% \parsep 2pt(1pt)(1pt) 2pt(1pt)(1pt) 2.5pt(1pt)(1pt)
\topsep 0pt \parsep 0pt \itemsep \parsep}
%
\def\@listiii{\leftmargin\leftmarginiii
\labelwidth\leftmarginiii\advance\labelwidth-\labelsep
% \topsep 2pt(1pt)(1pt) 2pt(1pt)(1pt) 2.5pt(1pt)(1pt)
% \partopsep 1pt(0pt)(1pt) 1pt(0pt)(1pt) 1pt(0pt)(1pt)
\parsep \z@ \topsep 0pt \partopsep 0pt \itemsep \topsep}
%
% \def\@listiv{\leftmargin\leftmarginiv
% \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
%
% \def\@listv{ \leftmargin\leftmarginv
% \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
%
% \def\@listvi{\leftmargin\leftmarginvi
% \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}

View File

@@ -1,33 +0,0 @@
% mytitle.sty
% Julian Smart's Enhanced Titlepage
\def\maketitle{\begin{titlepage}
\let\footnotesize\small \let\footnoterule\relax \setcounter{page}{0}
%\null
%\vfil
\vspace*{2cm}\begin{flushleft}
{\huge \sf\@title\\\rule{\textwidth}{0.5mm}} \vskip 3em {\large \lineskip .75em
{\sf\@author}
\par}
\vskip 1.5em {\large\sf \@date \par} \end{flushleft} \par
\@thanks
\vfill
{\sf\small\begin{flushright}%
Artificial Intelligence Applications Institute\\
University of Edinburgh\\
80 South Bridge\\
EH1 1HN\\
Tel. 0131-650-2746
\end{flushright}}
\null
\end{titlepage}
\setcounter{footnote}{0} \let\thanks\relax
\gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\maketitle\relax}
\def\abstractname{Abstract} % <----------
\def\abstract{\titlepage
\null\vfil
\begin{center}
{\bf \abstractname} % <----------
% {\bf Abstract}
\end{center}}
\def\endabstract{\par\vfil\null\endtitlepage}

View File

@@ -1,140 +0,0 @@
Implementation notes
--------------------
Files
-----
The library tex2any.lib contains the generic Latex parser.
It comprises tex2any.cc, tex2any.h and texutils.cc.
The executable Tex2RTF is made up of tex2any.lib,
tex2rtf.cc (main driver and user interface), and specific
drivers for generating output: rtfutils.cc, htmlutil.cc
and xlputils.cc.
Data structures
---------------
Class declarations are found in tex2any.h.
TexMacroDef holds a macro (Latex command) definition: name, identifier,
number of arguments, whether it should be ignored, etc. Integer
identifiers are used for each Latex command for efficiency when
generating output. A hash table MacroDefs stores all the TexMacroDefs,
indexed on command name.
Each unit of a Latex file is stored in a TexChunk. A TexChunk can be
a macro, argument or just a string: a TexChunk macro has child
chunks for the arguments, and each argument will have one or more
children for representing another command or a simple string.
Parsing
-------
Parsing is relatively add hoc. read_a_line reads in a line at a time,
doing some processing for file commands (e.g. input, verbatiminclude).
File handles are stored in a stack so file input commands may be nested.
ParseArg parses an argument (which might be the whole Latex input,
which is treated as an argument) or a single command, or a command
argument. The parsing gets a little hairy because an environment,
a normal command and bracketed commands (e.g. {\bf thing}) all get
parsed into the same format. An environment, for example,
is usually a one-argument command, as is {\bf thing}. It also
deals with user-defined macros.
Whilst parsing, the function MatchMacro gets called to
attempt to find a command following a backslash (or the
start of an environment). ParseMacroBody parses the
arguments of a command when one is found.
Generation
----------
The upshot of parsing is a hierarchy of TexChunks.
TraverseFromDocument calls the recursive TraverseFromChunk,
and is called by the 'client' converter application to
start the generation process. TraverseFromChunk
calls the two functions OnMacro and OnArgument,
twice for each chunk to allow for preprocessing
and postprocessing of each macro or argument.
The client defines OnMacro and OnArgument to test
the command identifier, and output the appropriate
code. To help do this, the function TexOutput
outputs to the current stream(s), and
SetCurrentOutput(s) allows the setting of one
or two output streams for the output to be sent to.
Usually two outputs at a time are sufficient for
hypertext applications where a title is likely
to appear in an index and as a section header.
There are support functions for getting the string
data for the current chunk (GetArgData) and the
current chunk (GetArgChunk). If you have a handle
on a chunk, you can output it several times by calling
TraverseChildrenFromChunk (not TraverseFromChunk because
that causes infinite recursion).
The client (here, Tex2RTF) also defines OnError and OnInform output
functions appropriate to the desired user interface.
References
----------
Adding, finding and resolving references are supported
with functions from texutils.cc. WriteTexReferences
and ReadTexReferences allow saving and reading references
between conversion processes, rather like real LaTeX.
Bibliography
------------
Again texutils.cc provides functions for reading in .bib files and
resolving references. The function OutputBibItem gives a generic way
outputting bibliography items, by 'faking' calls to OnMacro and
OnArgument, allowing the existing low-level client code to take care of
formatting.
Units
-----
Unit parsing code is in texutils.cc as ParseUnitArgument. It converts
units to points.
Common errors
-------------
1) Macro not found: \end{center} ...
Rewrite:
\begin{center}
{\large{\underline{A}}}
\end{center}
as:
\begin{center}
{\large \underline{A}}
\end{center}
2) Tables crash RTF. Set 'compatibility ' to TRUE in .ini file; also
check for \\ end of row characters on their own on a line, insert
correct number of ampersands for the number of columns. E.g.
hello & world\\
\\
becomes
hello & world\\
&\\
3) If list items indent erratically, try increasing
listItemIndent to give more space between label and following text.
A global replace of '\item [' to '\item[' may also be helpful to remove
unnecessary space before the item label.
4) Missing figure or section references: ensure all labels _directly_ follow captions
or sections (no intervening white space).

View File

@@ -1,520 +0,0 @@
%
% %%%%%%% %%%%% %%%%%% %%%%% % %
% % % % % % % % % %
% % % % % % % % % %
% %%%%%%% %%%%% %%%%%% % % %
% % % % % % % % %
% % % % % % % % %
% % %%%%%% %%%%%% %%%%% % %
%
% By Jean Orloff
% Comments & suggestions by e-mail: ORLOFF@surya11.cern.ch
% No modification of this file allowed if not e-sent to me.
%
% A simple way to measure the size of encapsulated postscript figures
% from inside TeX, and to use it for automatically formatting texts
% with inserted figures. Works both under Plain TeX-based macros
% (Phyzzx, Harvmac, Psizzl, ...) and LaTeX environment.
% Provides exactly the same result on any PostScript printer provided
% the single instruction \psfor... is changed to fit the needs of the
% particular dvi->ps translator used.
% History:
% 1.31: adds \psforDVIALW(?)
% 1.30: adds \splitfile & \joinfiles for multi-file management
% 1.24: fix error handling & add \psonlyboxes
% 1.23: adds \putsp@ce for OzTeX fix
% 1.22: makes \drawingBox \global for use in Phyzzx
% 1.21: accepts %%BoundingBox: (atend)
% 1.20: tries to add \psfordvitps for the TeXPS package.
% 1.10: adds \psforoztex, error handling...
%2345678 1 2345678 2 2345678 3 2345678 4 2345678 5 2345678 6 2345678 7 23456789
%
\def\temp{1.31}
\let\tempp=\relax
\expandafter\ifx\csname psboxversion\endcsname\relax
\message{version: \temp}
\else
\ifdim\temp cm>\psboxversion cm
\message{version: \temp}
\else
\message{psbox(\psboxversion) is already loaded: I won't load
psbox(\temp)!}
\let\temp=\psboxversion
\let\tempp=\endinput
\fi
\fi
\tempp
\let\psboxversion=\temp
\catcode`\@=11
% Every macro likes a little privacy...
%
% Some common defs
%
\def\execute#1{#1}% NOT stupid: cs in #1 are then identified BEFORE execution
\def\psm@keother#1{\catcode`#112\relax}% borrowed from latex
\def\executeinspecs#1{%
\execute{\begingroup\let\do\psm@keother\dospecials\catcode`\^^M=9#1\endgroup}}
%
%Trying to tame the variety of \special commands for Postscript: the
% universal internal command \PSspeci@l##1##2 takes ##1 to be the
% filename and ##2 to be the integer scale factor*1000 (as for usual
% TeX \scale commands)
%
\def\psfortextures{% For TeXtures on the Macintosh
%-----------------
\def\PSspeci@l##1##2{%
\special{illustration ##1\space scaled ##2}%
}}
%
\def\psfordvitops{% For the DVItoPS converter on IBM mainframes
%----------------
\def\PSspeci@l##1##2{%
\special{dvitops: import ##1\space \the\drawingwd \the\drawinght}%
}}
%
\def\psfordvips{% For DVIPS converter on VAX, UNIX and PC's
%--------------
\def\PSspeci@l##1##2{%
% \special{/@scaleunit 1000 def}% never read dox without trying!
\d@my=0.1bp \d@mx=\drawingwd \divide\d@mx by\d@my%
\special{PSfile=##1\space llx=\psllx\space lly=\pslly\space%
urx=\psurx\space ury=\psury\space rwi=\number\d@mx}%
}}
%
\def\psforoztex{% For the OzTeX shareware on the Macintosh
%--------------
\def\PSspeci@l##1##2{%
\special{##1 \space
##2 1000 div dup scale
\putsp@ce{\number-\psllx} \putsp@ce{\number-\pslly} translate
}%
}}
\def\putsp@ce#1{#1 }
%
\def\psfordvitps{% From the UNIX TeXPS package, vers.>3.12
%---------------
% Convert a dimension into the number \psn@sp (in scaled points)
\def\psdimt@n@sp##1{\d@mx=##1\relax\edef\psn@sp{\number\d@mx}}
\def\PSspeci@l##1##2{%
% psfig.psr contains the def of "startTexFig": if you can locate it
% and include the correct pathname, it should work
\special{dvitps: Include0 "psfig.psr"}% contains def of "startTexFig"
\psdimt@n@sp{\drawingwd}
\special{dvitps: Literal "\psn@sp\space"}
\psdimt@n@sp{\drawinght}
\special{dvitps: Literal "\psn@sp\space"}
\psdimt@n@sp{\psllx bp}
\special{dvitps: Literal "\psn@sp\space"}
\psdimt@n@sp{\pslly bp}
\special{dvitps: Literal "\psn@sp\space"}
\psdimt@n@sp{\psurx bp}
\special{dvitps: Literal "\psn@sp\space"}
\psdimt@n@sp{\psury bp}
\special{dvitps: Literal "\psn@sp\space startTexFig\space"}
\special{dvitps: Include1 "##1"}
\special{dvitps: Literal "endTexFig\space"}
}}
\def\psforDVIALW{% Try for dvialw, a UNIX public domain
%---------------
\def\PSspeci@l##1##2{
\special{language "PS"
literal "##2 1000 div dup scale"
include "##1"}}}
\def\psonlyboxes{% Draft-like behaviour if none of the others works
%---------------
\def\PSspeci@l##1##2{%
\at(0cm;0cm){\boxit{\vbox to\drawinght
{\vss
\hbox to\drawingwd{\at(0cm;0cm){\hbox{(##1)}}\hss}
}}}
}%
}
%
\def\psloc@lerr#1{%
\let\savedPSspeci@l=\PSspeci@l%
\def\PSspeci@l##1##2{%
\at(0cm;0cm){\boxit{\vbox to\drawinght
{\vss
\hbox to\drawingwd{\at(0cm;0cm){\hbox{(##1) #1}}\hss}
}}}
\let\PSspeci@l=\savedPSspeci@l% restore normal output for other figs!
}%
}
%
%\def\psfor... add your own!
%
% \ReadPSize{PSfilename} reads the dimensions of a PostScript drawing
% and stores it in \drawinght(wd)
\newread\pst@mpin
\newdimen\drawinght\newdimen\drawingwd
\newdimen\psxoffset\newdimen\psyoffset
\newbox\drawingBox
\newif\ifNotB@undingBox
\newhelp\PShelp{Proceed: you'll have a 5cm square blank box instead of
your graphics (Jean Orloff).}
\def\@mpty{}
\def\s@tsize#1 #2 #3 #4\@ndsize{
\def\psllx{#1}\def\pslly{#2}%
\def\psurx{#3}\def\psury{#4}% needed by a crazyness of dvips!
\ifx\psurx\@mpty\NotB@undingBoxtrue% this is not a valid one!
\else
\drawinght=#4bp\advance\drawinght by-#2bp
\drawingwd=#3bp\advance\drawingwd by-#1bp
% !Units related by crazy factors as bp/pt=72.27/72 should be BANNED!
\fi
}
\def\sc@nline#1:#2\@ndline{\edef\p@rameter{#1}\edef\v@lue{#2}}
\def\g@bblefirstblank#1#2:{\ifx#1 \else#1\fi#2}
\def\psm@keother#1{\catcode`#112\relax}% borrowed from latex
\def\execute#1{#1}% Seems stupid, but cs are identified BEFORE execution
{\catcode`\%=12
\xdef\B@undingBox{%%BoundingBox}
} %% is not a true comment in PostScript, even if % is!
\def\ReadPSize#1{
\edef\PSfilename{#1}
\openin\pst@mpin=#1\relax
\ifeof\pst@mpin \errhelp=\PShelp
\errmessage{I haven't found your postscript file (\PSfilename)}
\psloc@lerr{was not found}
\s@tsize 0 0 142 142\@ndsize
\closein\pst@mpin
\else
\immediate\write\psbj@inaux{#1,}
\loop
\executeinspecs{\catcode`\ =10\global\read\pst@mpin to\n@xtline}
\ifeof\pst@mpin
\errhelp=\PShelp
\errmessage{(\PSfilename) is not an Encapsulated PostScript File:
I could not find any \B@undingBox: line.}
\edef\v@lue{0 0 142 142:}
\psloc@lerr{is not an EPSFile}
\NotB@undingBoxfalse
\else
\expandafter\sc@nline\n@xtline:\@ndline
\ifx\p@rameter\B@undingBox\NotB@undingBoxfalse
\edef\t@mp{%
\expandafter\g@bblefirstblank\v@lue\space\space\space}
\expandafter\s@tsize\t@mp\@ndsize
\else\NotB@undingBoxtrue
\fi
\fi
\ifNotB@undingBox\repeat
\closein\pst@mpin
\fi
\message{#1}
}
%
% \psboxto(xdim;ydim){psfilename}: you specify the dimensions and
% TeX uniformly scales to fit the largest one. If xdim=0pt, the
% scale is fully determined by ydim and vice versa.
% Notice: psboxes are a real vboxes; couldn't take hbox otherwise all
% indentation and all cr's would be interpreted as spaces (hugh!).
%
\newcount\xscale \newcount\yscale \newdimen\pscm\pscm=1cm
\newdimen\d@mx \newdimen\d@my
\let\ps@nnotation=\relax
\def\psboxto(#1;#2)#3{\vbox{
\ReadPSize{#3}
\divide\drawingwd by 1000
\divide\drawinght by 1000
\d@mx=#1
\ifdim\d@mx=0pt\xscale=1000
\else \xscale=\d@mx \divide \xscale by \drawingwd\fi
\d@my=#2
\ifdim\d@my=0pt\yscale=1000
\else \yscale=\d@my \divide \yscale by \drawinght\fi
\ifnum\yscale=1000
\else\ifnum\xscale=1000\xscale=\yscale
\else\ifnum\yscale<\xscale\xscale=\yscale\fi
\fi
\fi
\divide \psxoffset by 1000\multiply\psxoffset by \xscale
\divide \psyoffset by 1000\multiply\psyoffset by \xscale
\global\divide\pscm by 1000
\global\multiply\pscm by\xscale
\multiply\drawingwd by\xscale \multiply\drawinght by\xscale
\ifdim\d@mx=0pt\d@mx=\drawingwd\fi
\ifdim\d@my=0pt\d@my=\drawinght\fi
\message{scaled \the\xscale}
\hbox to\d@mx{\hss\vbox to\d@my{\vss
\global\setbox\drawingBox=\hbox to 0pt{\kern\psxoffset\vbox to 0pt{
\kern-\psyoffset
\PSspeci@l{\PSfilename}{\the\xscale}
\vss}\hss\ps@nnotation}
\global\ht\drawingBox=\the\drawinght
\global\wd\drawingBox=\the\drawingwd
\baselineskip=0pt
\copy\drawingBox
\vss}\hss}
\global\psxoffset=0pt
\global\psyoffset=0pt% These are local to one figure
\global\pscm=1cm
\global\drawingwd=\drawingwd
\global\drawinght=\drawinght
}}
%
% \psboxscaled{scalefactor*1000}{PSfilename} allows to bypass the
% rounding errors of TeX integer divisions for situations where the
% TeX box should fit the original BoundingBox with a precision better
% than 1/1000.
%
\def\psboxscaled#1#2{\vbox{
\ReadPSize{#2}
\xscale=#1
\message{scaled \the\xscale}
\divide\drawingwd by 1000\multiply\drawingwd by\xscale
\divide\drawinght by 1000\multiply\drawinght by\xscale
\divide \psxoffset by 1000\multiply\psxoffset by \xscale
\divide \psyoffset by 1000\multiply\psyoffset by \xscale
\global\divide\pscm by 1000
\global\multiply\pscm by\xscale
\global\setbox\drawingBox=\hbox to 0pt{\kern\psxoffset\vbox to 0pt{
\kern-\psyoffset
\PSspeci@l{\PSfilename}{\the\xscale}
\vss}\hss\ps@nnotation}
\global\ht\drawingBox=\the\drawinght
\global\wd\drawingBox=\the\drawingwd
\baselineskip=0pt
\copy\drawingBox
\global\psxoffset=0pt
\global\psyoffset=0pt% These are local to one figure
\global\pscm=1cm
\global\drawingwd=\drawingwd
\global\drawinght=\drawinght
}}
%
% \psbox{PSfilename} makes a TeX box having the minimal size to
% enclose the picture
\def\psbox#1{\psboxscaled{1000}{#1}}
%
%
% \joinfiles file1, file2, ...n \into joinedfilename .
% makes one file out of many
% \splitfile joinedfilename
% the opposite
%
%\def\execute#1{#1}% NOT stupid: cs in #1 are then identified BEFORE execution
%\def\psm@keother#1{\catcode`#112\relax}% borrowed from latex
%\def\executeinspecs#1{%
%\execute{\begingroup\let\do\psm@keother\dospecials\catcode`\^^M=9#1\endgroup}}
%\newread\pst@mpin
\newif\ifn@teof\n@teoftrue
\newif\ifc@ntrolline
\newif\ifmatch
\newread\j@insplitin
\newwrite\j@insplitout
\newwrite\psbj@inaux
\immediate\openout\psbj@inaux=psbjoin.aux
\immediate\write\psbj@inaux{\string\joinfiles}
\immediate\write\psbj@inaux{\jobname,}
%
% We redefine input to keep track of the various files inputted
%
\immediate\let\oldinput=\input
\def\input#1 {
\immediate\write\psbj@inaux{#1,}
\oldinput #1 }
\def\empty{}
\def\setmatchif#1\contains#2{
\def\match##1#2##2\endmatch{
\def\tmp{##2}
\ifx\empty\tmp
\matchfalse
\else
\matchtrue
\fi}
\match#1#2\endmatch}
\def\warnopenout#1#2{
\setmatchif{TrashMe,psbjoin.aux,psbjoin.all}\contains{#2}
\ifmatch
\else
\immediate\openin\pst@mpin=#2
\ifeof\pst@mpin
\else
\errhelp{If the content of this file is so precious to you, abort (ie
press x or e) and rename it before retrying.}
\errmessage{I'm just about to replace your file named #2}
\fi
\immediate\closein\pst@mpin
\fi
\message{#2}
\immediate\openout#1=#2}
% No comments allowed below: % will have an unusual catcode
{
\catcode`\%=12
\gdef\splitfile#1 {
\immediate\openin\j@insplitin=#1
\message{Splitting file #1 into:}
\warnopenout\j@insplitout{TrashMe}
\loop
\ifeof
\j@insplitin\immediate\closein\j@insplitin\n@teoffalse
\else
\n@teoftrue
\executeinspecs{\global\read\j@insplitin to\spl@tinline\expandafter
\ch@ckbeginnewfile\spl@tinline%Beginning-Of-File-Named:%\endcheck}
\ifc@ntrolline
\else
\toks0=\expandafter{\spl@tinline}
\immediate\write\j@insplitout{\the\toks0}
\fi
\fi
\ifn@teof\repeat
\immediate\closeout\j@insplitout}
\gdef\ch@ckbeginnewfile#1%Beginning-Of-File-Named:#2%#3\endcheck{
\def\t@mp{#1}
\ifx\empty\t@mp
\def\t@mp{#3}
\ifx\empty\t@mp
\global\c@ntrollinefalse
\else
\immediate\closeout\j@insplitout
\warnopenout\j@insplitout{#2}
\global\c@ntrollinetrue
\fi
\else
\global\c@ntrollinefalse
\fi}
\gdef\joinfiles#1\into#2 {
\message{Joining following files into}
\warnopenout\j@insplitout{#2}
\message{:}
{
\edef\w@##1{\immediate\write\j@insplitout{##1}}
\w@{% This text was produced with psbox's \string\joinfiles.}
\w@{% To decompose and tex it:}
\w@{%-save this with a filename CONTAINING ONLY LETTERS, and no extensions}
\w@{% (say, JOINTFIL), in some uncrowded directory;}
\w@{%-make sure you can \string\input\space psbox.tex (version>=1.3);}
\w@{%-tex JOINTFIL using Plain, or LaTeX, or whatever is needed by}
\w@{% the first part in the joining (after splitting JOINTFIL into}
\w@{% it's constituents, TeX will try to process it as it stands).}
\w@{\string\input\space psbox.tex}
\w@{\string\splitfile{\string\jobname}}
}
\tre@tfilelist#1, \endtre@t
\immediate\closeout\j@insplitout}
\gdef\tre@tfilelist#1, #2\endtre@t{
\def\t@mp{#1}
\ifx\empty\t@mp
\else
\llj@in{#1}
\tre@tfilelist#2, \endtre@t
\fi}
\gdef\llj@in#1{
\immediate\openin\j@insplitin=#1
\ifeof\j@insplitin
\errmessage{I couldn't find file #1.}
\else
\message{#1}
\toks0={%Beginning-Of-File-Named:#1}
\immediate\write\j@insplitout{\the\toks0}
\executeinspecs{\global\read\j@insplitin to\oldj@ininline}
\loop
\ifeof\j@insplitin\immediate\closein\j@insplitin\n@teoffalse
\else\n@teoftrue
\executeinspecs{\global\read\j@insplitin to\j@ininline}
\toks0=\expandafter{\oldj@ininline}
\let\oldj@ininline=\j@ininline
\immediate\write\j@insplitout{\the\toks0}
\fi
\ifn@teof
\repeat
\immediate\closein\j@insplitin
\fi}
}
% To be put at the end of a file, for making an tar-like file containing
% everything it used.
\def\autojoin{
\immediate\write\psbj@inaux{\string\into\space psbjoin.all}
\immediate\closeout\psbj@inaux
\input psbjoin.aux
}
%
% Annotations & Captions etc...
%
%
% \centinsert{anybox} is just a centered \midinsert, but is included as
% people barely use the original inserts from TeX.
%
\def\centinsert#1{\midinsert\line{\hss#1\hss}\endinsert}
\def\psannotate#1#2{\def\ps@nnotation{#2\global\let\ps@nnotation=\relax}#1}
\def\pscaption#1#2{\vbox{
\setbox\drawingBox=#1
\copy\drawingBox
\vskip\baselineskip
\vbox{\hsize=\wd\drawingBox\setbox0=\hbox{#2}
\ifdim\wd0>\hsize
\noindent\unhbox0\tolerance=5000
\else\centerline{\box0}
\fi
}}}
% for compatibility with older versions
\def\psfig#1#2#3{\pscaption{\psannotate{#1}{#2}}{#3}}
\def\psfigurebox#1#2#3{\pscaption{\psannotate{\psbox{#1}}{#2}}{#3}}
%
% \at(#1;#2)#3 puts #3 at #1-higher and #2-right of the current
% position without moving it (to be used in annotations).
\def\at(#1;#2)#3{\setbox0=\hbox{#3}\ht0=0pt\dp0=0pt
\rlap{\kern#1\vbox to0pt{\kern-#2\box0\vss}}}
%
% \gridfill(ht;wd) makes a 1cm*1cm grid of ht by wd whose lower-left
% corner is the current point
\newdimen\gridht \newdimen\gridwd
\def\gridfill(#1;#2){
\setbox0=\hbox to 1\pscm
{\vrule height1\pscm width.4pt\leaders\hrule\hfill}
\gridht=#1
\divide\gridht by \ht0
\multiply\gridht by \ht0
\gridwd=#2
\divide\gridwd by \wd0
\multiply\gridwd by \wd0
\advance \gridwd by \wd0
\vbox to \gridht{\leaders\hbox to\gridwd{\leaders\box0\hfill}\vfill}}
%
% Useful to measure where to put annotations
\def\fillinggrid{\at(0cm;0cm){\vbox{
\gridfill(\drawinght;\drawingwd)}}}
%
% \textleftof\anybox: Sample text\endtext
% inserts "Sample text" on the left of \anybox ie \vbox, \psbox.
% \textrightof is the symmetric (not documented, too uggly)
% Welcome any suggestion about clean wraparound macros from
% TeXhackers reading this
%
\def\textleftof#1:{
\setbox1=#1
\setbox0=\vbox\bgroup
\advance\hsize by -\wd1 \advance\hsize by -2em}
\def\textrightof#1:{
\setbox0=#1
\setbox1=\vbox\bgroup
\advance\hsize by -\wd0 \advance\hsize by -2em}
\def\endtext{
\egroup
\hbox to \hsize{\valign{\vfil##\vfil\cr%
\box0\cr%
\noalign{\hss}\box1\cr}}}
%
% \frameit{\thick}{\skip}{\anybox}
% draws with thickness \thick a box around \anybox, leaving \skip of
% blank around it. eg \frameit{0.5pt}{1pt}{\hbox{hello}}
% \boxit{\anybox} is a shortcut.
\def\frameit#1#2#3{\hbox{\vrule width#1\vbox{
\hrule height#1\vskip#2\hbox{\hskip#2\vbox{#3}\hskip#2}%
\vskip#2\hrule height#1}\vrule width#1}}
\def\boxit#1{\frameit{0.4pt}{0pt}{#1}}
%
%
\catcode`\@=12 % cs containing @ are unreachable
%
% CUSTOMIZE YOUR DEFAULT DRIVER:
% Uncomment the line corresponding to your TeX system:
%\psfortextures% For TeXtures on the Macintosh
%\psforoztex % For OzTeX shareware on the Macintosh
%\psfordvitops % For the DVItoPS converter for TeX on IBM mainframes
\psfordvips % For DVIPS converter on VAX and UNIX
%\psfordvitps % For dvitps from TeXPS package under UNIX
%\psforDVIALW % For DVIALW, UNIX public domain
%\psonlyboxes % Blank Boxes (when all else fails).

View File

@@ -1,78 +0,0 @@
+++++ Announcing Tex2RTF +++++
+++++ A Free LaTeX to RTF, Windows Help RTF, and HTML converter +++++
Purpose
=======
* Allows you to maintain manuals in printed and hypertext formats.
* Allows conversion of existing LaTeX documents to word processor
formats (usually some 'tweaking' is required to conform to
Tex2RTF restrictions).
Input
=====
A LaTeX subset with some additional hypertext macros; no maths,
minimal table support.
Caveat: Please do not expect to convert arbitrary LaTex files without
editing: this is not the primary intention of Tex2RTF. Success converting
existing LaTeX depends on your expectations and the style in which
the LaTeX was written. Tex2RTF does not accept pure TeX (non-LaTeX)
documents.
Output
======
* ordinary RTF
* Windows Help hypertext RTF
* HTML (the World Wide Web hypertext format)
* wxHTML Help (the wxWidgets GUI library help file format)
Installation
============
Under Windows, please run the supplied install.exe program. The Tex2RTF
manual itself serves as an example input file, in the docs subdirectory
with various .sty, .ini, and .gif files that you may need for your
own documents. See the online manual for further details.
Platforms supported
===================
* Windows (all 32-bit desktop versions)
* Any Unix supporting wxWidgets
* Mac OS X
Where to get it
===============
The latest version of Tex2RTF can be accessed by anonymous ftp
from:
ftp://biolpc22.york.ac.uk/pub/tex2rtf
The WWW pages are at:
http://www.wxwidgets.org/tex2rtf
Tex2RTF was developed using the free, cross-platform GUI toolkit
wxWidgets, at http://www.wxwidgets.org. To compile Tex2RTF
for platforms for which there are no Tex2RTF binaries,
you need to download an appropriate version of wxWidgets,
configure and compile the library, then compile Tex2RTF
in utils/tex2rtf/src.
------------------------------------------------------------------
Julian Smart, August 2002
julian.smart@btopenworld.com

View File

@@ -1,35 +0,0 @@
@techreport{robins87,
author = {Robins, Gabriel},
title = {The {ISI} grapher: a portable tool for displaying graphs pictorially (ISI/RS-87-196)},
institution = {University of South California},
year = {1987},
month = {September}
}
@book{helpbook,
author = {Boggan, Scott and Fakas, David and Welinske, Joe}
, title = {Developing on-line help for {W}indows}
, publisher = {Sams Publishing}
, address = {11711 North College, Carmel, Indiana 46032, USA}
, year = {1993}
}
@book{kopka,
author = {Kopka, Helmut and Daly, Patrick W.}
, title = {A Guide to LaTeX}
, publisher = {Addison-Wesley}
, year = {1993}
}
@book{pfeiffer,
author = {Pfeiffer, Katherine Shelly}
, title = {Word for Windows Design Companion}
, publisher = {Ventana Press}
, year = {1994}
}
@manual{smart93a,
author = {Smart, Julian}
, title = {wxWindows 1.50 User Manual}
, publisher = {Artificial Intelligence Applications Institute}
, organization = {University of Edinburgh}
, address = {80 South Bridge, Edinburgh, EH1 1HN}
, year = {1993}
}

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