mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-16 01:39:27 +02:00
* Added ability to create class chart
git-svn-id: trunk@23193 -
This commit is contained in:
parent
c9e838e2f9
commit
2c26d53f9b
3
.gitattributes
vendored
3
.gitattributes
vendored
@ -14018,6 +14018,7 @@ utils/fpdoc/fpde/xpms.pp svneol=native#text/plain
|
||||
utils/fpdoc/fpdoc.css -text
|
||||
utils/fpdoc/fpdoc.lpi svneol=native#text/plain
|
||||
utils/fpdoc/fpdoc.pp svneol=native#text/plain
|
||||
utils/fpdoc/fpdocclasstree.pp svneol=native#text/plain
|
||||
utils/fpdoc/fpdocproj.pas svneol=native#text/plain
|
||||
utils/fpdoc/fpdocxmlopts.pas svneol=native#text/plain
|
||||
utils/fpdoc/fpmake.pp svneol=native#text/plain
|
||||
@ -14032,9 +14033,11 @@ utils/fpdoc/intl/makeskel.de.po svneol=native#text/plain
|
||||
utils/fpdoc/makeskel.lpi svneol=native#text/plain
|
||||
utils/fpdoc/makeskel.pp svneol=native#text/plain
|
||||
utils/fpdoc/mgrfpdocproj.pp svneol=native#text/plain
|
||||
utils/fpdoc/minusimage.inc svneol=native#text/plain
|
||||
utils/fpdoc/mkfpdoc.pp svneol=native#text/plain
|
||||
utils/fpdoc/mkfpdocproj.lpi svneol=native#text/plain
|
||||
utils/fpdoc/mkfpdocproj.pp svneol=native#text/plain
|
||||
utils/fpdoc/plusimage.inc svneol=native#text/plain
|
||||
utils/fpdoc/sample-project.xml svneol=native#text/plain
|
||||
utils/fpdoc/sh_pas.pp svneol=native#text/plain
|
||||
utils/fpdoc/testunit.pp svneol=native#text/plain
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2012/09/27]
|
||||
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2012/12/01]
|
||||
#
|
||||
default: all
|
||||
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux jvm-java jvm-android
|
||||
@ -3500,6 +3500,96 @@ endif
|
||||
fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
|
||||
fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
|
||||
fpc_makefiles: fpc_makefile fpc_makefile_dirs
|
||||
ifdef TARGET_DIRS_TARGET_DIRS
|
||||
TARGET_DIRS_all:
|
||||
$(MAKE) -C TARGET_DIRS all
|
||||
TARGET_DIRS_debug:
|
||||
$(MAKE) -C TARGET_DIRS debug
|
||||
TARGET_DIRS_smart:
|
||||
$(MAKE) -C TARGET_DIRS smart
|
||||
TARGET_DIRS_release:
|
||||
$(MAKE) -C TARGET_DIRS release
|
||||
TARGET_DIRS_units:
|
||||
$(MAKE) -C TARGET_DIRS units
|
||||
TARGET_DIRS_examples:
|
||||
$(MAKE) -C TARGET_DIRS examples
|
||||
TARGET_DIRS_shared:
|
||||
$(MAKE) -C TARGET_DIRS shared
|
||||
TARGET_DIRS_install:
|
||||
$(MAKE) -C TARGET_DIRS install
|
||||
TARGET_DIRS_sourceinstall:
|
||||
$(MAKE) -C TARGET_DIRS sourceinstall
|
||||
TARGET_DIRS_exampleinstall:
|
||||
$(MAKE) -C TARGET_DIRS exampleinstall
|
||||
TARGET_DIRS_distinstall:
|
||||
$(MAKE) -C TARGET_DIRS distinstall
|
||||
TARGET_DIRS_zipinstall:
|
||||
$(MAKE) -C TARGET_DIRS zipinstall
|
||||
TARGET_DIRS_zipsourceinstall:
|
||||
$(MAKE) -C TARGET_DIRS zipsourceinstall
|
||||
TARGET_DIRS_zipexampleinstall:
|
||||
$(MAKE) -C TARGET_DIRS zipexampleinstall
|
||||
TARGET_DIRS_zipdistinstall:
|
||||
$(MAKE) -C TARGET_DIRS zipdistinstall
|
||||
TARGET_DIRS_clean:
|
||||
$(MAKE) -C TARGET_DIRS clean
|
||||
TARGET_DIRS_distclean:
|
||||
$(MAKE) -C TARGET_DIRS distclean
|
||||
TARGET_DIRS_cleanall:
|
||||
$(MAKE) -C TARGET_DIRS cleanall
|
||||
TARGET_DIRS_info:
|
||||
$(MAKE) -C TARGET_DIRS info
|
||||
TARGET_DIRS_makefiles:
|
||||
$(MAKE) -C TARGET_DIRS makefiles
|
||||
TARGET_DIRS:
|
||||
$(MAKE) -C TARGET_DIRS all
|
||||
.PHONY: TARGET_DIRS_all TARGET_DIRS_debug TARGET_DIRS_smart TARGET_DIRS_release TARGET_DIRS_units TARGET_DIRS_examples TARGET_DIRS_shared TARGET_DIRS_install TARGET_DIRS_sourceinstall TARGET_DIRS_exampleinstall TARGET_DIRS_distinstall TARGET_DIRS_zipinstall TARGET_DIRS_zipsourceinstall TARGET_DIRS_zipexampleinstall TARGET_DIRS_zipdistinstall TARGET_DIRS_clean TARGET_DIRS_distclean TARGET_DIRS_cleanall TARGET_DIRS_info TARGET_DIRS_makefiles TARGET_DIRS
|
||||
endif
|
||||
ifdef TARGET_EXAMPLEDIRS_TARGET_EXAMPLEDIRS
|
||||
TARGET_EXAMPLEDIRS_all:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS all
|
||||
TARGET_EXAMPLEDIRS_debug:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS debug
|
||||
TARGET_EXAMPLEDIRS_smart:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS smart
|
||||
TARGET_EXAMPLEDIRS_release:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS release
|
||||
TARGET_EXAMPLEDIRS_units:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS units
|
||||
TARGET_EXAMPLEDIRS_examples:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS examples
|
||||
TARGET_EXAMPLEDIRS_shared:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS shared
|
||||
TARGET_EXAMPLEDIRS_install:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS install
|
||||
TARGET_EXAMPLEDIRS_sourceinstall:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS sourceinstall
|
||||
TARGET_EXAMPLEDIRS_exampleinstall:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS exampleinstall
|
||||
TARGET_EXAMPLEDIRS_distinstall:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS distinstall
|
||||
TARGET_EXAMPLEDIRS_zipinstall:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS zipinstall
|
||||
TARGET_EXAMPLEDIRS_zipsourceinstall:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS zipsourceinstall
|
||||
TARGET_EXAMPLEDIRS_zipexampleinstall:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS zipexampleinstall
|
||||
TARGET_EXAMPLEDIRS_zipdistinstall:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS zipdistinstall
|
||||
TARGET_EXAMPLEDIRS_clean:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS clean
|
||||
TARGET_EXAMPLEDIRS_distclean:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS distclean
|
||||
TARGET_EXAMPLEDIRS_cleanall:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS cleanall
|
||||
TARGET_EXAMPLEDIRS_info:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS info
|
||||
TARGET_EXAMPLEDIRS_makefiles:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS makefiles
|
||||
TARGET_EXAMPLEDIRS:
|
||||
$(MAKE) -C TARGET_EXAMPLEDIRS all
|
||||
.PHONY: TARGET_EXAMPLEDIRS_all TARGET_EXAMPLEDIRS_debug TARGET_EXAMPLEDIRS_smart TARGET_EXAMPLEDIRS_release TARGET_EXAMPLEDIRS_units TARGET_EXAMPLEDIRS_examples TARGET_EXAMPLEDIRS_shared TARGET_EXAMPLEDIRS_install TARGET_EXAMPLEDIRS_sourceinstall TARGET_EXAMPLEDIRS_exampleinstall TARGET_EXAMPLEDIRS_distinstall TARGET_EXAMPLEDIRS_zipinstall TARGET_EXAMPLEDIRS_zipsourceinstall TARGET_EXAMPLEDIRS_zipexampleinstall TARGET_EXAMPLEDIRS_zipdistinstall TARGET_EXAMPLEDIRS_clean TARGET_EXAMPLEDIRS_distclean TARGET_EXAMPLEDIRS_cleanall TARGET_EXAMPLEDIRS_info TARGET_EXAMPLEDIRS_makefiles TARGET_EXAMPLEDIRS
|
||||
endif
|
||||
all: fpc_all
|
||||
debug: fpc_debug
|
||||
smart: fpc_smart
|
||||
@ -3526,9 +3616,13 @@ include fpcmake.loc
|
||||
endif
|
||||
.NOTPARALLEL:
|
||||
fpdoc$(EXEEXT): fpdoc.pp dglobals.pp dwriter.pp dw_xml.pp sh_pas.pp dw_html.pp\
|
||||
dw_latex.pp dwlinear.pp dw_txt.pp dw_linrtf.pp
|
||||
dw_latex.pp dwlinear.pp dw_txt.pp dw_linrtf.pp css.inc plusimage.inc minusimage.inc
|
||||
makeskel$(EXEEXT): makeskel.pp dglobals.pp
|
||||
css.inc: fpdoc.css ../bin2obj$(EXEEXT)
|
||||
../bin2obj$(EXEEXT) -o css.inc -c DefaultCSS fpdoc.css
|
||||
plusimage.inc: images/plus.png ../bin2obj$(EXEEXT)
|
||||
../bin2obj$(EXEEXT) -o plusimage.inc -c PlusImageData images/plus.png
|
||||
minusimage.inc: images/minus.png ../bin2obj$(EXEEXT)
|
||||
../bin2obj$(EXEEXT) -o minusimage.inc -c MinusImageData images/minus.png
|
||||
../bin2obj$(EXEEXT):
|
||||
$(MAKE) -C .. bin2obj$(EXEEXT)
|
||||
|
@ -34,12 +34,18 @@ files=dwriter.rst fpdoc.rst dglobals.rst makeskel.rst fpdocopts.rst
|
||||
[rules]
|
||||
.NOTPARALLEL:
|
||||
fpdoc$(EXEEXT): fpdoc.pp dglobals.pp dwriter.pp dw_xml.pp sh_pas.pp dw_html.pp\
|
||||
dw_latex.pp dwlinear.pp dw_txt.pp dw_linrtf.pp
|
||||
dw_latex.pp dwlinear.pp dw_txt.pp dw_linrtf.pp css.inc plusimage.inc minusimage.inc
|
||||
|
||||
makeskel$(EXEEXT): makeskel.pp dglobals.pp
|
||||
|
||||
css.inc: fpdoc.css ../bin2obj$(EXEEXT)
|
||||
../bin2obj$(EXEEXT) -o css.inc -c DefaultCSS fpdoc.css
|
||||
|
||||
plusimage.inc: images/plus.png ../bin2obj$(EXEEXT)
|
||||
../bin2obj$(EXEEXT) -o plusimage.inc -c PlusImageData images/plus.png
|
||||
|
||||
minusimage.inc: images/minus.png ../bin2obj$(EXEEXT)
|
||||
../bin2obj$(EXEEXT) -o minusimage.inc -c MinusImageData images/minus.png
|
||||
|
||||
../bin2obj$(EXEEXT):
|
||||
$(MAKE) -C .. bin2obj$(EXEEXT)
|
||||
|
@ -1,9 +1,9 @@
|
||||
|
||||
Const
|
||||
DefaultCSS : Array[0..2254] of byte = (
|
||||
DefaultCSS : Array[0..2242] of byte = (
|
||||
47, 42, 10, 32, 32, 36, 73,100, 58, 32,102,112,100,111, 99, 46, 99,
|
||||
115,115, 44,118, 32, 49, 46, 49, 32, 50, 48, 48, 51, 47, 48, 51, 47,
|
||||
49, 55, 32, 50, 51, 58, 48, 51, 58, 50, 48, 32,109,105, 99,104, 97,
|
||||
115,116, 44,118, 32, 49, 46, 49, 32, 50, 48, 48, 53, 47, 48, 49, 47,
|
||||
48, 50, 32, 49, 54, 58, 50, 50, 58, 49, 54, 32,109,105, 99,104, 97,
|
||||
101,108, 32, 69,120,112, 32, 36, 10, 10, 32, 32, 68,101,102, 97,117,
|
||||
108,116, 32,115,116,121,108,101, 32,115,104,101,101,116, 32,102,111,
|
||||
114, 32, 70, 80, 68,111, 99, 32,114,101,102,101,114,101,110, 99,101,
|
||||
@ -53,84 +53,83 @@ Const
|
||||
32,105,110, 32,115,111,117,114, 99,101, 32,102,114, 97,103,109,101,
|
||||
110,116,115, 32, 42, 47, 10,115,112, 97,110, 46,115,121,109, 32,123,
|
||||
10, 32, 32, 99,111,108,111,114, 58, 32,100, 97,114,107,114,101,100,
|
||||
10,125, 10, 10, 47, 42, 32,107,101,121,119,111,114,100,115, 32,105,
|
||||
110, 32,115,111,117,114, 99,101, 32,102,114, 97,103,109,101,110,116,
|
||||
115, 32, 42, 47, 10,115,112, 97,110, 46,107,119, 32,123, 10, 32, 32,
|
||||
102,111,110,116, 45,119,101,105,103,104,116, 58, 32, 98,111,108,100,
|
||||
10,125, 10, 10, 47, 42, 32, 99,111,109,109,101,110,116,115, 32,105,
|
||||
110, 32,115,111,117,114, 99,101, 32,102,114, 97,103,109,101,110,116,
|
||||
115, 32, 42, 47, 10,115,112, 97,110, 46, 99,109,116, 32,123, 10, 32,
|
||||
32, 99,111,108,111,114, 58, 32,100, 97,114,107, 99,121, 97,110, 59,
|
||||
10, 32, 32,102,111,110,116, 45,115,116,121,108,101, 58, 32,105,116,
|
||||
97,108,105, 99, 10,125, 10, 10, 47, 42, 32,100,105,114,101, 99,116,
|
||||
105,118,101,115, 32,105,110, 32,115,111,117,114, 99,101, 32,102,114,
|
||||
97,103,109,101,110,116,115, 32, 42, 47, 10,115,112, 97,110, 46,100,
|
||||
105,114, 32,123, 10, 32, 32, 99,111,108,111,114, 58, 32,100, 97,114,
|
||||
107,121,101,108,108,111,119, 59, 10, 32, 32,102,111,110,116, 45,115,
|
||||
116,121,108,101, 58, 32,105,116, 97,108,105, 99, 10,125, 10, 10, 47,
|
||||
42, 32,110,117,109, 98,101,114,115, 32,105,110, 32,115,111,117,114,
|
||||
10,125, 10, 47, 42, 32, 78,111, 32,119,111,114,100,119,114, 97,112,
|
||||
32,105,110, 32, 99,111,100,101, 32,102,114, 97,103,109,101,110,116,
|
||||
115, 32, 42, 47, 10,115,112, 97,110, 46, 99,111,100,101, 32,123, 10,
|
||||
32, 32, 32,119,104,105,116,101, 45,115,112, 97, 99,101, 58, 32,110,
|
||||
111,119,114, 97,112, 10,125, 10, 10, 47, 42, 32,107,101,121,119,111,
|
||||
114,100,115, 32,105,110, 32,115,111,117,114, 99,101, 32,102,114, 97,
|
||||
103,109,101,110,116,115, 32, 42, 47, 10,115,112, 97,110, 46,107,119,
|
||||
32,123, 10, 32, 32,102,111,110,116, 45,119,101,105,103,104,116, 58,
|
||||
32, 98,111,108,100, 10,125, 10, 10, 47, 42, 32, 99,111,109,109,101,
|
||||
110,116,115, 32,105,110, 32,115,111,117,114, 99,101, 32,102,114, 97,
|
||||
103,109,101,110,116,115, 32, 42, 47, 10,115,112, 97,110, 46, 99,109,
|
||||
116, 32,123, 10, 32, 32, 99,111,108,111,114, 58, 32,100, 97,114,107,
|
||||
99,121, 97,110, 59, 10, 32, 32,102,111,110,116, 45,115,116,121,108,
|
||||
101, 58, 32,105,116, 97,108,105, 99, 10,125, 10, 10, 47, 42, 32,100,
|
||||
105,114,101, 99,116,105,118,101,115, 32,105,110, 32,115,111,117,114,
|
||||
99,101, 32,102,114, 97,103,109,101,110,116,115, 32, 42, 47, 10,115,
|
||||
112, 97,110, 46,110,117,109, 32,123, 10, 32, 32, 99,111,108,111,114,
|
||||
58, 32,100, 97,114,107,109, 97,103,101,110,116, 97, 10,125, 10, 10,
|
||||
47, 42, 32, 99,104, 97,114, 97, 99,116,101,114,115, 32, 40, 35, 46,
|
||||
46, 46, 41, 32,105,110, 32,115,111,117,114, 99,101, 32,102,114, 97,
|
||||
103,109,101,110,116,115, 32, 42, 47, 10,115,112, 97,110, 46, 99,104,
|
||||
114, 32,123, 10, 32, 32, 99,111,108,111,114, 58, 32,100, 97,114,107,
|
||||
99,121, 97,110, 10,125, 10, 10, 47, 42, 32,115,116,114,105,110,103,
|
||||
115, 32,105,110, 32,115,111,117,114, 99,101, 32,102,114, 97,103,109,
|
||||
101,110,116,115, 32, 42, 47, 10,115,112, 97,110, 46,115,116,114, 32,
|
||||
123, 10, 32, 32, 99,111,108,111,114, 58, 32, 98,108,117,101, 10,125,
|
||||
10, 10, 47, 42, 32, 97,115,115,101,109, 98,108,101,114, 32,112, 97,
|
||||
115,115, 97,103,101,115, 32,105,110, 32,115,111,117,114, 99,101, 32,
|
||||
102,114, 97,103,109,101,110,116,115, 32, 42, 47, 10,115,112, 97,110,
|
||||
46, 97,115,109, 32,123, 10, 32, 32, 99,111,108,111,114, 58, 32,103,
|
||||
114,101,101,110, 10,125, 10, 10, 10,116,100, 46,112,114,101, 32,123,
|
||||
10, 32, 32,119,104,105,116,101, 45,115,112, 97, 99,101, 58, 32,112,
|
||||
114,101, 10,125, 10, 10,112, 46, 99,109,116, 32,123, 10, 32, 32, 99,
|
||||
111,108,111,114, 58, 32,103,114, 97,121, 10,125, 10, 10,115,112, 97,
|
||||
110, 46,119, 97,114,110,105,110,103, 32,123, 10, 32, 32, 99,111,108,
|
||||
111,114, 58, 32,114,101,100, 59, 10, 32, 32,102,111,110,116, 45,119,
|
||||
101,105,103,104,116, 58, 32, 98,111,108,100, 10,125, 10, 10, 47, 42,
|
||||
32, 33, 33, 33, 58, 32, 72,111,119, 32,115,104,111,117,108,100, 32,
|
||||
119,101, 32,100,101,102,105,110,101, 32,116,104,105,115, 46, 46, 46,
|
||||
63, 32, 42, 47, 10,115,112, 97,110, 46,102,105,108,101, 32,123, 10,
|
||||
32, 32, 99,111,108,111,114, 58, 32,100, 97,114,107,103,114,101,101,
|
||||
110, 10,125, 10, 10,116, 97, 98,108,101, 46,114,101,109, 97,114,107,
|
||||
32,123, 10, 32, 32, 98, 97, 99,107,103,114,111,117,110,100, 45, 99,
|
||||
111,108,111,114, 58, 32, 35,102,102,102,102, 99, 48, 59, 10,125, 10,
|
||||
10,116, 97, 98,108,101, 46, 98, 97,114, 32,123, 10, 32, 32, 98, 97,
|
||||
99,107,103,114,111,117,110,100, 45, 99,111,108,111,114, 58, 32, 35,
|
||||
97, 48, 99, 48,102,102, 59, 10,125, 10, 10,115,112, 97,110, 46, 98,
|
||||
97,114,116,105,116,108,101, 32,123, 10, 32, 32,102,111,110,116, 45,
|
||||
119,101,105,103,104,116, 58, 32, 98,111,108,100, 59, 10, 32, 32,102,
|
||||
112, 97,110, 46,100,105,114, 32,123, 10, 32, 32, 99,111,108,111,114,
|
||||
58, 32,100, 97,114,107,121,101,108,108,111,119, 59, 10, 32, 32,102,
|
||||
111,110,116, 45,115,116,121,108,101, 58, 32,105,116, 97,108,105, 99,
|
||||
59, 10, 32, 32, 99,111,108,111,114, 58, 32,100, 97,114,107, 98,108,
|
||||
117,101, 10,125, 10, 10,115,112, 97,110, 46,102,111,111,116,101,114,
|
||||
32,123, 10, 32, 32,102,111,110,116, 45,115,116,121,108,101, 58, 32,
|
||||
105,116, 97,108,105, 99, 59, 10, 32, 32, 99,111,108,111,114, 58, 32,
|
||||
100, 97,114,107, 98,108,117,101, 10,125, 10, 10, 47, 42, 32,100,101,
|
||||
102,105,110,105,116,105,111,110, 32,108,105,115,116, 32, 42, 47, 10,
|
||||
100,108, 32,123, 10, 32, 98,111,114,100,101,114, 58, 32, 51,112,120,
|
||||
32,100,111,117, 98,108,101, 32, 35, 99, 99, 99, 59, 10, 32,112, 97,
|
||||
100,100,105,110,103, 58, 32, 48, 46, 53,101,109, 59, 10,125, 10, 10,
|
||||
47, 42, 32,100,101,102,105,110,105,116,105,111,110, 32,108,105,115,
|
||||
116, 58, 32,116,101,114,109, 32, 42, 47, 10,100,116, 32,123, 10, 32,
|
||||
102,108,111, 97,116, 58, 32,108,101,102,116, 59, 10, 32, 99,108,101,
|
||||
97,114, 58, 32,108,101,102,116, 59, 10, 32,119,105,100,116,104, 58,
|
||||
32, 97,117,116,111, 59, 32, 47, 42, 32,110,111,114,109, 97,108,108,
|
||||
121, 32, 98,114,111,119,115,101,114,115, 32,100,101,102, 97,117,108,
|
||||
116, 32,119,105,100,116,104, 32,111,102, 32,108, 97,114,103,101,115,
|
||||
116, 32,105,116,101,109, 32, 42, 47, 10, 32,112, 97,100,100,105,110,
|
||||
103, 45,114,105,103,104,116, 58, 32, 50, 48,112,120, 59, 10, 32,102,
|
||||
111,110,116, 45,119,101,105,103,104,116, 58, 32, 98,111,108,100, 59,
|
||||
10, 32, 99,111,108,111,114, 58, 32,100, 97,114,107,103,114,101,101,
|
||||
110, 59, 10,125, 10, 10, 47, 42, 32,100,101,102,105,110,105,116,105,
|
||||
111,110, 32,108,105,115,116, 58, 32,100,101,115, 99,114,105,112,116,
|
||||
105,111,110, 32, 42, 47, 10,100,100, 32,123, 10, 32,109, 97,114,103,
|
||||
105,110, 58, 32, 48, 32, 48, 32, 48, 32, 49, 49, 48,112,120, 59, 10,
|
||||
32,112, 97,100,100,105,110,103, 58, 32, 48, 32, 48, 32, 48, 46, 53,
|
||||
101,109, 32, 48, 59, 10,125, 10, 10, 47, 42, 32,102,111,114, 32, 98,
|
||||
114,111,119,115,101,114,115, 32,105,110, 32,115,116, 97,110,100, 97,
|
||||
114,100,115, 32, 99,111,109,112,108,105, 97,110, 99,101, 32,109,111,
|
||||
100,101, 32, 42, 47, 10,116,100, 32,112, 32,123, 10, 32, 32,109, 97,
|
||||
114,103,105,110, 58, 32, 48, 59, 10,125, 10);
|
||||
10,125, 10, 10, 47, 42, 32,110,117,109, 98,101,114,115, 32,105,110,
|
||||
32,115,111,117,114, 99,101, 32,102,114, 97,103,109,101,110,116,115,
|
||||
32, 42, 47, 10,115,112, 97,110, 46,110,117,109, 32,123, 10, 32, 32,
|
||||
99,111,108,111,114, 58, 32,100, 97,114,107,109, 97,103,101,110,116,
|
||||
97, 10,125, 10, 10, 47, 42, 32, 99,104, 97,114, 97, 99,116,101,114,
|
||||
115, 32, 40, 35, 46, 46, 46, 41, 32,105,110, 32,115,111,117,114, 99,
|
||||
101, 32,102,114, 97,103,109,101,110,116,115, 32, 42, 47, 10,115,112,
|
||||
97,110, 46, 99,104,114, 32,123, 10, 32, 32, 99,111,108,111,114, 58,
|
||||
32,100, 97,114,107, 99,121, 97,110, 10,125, 10, 10, 47, 42, 32,115,
|
||||
116,114,105,110,103,115, 32,105,110, 32,115,111,117,114, 99,101, 32,
|
||||
102,114, 97,103,109,101,110,116,115, 32, 42, 47, 10,115,112, 97,110,
|
||||
46,115,116,114, 32,123, 10, 32, 32, 99,111,108,111,114, 58, 32, 98,
|
||||
108,117,101, 10,125, 10, 10, 47, 42, 32, 97,115,115,101,109, 98,108,
|
||||
101,114, 32,112, 97,115,115, 97,103,101,115, 32,105,110, 32,115,111,
|
||||
117,114, 99,101, 32,102,114, 97,103,109,101,110,116,115, 32, 42, 47,
|
||||
10,115,112, 97,110, 46, 97,115,109, 32,123, 10, 32, 32, 99,111,108,
|
||||
111,114, 58, 32,103,114,101,101,110, 10,125, 10, 10, 10,116,100, 46,
|
||||
112,114,101, 32,123, 10, 32, 32,119,104,105,116,101, 45,115,112, 97,
|
||||
99,101, 58, 32,112,114,101, 10,125, 10, 10,112, 46, 99,109,116, 32,
|
||||
123, 10, 32, 32, 99,111,108,111,114, 58, 32,103,114, 97,121, 10,125,
|
||||
10, 10,115,112, 97,110, 46,119, 97,114,110,105,110,103, 32,123, 10,
|
||||
32, 32, 99,111,108,111,114, 58, 32,114,101,100, 59, 10, 32, 32,102,
|
||||
111,110,116, 45,119,101,105,103,104,116, 58, 32, 98,111,108,100, 10,
|
||||
125, 10, 10, 47, 42, 32, 33, 33, 33, 58, 32, 72,111,119, 32,115,104,
|
||||
111,117,108,100, 32,119,101, 32,100,101,102,105,110,101, 32,116,104,
|
||||
105,115, 46, 46, 46, 63, 32, 42, 47, 10,115,112, 97,110, 46,102,105,
|
||||
108,101, 32,123, 10, 32, 32, 99,111,108,111,114, 58, 32,100, 97,114,
|
||||
107,103,114,101,101,110, 10,125, 10, 10,116, 97, 98,108,101, 46,114,
|
||||
101,109, 97,114,107, 32,123, 10, 32, 32, 98, 97, 99,107,103,114,111,
|
||||
117,110,100, 45, 99,111,108,111,114, 58, 32, 35,102,102,102,102, 99,
|
||||
48, 59, 10,125, 10, 10,116, 97, 98,108,101, 46, 98, 97,114, 32,123,
|
||||
10, 32, 32, 98, 97, 99,107,103,114,111,117,110,100, 45, 99,111,108,
|
||||
111,114, 58, 32, 35, 97, 48, 99, 48,102,102, 59, 10,125, 10, 10,116,
|
||||
100, 32,112, 32,123, 10, 32,109, 97,114,103,105,110, 58, 32, 48, 59,
|
||||
10,125, 10, 10,115,112, 97,110, 46, 98, 97,114,116,105,116,108,101,
|
||||
32,123, 10, 32, 32,102,111,110,116, 45,119,101,105,103,104,116, 58,
|
||||
32, 98,111,108,100, 59, 10, 32, 32,102,111,110,116, 45,115,116,121,
|
||||
108,101, 58, 32,105,116, 97,108,105, 99, 59, 10, 32, 32, 99,111,108,
|
||||
111,114, 58, 32,100, 97,114,107, 98,108,117,101, 10,125, 10, 10,115,
|
||||
112, 97,110, 46,116,111,103,103,108,101,116,114,101,101, 99,108,111,
|
||||
115,101, 32,123, 10, 32, 32, 32, 32, 98, 97, 99,107,103,114,111,117,
|
||||
110,100, 58, 32,117,114,108, 40,109,105,110,117,115, 46,112,110,103,
|
||||
41, 32, 99,101,110,116,101,114, 32,108,101,102,116, 32,110,111, 45,
|
||||
114,101,112,101, 97,116, 59, 10, 32, 32, 32, 32,112, 97,100,100,105,
|
||||
110,103, 45,108,101,102,116, 58, 32, 50, 48,112,120, 59, 32, 10,125,
|
||||
10, 10,115,112, 97,110, 46,116,111,103,103,108,101,116,114,101,101,
|
||||
111,112,101,110, 32,123, 10, 32, 32, 32, 32, 98, 97, 99,107,103,114,
|
||||
111,117,110,100, 58, 32,117,114,108, 40,112,108,117,115, 46,112,110,
|
||||
103, 41, 32, 99,101,110,116,101,114, 32,108,101,102,116, 32,110,111,
|
||||
45,114,101,112,101, 97,116, 59, 10, 32, 32, 32, 32,112, 97,100,100,
|
||||
105,110,103, 45,108,101,102,116, 58, 32, 50, 48,112,120, 59, 32, 10,
|
||||
125, 10, 10,117,108, 46, 99,108, 97,115,115,116,114,101,101,108,105,
|
||||
115,116, 32,108,105, 32,123, 32,112, 97,100,100,105,110,103, 45,108,
|
||||
101,102,116, 58, 32, 48,112,120, 59, 32,125, 10, 10,117,108, 46, 99,
|
||||
108, 97,115,115,116,114,101,101,108,105,115,116, 32,123, 32,108,105,
|
||||
115,116, 45,115,116,121,108,101, 45,116,121,112,101, 58,110,111,110,
|
||||
101, 59, 32,125, 10, 10,108,105, 46, 99,108, 97,115,115,116,114,101,
|
||||
101, 32,117,108, 32,123, 32,100,105,115,112,108, 97,121, 58, 32, 98,
|
||||
108,111, 99,107, 59, 32,125, 10, 10,108,105, 46, 99,108, 97,115,115,
|
||||
116,114,101,101, 99,108,111,115,101,100, 32,117,108, 32,123, 32,100,
|
||||
105,115,112,108, 97,121, 58, 32,110,111,110,101, 59, 32,125, 10);
|
||||
|
@ -48,6 +48,7 @@ resourcestring
|
||||
SDocProceduresAndFunctions = 'Procedures and functions';
|
||||
SDocVariables = 'Variables';
|
||||
SDocIdentifierIndex = 'Index';
|
||||
SDocPackageClassHierarchy = 'Class hierarchy';
|
||||
SDocModuleIndex = 'Index of all identifiers in unit ''%s''';
|
||||
SDocPackageIndex = 'Index of all identifiers in package ''%s''';
|
||||
SDocUnitOverview = 'Overview of unit ''%s''';
|
||||
|
@ -32,6 +32,7 @@ const
|
||||
// Maybe needed later for topic overview ??
|
||||
TopicsSubIndex = 7;
|
||||
IndexSubIndex = 8;
|
||||
ClassHierarchySubIndex = 9;
|
||||
|
||||
// Subpage indices for classes
|
||||
PropertiesByInheritanceSubindex = 1;
|
||||
@ -88,7 +89,10 @@ type
|
||||
FOnTest: TNotifyEvent;
|
||||
FPackage: TPasPackage;
|
||||
FCharSet : String;
|
||||
procedure AddElementsFromList(L: TStrings; List: TFPList; UsePathName : Boolean = False);
|
||||
procedure AppendTypeDecl(AType: TPasType; TableEl, CodeEl: TDomElement);
|
||||
procedure CreateMinusImage;
|
||||
procedure CreatePlusImage;
|
||||
function GetPageCount: Integer;
|
||||
procedure SetOnTest(const AValue: TNotifyEvent);
|
||||
protected
|
||||
@ -99,6 +103,7 @@ type
|
||||
PageInfos: TObjectList; // list of TPageInfo objects
|
||||
|
||||
Doc: THTMLDocument;
|
||||
HeadElement,
|
||||
BodyElement, TitleElement: TDOMElement;
|
||||
|
||||
Module: TPasModule;
|
||||
@ -233,6 +238,8 @@ type
|
||||
procedure CreatePageBody(AElement: TPasElement; ASubpageIndex: Integer); virtual;
|
||||
procedure CreatePackagePageBody;
|
||||
procedure CreatePackageIndex;
|
||||
procedure CreatePackageClassHierarchy;
|
||||
procedure CreateClassHierarchyPage(AList: TStringList; AddUnit : Boolean);
|
||||
procedure AddModuleIdentifiers(AModule : TPasModule; L : TStrings);
|
||||
Procedure CreateTopicPageBody(AElement : TTopicElement);
|
||||
procedure CreateModulePageBody(AModule: TPasModule; ASubpageIndex: Integer);
|
||||
@ -286,9 +293,12 @@ type
|
||||
|
||||
implementation
|
||||
|
||||
uses SysUtils, XHTML, XMLRead, XMLWrite, HTMWrite, sh_pas,chmsitemap;
|
||||
uses SysUtils, XHTML, XMLRead, XMLWrite, HTMWrite, sh_pas, fpdocclasstree,
|
||||
chmsitemap;
|
||||
|
||||
{$i css.inc}
|
||||
{$i plusimage.inc}
|
||||
{$i minusimage.inc}
|
||||
|
||||
Function FixHTMLpath(S : String) : STring;
|
||||
|
||||
@ -525,6 +535,13 @@ constructor THTMLWriter.Create(APackage: TPasPackage; AEngine: TFPDocEngine);
|
||||
end;
|
||||
end;
|
||||
|
||||
Function HaveClasses(AModule: TPasModule) : Boolean;
|
||||
|
||||
begin
|
||||
with AModule do
|
||||
Result:=InterfaceSection.Classes.Count>0;
|
||||
end;
|
||||
|
||||
procedure ScanModule(AModule: TPasModule; LinkList : TObjectList);
|
||||
var
|
||||
i, j, k: Integer;
|
||||
@ -621,6 +638,7 @@ constructor THTMLWriter.Create(APackage: TPasPackage; AEngine: TFPDocEngine);
|
||||
var
|
||||
i: Integer;
|
||||
L : TObjectList;
|
||||
H : Boolean;
|
||||
|
||||
begin
|
||||
inherited ;
|
||||
@ -642,6 +660,15 @@ begin
|
||||
begin
|
||||
AddPage(Package, 0);
|
||||
AddPage(Package,IndexSubIndex);
|
||||
I:=0;
|
||||
H:=False;
|
||||
While (I<Package.Modules.Count) and Not H do
|
||||
begin
|
||||
H:=HaveClasses(TPasModule(Package.Modules[i]));
|
||||
Inc(I);
|
||||
end;
|
||||
if H then
|
||||
AddPage(Package,ClassHierarchySubIndex);
|
||||
AddTopicPages(Package);
|
||||
end;
|
||||
L:=TObjectList.Create;
|
||||
@ -683,6 +710,7 @@ begin
|
||||
Doc.AppendChild(HTMLEl);
|
||||
|
||||
HeadEl := Doc.CreateHeadElement;
|
||||
HeadElement:=HeadEl;
|
||||
HTMLEl.AppendChild(HeadEl);
|
||||
El := Doc.CreateElement('meta');
|
||||
HeadEl.AppendChild(El);
|
||||
@ -762,6 +790,41 @@ begin
|
||||
end;
|
||||
end;
|
||||
CreateCSSFile;
|
||||
CreatePlusImage;
|
||||
CreateMinusImage;
|
||||
end;
|
||||
|
||||
procedure THTMLWriter.CreatePlusImage;
|
||||
Var
|
||||
TempStream: TMemoryStream;
|
||||
|
||||
begin
|
||||
TempStream := TMemoryStream.Create;
|
||||
try
|
||||
DoLog('Creating plus image',[]);
|
||||
TempStream.WriteBuffer(PlusImageData,SizeOf(PlusImageData));
|
||||
TempStream.Position := 0;
|
||||
TempStream.SaveToFile(Engine.output+'plus.png');
|
||||
finally
|
||||
TempStream.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure THTMLWriter.CreateMinusImage;
|
||||
|
||||
Var
|
||||
TempStream: TMemoryStream;
|
||||
|
||||
begin
|
||||
TempStream := TMemoryStream.Create;
|
||||
try
|
||||
DoLog('Creating minus image',[]);
|
||||
TempStream.WriteBuffer(MinusImageData,SizeOf(MinusImageData));
|
||||
TempStream.Position := 0;
|
||||
TempStream.SaveToFile(Engine.output+'minus.png');
|
||||
finally
|
||||
TempStream.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure THTMLWriter.CreateCSSFile;
|
||||
@ -2003,6 +2066,20 @@ var
|
||||
AppendText(ParaEl, ']');
|
||||
end;
|
||||
|
||||
procedure AddPackageLink(ALinkSubpageIndex: Integer; const AName: String);
|
||||
begin
|
||||
if FUseMenuBrackets then
|
||||
AppendText(ParaEl, '[');
|
||||
if ALinkSubpageIndex = ASubpageIndex then
|
||||
AppendText(ParaEl, AName)
|
||||
else
|
||||
AppendText(
|
||||
CreateLink(ParaEl, ResolveLinkWithinPackage(Package, ALinkSubpageIndex)),
|
||||
AName);
|
||||
if FUseMenuBrackets then
|
||||
AppendText(ParaEl, ']');
|
||||
end;
|
||||
|
||||
begin
|
||||
TableEl := CreateEl(BodyElement, 'table');
|
||||
TableEl['cellpadding'] := '4';
|
||||
@ -2032,17 +2109,8 @@ begin
|
||||
end
|
||||
else
|
||||
begin
|
||||
// Manually add link for package page
|
||||
if FUseMenuBrackets then
|
||||
AppendText(ParaEl, '[');
|
||||
if (IndexSubIndex = ASubpageIndex) then
|
||||
AppendText(ParaEl, SDocIdentifierIndex)
|
||||
else
|
||||
AppendText(
|
||||
CreateLink(ParaEl, ResolveLinkWithinPackage(Package, IndexSubIndex)),
|
||||
SDocIdentifierIndex);
|
||||
if FUseMenuBrackets then
|
||||
AppendText(ParaEl, ']');
|
||||
AddPackageLink(IndexSubIndex, SDocIdentifierIndex);
|
||||
AddPackageLink(ClassHierarchySubIndex, SDocPackageClassHierarchy);
|
||||
end;
|
||||
|
||||
if Length(SearchPage) > 0 then
|
||||
@ -2269,6 +2337,162 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure THTMLWriter.CreateClassHierarchyPage(AList : TStringList; AddUnit : Boolean);
|
||||
Procedure PushClassElement;
|
||||
|
||||
Var
|
||||
H : THTMLElement;
|
||||
begin
|
||||
H:=CreateEl(CurOutputNode, 'li');
|
||||
H['class']:='classtree';
|
||||
PushOutputNode(H);
|
||||
H:=CreateEl(CurOutputNode, 'span');
|
||||
H['class']:='toggletreeclose';
|
||||
H['onclick']:='expandorcollapse(this)';
|
||||
PushOutputNode(h);
|
||||
AppendNbSp(h,1);
|
||||
PopOutputNode;
|
||||
end;
|
||||
|
||||
Procedure PushClassList;
|
||||
|
||||
Var
|
||||
H : THTMLElement;
|
||||
begin
|
||||
H:=CreateEl(CurOutputNode, 'ul');
|
||||
H['class']:='classtreelist';
|
||||
PushOutputNode(h);
|
||||
end;
|
||||
|
||||
Procedure AppendClass(E : TDomElement);
|
||||
|
||||
Var
|
||||
N : TDomNode;
|
||||
P,PM : TPasElement;
|
||||
NN : String;
|
||||
EN : String;
|
||||
LL : TstringList;
|
||||
I,J : Integer;
|
||||
|
||||
begin
|
||||
EN:=Package.Name+'.'+E['unit']+'.'+E.NodeName;
|
||||
J:=AList.IndexOf(EN);
|
||||
If J<>-1 then
|
||||
P:=AList.Objects[J] as TPasElement
|
||||
else
|
||||
P:=Engine.FindElement(EN);
|
||||
PushClassElement;
|
||||
try
|
||||
if (P<>Nil) then
|
||||
begin
|
||||
AppendHyperLink(CurOutputNode,P);
|
||||
PM:=P.Getmodule;
|
||||
if (PM<>Nil) then
|
||||
begin
|
||||
AppendText(CurOutputNode,' (');
|
||||
AppendHyperLink(CurOutputNode,PM);
|
||||
AppendText(CurOutputNode,')');
|
||||
end
|
||||
end
|
||||
else
|
||||
AppendText(CurOutputNode,P.Name);
|
||||
LL:=TStringList.Create;
|
||||
try
|
||||
N:=E.FirstChild;
|
||||
While (N<>Nil) do
|
||||
begin
|
||||
if (N.NodeType=ELEMENT_NODE) then
|
||||
LL.AddObject(N.NodeName,N);
|
||||
N:=N.NextSibling;
|
||||
end;
|
||||
if (LL.Count>0) then
|
||||
begin
|
||||
LL.Sorted:=true;
|
||||
PushClassList;
|
||||
try
|
||||
For I:=0 to LL.Count-1 do
|
||||
AppendClass(LL.Objects[i] as TDomElement);
|
||||
finally
|
||||
PopOutputNode;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
LL.Free;
|
||||
end;
|
||||
Finally
|
||||
PopOutputNode;
|
||||
end;
|
||||
end;
|
||||
|
||||
Var
|
||||
B : TClassTreeBuilder;
|
||||
E : TDomElement;
|
||||
F : TFileStream;
|
||||
|
||||
begin
|
||||
PushOutputNode(BodyElement);
|
||||
try
|
||||
B:=TClassTreeBuilder.Create(Package,okClass);
|
||||
try
|
||||
B.BuildTree(AList);
|
||||
// Classes
|
||||
WriteXMLFile(B.ClassTree,'tree.xml');
|
||||
// Dummy TObject
|
||||
E:=B.ClassTree.DocumentElement;
|
||||
PushClassList;
|
||||
try
|
||||
AppendClass(E);
|
||||
finally
|
||||
PopOutputNode;
|
||||
end;
|
||||
finally
|
||||
B.Free;
|
||||
end;
|
||||
finally
|
||||
PopOutputNode;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure THTMLWriter.CreatePackageClassHierarchy;
|
||||
|
||||
Const
|
||||
SFunc = 'function expandorcollapse (o) {'+sLineBreak+
|
||||
' o.className = (o.className=="toggletreeclose") ? "toggletreeopen" : "toggletreeclose";'+sLineBreak+
|
||||
' o.parentNode.className = (o.className=="toggletreeclose") ? "classtree" : "classtreeclosed";'+sLineBreak+
|
||||
' return false;'+sLineBreak+
|
||||
'}';
|
||||
|
||||
Var
|
||||
L : TStringList;
|
||||
I : Integer;
|
||||
M : TPasModule;
|
||||
E : TPasElement;
|
||||
S : String;
|
||||
SE : THTMLElement;
|
||||
|
||||
begin
|
||||
SE := Doc.CreateElement('script');
|
||||
AppendText(SE,SFunc);
|
||||
HeadElement.AppendChild(SE);
|
||||
L:=TStringList.Create;
|
||||
try
|
||||
L.Capacity:=PageInfos.Count; // Too much, but that doesn't hurt.
|
||||
For I:=0 to Package.Modules.Count-1 do
|
||||
begin
|
||||
M:=TPasModule(Package.Modules[i]);
|
||||
Self.AddElementsFromList(L,M.InterfaceSection.Classes,True)
|
||||
end;
|
||||
AppendMenuBar(ClassHierarchySubIndex);
|
||||
S:=Package.Name;
|
||||
If Length(S)>0 then
|
||||
Delete(S,1,1);
|
||||
AppendTitle(Format(SDocPackageClassHierarchy, [S]));
|
||||
CreateClassHierarchyPage(L,True);
|
||||
Finally
|
||||
L.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure THTMLWriter.CreatePageBody(AElement: TPasElement;
|
||||
ASubpageIndex: Integer);
|
||||
var
|
||||
@ -2289,6 +2513,8 @@ begin
|
||||
CreatePackagePageBody
|
||||
else if ASubPageIndex=IndexSubIndex then
|
||||
CreatePackageIndex
|
||||
else if ASubPageIndex=ClassHierarchySubIndex then
|
||||
CreatePackageClassHierarchy
|
||||
end
|
||||
else
|
||||
begin
|
||||
@ -2409,24 +2635,27 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
Procedure THTMLWriter.AddElementsFromList(L : TStrings; List : TFPList; UsePathName : Boolean = False);
|
||||
|
||||
Var
|
||||
I : Integer;
|
||||
El : TPasElement;
|
||||
|
||||
begin
|
||||
For I:=0 to List.Count-1 do
|
||||
begin
|
||||
El:=TPasElement(List[I]);
|
||||
if UsePathName then
|
||||
L.AddObject(El.PathName,El)
|
||||
else
|
||||
L.AddObject(El.Name,El);
|
||||
If el is TPasEnumType then
|
||||
AddElementsFromList(L,TPasEnumType(el).Values);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure THTMLWriter.AddModuleIdentifiers(AModule : TPasModule; L : TStrings);
|
||||
|
||||
Procedure AddElementsFromList(L : TStrings; List : TFPList);
|
||||
|
||||
Var
|
||||
I : Integer;
|
||||
El : TPasElement;
|
||||
|
||||
begin
|
||||
For I:=0 to List.Count-1 do
|
||||
begin
|
||||
El:=TPasElement(List[I]);
|
||||
L.AddObject(El.Name,El);
|
||||
If el is TPasEnumType then
|
||||
AddElementsFromList(L,TPasEnumType(el).Values);
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
AddElementsFromList(L,AModule.InterfaceSection.Consts);
|
||||
AddElementsFromList(L,AModule.InterfaceSection.Types);
|
||||
|
@ -1,22 +1,24 @@
|
||||
<?xml version="1.0"?>
|
||||
<CONFIG>
|
||||
<ProjectOptions>
|
||||
<PathDelim Value="/"/>
|
||||
<Version Value="6"/>
|
||||
<Version Value="9"/>
|
||||
<General>
|
||||
<Flags>
|
||||
<SaveOnlyProjectUnits Value="True"/>
|
||||
<MainUnitHasUsesSectionForAllUnits Value="False"/>
|
||||
<MainUnitHasCreateFormStatements Value="False"/>
|
||||
<MainUnitHasTitleStatement Value="False"/>
|
||||
<LRSInOutputDirectory Value="False"/>
|
||||
</Flags>
|
||||
<SessionStorage Value="InProjectDir"/>
|
||||
<MainUnit Value="0"/>
|
||||
<TargetFileExt Value=""/>
|
||||
</General>
|
||||
<VersionInfo>
|
||||
<ProjectVersion Value=""/>
|
||||
<StringTable ProductVersion=""/>
|
||||
</VersionInfo>
|
||||
<BuildModes Count="1">
|
||||
<Item1 Name="default" Default="True"/>
|
||||
</BuildModes>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
<IgnoreBinaries Value="False"/>
|
||||
@ -29,7 +31,7 @@
|
||||
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
|
||||
</local>
|
||||
</RunParams>
|
||||
<Units Count="2">
|
||||
<Units Count="3">
|
||||
<Unit0>
|
||||
<Filename Value="fpclasschart.pp"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
@ -40,10 +42,20 @@
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="dGlobals"/>
|
||||
</Unit1>
|
||||
<Unit2>
|
||||
<Filename Value="fpdocclasstree.pp"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="fpdocclasstree"/>
|
||||
</Unit2>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
<Version Value="8"/>
|
||||
<Version Value="11"/>
|
||||
<Parsing>
|
||||
<SyntaxOptions>
|
||||
<UseAnsiStrings Value="False"/>
|
||||
</SyntaxOptions>
|
||||
</Parsing>
|
||||
<Other>
|
||||
<CompilerPath Value="$(CompPath)"/>
|
||||
</Other>
|
||||
|
@ -19,7 +19,7 @@ program fpclasschart;
|
||||
|
||||
uses
|
||||
SysUtils, Classes, Typinfo, Gettext, dom, xmlread,
|
||||
dGlobals, PasTree, PParser,PScanner, xmlwrite;
|
||||
dGlobals, PasTree, PParser,PScanner, xmlwrite, fpdocclasstree;
|
||||
|
||||
resourcestring
|
||||
STitle = 'fpClassTree - Create class tree from pascal sources';
|
||||
@ -37,20 +37,14 @@ type
|
||||
|
||||
{ TClassTreeEngine }
|
||||
|
||||
|
||||
TClassTreeEngine = class(TFPDocEngine)
|
||||
Private
|
||||
FClassTree : TXMLDocument;
|
||||
FTreeStart : TDomElement;
|
||||
FTree : TClassTreeBuilder;
|
||||
FObjects : TStringList;
|
||||
FObjectKind : TPasObjKind;
|
||||
FParentObject : TPasClassType;
|
||||
function LookForElement(PE: TDomElement; AElement: TPasElement): TDomNode;
|
||||
function NodeMatch(N: TDomNode; AElement: TPasElement): Boolean;
|
||||
Function AddToClassTree(AElement : TPasElement; Var ACount : Integer) : TDomElement;
|
||||
public
|
||||
Constructor Create(AClassTree : TXMLDocument; AObjectKind : TPasObjKind);
|
||||
Destructor Destroy; override;
|
||||
Function BuildTree : Integer;
|
||||
function CreateElement(AClass: TPTreeElement; const AName: String;
|
||||
AParent: TPasElement; AVisibility :TPasMemberVisibility;
|
||||
const ASourceFilename: String; ASourceLinenumber: Integer): TPasElement; override;
|
||||
@ -95,6 +89,11 @@ type
|
||||
Property MaxObjectsPerColumn : Integer Read FMaxObjectsPerColumn Write FMaxObjectsPerColumn;
|
||||
end;
|
||||
|
||||
{ TClassTreeBuilder }
|
||||
|
||||
|
||||
|
||||
|
||||
{ TChartFormatter }
|
||||
|
||||
constructor TClassChartFormatter.Create(AXML: TXMLDocument);
|
||||
@ -450,21 +449,11 @@ end;
|
||||
|
||||
Constructor TClassTreeEngine.Create(AClassTree : TXMLDocument; AObjectKind : TPasObjKind);
|
||||
|
||||
Var
|
||||
N : TDomNode;
|
||||
|
||||
begin
|
||||
FClassTree:=AClassTree;
|
||||
FTreeStart:=FClassTree.DocumentElement;
|
||||
FPackage:=TPasPackage.Create('dummy',Nil);
|
||||
FObjectKind:=AObjectKind;
|
||||
FTree:=TClassTreeBuilder.Create(FPackage,AObjectKind);
|
||||
FObjects:=TStringList.Create;
|
||||
Case FObjectkind of
|
||||
okObject : FParentObject:=TPasClassType.Create('TObject',FPackage);
|
||||
okClass : FParentObject:=TPasClassType.Create('TObject',FPackage);
|
||||
okInterface : FParentObject:=TPasClassType.Create('IInterface',FPackage);
|
||||
end;
|
||||
FParentObject.ObjKind:=FObjectKind;
|
||||
Inherited Create;
|
||||
end;
|
||||
|
||||
@ -474,89 +463,7 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
Function TClassTreeEngine.BuildTree : Integer;
|
||||
|
||||
Var
|
||||
I : Integer;
|
||||
PC : TPasClassType;
|
||||
|
||||
begin
|
||||
Result:=0;
|
||||
FObjects.Sorted:=True;
|
||||
For I:=0 to FObjects.Count-1 do
|
||||
begin
|
||||
PC:=TPasClassType(FObjects.Objects[i]);
|
||||
If (PC.ObjKind=FObjectKind) and Not PC.IsForward then
|
||||
AddToClassTree(PC as TPasElement,Result)
|
||||
end;
|
||||
end;
|
||||
|
||||
Function TClassTreeEngine.NodeMatch(N : TDomNode; AElement : TPasElement) : Boolean;
|
||||
|
||||
begin
|
||||
Result:=(N.NodeType=ELEMENT_NODE) and (CompareText(N.NodeName,AElement.Name)=0)
|
||||
end;
|
||||
|
||||
Function TClassTreeEngine.LookForElement(PE : TDomElement; AElement : TPasElement) : TDomNode;
|
||||
|
||||
Var
|
||||
N : TDomNode;
|
||||
|
||||
begin
|
||||
Result:=PE.FirstChild;
|
||||
While (Result<>Nil) and Not NodeMatch(Result,AElement) do
|
||||
Result:=Result.NextSibling;
|
||||
If (Result=Nil) then
|
||||
begin
|
||||
N:=PE.FirstChild;
|
||||
While (Result=Nil) and (N<>Nil) do
|
||||
begin
|
||||
if (N.NodeType=ELEMENT_NODE) then
|
||||
begin
|
||||
Result:=LookForElement(N as TDomElement,AElement);
|
||||
end;
|
||||
N:=N.NextSibling;
|
||||
end;
|
||||
end
|
||||
end;
|
||||
|
||||
Function TClassTreeEngine.AddToClassTree(AElement : TPasElement; Var ACount : Integer) : TDomElement;
|
||||
|
||||
Var
|
||||
PC : TPasClassType;
|
||||
PE : TDomElement;
|
||||
M : TPasModule;
|
||||
N : TDomNode;
|
||||
|
||||
begin
|
||||
PE:=Nil;
|
||||
If (AElement is TPasClassType) then
|
||||
begin
|
||||
PC:=AElement as TPasClassType;
|
||||
If not Assigned(PC.AncestorType) and (CompareText(PC.Name,FParentObject.Name)<>0) then
|
||||
PC.AncestorType:=FParentObject;
|
||||
If Assigned(PC.AncestorType) then
|
||||
PE:=AddToClassTree(PC.AncestorType,ACount);
|
||||
end;
|
||||
If (PE=Nil) then
|
||||
PE:=FTreeStart;
|
||||
N:=LookForElement(PE,AElement);
|
||||
If (N<>Nil) then
|
||||
Result:=N as TDomElement
|
||||
else
|
||||
begin
|
||||
Inc(ACount);
|
||||
Result:=FClassTree.CreateElement(AElement.Name);
|
||||
If Not (AElement is TPasUnresolvedTypeRef) then
|
||||
begin
|
||||
M:=AElement.GetModule;
|
||||
if Assigned(M) then
|
||||
Result['unit']:=M.Name;
|
||||
end;
|
||||
PE.AppendChild(Result);
|
||||
end;
|
||||
end;
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
Main program. Document all units.
|
||||
---------------------------------------------------------------------}
|
||||
@ -636,7 +543,7 @@ begin
|
||||
Engine := TClassTreeEngine.Create(XML,AObjectKind);
|
||||
Try
|
||||
ParseSource(Engine,InputFiles[I],OSTarget,CPUTarget);
|
||||
ACount:=ACount+Engine.BuildTree;
|
||||
ACount:=ACount+Engine.Ftree.BuildTree(Engine.FObjects);
|
||||
Finally
|
||||
Engine.Free;
|
||||
end;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
$Id: fpdoc.css,v 1.1 2003/03/17 23:03:20 michael Exp $
|
||||
$Id: fpdoc.cst,v 1.1 2005/01/02 16:22:16 michael Exp $
|
||||
|
||||
Default style sheet for FPDoc reference documentation
|
||||
by Sebastian Guenther, sg@freepascal.org
|
||||
@ -62,6 +62,10 @@ span.code {
|
||||
span.sym {
|
||||
color: darkred
|
||||
}
|
||||
/* No wordwrap in code fragments */
|
||||
span.code {
|
||||
white-space: nowrap
|
||||
}
|
||||
|
||||
/* keywords in source fragments */
|
||||
span.kw {
|
||||
@ -127,40 +131,30 @@ table.bar {
|
||||
background-color: #a0c0ff;
|
||||
}
|
||||
|
||||
td p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
span.bartitle {
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
color: darkblue
|
||||
}
|
||||
|
||||
span.footer {
|
||||
font-style: italic;
|
||||
color: darkblue
|
||||
span.toggletreeclose {
|
||||
background: url(minus.png) center left no-repeat;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
/* definition list */
|
||||
dl {
|
||||
border: 3px double #ccc;
|
||||
padding: 0.5em;
|
||||
span.toggletreeopen {
|
||||
background: url(plus.png) center left no-repeat;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
/* definition list: term */
|
||||
dt {
|
||||
float: left;
|
||||
clear: left;
|
||||
width: auto; /* normally browsers default width of largest item */
|
||||
padding-right: 20px;
|
||||
font-weight: bold;
|
||||
color: darkgreen;
|
||||
}
|
||||
ul.classtreelist li { padding-left: 0px; }
|
||||
|
||||
/* definition list: description */
|
||||
dd {
|
||||
margin: 0 0 0 110px;
|
||||
padding: 0 0 0.5em 0;
|
||||
}
|
||||
ul.classtreelist { list-style-type:none; }
|
||||
|
||||
/* for browsers in standards compliance mode */
|
||||
td p {
|
||||
margin: 0;
|
||||
}
|
||||
li.classtree ul { display: block; }
|
||||
|
||||
li.classtreeclosed ul { display: none; }
|
||||
|
@ -31,7 +31,7 @@
|
||||
<RunParams>
|
||||
<local>
|
||||
<FormatVersion Value="1"/>
|
||||
<CommandLineParams Value="--project=fpdoc.xml"/>
|
||||
<CommandLineParams Value="--package=me --output=me --input=ct.pp --format=html"/>
|
||||
<LaunchingApplication PathPlusParams="/usr/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
|
||||
</local>
|
||||
</RunParams>
|
||||
@ -40,7 +40,7 @@
|
||||
<PackageName Value="FCL"/>
|
||||
</Item1>
|
||||
</RequiredPackages>
|
||||
<Units Count="15">
|
||||
<Units Count="16">
|
||||
<Unit0>
|
||||
<Filename Value="fpdoc.pp"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
@ -116,6 +116,11 @@
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="mkfpdoc"/>
|
||||
</Unit14>
|
||||
<Unit15>
|
||||
<Filename Value="fpdocclasstree.pp"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="fpdocclasstree"/>
|
||||
</Unit15>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
|
@ -23,6 +23,7 @@ uses
|
||||
{$endif}
|
||||
SysUtils, Classes, Gettext, custapp,
|
||||
dGlobals, // Global definitions, constants.
|
||||
fpdocclasstree, // Class tree builder
|
||||
dwriter, // TFPDocWriter definition.
|
||||
dwlinear, // Linear (abstract) writer
|
||||
dw_LaTeX, // TLaTex writer
|
||||
|
160
utils/fpdoc/fpdocclasstree.pp
Normal file
160
utils/fpdoc/fpdocclasstree.pp
Normal file
@ -0,0 +1,160 @@
|
||||
unit fpdocclasstree;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, DOM, pastree;
|
||||
|
||||
Type
|
||||
TClassTreeBuilder = Class
|
||||
Private
|
||||
FClassTree : TXMLDocument;
|
||||
FTreeStart : TDomElement;
|
||||
FObjectKind : TPasObjKind;
|
||||
FPackage: TPasPackage;
|
||||
FParentObject : TPasClassType;
|
||||
Protected
|
||||
function LookForElement(PE: TDomElement; AElement: TPasElement): TDomNode;
|
||||
function NodeMatch(N: TDomNode; AElement: TPasElement): Boolean;
|
||||
Function AddToClassTree(AElement : TPasElement; Var ACount : Integer) : TDomElement;
|
||||
Public
|
||||
Constructor Create(APackage : TPasPackage; AObjectKind : TPasObjKind = okClass);
|
||||
Destructor Destroy; override;
|
||||
Function BuildTree(AObjects : TStringList) : Integer;
|
||||
Property ClassTree : TXMLDocument Read FClassTree;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
constructor TClassTreeBuilder.Create(APackage : TPasPackage;
|
||||
AObjectKind: TPasObjKind);
|
||||
Var
|
||||
N : TDomNode;
|
||||
begin
|
||||
FCLassTree:=TXMLDocument.Create;
|
||||
FPackage:=APAckage;
|
||||
FObjectKind:=AObjectKind;
|
||||
Case FObjectkind of
|
||||
okObject : FParentObject:=TPasClassType.Create('System.TObject',FPackage);
|
||||
okClass : FParentObject:=TPasClassType.Create('System.TObject',FPackage);
|
||||
okInterface : FParentObject:=TPasClassType.Create('System.IInterface',FPackage);
|
||||
end;
|
||||
FParentObject.ObjKind:=FObjectKind;
|
||||
FTreeStart:=FClassTree.CreateElement('TObject');
|
||||
FTreeStart['unit']:='System';
|
||||
ClassTree.AppendChild(FTreeStart);
|
||||
end;
|
||||
|
||||
destructor TClassTreeBuilder.Destroy;
|
||||
begin
|
||||
FreeAndNil(FClassTree);
|
||||
Inherited;
|
||||
end;
|
||||
Function TClassTreeBuilder.BuildTree(AObjects : TStringList) : Integer;
|
||||
|
||||
Var
|
||||
I : Integer;
|
||||
PC : TPasClassType;
|
||||
|
||||
begin
|
||||
Result:=0;
|
||||
AObjects.Sorted:=True;
|
||||
For I:=0 to AObjects.Count-1 do
|
||||
begin
|
||||
PC:=TPasClassType(AObjects.Objects[i]);
|
||||
If (PC.ObjKind=FObjectKind) and Not PC.IsForward then
|
||||
begin
|
||||
AddToClassTree(PC as TPasElement,Result)
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
Function TClassTreeBuilder.NodeMatch(N : TDomNode; AElement : TPasElement) : Boolean;
|
||||
|
||||
Var
|
||||
S : String;
|
||||
|
||||
begin
|
||||
Result:=(N.NodeType=ELEMENT_NODE);
|
||||
if Result then
|
||||
begin
|
||||
S:=N.NodeName;
|
||||
S:=FPackage.Name+'.'+TDomElement(N)['unit']+'.'+S;
|
||||
Result:= (CompareText(S,AElement.PathName)=0)
|
||||
end;
|
||||
end;
|
||||
|
||||
Function TClassTreeBuilder.LookForElement(PE : TDomElement; AElement : TPasElement) : TDomNode;
|
||||
|
||||
Var
|
||||
N : TDomNode;
|
||||
|
||||
begin
|
||||
Result:=PE;
|
||||
While (Result<>Nil) and Not NodeMatch(Result,AElement) do
|
||||
Result:=Result.NextSibling;
|
||||
If (Result=Nil) then
|
||||
begin
|
||||
N:=PE.FirstChild;
|
||||
While (Result=Nil) and (N<>Nil) do
|
||||
begin
|
||||
if (N.NodeType=ELEMENT_NODE) then
|
||||
begin
|
||||
Result:=LookForElement(N as TDomElement,AElement);
|
||||
end;
|
||||
N:=N.NextSibling;
|
||||
end;
|
||||
end
|
||||
end;
|
||||
|
||||
Function TClassTreeBuilder.AddToClassTree(AElement : TPasElement; Var ACount : Integer) : TDomElement;
|
||||
|
||||
Var
|
||||
PC : TPasClassType;
|
||||
PE : TDomElement;
|
||||
M : TPasModule;
|
||||
N : TDomNode;
|
||||
|
||||
begin
|
||||
Result:=Nil;
|
||||
If (AElement=Nil) then
|
||||
Result:=FTreeStart
|
||||
else If (AElement is TPasClassType) then
|
||||
begin
|
||||
Writeln('Doing ',AElement.Name);
|
||||
if (AElement=FParentObject) then
|
||||
Result:=FTreeStart
|
||||
else
|
||||
begin
|
||||
PC:=AElement as TPasClassType;
|
||||
PE:=AddToClassTree(PC.AncestorType,ACount);
|
||||
N:=LookForElement(PE,AElement);
|
||||
If (N<>Nil) then
|
||||
Result:=N as TDomElement
|
||||
else
|
||||
begin
|
||||
Inc(ACount);
|
||||
Result:=FClassTree.CreateElement(AElement.Name);
|
||||
If Not (AElement is TPasUnresolvedTypeRef) then
|
||||
begin
|
||||
M:=AElement.GetModule;
|
||||
if Assigned(M) then
|
||||
Result['unit']:=M.Name;
|
||||
end;
|
||||
if (PE=FTreeStart) then
|
||||
begin
|
||||
Writeln('Adding to tree start :',AELement.Name);
|
||||
Writeln('Have ancestor : ',PC.AncestorType<>Nil);
|
||||
if (PC.AncestorType<>Nil) then
|
||||
Writeln(PC.AncestorType.ClassName, ' : '+PC.AncestorType.Name);
|
||||
end;
|
||||
PE.AppendChild(Result);
|
||||
end;
|
||||
end;
|
||||
end
|
||||
end;
|
||||
|
||||
end.
|
||||
|
20
utils/fpdoc/minusimage.inc
Normal file
20
utils/fpdoc/minusimage.inc
Normal file
@ -0,0 +1,20 @@
|
||||
|
||||
Const
|
||||
MinusImageData : Array[0..273] of byte = (
|
||||
137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0,
|
||||
0, 0, 19, 0, 0, 0, 19, 8, 4, 0, 0, 0,216, 89,254, 71, 0,
|
||||
0, 0, 2, 98, 75, 71, 68, 0,238,237, 63,236, 77, 0, 0, 0, 9,
|
||||
112, 72, 89,115, 0, 0, 0, 72, 0, 0, 0, 72, 0, 70,201,107, 62,
|
||||
0, 0, 0, 9,118,112, 65,103, 0, 0, 0, 19, 0, 0, 0, 19, 0,
|
||||
241,127,140,174, 0, 0, 0, 63, 73, 68, 65, 84, 40,207, 99,124,199,
|
||||
64, 12, 96, 34, 74,213,192, 40, 99, 65, 48, 39,253, 71,151,204, 99,
|
||||
196,162,140,129,161, 30, 69, 81, 35, 61,220,198,192,192,192, 0,119,
|
||||
12,195,127,124,202,254,227, 48,141,134,110,107,196,169,140,113,232,
|
||||
167, 16, 0,229, 60, 7,139,203,229, 71, 3, 0, 0, 0, 37,116, 69,
|
||||
88,116,100, 97,116,101, 58, 99,114,101, 97,116,101, 0, 50, 48, 49,
|
||||
50, 45, 49, 50, 45, 50, 48, 84, 49, 53, 58, 48, 52, 58, 52, 48, 43,
|
||||
48, 49, 58, 48, 48, 36,251,160,191, 0, 0, 0, 37,116, 69, 88,116,
|
||||
100, 97,116,101, 58,109,111,100,105,102,121, 0, 50, 48, 49, 50, 45,
|
||||
49, 50, 45, 50, 48, 84, 49, 53, 58, 48, 52, 58, 52, 48, 43, 48, 49,
|
||||
58, 48, 48, 85,166, 24, 3, 0, 0, 0, 0, 73, 69, 78, 68,174, 66,
|
||||
96,130);
|
21
utils/fpdoc/plusimage.inc
Normal file
21
utils/fpdoc/plusimage.inc
Normal file
@ -0,0 +1,21 @@
|
||||
|
||||
Const
|
||||
PlusImageData : Array[0..288] of byte = (
|
||||
137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0,
|
||||
0, 0, 19, 0, 0, 0, 19, 8, 4, 0, 0, 0,216, 89,254, 71, 0,
|
||||
0, 0, 2, 98, 75, 71, 68, 0,238,237, 63,236, 77, 0, 0, 0, 9,
|
||||
112, 72, 89,115, 0, 0, 0, 72, 0, 0, 0, 72, 0, 70,201,107, 62,
|
||||
0, 0, 0, 9,118,112, 65,103, 0, 0, 0, 19, 0, 0, 0, 19, 0,
|
||||
241,127,140,174, 0, 0, 0, 78, 73, 68, 65, 84, 40,207, 99,124,199,
|
||||
64, 12, 96, 34, 74,213,192, 40, 99, 65, 48, 39,253, 71,151,204, 99,
|
||||
196,162,140,129,161, 30, 69, 81, 35,126, 75, 25, 49,133,200,112, 27,
|
||||
194, 36, 70, 6, 6,134,255,248,148,253,103, 96, 96, 96,100,192,240,
|
||||
11, 5,225,246, 31,139, 50, 20, 75, 27, 25,112, 1,198,161,159, 66,
|
||||
0, 47,159, 9,140, 36, 84,124, 38, 0, 0, 0, 37,116, 69, 88,116,
|
||||
100, 97,116,101, 58, 99,114,101, 97,116,101, 0, 50, 48, 49, 50, 45,
|
||||
49, 50, 45, 50, 48, 84, 49, 53, 58, 48, 52, 58, 50, 50, 43, 48, 49,
|
||||
58, 48, 48,117, 11,184, 17, 0, 0, 0, 37,116, 69, 88,116,100, 97,
|
||||
116,101, 58,109,111,100,105,102,121, 0, 50, 48, 49, 50, 45, 49, 50,
|
||||
45, 50, 48, 84, 49, 53, 58, 48, 52, 58, 50, 50, 43, 48, 49, 58, 48,
|
||||
48, 4, 86, 0,173, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130
|
||||
);
|
Loading…
Reference in New Issue
Block a user