/doc/

path +5085 9270 m 5085 9330 l 5236 9330 l 5116 9300 l 5236 9270 l cp +eoclip +n 6675 9300 m + 5100 9300 l gs col0 s gr gr + +% arrowhead +n 5236 9270 m 5116 9300 l 5236 9330 l 5236 9270 l cp gs 0.00 setgray ef gr col0 s +% Polyline +n 675 9300 m 2475 9300 l 2475 9975 l 675 9975 l + cp gs col32 1.00 shd ef gr gs col0 s gr +% Polyline +gs clippath +2085 7995 m 2085 8055 l 2236 8055 l 2116 8025 l 2236 7995 l cp +eoclip +n 3900 8850 m 3900 8025 l + 2100 8025 l gs col0 s gr gr + +% arrowhead +n 2236 7995 m 2116 8025 l 2236 8055 l 2236 7995 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +1470 9315 m 1530 9315 l 1530 9164 l 1500 9284 l 1470 9164 l cp +eoclip +n 1500 8700 m + 1500 9300 l gs col0 s gr gr + +% arrowhead +n 1470 9164 m 1500 9284 l 1530 9164 l 1470 9164 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6690 9780 m 6690 9720 l 6539 9720 l 6659 9750 l 6539 9780 l cp +2460 9720 m 2460 9780 l 2611 9780 l 2491 9750 l 2611 9720 l cp +eoclip +n 2475 9750 m + 6675 9750 l gs col0 s gr gr + +% arrowhead +n 2611 9720 m 2491 9750 l 2611 9780 l 2611 9720 l cp gs 0.00 setgray ef gr col0 s +% arrowhead +n 6539 9780 m 6659 9750 l 6539 9720 l 6539 9780 l cp gs 0.00 setgray ef gr col0 s +% Polyline + [60] 0 sd +n 8700 6450 m 11850 6450 l 11850 9975 l 8700 9975 l + cp gs col0 s gr [] 0 sd +/Times-Roman-iso ff 180.00 scf sf +4500 3525 m +gs 1 -1 sc (generate/update) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +3600 3525 m +gs 1 -1 sc (read) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +2850 3975 m +gs 1 -1 sc (read) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +2850 4650 m +gs 1 -1 sc (read) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +3975 6450 m +gs 1 -1 sc (Tag file\(s\)) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +3750 750 m +gs 1 -1 sc (Doxywizard) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +4425 5175 m +gs 1 -1 sc (generate) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +3675 5175 m +gs 1 -1 sc (read) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +4350 1425 m +gs 1 -1 sc (generate/edit) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +6900 1350 m +gs 1 -1 sc (XML files) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +6900 3300 m +gs 1 -1 sc (Latex files) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +6900 3750 m +gs 1 -1 sc (Makefile) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +7200 3525 m +gs 1 -1 sc (+) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +3900 4275 m +gs 1 -1 sc (Doxygen) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +9225 750 m +gs 1 -1 sc (Your application) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +9300 1275 m +gs 1 -1 sc (doxmlparser lib) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +8175 3750 m +gs 1 -1 sc (make pdf) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +8175 3000 m +gs 1 -1 sc (make ps) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +9675 3375 m +gs 1 -1 sc (latex) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +11025 825 m +gs 1 -1 sc (custom) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +11025 1050 m +gs 1 -1 sc (output) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +11025 3000 m +gs 1 -1 sc (postscript) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +11025 3825 m +gs 1 -1 sc (PDF) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +6900 7350 m +gs 1 -1 sc (refman.rtf) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +9525 7350 m +gs 1 -1 sc (MS-Word) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +11100 7200 m +gs 1 -1 sc (doc) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +8175 7200 m +gs 1 -1 sc (import) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +6975 9075 m +gs 1 -1 sc (HTML) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +6975 9300 m +gs 1 -1 sc (pages) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +9075 9225 m +gs 1 -1 sc (HTML Help Workshop) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +11100 9000 m +gs 1 -1 sc (chm) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +6825 5625 m +gs 1 -1 sc (Man pages) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +5475 9525 m +gs 1 -1 sc (parse) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +4575 8100 m +gs 1 -1 sc (generate) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +3825 9300 m +gs 1 -1 sc (Doxytag) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +1050 9750 m +gs 1 -1 sc (Doxysearch) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +1575 9075 m +gs 1 -1 sc (uses) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +2700 9975 m +gs 1 -1 sc (used from) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +5700 9975 m +gs 1 -1 sc (generates) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +8325 9075 m +gs 1 -1 sc (read) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +8775 6675 m +gs 1 -1 sc (Windows only) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +2700 8250 m +gs 1 -1 sc (generate) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +8250 1200 m +gs 1 -1 sc (read) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +1200 4200 m +gs 1 -1 sc (Sources) col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +1275 5775 m +gs 1 -1 sc (Custom) col0 sh gr +$F2psEnd +rs diff --git a/doc/infoflow.fig b/doc/infoflow.fig new file mode 100644 index 0000000..01ede9a --- /dev/null +++ b/doc/infoflow.fig @@ -0,0 +1,250 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +-2 +1200 2 +0 32 #e0e0e0 +0 33 #000000 +6 3600 1650 4800 3150 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8 + 3600 1950 3900 1650 4800 1650 4800 3150 3600 3150 3600 1950 + 3900 1950 3900 1650 +4 0 0 50 0 0 12 0.0000 4 180 780 3900 2250 Config file\001 +4 0 0 50 0 0 12 0.0000 4 180 645 3900 2550 Doxyfile\001 +-6 +6 900 7200 2100 8700 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8 + 900 7500 1200 7200 2100 7200 2100 8700 900 8700 900 7500 + 1200 7500 1200 7200 +4 0 0 50 0 0 12 0.0000 4 135 510 1200 7950 search\001 +4 0 0 50 0 0 12 0.0000 4 135 405 1200 8175 index\001 +-6 +6 900 3150 2325 4875 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8 + 900 3675 1200 3375 2100 3375 2100 4875 900 4875 900 3675 + 1200 3675 1200 3375 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 975 3600 975 3300 2175 3300 2175 4800 2100 4800 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 1050 3300 1050 3225 2250 3225 2250 4725 2175 4725 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 1125 3225 1125 3150 2325 3150 2325 4650 2250 4650 +-6 +6 900 5175 2325 6900 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8 + 900 5700 1200 5400 2100 5400 2100 6900 900 6900 900 5700 + 1200 5700 1200 5400 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 975 5625 975 5325 2175 5325 2175 6825 2100 6825 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 1050 5325 1050 5250 2250 5250 2250 6750 2175 6750 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 1125 5250 1125 5175 2325 5175 2325 6675 2250 6675 +-6 +6 1275 5925 2025 6750 +4 0 0 50 0 0 12 0.0000 4 135 750 1275 6075 - headers\001 +4 0 0 50 0 0 12 0.0000 4 180 690 1275 6675 - images\001 +4 0 0 50 0 0 12 0.0000 4 135 690 1275 6375 - footers\001 +-6 +6 6675 8250 8100 9975 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8 + 6675 8775 6975 8475 7875 8475 7875 9975 6675 9975 6675 8775 + 6975 8775 6975 8475 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 6750 8700 6750 8400 7950 8400 7950 9900 7875 9900 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 6825 8400 6825 8325 8025 8325 8025 9825 7950 9825 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 6900 8325 6900 8250 8100 8250 8100 9750 8025 9750 +-6 +6 6600 4425 8025 6150 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8 + 6600 4950 6900 4650 7800 4650 7800 6150 6600 6150 6600 4950 + 6900 4950 6900 4650 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 6675 4875 6675 4575 7875 4575 7875 6075 7800 6075 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 6750 4575 6750 4500 7950 4500 7950 6000 7875 6000 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 6825 4500 6825 4425 8025 4425 8025 5925 7950 5925 +-6 +6 6600 2400 8025 4125 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8 + 6600 2925 6900 2625 7800 2625 7800 4125 6600 4125 6600 2925 + 6900 2925 6900 2625 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 6675 2850 6675 2550 7875 2550 7875 4050 7800 4050 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 6750 2550 6750 2475 7950 2475 7950 3975 7875 3975 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 6825 2475 6825 2400 8025 2400 8025 3900 7950 3900 +-6 +6 6600 375 8025 2100 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8 + 6600 900 6900 600 7800 600 7800 2100 6600 2100 6600 900 + 6900 900 6900 600 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 6675 825 6675 525 7875 525 7875 2025 7800 2025 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 6750 525 6750 450 7950 450 7950 1950 7875 1950 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 6825 450 6825 375 8025 375 8025 1875 7950 1875 +-6 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 4050 3150 4050 3750 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 2100 4125 3300 4125 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 2100 6225 2700 6225 2700 4350 3300 4350 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2 + 1 1 1.00 60.00 120.00 + 4350 3150 4350 3750 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8 + 3675 5925 3975 5625 4875 5625 4875 7125 3675 7125 3675 5925 + 3975 5925 3975 5625 +2 2 0 1 0 32 50 0 20 0.000 0 0 -1 0 0 5 + 3300 300 5100 300 5100 1050 3300 1050 3300 300 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 4125 5625 4125 4650 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2 + 1 1 1.00 60.00 120.00 + 4350 5625 4350 4650 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2 + 1 1 1.00 60.00 120.00 + 1 1 1.00 60.00 120.00 + 4200 1050 4200 1650 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 5100 3900 6000 3900 6000 1425 6600 1425 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 5100 4050 6300 4050 6300 3450 6600 3450 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 5100 4200 6300 4200 6300 5550 6600 5550 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 5100 4350 6000 4350 6000 7350 6675 7350 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 4 + 1 1 1.00 60.00 120.00 + 5100 4500 5700 4500 5700 9150 6675 9150 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 8 + 6675 6675 6975 6375 7875 6375 7875 7875 6675 7875 6675 6675 + 6975 6675 6975 6375 +2 2 0 1 0 32 50 0 20 0.000 0 0 -1 0 0 5 + 3300 3750 5100 3750 5100 4650 3300 4650 3300 3750 +2 2 0 1 0 32 50 0 20 0.000 0 0 -1 0 0 5 + 8775 450 10800 450 10800 1575 8775 1575 8775 450 +2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 9075 900 10650 900 10650 1425 9075 1425 9075 900 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 7800 1350 8775 1350 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 10800 1350 11475 1350 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 7800 3150 9000 3150 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 7800 3525 9000 3525 +2 2 0 1 0 32 50 0 20 0.000 0 0 -1 0 0 5 + 9000 2925 10800 2925 10800 3675 9000 3675 9000 2925 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 10800 3150 11475 3150 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 10800 3525 11475 3525 +2 2 0 1 0 32 50 0 20 0.000 0 0 -1 0 0 5 + 9000 6900 10800 6900 10800 7650 9000 7650 9000 6900 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 7875 7275 9000 7275 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 10800 7275 11400 7275 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 7875 9150 9000 9150 +2 2 0 1 0 32 50 0 20 0.000 0 0 -1 0 0 5 + 9000 8775 10875 8775 10875 9525 9000 9525 9000 8775 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 10875 9150 11400 9150 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 4425 8850 4425 7125 +2 2 0 1 0 32 50 0 20 0.000 0 0 -1 0 0 5 + 3300 8850 5100 8850 5100 9525 3300 9525 3300 8850 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 6675 9300 5100 9300 +2 2 0 1 0 32 50 0 20 0.000 0 0 -1 0 0 5 + 675 9300 2475 9300 2475 9975 675 9975 675 9300 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 3 + 1 1 1.00 60.00 120.00 + 3900 8850 3900 8025 2100 8025 +2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 1500 8700 1500 9300 +2 1 0 1 0 7 50 0 -1 4.000 0 0 -1 1 1 2 + 1 1 1.00 60.00 120.00 + 1 1 1.00 60.00 120.00 + 2475 9750 6675 9750 +2 2 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 5 + 8700 6450 11850 6450 11850 9975 8700 9975 8700 6450 +4 0 0 50 0 0 12 0.0000 4 180 1215 4500 3525 generate/update\001 +4 0 0 50 0 0 12 0.0000 4 135 330 3600 3525 read\001 +4 0 0 50 0 0 12 0.0000 4 135 330 2850 3975 read\001 +4 0 0 50 0 0 12 0.0000 4 135 330 2850 4650 read\001 +4 0 0 50 0 0 12 0.0000 4 180 810 3975 6450 Tag file(s)\001 +4 0 0 50 0 0 12 0.0000 4 180 915 3750 750 Doxywizard\001 +4 0 0 50 0 0 12 0.0000 4 150 660 4425 5175 generate\001 +4 0 0 50 0 0 12 0.0000 4 135 330 3675 5175 read\001 +4 0 0 50 0 0 12 0.0000 4 180 990 4350 1425 generate/edit\001 +4 0 0 50 0 0 12 0.0000 4 135 780 6900 1350 XML files\001 +4 0 0 50 0 0 12 0.0000 4 135 810 6900 3300 Latex files\001 +4 0 0 50 0 0 12 0.0000 4 135 675 6900 3750 Makefile\001 +4 0 0 50 0 0 12 0.0000 4 75 105 7200 3525 +\001 +4 0 0 50 0 0 12 0.0000 4 180 675 3900 4275 Doxygen\001 +4 0 0 50 0 0 12 0.0000 4 180 1245 9225 750 Your application\001 +4 0 0 50 0 0 12 0.0000 4 180 1155 9300 1275 doxmlparser lib\001 +4 0 0 50 0 0 12 0.0000 4 180 690 8175 3750 make pdf\001 +4 0 0 50 0 0 12 0.0000 4 180 630 8175 3000 make ps\001 +4 0 0 50 0 0 12 0.0000 4 135 375 9675 3375 latex\001 +4 0 0 50 0 0 12 0.0000 4 105 555 11025 825 custom\001 +4 0 0 50 0 0 12 0.0000 4 150 480 11025 1050 output\001 +4 0 0 50 0 0 12 0.0000 4 180 765 11025 3000 postscript\001 +4 0 0 50 0 0 12 0.0000 4 135 345 11025 3825 PDF\001 +4 0 0 50 0 0 12 0.0000 4 135 750 6900 7350 refman.rtf\001 +4 0 0 50 0 0 12 0.0000 4 135 795 9525 7350 MS-Word\001 +4 0 0 50 0 0 12 0.0000 4 135 270 11100 7200 doc\001 +4 0 0 50 0 0 12 0.0000 4 180 480 8175 7200 import\001 +4 0 0 50 0 0 12 0.0000 4 135 510 6975 9075 HTML\001 +4 0 0 50 0 0 12 0.0000 4 135 450 6975 9300 pages\001 +4 0 0 50 0 0 12 0.0000 4 180 1740 9075 9225 HTML Help Workshop\001 +4 0 0 50 0 0 12 0.0000 4 135 315 11100 9000 chm\001 +4 0 0 50 0 0 12 0.0000 4 180 840 6825 5625 Man pages\001 +4 0 0 50 0 0 12 0.0000 4 135 420 5475 9525 parse\001 +4 0 0 50 0 0 12 0.0000 4 150 660 4575 8100 generate\001 +4 0 0 50 0 0 12 0.0000 4 180 645 3825 9300 Doxytag\001 +4 0 0 50 0 0 12 0.0000 4 180 915 1050 9750 Doxysearch\001 +4 0 0 50 0 0 12 0.0000 4 90 360 1575 9075 uses\001 +4 0 0 50 0 0 12 0.0000 4 135 750 2700 9975 used from\001 +4 0 0 50 0 0 12 0.0000 4 150 750 5700 9975 generates\001 +4 0 0 50 0 0 12 0.0000 4 135 330 8325 9075 read\001 +4 0 0 50 0 0 12 0.0000 4 180 1080 8775 6675 Windows only\001 +4 0 0 50 0 0 12 0.0000 4 150 660 2700 8250 generate\001 +4 0 0 50 0 0 12 0.0000 4 135 330 8250 1200 read\001 +4 0 0 50 0 0 12 0.0000 4 135 615 1200 4200 Sources\001 +4 0 0 50 0 0 12 0.0000 4 135 585 1275 5775 Custom\001 diff --git a/doc/infoflow.gif b/doc/infoflow.gif new file mode 100644 index 0000000..ae6bebb Binary files /dev/null and b/doc/infoflow.gif differ diff --git a/doc/language.doc b/doc/language.doc index bfacc39..27f4ec3 100644 --- a/doc/language.doc +++ b/doc/language.doc @@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means that the text fragments that doxygen generates can be produced in languages other than English (the default) at configuration time. -Currently (version 1.2.14-20020317), 28 languages +Currently (version 1.3-rc2-20021224), 28 languages are supported (sorted alphabetically): Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, diff --git a/doc/starting.doc b/doc/starting.doc index 39bb117..c3b7065 100644 --- a/doc/starting.doc +++ b/doc/starting.doc @@ -32,6 +32,12 @@ engine. See section \ref doxysearch_usage for more detailed usage information. Optionally, the executable \c doxywizard is a GUI front-end for editing the configuration files that are used by doxygen. +The following figure shows the relation between the tools and the flow +of information between them: + +\image html infoflow.gif "Doxygen information flow" +\image latex infoflow.eps "Doxygen information flow" width=14cm + \section step1 Step 1: Creating a configuration file Doxygen uses a configuration file to determine all of its settings. diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec index 669384c..91e46b8 100644 --- a/packages/rpm/doxygen.spec +++ b/packages/rpm/doxygen.spec @@ -1,6 +1,6 @@ Summary: A documentation system for C/C++. Name: doxygen -Version: 1.3_rc2_20021224 +Version: 1.3_rc2_20030106 Release: 1 Epoch: 1 Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz diff --git a/src/classdef.cpp b/src/classdef.cpp index 426202d..24c68ab 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -124,6 +124,7 @@ ClassDef::~ClassDef() delete m_innerClasses; delete m_templateInstances; delete m_templBaseClassNames; + delete m_tempArgs; } QCString ClassDef::displayName() const @@ -1525,7 +1526,6 @@ void ClassDef::setTemplateArguments(ArgumentList *al) if (al==0) return; if (!m_tempArgs) delete m_tempArgs; // delete old list if needed m_tempArgs=new ArgumentList; - m_tempArgs->setAutoDelete(TRUE); ArgumentListIterator ali(*al); Argument *a; for (;(a=ali.current());++ali) @@ -1981,7 +1981,11 @@ void ClassDef::mergeMembers() void ClassDef::addUsedClass(ClassDef *cd,const char *accessName) { - if (m_usesImplClassDict==0) m_usesImplClassDict = new UsesClassDict(17); + if (m_usesImplClassDict==0) + { + m_usesImplClassDict = new UsesClassDict(17); + m_usesImplClassDict->setAutoDelete(TRUE); + } UsesClassDef *ucd=m_usesImplClassDict->find(cd->name()); if (ucd==0 /*|| ucd->templSpecifiers!=templSpec*/) { @@ -2065,7 +2069,11 @@ void ClassDef::determineImplUsageRelation() if (cd) // class exists { found=TRUE; - if (m_usesImplClassDict==0) m_usesImplClassDict = new UsesClassDict(257); + if (m_usesImplClassDict==0) + { + m_usesImplClassDict = new UsesClassDict(257); + m_usesImplClassDict->setAutoDelete(TRUE); + } UsesClassDef *ucd=m_usesImplClassDict->find(cd->name()); if (ucd==0 || ucd->templSpecifiers!=templSpec) { diff --git a/src/classdef.h b/src/classdef.h index 95997f7..86a3b3a 100644 --- a/src/classdef.h +++ b/src/classdef.h @@ -126,12 +126,6 @@ class ClassDef : public Definition */ ArgumentList *templateArguments() const { return m_tempArgs; } - /*! Returns the template arguments that this nested class "inherits" - * from its outer class (doxygen assumes there is only one!). - * Will return 0 if not applicable. - */ - //ArgumentList *outerTemplateArguments() const; - /*! Returns the namespace this compound is in, or 0 if it has a global * scope. */ diff --git a/src/config.h b/src/config.h index 4b00d22..4780c95 100644 --- a/src/config.h +++ b/src/config.h @@ -338,6 +338,11 @@ class Config if (m_instance==0) m_instance = new Config; return m_instance; } + /*! Delete the instance */ + static void deleteInstance() + { + delete m_instance; + } /*! Returns an iterator that can by used to iterate over the * configuration options. diff --git a/src/docparser.cpp b/src/docparser.cpp index 42919fd..bc5d872 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -128,8 +128,8 @@ static void docParserPopContext() //--------------------------------------------------------------------------- /*! search for an image in the imageNameDict and if found - * copies the image to the output directory (which is the - * html directory if type==0 or the latex directory if type==1) + * copies the image to the output directory (which depends on the \a type + * parameter). */ static QCString findAndCopyImage(const char *fileName,DocImage::Type type) { @@ -225,14 +225,20 @@ static QCString findAndCopyImage(const char *fileName,DocImage::Type type) return result; } +/*! Collects the parameters found with @param or @retval commands + * in a global list g_paramsFound. If \a isParam is set to TRUE + * and the parameter is not an actual parameter of the current + * member g_memberDef, than a warning is raised (unless warnings + * are disabled altogether). + */ static void checkArgumentName(const QString &name,bool isParam) { + if (!Config_getBool("WARN_IF_DOC_ERROR")) return; if (g_memberDef==0) return; // not a member ArgumentList *al=g_memberDef->isDocsForDefinition() ? g_memberDef->argumentList() : g_memberDef->declArgumentList(); if (al==0) return; // no argument list - if (!Config_getBool("WARN_IF_DOC_ERROR")) return; static QRegExp re("[a-zA-Z0-9_]+\\.*"); int p=0,i=0,l; @@ -270,6 +276,11 @@ static void checkArgumentName(const QString &name,bool isParam) } } +/*! Checks if the parameters that have been specified using @param are + * indeed all paramters. + * Must be called after checkArgumentName() has been called for each + * argument. + */ static void checkUndocumentedParams() { if (g_memberDef && g_hasParamCommand && Config_getBool("WARN_IF_DOC_ERROR")) @@ -317,6 +328,7 @@ static void checkUndocumentedParams() //--------------------------------------------------------------------------- +/*! Strips know html and tex extensions from \a text. */ static QString stripKnownExtensions(const char *text) { QString result=text; @@ -414,6 +426,7 @@ static bool findDocsForMemberOrCompound(const char *commandName, QString *pDoc, Definition **pDef) { + //printf("findDocsForMemberOrCompound(%s)\n",commandName); *pDoc=""; *pDef=0; QString cmdArg=commandName; @@ -422,10 +435,7 @@ static bool findDocsForMemberOrCompound(const char *commandName, int funcStart=cmdArg.find('('); if (funcStart==-1) funcStart=l; - //int lastScopeStart=cmdArg.findRev("::",funcStart); - //int lastScopeEnd = lastScopeStart==-1 ? 0 : lastScopeStart+2; - //QString scope=cmdArg.left(QMAX(lastScopeStart,0)); - //QString name=cmdArg.mid(lastScopeEnd,funcStart-lastScopeEnd); + QString name=cmdArg.left(funcStart); QString args=cmdArg.right(l-funcStart); @@ -441,6 +451,7 @@ static bool findDocsForMemberOrCompound(const char *commandName, name.latin1(), args.isEmpty()?0:args.latin1(), md,cd,fd,nd,gd,FALSE,0,TRUE); + //printf("found=%d context=%s name=%s\n",found,g_context.data(),name.data()); if (found && md) { *pDoc=md->documentation(); @@ -1289,7 +1300,14 @@ void DocCopy::parse() if (g_copyStack.findRef(def)==-1) // definition not parsed earlier { docParserPushContext(); - g_context=def->name(); + if (def->definitionType()==Definition::TypeMember && def->getOuterScope()) + { + g_context=def->getOuterScope()->name(); + } + else + { + g_context=def->name(); + } g_styleStack.clear(); g_nodeStack.clear(); g_copyStack.append(def); @@ -3728,13 +3746,6 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag retval=RetVal_ListItem; } break; - //case HTML_PRE: - // { - // DocHtmlPre *pre = new DocHtmlPre(this,tagHtmlAttribs); - // m_children.append(pre); - // retval=pre->parse(); - // } - // break; case HTML_BOLD: handleStyleEnter(this,m_children,DocStyleChange::Bold,&g_token->attribs); break; @@ -3836,7 +3847,7 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag g_insideHtmlLink=FALSE; break; } - else // unsupport option for tag a + else // unsupported option for tag a { } } @@ -4054,6 +4065,7 @@ int DocPara::parse() { DBG(("DocPara::parse() start\n")); g_nodeStack.push(this); + // handle style commands "inherited" from the previous paragraph handleInitialStyleCommands(this,m_children); int tok; int retval=0; @@ -4083,7 +4095,7 @@ reparsetoken: { // prevent leading whitespace and collapse multiple whitespace areas DocNode::Kind k; - if (insidePRE(this) || // all whitespace is relavant + if (insidePRE(this) || // all whitespace is relevant ( // remove leading whitespace !m_children.isEmpty() && @@ -4197,12 +4209,7 @@ reparsetoken: } if (cmd&SIMPLESECT_BIT) { - if (n // already in a simple section - //|| // no section or root as parent - // (parent()->kind()!=DocNode::Kind_Root && - // parent()->kind()!=DocNode::Kind_Section - // ) - ) + if (n) // already in a simple section { // simple section cannot start in this paragraph, need // to unwind the stack and remember the command. diff --git a/src/doctokenizer.l b/src/doctokenizer.l index de8937c..61a98b5 100644 --- a/src/doctokenizer.l +++ b/src/doctokenizer.l @@ -142,7 +142,7 @@ static int computeIndent(const char *str,int length) */ static void parseHtmlAttribs(const char *att) { - //printf("parseHtmlAttribs(%s)\n",opt.data()); + //printf("parseHtmlAttribs(%s)\n",att); QCString attribs=att; int len = attribs.length(); char c; @@ -173,7 +173,7 @@ static void parseHtmlAttribs(const char *att) // search for matching quote while (i Adding option name=<%s> value=<%s>\n", - // opt->name.data(),opt->value.data()); + // opt.name.data(),opt.value.data()); g_token->attribs.append(&opt); } } diff --git a/src/dot.cpp b/src/dot.cpp index 70fa726..6fedd24 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -881,27 +881,25 @@ void DotGfxHierarchyTable::addClassList(ClassSDict *cl) for (cli.toLast();(cd=cli.current());--cli) { //printf("Trying %s subClasses=%d\n",cd->name().data(),cd->subClasses()->count()); - if (!hasVisibleRoot(cd->baseClasses())) + if (!hasVisibleRoot(cd->baseClasses()) && + cd->isVisibleInHierarchy() + ) // root node in the forest { - if (cd->isVisibleInHierarchy()) // root node in the forest + QCString tmp_url=""; + if (cd->isLinkable()) + tmp_url=cd->getReference()+"$"+cd->getOutputFileBase(); + //printf("Inserting root class %s\n",cd->name().data()); + DotNode *n = new DotNode(m_curNodeNumber++, + cd->displayName(), + tmp_url.data()); + + //m_usedNodes->clear(); + m_usedNodes->insert(cd->name(),n); + m_rootNodes->insert(0,n); + if (!cd->visited && cd->subClasses()->count()>0) { - QCString tmp_url=""; - if (cd->isLinkable()) - tmp_url=cd->getReference()+"$"+cd->getOutputFileBase(); - //printf("Inserting root class %s\n",cd->name().data()); - DotNode *n = new DotNode(m_curNodeNumber++, - cd->displayName(), - tmp_url.data() - ); - - //m_usedNodes->clear(); - m_usedNodes->insert(cd->name(),n); - m_rootNodes->insert(0,n); - if (!cd->visited && cd->subClasses()->count()>0) - { - addHierarchy(n,cd,cd->visited); - cd->visited=TRUE; - } + addHierarchy(n,cd,cd->visited); + cd->visited=TRUE; } } } @@ -911,8 +909,8 @@ DotGfxHierarchyTable::DotGfxHierarchyTable() { m_curNodeNumber=0; m_rootNodes = new QList; - //m_rootNodes->setAutoDelete(TRUE); // rootNodes owns the nodes - m_usedNodes = new QDict(1009); // virtualNodes only aliases nodes + m_usedNodes = new QDict(1009); + m_usedNodes->setAutoDelete(TRUE); m_rootSubgraphs = new DotNodeList; // build a graph with each class as a node and the inheritance relations @@ -964,7 +962,9 @@ DotGfxHierarchyTable::DotGfxHierarchyTable() DotGfxHierarchyTable::~DotGfxHierarchyTable() { //printf("DotGfxHierarchyTable::~DotGfxHierarchyTable\n"); - SDict skipNodes(17); + +#if 0 // TODO: delete this + SDict skipNodes(1009); skipNodes.setAutoDelete(TRUE); DotNode *n = m_rootNodes->first(); while (n) @@ -980,6 +980,15 @@ DotGfxHierarchyTable::~DotGfxHierarchyTable() deleteNodes(n,&skipNodes); n=m_rootNodes->next(); } +#endif + + //QDictIterator di(*m_usedNodes); + //DotNode *n; + //for (;(n=di.current());++di) + //{ + // printf("Node %p: %s\n",n,n->label().data()); + //} + delete m_rootNodes; delete m_usedNodes; delete m_rootSubgraphs; diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 5b184d8..1eab93d 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include "version.h" #include "doxygen.h" @@ -61,6 +62,7 @@ //#include "packagedef.h" #include "bufstr.h" #include "commentcnv.h" +#include "cmdmapper.h" #if defined(_MSC_VER) || defined(__BORLANDC__) #define popen _popen @@ -104,8 +106,6 @@ StringDict Doxygen::tagDestinationDict(257); // all tag locations QDict Doxygen::expandAsDefinedDict(257); // all macros that should be expanded QIntDict Doxygen::memGrpInfoDict(1009); // dictionary of the member groups heading -//QIntDict Doxygen::memberHeaderDict(1009); // dictionary of the member groups heading -//QIntDict Doxygen::memberDocDict(1009); // dictionary of the member groups heading PageInfo *Doxygen::mainPage = 0; QTextStream Doxygen::tagFile; @@ -3095,6 +3095,7 @@ static bool findTemplateInstanceRelation(Entry *root, findUsedClassesForClass(templateRoot,templateClass,instanceClass, isArtificial,templArgs,templateNames); + delete templArgs; } else { @@ -4468,7 +4469,6 @@ static void findMember(Entry *root, * of the function definition before matching. */ argList = new ArgumentList; - argList->setAutoDelete(TRUE); substituteTemplatesInArgList(declTemplArgs,*defTemplArgs, md->argumentList(),argList); @@ -7048,6 +7048,37 @@ void initDoxygen() initPreprocessor(); Doxygen::sectionDict.setAutoDelete(TRUE); + Doxygen::inputNameList.setAutoDelete(TRUE); + Doxygen::memberNameSDict.setAutoDelete(TRUE); + Doxygen::functionNameSDict.setAutoDelete(TRUE); + Doxygen::hiddenClasses.setAutoDelete(TRUE); + Doxygen::classSDict.setAutoDelete(TRUE); + Doxygen::pageSDict->setAutoDelete(TRUE); + Doxygen::exampleSDict->setAutoDelete(TRUE); + excludeNameDict.setAutoDelete(TRUE); + Doxygen::memGrpInfoDict.setAutoDelete(TRUE); + Doxygen::tagDestinationDict.setAutoDelete(TRUE); +} + +void cleanUpDoxygen() +{ + delete Doxygen::inputNameDict; + delete Doxygen::includeNameDict; + delete Doxygen::exampleNameDict; + delete Doxygen::imageNameDict; + delete Doxygen::dotFileNameDict; + delete Doxygen::mainPage; + delete Doxygen::pageSDict; + delete Doxygen::exampleSDict; + delete Doxygen::globalScope; + delete Doxygen::specialLists; + cleanUpPreprocessor(); + Config::deleteInstance(); + QTextCodec::deleteAllCodecs(); + delete theTranslator; + delete outputList; + CmdMapper::freeInstance(); + HtmlTagMapper::freeInstance(); } void readConfiguration(int argc, char **argv) @@ -7093,6 +7124,7 @@ void readConfiguration(int argc, char **argv) if (!formatName) { err("Error:option -e is missing format specifier rtf.\n"); + cleanUpDoxygen(); exit(1); } if (stricmp(formatName,"rtf")==0) @@ -7100,6 +7132,7 @@ void readConfiguration(int argc, char **argv) if (optind+1>=argc) { err("Error: option \"-e rtf\" is missing an extensions file name\n"); + cleanUpDoxygen(); exit(1); } QFile f; @@ -7107,9 +7140,11 @@ void readConfiguration(int argc, char **argv) { RTFGenerator::writeExtensionsFile(f); } + cleanUpDoxygen(); exit(1); } err("Error: option \"-e\" has invalid format specifier.\n"); + cleanUpDoxygen(); exit(1); break; case 'w': @@ -7117,6 +7152,7 @@ void readConfiguration(int argc, char **argv) if (!formatName) { err("Error: option -w is missing format specifier rtf, html or latex\n"); + cleanUpDoxygen(); exit(1); } if (stricmp(formatName,"rtf")==0) @@ -7124,6 +7160,7 @@ void readConfiguration(int argc, char **argv) if (optind+1>=argc) { err("Error: option \"-w rtf\" is missing a style sheet file name\n"); + cleanUpDoxygen(); exit(1); } QFile f; @@ -7131,6 +7168,7 @@ void readConfiguration(int argc, char **argv) { RTFGenerator::writeStyleSheetFile(f); } + cleanUpDoxygen(); exit(1); } else if (stricmp(formatName,"html")==0) @@ -7140,6 +7178,7 @@ void readConfiguration(int argc, char **argv) if (!Config::instance()->parse(argv[optind+4])) { err("Error opening or reading configuration file %s!\n",argv[optind+4]); + cleanUpDoxygen(); exit(1); } Config::instance()->substituteEnvironmentVars(); @@ -7153,6 +7192,7 @@ void readConfiguration(int argc, char **argv) if (optind+3>=argc) { err("Error: option \"-w html\" does not have enough arguments\n"); + cleanUpDoxygen(); exit(1); } @@ -7176,7 +7216,8 @@ void readConfiguration(int argc, char **argv) if (openOutputFile(argv[optind+3],f)) { HtmlGenerator::writeStyleSheetFile(f); - } + } + cleanUpDoxygen(); exit(0); } else if (stricmp(formatName,"latex")==0) @@ -7199,6 +7240,7 @@ void readConfiguration(int argc, char **argv) if (optind+2>=argc) { err("Error: option \"-w latex\" does not have enough arguments\n"); + cleanUpDoxygen(); exit(1); } @@ -7218,11 +7260,13 @@ void readConfiguration(int argc, char **argv) { LatexGenerator::writeStyleSheetFile(f); } + cleanUpDoxygen(); exit(0); } else { err("Error: Illegal format specifier %s: should be one of rtf, html, or latex\n",formatName); + cleanUpDoxygen(); exit(1); } break; @@ -7234,6 +7278,7 @@ void readConfiguration(int argc, char **argv) else if (strcmp(&argv[optind][2],"version")==0) { msg("%s\n",versionString); + cleanUpDoxygen(); exit(0); } break; @@ -7257,6 +7302,7 @@ void readConfiguration(int argc, char **argv) if (genConfig) { generateConfigFile(configName,shortList); + cleanUpDoxygen(); exit(0); } @@ -7295,12 +7341,14 @@ void readConfiguration(int argc, char **argv) if (!Config::instance()->parse(configName)) { err("Error: could not open or read configuration file %s!\n",configName); + cleanUpDoxygen(); exit(1); } if (updateConfig) { generateConfigFile(configName,shortList,TRUE); + cleanUpDoxygen(); exit(0); } @@ -7370,8 +7418,6 @@ void readConfiguration(int argc, char **argv) void parseInput() { - Doxygen::classSDict.setAutoDelete(TRUE); - Doxygen::inputNameDict = new FileNameDict(10007); Doxygen::includeNameDict = new FileNameDict(10007); Doxygen::exampleNameDic