home *** CD-ROM | disk | FTP | other *** search
view JSON data
|
view as text
|
open on a Mac
|
open on a PC
This file was processed as: SHell self-extracting ARchive
(archive/shar).
You can browse this item here: genman.awk
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| ASCII text
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
| |
100%
| xdgMime
| text/x-devicetree-source
| default (weak)
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 4e 65 77 73 67 72 6f 75 | 70 73 3a 20 63 6f 6d 70 |Newsgrou|ps: comp|
|00000010| 2e 73 6f 75 72 63 65 73 | 2e 6d 69 73 63 0a 73 75 |.sources|.misc.su|
|00000020| 62 6a 65 63 74 3a 20 76 | 31 30 69 30 37 32 3a 20 |bject: v|10i072: |
|00000030| 67 65 6e 6d 61 6e 2e 61 | 77 6b 20 2d 20 67 65 6e |genman.a|wk - gen|
|00000040| 65 72 61 74 65 20 6d 61 | 6e 20 70 61 67 65 20 66 |erate ma|n page f|
|00000050| 72 6f 6d 20 43 2b 2b 20 | 69 6e 63 6c 75 64 65 20 |rom C++ |include |
|00000060| 66 69 6c 65 0a 46 72 6f | 6d 3a 20 62 62 79 40 61 |file.Fro|m: bby@a|
|00000070| 6c 6c 69 61 6e 74 2e 63 | 6f 6d 40 79 2e 55 55 43 |lliant.c|om@y.UUC|
|00000080| 50 20 28 42 6f 62 20 4d | 61 73 74 6f 72 73 29 0a |P (Bob M|astors).|
|00000090| 53 65 6e 64 65 72 3a 20 | 61 6c 6c 62 65 72 79 40 |Sender: |allbery@|
|000000a0| 75 75 6e 65 74 2e 55 55 | 2e 4e 45 54 20 28 42 72 |uunet.UU|.NET (Br|
|000000b0| 61 6e 64 6f 6e 20 53 2e | 20 41 6c 6c 62 65 72 79 |andon S.| Allbery|
|000000c0| 20 2d 20 63 6f 6d 70 2e | 73 6f 75 72 63 65 73 2e | - comp.|sources.|
|000000d0| 6d 69 73 63 29 0a 0a 50 | 6f 73 74 69 6e 67 2d 6e |misc)..P|osting-n|
|000000e0| 75 6d 62 65 72 3a 20 56 | 6f 6c 75 6d 65 20 31 30 |umber: V|olume 10|
|000000f0| 2c 20 49 73 73 75 65 20 | 37 32 0a 53 75 62 6d 69 |, Issue |72.Submi|
|00000100| 74 74 65 64 2d 62 79 3a | 20 62 62 79 40 61 6c 6c |tted-by:| bby@all|
|00000110| 69 61 6e 74 2e 63 6f 6d | 40 79 2e 55 55 43 50 20 |iant.com|@y.UUCP |
|00000120| 28 42 6f 62 20 4d 61 73 | 74 6f 72 73 29 0a 41 72 |(Bob Mas|tors).Ar|
|00000130| 63 68 69 76 65 2d 6e 61 | 6d 65 3a 20 67 65 6e 6d |chive-na|me: genm|
|00000140| 61 6e 2e 61 77 6b 0a 0a | 54 68 65 20 70 75 72 70 |an.awk..|The purp|
|00000150| 6f 73 65 20 6f 66 20 74 | 68 65 20 67 65 6e 6d 61 |ose of t|he genma|
|00000160| 6e 2e 61 77 6b 20 70 72 | 6f 67 72 61 6d 20 69 73 |n.awk pr|ogram is|
|00000170| 20 74 6f 20 67 65 6e 65 | 72 61 74 65 20 64 6f 63 | to gene|rate doc|
|00000180| 75 6d 65 6e 74 61 74 69 | 6f 6e 20 61 62 6f 75 74 |umentati|on about|
|00000190| 0a 61 20 43 2b 2b 20 63 | 6c 61 73 73 20 66 72 6f |.a C++ c|lass fro|
|000001a0| 6d 20 74 68 65 20 69 6e | 63 6c 75 64 65 20 66 69 |m the in|clude fi|
|000001b0| 6c 65 20 61 6e 64 20 73 | 6f 75 72 63 65 20 66 69 |le and s|ource fi|
|000001c0| 6c 65 73 2e 0a 0a 59 6f | 75 20 77 69 6c 6c 20 6e |les...Yo|u will n|
|000001d0| 65 65 64 20 74 68 65 20 | 6e 65 77 65 72 20 76 65 |eed the |newer ve|
|000001e0| 72 73 69 6f 6e 20 6f 66 | 20 61 77 6b 20 74 68 61 |rsion of| awk tha|
|000001f0| 74 20 73 75 70 70 6f 72 | 74 73 20 75 73 65 72 20 |t suppor|ts user |
|00000200| 64 65 66 69 6e 65 64 20 | 66 75 6e 63 74 69 6f 6e |defined |function|
|00000210| 73 2e 0a 49 20 77 6f 75 | 6c 64 20 61 70 70 72 65 |s..I wou|ld appre|
|00000220| 63 69 61 74 65 20 72 65 | 63 65 69 76 69 6e 67 20 |ciate re|ceiving |
|00000230| 61 6e 79 20 62 75 67 20 | 66 69 78 65 73 20 6f 72 |any bug |fixes or|
|00000240| 20 65 6e 68 61 6e 63 65 | 6d 65 6e 74 73 2e 0a 0a | enhance|ments...|
|00000250| 2d 2d 2d 0a 42 6f 62 20 | 4d 61 73 74 6f 72 73 0a |---.Bob |Mastors.|
|00000260| 45 70 6f 63 68 20 53 79 | 73 74 65 6d 73 2c 20 4d |Epoch Sy|stems, M|
|00000270| 61 72 6c 62 6f 72 6f 20 | 4d 41 20 28 35 30 38 29 |arlboro |MA (508)|
|00000280| 20 34 38 31 2d 33 37 31 | 37 20 28 76 6f 69 63 65 | 481-371|7 (voice|
|00000290| 29 0a 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |). | |
|000002a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 28 35 30 | | (50|
|000002b0| 38 29 20 34 38 35 2d 33 | 32 34 31 20 28 66 61 78 |8) 485-3|241 (fax|
|000002c0| 29 0a 7b 6c 69 6e 75 73 | 21 61 6c 6c 69 61 6e 74 |).{linus|!alliant|
|000002d0| 2c 20 68 61 72 76 61 72 | 64 21 63 66 69 73 75 6e |, harvar|d!cfisun|
|000002e0| 7d 21 70 61 6c 6c 61 64 | 69 75 6d 21 62 62 79 0a |}!pallad|ium!bby.|
|000002f0| 0a 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.-------|--------|
|00000300| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 43 55 |--------|------CU|
|00000310| 54 20 48 45 52 45 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |T HERE--|--------|
|00000320| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000330| 2d 2d 2d 2d 0a 23 21 20 | 2f 62 69 6e 2f 73 68 0a |----.#! |/bin/sh.|
|00000340| 23 20 54 68 69 73 20 69 | 73 20 61 20 73 68 65 6c |# This i|s a shel|
|00000350| 6c 20 61 72 63 68 69 76 | 65 2c 20 6d 65 61 6e 69 |l archiv|e, meani|
|00000360| 6e 67 3a 0a 23 20 31 2e | 20 52 65 6d 6f 76 65 20 |ng:.# 1.| Remove |
|00000370| 65 76 65 72 79 74 68 69 | 6e 67 20 61 62 6f 76 65 |everythi|ng above|
|00000380| 20 74 68 65 20 23 21 20 | 2f 62 69 6e 2f 73 68 20 | the #! |/bin/sh |
|00000390| 6c 69 6e 65 2e 0a 23 20 | 32 2e 20 53 61 76 65 20 |line..# |2. Save |
|000003a0| 74 68 65 20 72 65 73 75 | 6c 74 20 69 6e 20 61 20 |the resu|lt in a |
|000003b0| 66 69 6c 65 0a 23 20 33 | 2e 20 45 78 65 63 75 74 |file.# 3|. Execut|
|000003c0| 65 20 74 68 65 20 66 69 | 6c 65 20 77 69 74 68 20 |e the fi|le with |
|000003d0| 2f 62 69 6e 2f 73 68 20 | 28 6e 6f 74 20 63 73 68 |/bin/sh |(not csh|
|000003e0| 29 0a 65 63 68 6f 20 65 | 78 74 72 61 63 74 69 6e |).echo e|xtractin|
|000003f0| 67 20 2d 20 52 45 41 44 | 4d 45 0a 73 65 64 20 27 |g - READ|ME.sed '|
|00000400| 73 2f 5e 58 2f 2f 27 20 | 3e 20 52 45 41 44 4d 45 |s/^X//' |> README|
|00000410| 20 3c 3c 20 27 46 52 49 | 44 41 59 5f 4e 49 47 48 | << 'FRI|DAY_NIGH|
|00000420| 54 27 0a 58 54 68 65 20 | 70 75 72 70 6f 73 65 20 |T'.XThe |purpose |
|00000430| 6f 66 20 74 68 65 20 67 | 65 6e 6d 61 6e 2e 61 77 |of the g|enman.aw|
|00000440| 6b 20 70 72 6f 67 72 61 | 6d 20 69 73 20 74 6f 20 |k progra|m is to |
|00000450| 67 65 6e 65 72 61 74 65 | 20 64 6f 63 75 6d 65 6e |generate| documen|
|00000460| 74 61 74 69 6f 6e 20 61 | 62 6f 75 74 0a 58 61 20 |tation a|bout.Xa |
|00000470| 43 2b 2b 20 63 6c 61 73 | 73 20 66 72 6f 6d 20 74 |C++ clas|s from t|
|00000480| 68 65 20 69 6e 63 6c 75 | 64 65 20 66 69 6c 65 20 |he inclu|de file |
|00000490| 61 6e 64 20 73 6f 75 72 | 63 65 20 66 69 6c 65 73 |and sour|ce files|
|000004a0| 2e 0a 58 0a 58 41 6e 20 | 65 78 61 6d 70 6c 65 20 |..X.XAn |example |
|000004b0| 6f 66 20 74 68 65 20 6f | 75 74 70 75 74 20 69 73 |of the o|utput is|
|000004c0| 20 69 6e 20 74 68 65 20 | 66 69 6c 65 20 73 74 72 | in the |file str|
|000004d0| 6c 6f 63 2e 6d 61 6e 2e | 20 20 54 68 65 20 69 6e |loc.man.| The in|
|000004e0| 70 75 74 20 69 73 20 69 | 6e 20 74 68 65 0a 58 66 |put is i|n the.Xf|
|000004f0| 69 6c 65 73 20 73 74 72 | 6c 6f 63 2e 68 20 61 6e |iles str|loc.h an|
|00000500| 64 20 73 74 72 6c 6f 63 | 2e 63 78 78 2e 20 20 54 |d strloc|.cxx. T|
|00000510| 68 65 20 73 74 72 6c 6f | 63 20 63 6c 61 73 73 20 |he strlo|c class |
|00000520| 69 73 20 6f 6e 6c 79 20 | 70 72 6f 76 69 64 65 64 |is only |provided|
|00000530| 20 61 73 0a 58 61 6e 20 | 65 78 61 6d 70 6c 65 20 | as.Xan |example |
|00000540| 6f 66 20 68 6f 77 20 74 | 6f 20 75 73 65 20 67 65 |of how t|o use ge|
|00000550| 6e 6d 61 6e 2e 61 77 6b | 2e 0a 46 52 49 44 41 59 |nman.awk|..FRIDAY|
|00000560| 5f 4e 49 47 48 54 0a 65 | 63 68 6f 20 65 78 74 72 |_NIGHT.e|cho extr|
|00000570| 61 63 74 69 6e 67 20 2d | 20 67 65 6e 6d 61 6e 2e |acting -| genman.|
|00000580| 61 77 6b 0a 73 65 64 20 | 27 73 2f 5e 58 2f 2f 27 |awk.sed |'s/^X//'|
|00000590| 20 3e 20 67 65 6e 6d 61 | 6e 2e 61 77 6b 20 3c 3c | > genma|n.awk <<|
|000005a0| 20 27 46 52 49 44 41 59 | 5f 4e 49 47 48 54 27 0a | 'FRIDAY|_NIGHT'.|
|000005b0| 58 23 0a 58 23 20 41 77 | 6b 20 70 72 6f 67 72 61 |X#.X# Aw|k progra|
|000005c0| 6d 20 74 68 61 74 20 74 | 61 6b 65 73 20 61 73 20 |m that t|akes as |
|000005d0| 69 6e 70 75 74 20 61 20 | 43 2b 2b 20 68 65 61 64 |input a |C++ head|
|000005e0| 65 72 20 66 69 6c 65 20 | 61 6e 64 20 6f 75 74 70 |er file |and outp|
|000005f0| 75 74 73 0a 58 23 20 61 | 20 55 4e 49 58 20 73 74 |uts.X# a| UNIX st|
|00000600| 79 6c 65 20 6d 61 6e 20 | 70 61 67 65 2e 0a 58 23 |yle man |page..X#|
|00000610| 0a 58 23 20 54 68 65 20 | 63 6f 6e 74 65 6e 74 73 |.X# The |contents|
|00000620| 20 6f 66 20 74 68 69 73 | 20 66 69 6c 65 20 61 72 | of this| file ar|
|00000630| 65 20 70 75 62 6c 69 63 | 20 64 6f 6d 61 69 6e 2e |e public| domain.|
|00000640| 0a 58 23 20 41 75 74 68 | 6f 72 3a 20 42 6f 62 20 |.X# Auth|or: Bob |
|00000650| 4d 61 73 74 6f 72 73 0a | 58 23 20 20 20 20 20 20 |Mastors.|X# |
|00000660| 20 20 20 45 70 6f 63 68 | 20 53 79 73 74 65 6d 73 | Epoch| Systems|
|00000670| 2c 20 49 6e 63 2e 0a 58 | 23 20 20 20 20 20 20 20 |, Inc..X|# |
|00000680| 20 20 32 2f 39 30 0a 58 | 0a 58 42 45 47 49 4e 09 | 2/90.X|.XBEGIN.|
|00000690| 7b 0a 58 09 23 20 73 70 | 65 63 69 66 79 20 68 6f |{.X.# sp|ecify ho|
|000006a0| 77 20 6d 75 63 68 20 74 | 6f 20 69 6e 64 65 6e 74 |w much t|o indent|
|000006b0| 20 74 68 65 20 76 61 72 | 69 6f 75 73 20 70 61 72 | the var|ious par|
|000006c0| 74 73 0a 58 09 49 4e 44 | 45 4e 54 5f 31 20 3d 20 |ts.X.IND|ENT_1 = |
|000006d0| 22 22 0a 58 09 49 4e 44 | 45 4e 54 5f 32 20 3d 20 |"".X.IND|ENT_2 = |
|000006e0| 22 20 20 22 0a 58 09 49 | 4e 44 45 4e 54 5f 33 20 |" ".X.I|NDENT_3 |
|000006f0| 3d 20 22 20 20 20 20 20 | 22 0a 58 09 6c 69 62 72 |= " |".X.libr|
|00000700| 61 72 79 3d 20 22 55 4e | 4b 4e 4f 57 4e 22 0a 58 |ary= "UN|KNOWN".X|
|00000710| 09 61 72 66 69 6c 65 63 | 6f 75 6e 74 3d 20 30 0a |.arfilec|ount= 0.|
|00000720| 58 09 7d 0a 58 0a 58 2f | 5e 23 64 65 66 69 6e 65 |X.}.X.X/|^#define|
|00000730| 2f 20 7b 0a 58 09 74 6d | 70 3d 20 73 75 62 73 74 |/ {.X.tm|p= subst|
|00000740| 72 28 20 24 30 2c 20 38 | 20 29 0a 58 09 74 6d 70 |r( $0, 8| ).X.tmp|
|00000750| 3d 20 73 74 72 69 70 5f | 77 68 69 74 65 28 20 74 |= strip_|white( t|
|00000760| 6d 70 20 29 0a 58 09 67 | 73 75 62 28 20 22 5c 5c |mp ).X.g|sub( "\\|
|00000770| 5c 5c 24 22 2c 20 22 22 | 2c 20 74 6d 70 20 29 3b |\\$", ""|, tmp );|
|00000780| 0a 58 09 64 65 66 69 6e | 65 20 3d 20 64 65 66 69 |.X.defin|e = defi|
|00000790| 6e 65 20 49 4e 44 45 4e | 54 5f 33 20 74 6d 70 20 |ne INDEN|T_3 tmp |
|000007a0| 22 5c 6e 22 0a 58 09 7d | 0a 58 0a 58 2f 5e 23 69 |"\n".X.}|.X.X/^#i|
|000007b0| 6e 63 6c 75 64 65 2f 20 | 7b 0a 58 09 74 6d 70 3d |nclude/ |{.X.tmp=|
|000007c0| 20 73 75 62 73 74 72 28 | 20 24 30 2c 20 39 20 29 | substr(| $0, 9 )|
|000007d0| 0a 58 09 74 6d 70 3d 20 | 73 74 72 69 70 5f 77 68 |.X.tmp= |strip_wh|
|000007e0| 69 74 65 28 20 74 6d 70 | 20 29 0a 58 09 69 6e 63 |ite( tmp| ).X.inc|
|000007f0| 6c 75 64 65 20 3d 20 69 | 6e 63 6c 75 64 65 20 49 |lude = i|nclude I|
|00000800| 4e 44 45 4e 54 5f 33 20 | 74 6d 70 20 22 5c 6e 22 |NDENT_3 |tmp "\n"|
|00000810| 0a 58 09 7d 0a 58 0a 58 | 2f 5e 74 79 70 65 64 65 |.X.}.X.X|/^typede|
|00000820| 66 2f 20 7b 0a 58 09 74 | 6d 70 3d 20 73 75 62 73 |f/ {.X.t|mp= subs|
|00000830| 74 72 28 20 24 30 2c 20 | 38 20 29 0a 58 09 74 6d |tr( $0, |8 ).X.tm|
|00000840| 70 3d 20 73 74 72 69 70 | 5f 77 68 69 74 65 28 20 |p= strip|_white( |
|00000850| 74 6d 70 20 29 0a 58 09 | 74 79 70 65 64 65 66 20 |tmp ).X.|typedef |
|00000860| 3d 20 74 79 70 65 64 65 | 66 20 49 4e 44 45 4e 54 |= typede|f INDENT|
|00000870| 5f 33 20 74 6d 70 20 22 | 5c 6e 22 0a 58 09 7d 0a |_3 tmp "|\n".X.}.|
|00000880| 58 0a 58 2f 5e 65 6e 75 | 6d 2f 20 7b 0a 58 09 74 |X.X/^enu|m/ {.X.t|
|00000890| 6d 70 3d 20 73 75 62 73 | 74 72 28 20 24 30 2c 20 |mp= subs|tr( $0, |
|000008a0| 35 20 29 0a 58 09 67 73 | 75 62 28 20 22 7b 22 2c |5 ).X.gs|ub( "{",|
|000008b0| 20 22 22 2c 20 74 6d 70 | 20 29 3b 0a 58 09 74 6d | "", tmp| );.X.tm|
|000008c0| 70 3d 20 73 74 72 69 70 | 5f 77 68 69 74 65 28 20 |p= strip|_white( |
|000008d0| 74 6d 70 20 29 0a 58 09 | 65 6e 75 6d 3d 20 65 6e |tmp ).X.|enum= en|
|000008e0| 75 6d 20 49 4e 44 45 4e | 54 5f 32 20 74 6d 70 20 |um INDEN|T_2 tmp |
|000008f0| 22 5c 6e 22 0a 58 09 77 | 68 69 6c 65 28 20 28 67 |"\n".X.w|hile( (g|
|00000900| 65 74 6c 69 6e 65 20 74 | 6d 70 29 20 3e 20 30 20 |etline t|mp) > 0 |
|00000910| 29 0a 58 09 09 7b 0a 58 | 09 09 67 73 75 62 28 20 |).X..{.X|..gsub( |
|00000920| 22 7b 22 2c 20 22 22 2c | 20 74 6d 70 20 29 3b 0a |"{", "",| tmp );.|
|00000930| 58 09 09 67 73 75 62 28 | 20 22 2c 22 2c 20 22 20 |X..gsub(| ",", " |
|00000940| 22 2c 20 74 6d 70 20 29 | 3b 0a 58 09 09 67 73 75 |", tmp )|;.X..gsu|
|00000950| 62 28 20 22 2f 2f 22 2c | 20 22 22 2c 20 74 6d 70 |b( "//",| "", tmp|
|00000960| 20 29 3b 0a 58 09 09 74 | 6d 70 3d 20 73 74 72 69 | );.X..t|mp= stri|
|00000970| 70 5f 77 68 69 74 65 28 | 20 74 6d 70 20 29 0a 58 |p_white(| tmp ).X|
|00000980| 09 09 69 66 28 20 74 6d | 70 20 7e 20 22 7d 20 2a |..if( tm|p ~ "} *|
|00000990| 3b 22 20 29 0a 58 09 09 | 09 62 72 65 61 6b 3b 0a |;" ).X..|.break;.|
|000009a0| 58 09 09 65 6e 75 6d 3d | 20 65 6e 75 6d 20 49 4e |X..enum=| enum IN|
|000009b0| 44 45 4e 54 5f 33 20 74 | 6d 70 20 22 5c 6e 22 0a |DENT_3 t|mp "\n".|
|000009c0| 58 09 09 7d 0a 58 09 7d | 0a 58 0a 58 2f 5e 73 74 |X..}.X.}|.X.X/^st|
|000009d0| 72 75 63 74 2f 20 7b 0a | 58 09 74 6d 70 3d 20 73 |ruct/ {.|X.tmp= s|
|000009e0| 75 62 73 74 72 28 20 24 | 30 2c 20 37 20 29 0a 58 |ubstr( $|0, 7 ).X|
|000009f0| 09 74 6d 70 3d 20 73 74 | 72 69 70 5f 77 68 69 74 |.tmp= st|rip_whit|
|00000a00| 65 28 20 74 6d 70 20 29 | 0a 58 09 73 74 72 75 63 |e( tmp )|.X.struc|
|00000a10| 74 3d 20 73 74 72 75 63 | 74 20 49 4e 44 45 4e 54 |t= struc|t INDENT|
|00000a20| 5f 32 20 74 6d 70 20 22 | 5c 6e 22 0a 58 09 77 68 |_2 tmp "|\n".X.wh|
|00000a30| 69 6c 65 28 20 28 67 65 | 74 6c 69 6e 65 20 74 6d |ile( (ge|tline tm|
|00000a40| 70 29 20 3e 20 30 20 29 | 0a 58 09 09 7b 0a 58 09 |p) > 0 )|.X..{.X.|
|00000a50| 09 74 6d 70 3d 20 73 74 | 72 69 70 5f 77 68 69 74 |.tmp= st|rip_whit|
|00000a60| 65 28 20 74 6d 70 20 29 | 0a 58 09 09 67 73 75 62 |e( tmp )|.X..gsub|
|00000a70| 28 20 22 2f 2f 22 2c 20 | 22 20 20 22 2c 20 74 6d |( "//", |" ", tm|
|00000a80| 70 20 29 3b 0a 58 09 09 | 73 74 72 75 63 74 3d 20 |p );.X..|struct= |
|00000a90| 73 74 72 75 63 74 20 49 | 4e 44 45 4e 54 5f 33 20 |struct I|NDENT_3 |
|00000aa0| 74 6d 70 20 22 5c 6e 22 | 0a 58 09 09 69 66 28 20 |tmp "\n"|.X..if( |
|00000ab0| 74 6d 70 20 7e 20 22 7d | 20 2a 3b 22 20 29 0a 58 |tmp ~ "}| *;" ).X|
|00000ac0| 09 09 09 62 72 65 61 6b | 3b 0a 58 09 09 7d 0a 58 |...break|;.X..}.X|
|00000ad0| 09 7d 0a 58 0a 58 2f 5e | 63 6c 61 73 73 2f 20 7b |.}.X.X/^|class/ {|
|00000ae0| 0a 58 09 74 6d 70 3d 20 | 73 75 62 73 74 72 28 20 |.X.tmp= |substr( |
|00000af0| 24 30 2c 20 36 20 29 0a | 58 09 74 6d 70 3d 20 73 |$0, 6 ).|X.tmp= s|
|00000b00| 74 72 69 70 5f 77 68 69 | 74 65 28 20 74 6d 70 20 |trip_whi|te( tmp |
|00000b10| 29 0a 58 09 67 73 75 62 | 28 20 22 7b 22 2c 20 22 |).X.gsub|( "{", "|
|00000b20| 22 2c 20 74 6d 70 20 29 | 0a 58 09 63 6c 61 73 73 |", tmp )|.X.class|
|00000b30| 3d 20 63 6c 61 73 73 20 | 64 6f 63 0a 58 09 64 6f |= class |doc.X.do|
|00000b40| 63 3d 20 22 22 0a 58 09 | 70 72 6f 63 65 73 73 5f |c= "".X.|process_|
|00000b50| 63 6c 61 73 73 28 20 74 | 6d 70 20 29 0a 58 09 7d |class( t|mp ).X.}|
|00000b60| 0a 58 0a 58 2f 5e 5c 2f | 5c 2f 2f 20 7b 0a 58 09 |.X.X/^\/|\// {.X.|
|00000b70| 74 6d 70 3d 20 73 75 62 | 73 74 72 28 20 24 30 2c |tmp= sub|str( $0,|
|00000b80| 20 34 20 29 0a 58 09 73 | 74 72 69 70 74 6d 70 3d | 4 ).X.s|triptmp=|
|00000b90| 20 73 74 72 69 70 5f 77 | 68 69 74 65 28 20 74 6d | strip_w|hite( tm|
|00000ba0| 70 20 29 0a 58 09 69 66 | 28 20 67 73 75 62 28 20 |p ).X.if|( gsub( |
|00000bb0| 22 5e 5c 2e 46 49 4c 45 | 22 2c 20 22 22 2c 20 73 |"^\.FILE|", "", s|
|00000bc0| 74 72 69 70 74 6d 70 20 | 29 20 3d 3d 20 31 20 29 |triptmp |) == 1 )|
|00000bd0| 0a 58 09 09 7b 0a 58 09 | 09 73 74 72 69 70 74 6d |.X..{.X.|.striptm|
|00000be0| 70 3d 20 73 74 72 69 70 | 5f 77 68 69 74 65 28 20 |p= strip|_white( |
|00000bf0| 73 74 72 69 70 74 6d 70 | 20 29 0a 58 09 09 66 69 |striptmp| ).X..fi|
|00000c00| 6c 65 3d 20 66 69 6c 65 | 20 49 4e 44 45 4e 54 5f |le= file| INDENT_|
|00000c10| 33 20 73 74 72 69 70 74 | 6d 70 20 22 5c 6e 22 0a |3 stript|mp "\n".|
|00000c20| 58 09 09 61 72 66 69 6c | 65 5b 20 73 74 72 69 70 |X..arfil|e[ strip|
|00000c30| 74 6d 70 20 5d 20 3d 20 | 73 74 72 69 70 74 6d 70 |tmp ] = |striptmp|
|00000c40| 0a 58 09 09 61 72 66 69 | 6c 65 63 6f 75 6e 74 2b |.X..arfi|lecount+|
|00000c50| 2b 0a 58 09 09 7d 0a 58 | 09 65 6c 73 65 0a 58 09 |+.X..}.X|.else.X.|
|00000c60| 69 66 28 20 67 73 75 62 | 28 20 22 5e 5c 2e 4c 49 |if( gsub|( "^\.LI|
|00000c70| 42 52 41 52 59 22 2c 20 | 22 22 2c 20 73 74 72 69 |BRARY", |"", stri|
|00000c80| 70 74 6d 70 20 29 20 3d | 3d 20 31 20 29 0a 58 09 |ptmp ) =|= 1 ).X.|
|00000c90| 09 7b 0a 58 09 09 73 74 | 72 69 70 74 6d 70 3d 20 |.{.X..st|riptmp= |
|00000ca0| 73 74 72 69 70 5f 77 68 | 69 74 65 28 20 73 74 72 |strip_wh|ite( str|
|00000cb0| 69 70 74 6d 70 20 29 0a | 58 09 09 6c 69 62 72 61 |iptmp ).|X..libra|
|00000cc0| 72 79 3d 20 74 6f 75 70 | 70 65 72 28 20 73 74 72 |ry= toup|per( str|
|00000cd0| 69 70 74 6d 70 20 29 0a | 58 09 09 7d 0a 58 09 65 |iptmp ).|X..}.X.e|
|00000ce0| 6c 73 65 0a 58 09 69 66 | 28 20 67 73 75 62 28 20 |lse.X.if|( gsub( |
|00000cf0| 22 5e 5c 2e 53 45 43 54 | 49 4f 4e 22 2c 20 22 22 |"^\.SECT|ION", ""|
|00000d00| 2c 20 73 74 72 69 70 74 | 6d 70 20 29 20 3d 3d 20 |, stript|mp ) == |
|00000d10| 31 20 29 0a 58 09 09 7b | 0a 58 09 09 73 74 72 69 |1 ).X..{|.X..stri|
|00000d20| 70 74 6d 70 3d 20 73 74 | 72 69 70 5f 77 68 69 74 |ptmp= st|rip_whit|
|00000d30| 65 28 20 73 74 72 69 70 | 74 6d 70 20 29 0a 58 09 |e( strip|tmp ).X.|
|00000d40| 09 73 74 72 69 70 74 6d | 70 3d 20 74 6f 75 70 70 |.striptm|p= toupp|
|00000d50| 65 72 28 20 73 74 72 69 | 70 74 6d 70 20 29 0a 58 |er( stri|ptmp ).X|
|00000d60| 09 09 64 6f 63 3d 20 64 | 6f 63 20 49 4e 44 45 4e |..doc= d|oc INDEN|
|00000d70| 54 5f 31 20 73 74 72 69 | 70 74 6d 70 20 22 5c 6e |T_1 stri|ptmp "\n|
|00000d80| 22 0a 58 09 09 64 6f 63 | 5f 66 6c 61 67 3d 20 22 |".X..doc|_flag= "|
|00000d90| 74 72 75 65 22 0a 58 09 | 09 7d 0a 58 09 65 6c 73 |true".X.|.}.X.els|
|00000da0| 65 20 69 66 28 20 64 6f | 63 5f 66 6c 61 67 20 3d |e if( do|c_flag =|
|00000db0| 3d 20 22 74 72 75 65 22 | 20 29 0a 58 09 09 7b 0a |= "true"| ).X..{.|
|00000dc0| 58 09 09 64 6f 63 3d 20 | 64 6f 63 20 49 4e 44 45 |X..doc= |doc INDE|
|00000dd0| 4e 54 5f 32 20 74 6d 70 | 20 22 5c 6e 22 0a 58 09 |NT_2 tmp| "\n".X.|
|00000de0| 09 7d 0a 58 09 7d 0a 58 | 0a 58 4e 46 20 3d 3d 20 |.}.X.}.X|.XNF == |
|00000df0| 30 20 7b 0a 58 09 69 66 | 28 20 28 64 6f 63 5f 66 |0 {.X.if|( (doc_f|
|00000e00| 6c 61 67 20 3d 3d 20 22 | 74 72 75 65 22 29 20 26 |lag == "|true") &|
|00000e10| 26 20 28 6c 65 6e 67 74 | 68 28 64 6f 63 29 20 3e |& (lengt|h(doc) >|
|00000e20| 20 30 29 20 29 0a 58 09 | 09 64 6f 63 3d 20 64 6f | 0) ).X.|.doc= do|
|00000e30| 63 20 22 5c 6e 22 0a 58 | 09 64 6f 63 5f 66 6c 61 |c "\n".X|.doc_fla|
|00000e40| 67 3d 20 22 22 0a 58 09 | 7d 0a 58 0a 58 45 4e 44 |g= "".X.|}.X.XEND|
|00000e50| 09 7b 0a 58 09 70 72 69 | 6e 74 0a 58 09 74 6d 70 |.{.X.pri|nt.X.tmp|
|00000e60| 3d 20 74 6f 75 70 70 65 | 72 28 46 49 4c 45 4e 41 |= touppe|r(FILENA|
|00000e70| 4d 45 29 20 22 28 63 2b | 2b 29 20 22 0a 58 09 70 |ME) "(c+|+) ".X.p|
|00000e80| 72 69 6e 74 66 28 20 22 | 25 2d 33 35 73 20 25 2d |rintf( "|%-35s %-|
|00000e90| 31 30 73 20 25 33 31 73 | 5c 6e 22 2c 20 74 6d 70 |10s %31s|\n", tmp|
|00000ea0| 2c 20 6c 69 62 72 61 72 | 79 2c 20 74 6d 70 20 29 |, librar|y, tmp )|
|00000eb0| 3b 0a 58 09 22 64 61 74 | 65 20 27 2b 25 68 20 25 |;.X."dat|e '+%h %|
|00000ec0| 64 2c 20 31 39 25 79 27 | 22 20 7c 20 67 65 74 6c |d, 19%y'|" | getl|
|00000ed0| 69 6e 65 20 74 6d 70 0a | 58 09 70 72 69 6e 74 0a |ine tmp.|X.print.|
|00000ee0| 58 09 70 72 69 6e 74 66 | 28 20 22 25 37 37 73 5c |X.printf|( "%77s\|
|00000ef0| 6e 22 2c 20 74 6d 70 20 | 29 0a 58 09 70 72 69 6e |n", tmp |).X.prin|
|00000f00| 74 5f 73 65 63 74 69 6f | 6e 28 20 22 22 2c 20 63 |t_sectio|n( "", c|
|00000f10| 6c 61 73 73 20 29 0a 58 | 09 70 72 69 6e 74 5f 73 |lass ).X|.print_s|
|00000f20| 65 63 74 69 6f 6e 28 20 | 22 22 2c 20 64 6f 63 20 |ection( |"", doc |
|00000f30| 29 0a 58 09 70 72 69 6e | 74 5f 73 65 63 74 69 6f |).X.prin|t_sectio|
|00000f40| 6e 28 20 22 44 45 46 49 | 4e 45 44 20 4d 41 43 52 |n( "DEFI|NED MACR|
|00000f50| 4f 53 22 2c 20 64 65 66 | 69 6e 65 20 29 0a 58 09 |OS", def|ine ).X.|
|00000f60| 70 72 69 6e 74 5f 73 65 | 63 74 69 6f 6e 28 20 22 |print_se|ction( "|
|00000f70| 49 4e 43 4c 55 44 45 44 | 20 46 49 4c 45 53 22 2c |INCLUDED| FILES",|
|00000f80| 20 69 6e 63 6c 75 64 65 | 20 29 0a 58 09 70 72 69 | include| ).X.pri|
|00000f90| 6e 74 5f 73 65 63 74 69 | 6f 6e 28 20 22 54 59 50 |nt_secti|on( "TYP|
|00000fa0| 45 20 44 45 46 49 4e 49 | 54 49 4f 4e 53 22 2c 20 |E DEFINI|TIONS", |
|00000fb0| 74 79 70 65 64 65 66 20 | 29 0a 58 09 70 72 69 6e |typedef |).X.prin|
|00000fc0| 74 5f 73 65 63 74 69 6f | 6e 28 20 22 45 4e 55 4d |t_sectio|n( "ENUM|
|00000fd0| 45 52 41 54 49 4f 4e 53 | 22 2c 20 65 6e 75 6d 20 |ERATIONS|", enum |
|00000fe0| 29 0a 58 09 70 72 69 6e | 74 5f 73 65 63 74 69 6f |).X.prin|t_sectio|
|00000ff0| 6e 28 20 22 53 54 52 55 | 43 54 55 52 45 53 22 2c |n( "STRU|CTURES",|
|00001000| 20 73 74 72 75 63 74 20 | 29 0a 58 09 70 72 69 6e | struct |).X.prin|
|00001010| 74 5f 73 65 63 74 69 6f | 6e 28 20 22 53 4f 55 52 |t_sectio|n( "SOUR|
|00001020| 43 45 20 46 49 4c 45 53 | 22 2c 20 66 69 6c 65 20 |CE FILES|", file |
|00001030| 29 0a 58 09 70 72 69 6e | 74 5f 73 75 6d 6d 61 72 |).X.prin|t_summar|
|00001040| 79 73 28 29 0a 58 09 7d | 0a 58 0a 58 23 20 70 72 |ys().X.}|.X.X# pr|
|00001050| 69 6e 74 73 20 6f 75 74 | 20 74 68 65 20 73 70 65 |ints out| the spe|
|00001060| 63 69 66 69 65 64 20 68 | 65 61 64 65 72 20 61 6e |cified h|eader an|
|00001070| 64 20 64 61 74 61 20 69 | 66 20 74 68 65 20 64 61 |d data i|f the da|
|00001080| 74 61 20 73 74 72 69 6e | 67 0a 58 23 20 69 73 20 |ta strin|g.X# is |
|00001090| 6e 6f 74 20 7a 65 72 6f | 20 6c 65 6e 67 74 68 0a |not zero| length.|
|000010a0| 58 66 75 6e 63 74 69 6f | 6e 20 70 72 69 6e 74 5f |Xfunctio|n print_|
|000010b0| 73 65 63 74 69 6f 6e 28 | 20 68 65 61 64 65 72 2c |section(| header,|
|000010c0| 20 64 61 74 61 20 29 0a | 58 09 7b 0a 58 09 69 66 | data ).|X.{.X.if|
|000010d0| 28 20 6c 65 6e 67 74 68 | 28 64 61 74 61 29 20 3e |( length|(data) >|
|000010e0| 20 30 20 29 0a 58 09 09 | 7b 0a 58 09 09 70 72 69 | 0 ).X..|{.X..pri|
|000010f0| 6e 74 20 49 4e 44 45 4e | 54 5f 31 20 68 65 61 64 |nt INDEN|T_1 head|
|00001100| 65 72 0a 58 09 09 70 72 | 69 6e 74 20 64 61 74 61 |er.X..pr|int data|
|00001110| 0a 58 09 09 7d 0a 58 09 | 7d 0a 58 0a 58 23 20 43 |.X..}.X.|}.X.X# C|
|00001120| 61 6c 6c 20 74 6f 20 70 | 72 6f 63 65 73 73 20 61 |all to p|rocess a|
|00001130| 20 63 6c 61 73 73 2e 20 | 20 50 61 73 73 20 74 68 | class. | Pass th|
|00001140| 65 20 6e 61 6d 65 20 6f | 66 20 74 68 65 20 63 6c |e name o|f the cl|
|00001150| 61 73 73 2e 0a 58 66 75 | 6e 63 74 69 6f 6e 20 70 |ass..Xfu|nction p|
|00001160| 72 6f 63 65 73 73 5f 63 | 6c 61 73 73 28 20 6e 61 |rocess_c|lass( na|
|00001170| 6d 65 2c 20 20 20 20 69 | 6e 70 75 74 73 74 72 2c |me, i|nputstr,|
|00001180| 69 69 2c 62 65 72 73 20 | 29 0a 58 09 7b 0a 58 09 |ii,bers |).X.{.X.|
|00001190| 23 20 67 65 74 20 6c 69 | 6e 65 73 20 6f 66 20 69 |# get li|nes of i|
|000011a0| 6e 70 75 74 20 75 6e 74 | 69 6c 20 45 4f 46 0a 58 |nput unt|il EOF.X|
|000011b0| 09 69 69 3d 20 22 70 72 | 69 76 61 74 65 22 0a 58 |.ii= "pr|ivate".X|
|000011c0| 09 77 68 69 6c 65 28 20 | 28 67 65 74 6c 69 6e 65 |.while( |(getline|
|000011d0| 20 69 6e 70 75 74 73 74 | 72 29 20 3e 20 30 20 29 | inputst|r) > 0 )|
|000011e0| 0a 58 09 09 7b 0a 58 09 | 09 23 20 6a 75 73 74 20 |.X..{.X.|.# just |
|000011f0| 67 65 74 20 74 68 65 20 | 74 6f 6b 65 6e 28 73 29 |get the |token(s)|
|00001200| 0a 58 09 09 69 6e 70 75 | 74 73 74 72 3d 20 73 74 |.X..inpu|tstr= st|
|00001210| 72 69 70 5f 77 68 69 74 | 65 28 20 69 6e 70 75 74 |rip_whit|e( input|
|00001220| 73 74 72 20 29 0a 58 0a | 58 09 09 23 20 69 67 6e |str ).X.|X..# ign|
|00001230| 6f 72 65 20 73 69 6e 67 | 6c 65 20 7b 0a 58 09 09 |ore sing|le {.X..|
|00001240| 69 66 28 20 69 6e 70 75 | 74 73 74 72 20 3d 3d 20 |if( inpu|tstr == |
|00001250| 22 7b 22 20 29 0a 58 09 | 09 09 63 6f 6e 74 69 6e |"{" ).X.|..contin|
|00001260| 75 65 0a 58 0a 58 09 09 | 23 20 61 6c 6c 20 64 6f |ue.X.X..|# all do|
|00001270| 6e 65 20 69 66 20 66 6f | 75 6e 64 20 65 6e 64 20 |ne if fo|und end |
|00001280| 6f 66 20 63 6c 61 73 73 | 20 64 65 66 69 6e 69 74 |of class| definit|
|00001290| 69 6f 6e 0a 58 09 09 69 | 66 28 20 69 6e 70 75 74 |ion.X..i|f( input|
|000012a0| 73 74 72 20 7e 20 22 7d | 20 2a 3b 22 20 29 0a 58 |str ~ "}| *;" ).X|
|000012b0| 09 09 09 62 72 65 61 6b | 3b 0a 58 0a 58 09 09 23 |...break|;.X.X..#|
|000012c0| 20 70 75 62 6c 69 63 20 | 6d 65 6d 62 65 72 73 20 | public |members |
|000012d0| 66 6f 6c 6c 6f 77 0a 58 | 09 09 69 66 28 20 69 6e |follow.X|..if( in|
|000012e0| 70 75 74 73 74 72 20 7e | 20 22 70 75 62 6c 69 63 |putstr ~| "public|
|000012f0| 20 2a 3a 22 20 29 0a 58 | 09 09 09 69 69 3d 20 22 | *:" ).X|...ii= "|
|00001300| 70 75 62 6c 69 63 22 0a | 58 0a 58 09 09 23 20 70 |public".|X.X..# p|
|00001310| 72 69 76 61 74 65 20 6d | 65 6d 62 65 72 73 20 66 |rivate m|embers f|
|00001320| 6f 6c 6c 6f 77 0a 58 09 | 09 65 6c 73 65 20 69 66 |ollow.X.|.else if|
|00001330| 28 20 69 6e 70 75 74 73 | 74 72 20 7e 20 22 70 72 |( inputs|tr ~ "pr|
|00001340| 69 76 61 74 65 20 2a 3a | 22 20 29 0a 58 09 09 09 |ivate *:|" ).X...|
|00001350| 69 69 3d 20 22 70 72 69 | 76 61 74 65 22 0a 58 0a |ii= "pri|vate".X.|
|00001360| 58 09 09 23 20 70 72 6f | 74 65 63 74 65 64 20 6d |X..# pro|tected m|
|00001370| 65 6d 62 65 72 73 20 66 | 6f 6c 6c 6f 77 0a 58 09 |embers f|ollow.X.|
|00001380| 09 65 6c 73 65 20 69 66 | 28 20 69 6e 70 75 74 73 |.else if|( inputs|
|00001390| 74 72 20 20 7e 20 22 70 | 72 6f 74 65 63 74 65 64 |tr ~ "p|rotected|
|000013a0| 20 2a 3a 22 20 29 0a 58 | 09 09 09 69 69 3d 20 22 | *:" ).X|...ii= "|
|000013b0| 70 72 6f 74 65 63 74 65 | 64 22 0a 58 0a 58 09 09 |protecte|d".X.X..|
|000013c0| 65 6c 73 65 20 69 66 28 | 20 28 6c 65 6e 67 74 68 |else if(| (length|
|000013d0| 28 69 6e 70 75 74 73 74 | 72 29 20 3e 20 30 29 20 |(inputst|r) > 0) |
|000013e0| 7c 7c 20 28 6c 65 6e 67 | 74 68 28 62 65 72 73 5b ||| (leng|th(bers[|
|000013f0| 69 69 5d 29 20 3e 20 30 | 29 20 29 0a 58 09 09 09 |ii]) > 0|) ).X...|
|00001400| 7b 0a 58 09 09 09 67 73 | 75 62 28 20 22 2f 2f 22 |{.X...gs|ub( "//"|
|00001410| 2c 20 22 20 20 22 2c 20 | 69 6e 70 75 74 73 74 72 |, " ", |inputstr|
|00001420| 20 29 0a 58 09 09 09 69 | 66 28 20 6c 65 6e 67 74 | ).X...i|f( lengt|
|00001430| 68 28 69 6e 70 75 74 73 | 74 72 29 20 3e 20 30 20 |h(inputs|tr) > 0 |
|00001440| 29 0a 58 09 09 09 09 62 | 65 72 73 5b 69 69 5d 3d |).X....b|ers[ii]=|
|00001450| 20 62 65 72 73 5b 69 69 | 5d 20 49 4e 44 45 4e 54 | bers[ii|] INDENT|
|00001460| 5f 33 20 69 6e 70 75 74 | 73 74 72 20 22 5c 6e 22 |_3 input|str "\n"|
|00001470| 0a 58 09 09 09 65 6c 73 | 65 0a 58 09 09 09 09 62 |.X...els|e.X....b|
|00001480| 65 72 73 5b 69 69 5d 3d | 20 62 65 72 73 5b 69 69 |ers[ii]=| bers[ii|
|00001490| 5d 20 22 5c 6e 22 0a 58 | 09 09 09 7d 0a 58 09 09 |] "\n".X|...}.X..|
|000014a0| 7d 0a 58 0a 58 09 23 20 | 63 6f 6e 73 74 72 75 63 |}.X.X.# |construc|
|000014b0| 74 20 74 68 65 20 63 6c | 61 73 73 20 73 74 72 69 |t the cl|ass stri|
|000014c0| 6e 67 0a 58 09 63 6c 61 | 73 73 3d 20 63 6c 61 73 |ng.X.cla|ss= clas|
|000014d0| 73 20 49 4e 44 45 4e 54 | 5f 31 20 22 43 4c 41 53 |s INDENT|_1 "CLAS|
|000014e0| 53 20 22 20 6e 61 6d 65 | 20 22 5c 6e 5c 6e 22 0a |S " name| "\n\n".|
|000014f0| 58 09 69 66 28 20 6c 65 | 6e 67 74 68 28 20 62 65 |X.if( le|ngth( be|
|00001500| 72 73 5b 20 22 70 75 62 | 6c 69 63 22 20 5d 20 29 |rs[ "pub|lic" ] )|
|00001510| 20 3e 20 30 20 29 0a 58 | 09 09 7b 0a 58 09 09 63 | > 0 ).X|..{.X..c|
|00001520| 6c 61 73 73 3d 20 63 6c | 61 73 73 20 49 4e 44 45 |lass= cl|ass INDE|
|00001530| 4e 54 5f 32 20 22 50 75 | 62 6c 69 63 20 6d 65 6d |NT_2 "Pu|blic mem|
|00001540| 62 65 72 73 5c 6e 22 0a | 58 09 09 63 6c 61 73 73 |bers\n".|X..class|
|00001550| 3d 20 63 6c 61 73 73 20 | 73 74 72 69 70 5f 6e 6c |= class |strip_nl|
|00001560| 28 20 62 65 72 73 5b 22 | 70 75 62 6c 69 63 22 5d |( bers["|public"]|
|00001570| 20 29 20 22 5c 6e 5c 6e | 22 0a 58 09 09 7d 0a 58 | ) "\n\n|".X..}.X|
|00001580| 09 69 66 28 20 6c 65 6e | 67 74 68 28 20 62 65 72 |.if( len|gth( ber|
|00001590| 73 5b 20 22 70 72 6f 74 | 65 63 74 65 64 22 20 5d |s[ "prot|ected" ]|
|000015a0| 20 29 20 3e 20 30 20 29 | 0a 58 09 09 7b 0a 58 09 | ) > 0 )|.X..{.X.|
|000015b0| 09 63 6c 61 73 73 3d 20 | 63 6c 61 73 73 20 49 4e |.class= |class IN|
|000015c0| 44 45 4e 54 5f 32 20 22 | 50 72 6f 74 65 63 74 65 |DENT_2 "|Protecte|
|000015d0| 64 20 6d 65 6d 62 65 72 | 73 5c 6e 22 0a 58 09 09 |d member|s\n".X..|
|000015e0| 63 6c 61 73 73 3d 20 63 | 6c 61 73 73 20 73 74 72 |class= c|lass str|
|000015f0| 69 70 5f 6e 6c 28 20 62 | 65 72 73 5b 22 70 72 6f |ip_nl( b|ers["pro|
|00001600| 74 65 63 74 65 64 22 5d | 20 29 20 22 5c 6e 5c 6e |tected"]| ) "\n\n|
|00001610| 22 0a 58 09 09 7d 0a 58 | 09 69 66 28 20 6c 65 6e |".X..}.X|.if( len|
|00001620| 67 74 68 28 20 62 65 72 | 73 5b 20 22 70 72 69 76 |gth( ber|s[ "priv|
|00001630| 61 74 65 22 20 5d 20 29 | 20 3e 20 30 20 29 0a 58 |ate" ] )| > 0 ).X|
|00001640| 09 09 7b 0a 58 09 09 63 | 6c 61 73 73 3d 20 63 6c |..{.X..c|lass= cl|
|00001650| 61 73 73 20 49 4e 44 45 | 4e 54 5f 32 20 22 50 72 |ass INDE|NT_2 "Pr|
|00001660| 69 76 61 74 65 20 6d 65 | 6d 62 65 72 73 5c 6e 22 |ivate me|mbers\n"|
|00001670| 0a 58 09 09 63 6c 61 73 | 73 3d 20 63 6c 61 73 73 |.X..clas|s= class|
|00001680| 20 73 74 72 69 70 5f 6e | 6c 28 20 62 65 72 73 5b | strip_n|l( bers[|
|00001690| 22 70 72 69 76 61 74 65 | 22 5d 20 29 20 22 5c 6e |"private|"] ) "\n|
|000016a0| 5c 6e 22 0a 58 09 09 7d | 0a 58 09 69 66 28 20 6c |\n".X..}|.X.if( l|
|000016b0| 65 6e 67 74 68 28 20 62 | 65 72 73 5b 20 22 66 72 |ength( b|ers[ "fr|
|000016c0| 69 65 6e 64 22 20 5d 20 | 29 20 3e 20 30 20 29 0a |iend" ] |) > 0 ).|
|000016d0| 58 09 09 7b 0a 58 09 09 | 63 6c 61 73 73 3d 20 63 |X..{.X..|class= c|
|000016e0| 6c 61 73 73 20 49 4e 44 | 45 4e 54 5f 32 20 22 46 |lass IND|ENT_2 "F|
|000016f0| 72 69 65 6e 64 73 5c 6e | 22 0a 58 09 09 63 6c 61 |riends\n|".X..cla|
|00001700| 73 73 3d 20 63 6c 61 73 | 73 20 73 74 72 69 70 5f |ss= clas|s strip_|
|00001710| 6e 6c 28 20 62 65 72 73 | 5b 22 66 72 69 65 6e 64 |nl( bers|["friend|
|00001720| 22 5d 20 29 20 22 5c 6e | 5c 6e 22 0a 58 09 09 7d |"] ) "\n|\n".X..}|
|00001730| 0a 58 09 7d 0a 58 0a 58 | 23 20 73 74 72 69 70 73 |.X.}.X.X|# strips|
|00001740| 20 6c 65 61 64 69 6e 67 | 20 61 6e 64 20 74 72 61 | leading| and tra|
|00001750| 69 6c 69 6e 67 20 77 68 | 69 74 65 73 70 61 63 65 |iling wh|itespace|
|00001760| 20 66 72 6f 6d 20 74 68 | 65 20 73 70 65 63 69 66 | from th|e specif|
|00001770| 69 65 64 20 73 74 72 69 | 6e 67 20 61 6e 64 0a 58 |ied stri|ng and.X|
|00001780| 23 20 72 65 74 75 72 6e | 73 20 74 68 65 20 73 74 |# return|s the st|
|00001790| 72 69 6e 67 0a 58 66 75 | 6e 63 74 69 6f 6e 20 73 |ring.Xfu|nction s|
|000017a0| 74 72 69 70 5f 77 68 69 | 74 65 28 20 64 61 74 61 |trip_whi|te( data|
|000017b0| 20 29 0a 58 09 7b 0a 58 | 09 67 73 75 62 28 20 22 | ).X.{.X|.gsub( "|
|000017c0| 5e 5b 5c 74 20 5d 2b 22 | 2c 20 22 22 2c 20 64 61 |^[\t ]+"|, "", da|
|000017d0| 74 61 20 29 0a 58 09 67 | 73 75 62 28 20 22 5b 5c |ta ).X.g|sub( "[\|
|000017e0| 74 20 5d 2b 24 22 2c 20 | 22 22 2c 20 64 61 74 61 |t ]+$", |"", data|
|000017f0| 20 29 0a 58 09 72 65 74 | 75 72 6e 20 64 61 74 61 | ).X.ret|urn data|
|00001800| 0a 58 09 7d 0a 58 0a 58 | 23 20 73 74 72 69 70 73 |.X.}.X.X|# strips|
|00001810| 20 6c 65 61 64 69 6e 67 | 20 61 6e 64 20 74 72 61 | leading| and tra|
|00001820| 69 6c 69 6e 67 20 6e 65 | 77 6c 69 6e 65 73 20 66 |iling ne|wlines f|
|00001830| 72 6f 6d 20 74 68 65 20 | 73 70 65 63 69 66 69 65 |rom the |specifie|
|00001840| 64 20 73 74 72 69 6e 67 | 20 61 6e 64 0a 58 23 20 |d string| and.X# |
|00001850| 72 65 74 75 72 6e 73 20 | 74 68 65 20 73 74 72 69 |returns |the stri|
|00001860| 6e 67 0a 58 66 75 6e 63 | 74 69 6f 6e 20 73 74 72 |ng.Xfunc|tion str|
|00001870| 69 70 5f 6e 6c 28 20 64 | 61 74 61 20 29 0a 58 09 |ip_nl( d|ata ).X.|
|00001880| 7b 0a 58 09 67 73 75 62 | 28 20 22 5c 6e 22 2c 20 |{.X.gsub|( "\n", |
|00001890| 22 40 22 2c 20 64 61 74 | 61 20 29 0a 58 09 67 73 |"@", dat|a ).X.gs|
|000018a0| 75 62 28 20 22 40 2b 24 | 22 2c 20 22 22 2c 20 64 |ub( "@+$|", "", d|
|000018b0| 61 74 61 20 29 0a 58 09 | 67 73 75 62 28 20 22 40 |ata ).X.|gsub( "@|
|000018c0| 22 2c 20 22 5c 6e 22 2c | 20 64 61 74 61 20 29 0a |", "\n",| data ).|
|000018d0| 58 09 72 65 74 75 72 6e | 20 64 61 74 61 0a 58 09 |X.return| data.X.|
|000018e0| 7d 0a 58 0a 58 23 20 43 | 61 6c 6c 20 74 6f 20 67 |}.X.X# C|all to g|
|000018f0| 65 74 20 74 68 65 20 66 | 75 6e 63 74 69 6f 6e 20 |et the f|unction |
|00001900| 73 75 6d 6d 61 72 79 73 | 20 66 72 6f 6d 20 74 68 |summarys| from th|
|00001910| 65 20 73 6f 75 72 63 65 | 20 66 69 6c 65 73 20 61 |e source| files a|
|00001920| 6e 64 20 70 72 69 6e 74 | 20 74 68 65 6d 0a 58 66 |nd print| them.Xf|
|00001930| 75 6e 63 74 69 6f 6e 20 | 70 72 69 6e 74 5f 73 75 |unction |print_su|
|00001940| 6d 6d 61 72 79 73 28 20 | 20 20 64 61 74 61 2c 74 |mmarys( | data,t|
|00001950| 69 74 6c 65 20 29 0a 58 | 20 20 20 20 7b 0a 58 20 |itle ).X| {.X |
|00001960| 20 20 20 23 20 6a 75 73 | 74 20 72 65 74 75 72 6e | # jus|t return|
|00001970| 20 69 66 20 6e 6f 20 73 | 6f 75 72 63 65 20 66 69 | if no s|ource fi|
|00001980| 6c 65 73 20 6c 69 73 74 | 65 64 0a 58 20 20 20 20 |les list|ed.X |
|00001990| 69 66 28 20 61 72 66 69 | 6c 65 63 6f 75 6e 74 20 |if( arfi|lecount |
|000019a0| 3d 3d 20 30 20 29 0a 58 | 20 20 20 20 20 20 20 20 |== 0 ).X| |
|000019b0| 72 65 74 75 72 6e 3b 0a | 58 0a 58 20 20 20 20 23 |return;.|X.X #|
|000019c0| 20 70 72 69 6e 74 20 74 | 68 65 20 68 65 61 64 65 | print t|he heade|
|000019d0| 72 0a 58 20 20 20 20 70 | 72 69 6e 74 20 49 4e 44 |r.X p|rint IND|
|000019e0| 45 4e 54 5f 31 20 22 53 | 55 4d 4d 41 52 59 22 0a |ENT_1 "S|UMMARY".|
|000019f0| 58 0a 58 20 20 20 20 23 | 20 77 61 6c 6b 20 74 68 |X.X #| walk th|
|00001a00| 65 20 6c 69 73 74 20 6f | 66 20 73 6f 75 72 63 65 |e list o|f source|
|00001a10| 20 66 69 6c 65 73 0a 58 | 20 20 20 20 66 6f 72 28 | files.X| for(|
|00001a20| 20 78 78 20 69 6e 20 61 | 72 66 69 6c 65 20 29 0a | xx in a|rfile ).|
|00001a30| 58 09 7b 0a 58 20 20 20 | 20 20 20 20 20 23 20 6c |X.{.X | # l|
|00001a40| 6f 6f 70 20 72 65 61 64 | 69 6e 67 20 65 61 63 68 |oop read|ing each|
|00001a50| 20 6c 69 6e 65 20 6f 66 | 20 74 68 65 20 73 6f 75 | line of| the sou|
|00001a60| 72 63 65 20 66 69 6c 65 | 0a 58 09 77 68 69 6c 65 |rce file|.X.while|
|00001a70| 28 20 28 67 65 74 6c 69 | 6e 65 20 69 6e 70 75 74 |( (getli|ne input|
|00001a80| 73 74 72 20 3c 61 72 66 | 69 6c 65 5b 78 78 5d 29 |str <arf|ile[xx])|
|00001a90| 20 3e 20 30 20 29 0a 58 | 09 20 20 20 20 7b 0a 58 | > 0 ).X|. {.X|
|00001aa0| 20 20 20 20 20 20 20 20 | 20 20 20 20 23 20 73 65 | | # se|
|00001ab0| 65 20 69 66 20 74 68 65 | 20 73 74 61 72 74 20 6f |e if the| start o|
|00001ac0| 66 20 74 68 65 20 66 75 | 6e 63 74 69 6f 6e 20 73 |f the fu|nction s|
|00001ad0| 75 6d 6d 61 72 79 0a 58 | 09 20 20 20 20 69 66 28 |ummary.X|. if(|
|00001ae0| 20 69 6e 70 75 74 73 74 | 72 20 7e 20 22 2f 2f 20 | inputst|r ~ "// |
|00001af0| 44 65 73 63 72 69 70 74 | 69 6f 6e 3a 24 22 20 29 |Descript|ion:$" )|
|00001b00| 0a 58 09 09 7b 0a 58 09 | 09 64 61 74 61 3d 20 22 |.X..{.X.|.data= "|
|00001b10| 22 0a 58 09 09 74 69 74 | 6c 65 3d 20 22 22 0a 58 |".X..tit|le= "".X|
|00001b20| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001b30| 23 20 6c 6f 6f 70 20 72 | 65 61 64 69 6e 67 20 74 |# loop r|eading t|
|00001b40| 68 65 20 73 75 6d 6d 61 | 72 79 0a 58 09 09 77 68 |he summa|ry.X..wh|
|00001b50| 69 6c 65 28 20 28 67 65 | 74 6c 69 6e 65 20 69 6e |ile( (ge|tline in|
|00001b60| 70 75 74 73 74 72 20 3c | 61 72 66 69 6c 65 5b 78 |putstr <|arfile[x|
|00001b70| 78 5d 29 20 3e 20 30 20 | 29 0a 58 09 09 20 20 20 |x]) > 0 |).X.. |
|00001b80| 20 7b 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 | {.X | |
|00001b90| 20 20 20 20 20 20 20 20 | 23 20 73 65 65 20 69 66 | |# see if|
|00001ba0| 20 61 6c 6c 20 64 6f 6e | 65 0a 58 09 09 20 20 20 | all don|e.X.. |
|00001bb0| 20 69 66 28 20 69 6e 70 | 75 74 73 74 72 20 7e 20 | if( inp|utstr ~ |
|00001bc0| 22 7b 2e 2a 22 20 29 0a | 58 09 09 09 7b 0a 58 09 |"{.*" ).|X...{.X.|
|00001bd0| 09 09 74 69 74 6c 65 3d | 20 73 74 72 69 70 5f 6e |..title=| strip_n|
|00001be0| 6c 28 20 74 69 74 6c 65 | 20 29 0a 58 09 09 09 70 |l( title| ).X...p|
|00001bf0| 72 69 6e 74 20 74 69 74 | 6c 65 0a 58 09 09 09 70 |rint tit|le.X...p|
|00001c00| 72 69 6e 74 20 64 61 74 | 61 0a 58 09 09 09 62 72 |rint dat|a.X...br|
|00001c10| 65 61 6b 3b 0a 58 09 09 | 09 7d 0a 58 0a 58 09 09 |eak;.X..|.}.X.X..|
|00001c20| 20 20 20 20 23 20 73 74 | 72 69 70 20 74 68 65 20 | # st|rip the |
|00001c30| 63 6f 6d 6d 65 6e 74 20 | 61 6e 64 20 6c 65 61 64 |comment |and lead|
|00001c40| 69 6e 67 20 77 68 69 74 | 65 73 70 61 63 65 0a 58 |ing whit|espace.X|
|00001c50| 09 09 20 20 20 20 69 66 | 28 20 67 73 75 62 28 20 |.. if|( gsub( |
|00001c60| 22 2f 2f 5b 5c 74 20 5d | 2a 22 2c 20 22 22 2c 20 |"//[\t ]|*", "", |
|00001c70| 69 6e 70 75 74 73 74 72 | 20 29 20 21 3d 20 30 20 |inputstr| ) != 0 |
|00001c80| 29 0a 58 09 09 09 7b 0a | 58 09 09 09 23 20 6f 6e |).X...{.|X...# on|
|00001c90| 6c 79 20 6b 65 65 70 20 | 6c 69 6e 65 73 20 6e 6f |ly keep |lines no|
|00001ca0| 74 20 65 6e 64 69 6e 67 | 20 69 6e 20 3a 0a 58 09 |t ending| in :.X.|
|00001cb0| 09 09 69 66 28 20 69 6e | 70 75 74 73 74 72 20 21 |..if( in|putstr !|
|00001cc0| 7e 20 22 2e 2a 3a 24 22 | 20 29 0a 58 09 09 09 20 |~ ".*:$"| ).X... |
|00001cd0| 20 20 20 7b 0a 58 20 20 | 20 20 20 20 20 20 20 20 | {.X | |
|00001ce0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001cf0| 20 20 23 20 73 61 76 65 | 20 74 68 65 20 6c 69 6e | # save| the lin|
|00001d00| 65 20 6f 66 20 64 61 74 | 61 0a 58 09 09 09 20 20 |e of dat|a.X... |
|00001d10| 20 20 64 61 74 61 3d 20 | 64 61 74 61 20 49 4e 44 | data= |data IND|
|00001d20| 45 4e 54 5f 33 20 69 6e | 70 75 74 73 74 72 20 22 |ENT_3 in|putstr "|
|00001d30| 5c 6e 22 0a 58 09 09 09 | 20 20 20 20 7d 0a 58 09 |\n".X...| }.X.|
|00001d40| 09 09 7d 0a 58 09 09 20 | 20 20 20 65 6c 73 65 0a |..}.X.. | else.|
|00001d50| 58 09 09 09 7b 0a 58 09 | 09 09 23 20 6f 6e 6c 79 |X...{.X.|..# only|
|00001d60| 20 6b 65 65 70 20 6c 69 | 6e 65 73 20 74 68 61 74 | keep li|nes that|
|00001d70| 20 61 72 65 20 6e 6f 74 | 20 62 6c 61 6e 6b 0a 58 | are not| blank.X|
|00001d80| 09 09 09 69 66 28 20 6c | 65 6e 67 74 68 28 20 69 |...if( l|ength( i|
|00001d90| 6e 70 75 74 73 74 72 20 | 29 20 29 0a 58 09 09 09 |nputstr |) ).X...|
|00001da0| 20 20 20 20 7b 0a 58 20 | 20 20 20 20 20 20 20 20 | {.X | |
|00001db0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001dc0| 20 20 20 23 20 73 61 76 | 65 20 74 68 65 20 6c 69 | # sav|e the li|
|00001dd0| 6e 65 20 6f 66 20 74 68 | 65 20 66 75 6e 63 74 69 |ne of th|e functi|
|00001de0| 6f 6e 20 6e 61 6d 65 0a | 58 09 09 09 20 20 20 20 |on name.|X... |
|00001df0| 74 69 74 6c 65 3d 20 74 | 69 74 6c 65 20 49 4e 44 |title= t|itle IND|
|00001e00| 45 4e 54 5f 32 20 69 6e | 70 75 74 73 74 72 20 22 |ENT_2 in|putstr "|
|00001e10| 5c 6e 22 0a 58 09 09 09 | 20 20 20 20 7d 0a 58 09 |\n".X...| }.X.|
|00001e20| 09 09 7d 0a 58 09 09 20 | 20 20 20 7d 0a 58 09 09 |..}.X.. | }.X..|
|00001e30| 7d 0a 58 09 20 20 20 20 | 7d 0a 58 09 7d 0a 58 20 |}.X. |}.X.}.X |
|00001e40| 20 20 20 7d 0a 46 52 49 | 44 41 59 5f 4e 49 47 48 | }.FRI|DAY_NIGH|
|00001e50| 54 0a 65 63 68 6f 20 65 | 78 74 72 61 63 74 69 6e |T.echo e|xtractin|
|00001e60| 67 20 2d 20 73 74 72 6c | 6f 63 2e 63 78 78 0a 73 |g - strl|oc.cxx.s|
|00001e70| 65 64 20 27 73 2f 5e 58 | 2f 2f 27 20 3e 20 73 74 |ed 's/^X|//' > st|
|00001e80| 72 6c 6f 63 2e 63 78 78 | 20 3c 3c 20 27 46 52 49 |rloc.cxx| << 'FRI|
|00001e90| 44 41 59 5f 4e 49 47 48 | 54 27 0a 58 2f 2f 2d 2d |DAY_NIGH|T'.X//--|
|00001ea0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001eb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001ec0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001ed0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0a 58 2f 2f 0a 58 |--------|--.X//.X|
|00001ee0| 2f 2f 09 09 09 73 74 72 | 6c 6f 63 2e 63 78 78 0a |//...str|loc.cxx.|
|00001ef0| 58 2f 2f 0a 58 2f 2f 20 | 50 75 72 70 6f 73 65 3a |X//.X// |Purpose:|
|00001f00| 0a 58 2f 2f 09 49 6d 70 | 6c 65 6d 65 6e 74 73 20 |.X//.Imp|lements |
|00001f10| 74 68 65 20 73 74 72 6c | 6f 63 20 63 6c 61 73 73 |the strl|oc class|
|00001f20| 0a 58 0a 58 23 69 6e 63 | 6c 75 64 65 20 3c 73 74 |.X.X#inc|lude <st|
|00001f30| 72 69 6e 67 2e 68 3e 0a | 58 23 69 6e 63 6c 75 64 |ring.h>.|X#includ|
|00001f40| 65 20 3c 75 74 69 6c 2f | 6c 69 73 74 2e 68 3e 0a |e <util/|list.h>.|
|00001f50| 58 23 69 6e 63 6c 75 64 | 65 20 3c 75 74 69 6c 2f |X#includ|e <util/|
|00001f60| 73 74 72 6c 6f 63 2e 68 | 3e 0a 58 0a 58 2f 2f 2d |strloc.h|>.X.X//-|
|00001f70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001f80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001f90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001fa0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 0a 58 2f 2f 0a |--------|---.X//.|
|00001fb0| 58 2f 2f 20 20 20 20 20 | 20 20 20 20 20 20 20 73 |X// | s|
|00001fc0| 74 72 6c 6f 63 0a 58 2f | 2f 0a 58 2f 2f 20 44 65 |trloc.X/|/.X// De|
|00001fd0| 73 63 72 69 70 74 69 6f | 6e 3a 0a 58 2f 2f 20 20 |scriptio|n:.X// |
|00001fe0| 20 20 4e 6f 72 6d 61 6c | 20 63 6f 6e 73 74 72 75 | Normal| constru|
|00001ff0| 63 74 6f 72 2e 0a 58 2f | 2f 20 41 72 67 75 6d 65 |ctor..X/|/ Argume|
|00002000| 6e 74 73 3a 0a 58 2f 2f | 20 20 20 20 50 61 73 73 |nts:.X//| Pass|
|00002010| 65 64 20 61 20 70 6f 69 | 6e 74 65 72 20 74 6f 20 |ed a poi|nter to |
|00002020| 61 20 63 68 61 72 61 63 | 74 65 72 20 73 74 72 69 |a charac|ter stri|
|00002030| 6e 67 20 69 74 20 63 6f | 70 69 65 73 20 69 74 0a |ng it co|pies it.|
|00002040| 58 2f 2f 20 20 20 20 74 | 6f 20 6e 65 77 20 6d 65 |X// t|o new me|
|00002050| 6d 6f 72 79 20 61 6e 64 | 20 73 65 74 73 20 74 68 |mory and| sets th|
|00002060| 65 20 72 65 66 65 72 65 | 6e 63 65 20 63 6f 75 6e |e refere|nce coun|
|00002070| 74 20 74 6f 20 31 2e 0a | 58 0a 58 73 74 72 6c 6f |t to 1..|X.Xstrlo|
|00002080| 63 3a 3a 73 74 72 6c 6f | 63 28 20 63 6f 6e 73 74 |c::strlo|c( const|
|00002090| 20 63 68 61 72 20 2a 6e | 65 77 73 74 72 20 29 0a | char *n|ewstr ).|
|000020a0| 58 20 20 20 20 7b 0a 58 | 20 20 20 20 2f 2f 20 67 |X {.X| // g|
|000020b0| 65 74 20 61 20 73 74 72 | 75 63 74 75 72 65 20 74 |et a str|ucture t|
|000020c0| 6f 20 68 6f 6c 64 20 74 | 68 65 20 73 74 72 69 6e |o hold t|he strin|
|000020d0| 67 20 70 6f 69 6e 74 65 | 72 20 61 6e 64 20 72 65 |g pointe|r and re|
|000020e0| 66 20 63 6f 75 6e 74 0a | 58 20 20 20 20 73 74 5f |f count.|X st_|
|000020f0| 63 6f 6d 3d 20 6e 65 77 | 20 73 74 72 6c 6f 63 5f |com= new| strloc_|
|00002100| 64 61 74 61 3b 0a 58 20 | 20 20 20 73 74 5f 63 6f |data;.X | st_co|
|00002110| 6d 2d 3e 73 74 64 5f 72 | 65 66 63 6e 74 3d 20 31 |m->std_r|efcnt= 1|
|00002120| 3b 0a 58 0a 58 20 20 20 | 20 69 66 28 20 6e 65 77 |;.X.X | if( new|
|00002130| 73 74 72 20 3d 3d 20 30 | 20 29 0a 58 20 20 20 20 |str == 0| ).X |
|00002140| 20 20 20 20 6e 65 77 73 | 74 72 3d 20 22 22 3b 0a | news|tr= "";.|
|00002150| 58 0a 58 20 20 20 20 2f | 2f 20 67 65 74 20 74 68 |X.X /|/ get th|
|00002160| 65 20 6c 65 6e 67 74 68 | 20 6f 66 20 74 68 65 20 |e length| of the |
|00002170| 73 74 72 69 6e 67 0a 58 | 20 20 20 20 69 6e 74 20 |string.X| int |
|00002180| 6c 65 6e 3d 20 73 74 72 | 6c 65 6e 28 20 6e 65 77 |len= str|len( new|
|00002190| 73 74 72 20 29 20 2b 31 | 3b 0a 58 0a 58 20 20 20 |str ) +1|;.X.X |
|000021a0| 20 2f 2f 20 67 65 74 20 | 73 6f 6d 65 20 73 70 61 | // get |some spa|
|000021b0| 63 65 20 66 6f 72 20 74 | 68 65 20 73 74 72 69 6e |ce for t|he strin|
|000021c0| 67 0a 58 20 20 20 20 73 | 74 5f 63 6f 6d 2d 3e 73 |g.X s|t_com->s|
|000021d0| 74 64 5f 70 74 72 3d 20 | 6e 65 77 20 63 68 61 72 |td_ptr= |new char|
|000021e0| 5b 6c 65 6e 5d 3b 0a 58 | 0a 58 20 20 20 20 2f 2f |[len];.X|.X //|
|000021f0| 20 63 6f 70 79 20 74 68 | 65 20 64 61 74 61 0a 58 | copy th|e data.X|
|00002200| 20 20 20 20 73 74 72 63 | 70 79 28 20 73 74 5f 63 | strc|py( st_c|
|00002210| 6f 6d 2d 3e 73 74 64 5f | 70 74 72 2c 20 6e 65 77 |om->std_|ptr, new|
|00002220| 73 74 72 20 29 3b 0a 58 | 20 20 20 20 7d 0a 58 0a |str );.X| }.X.|
|00002230| 58 2f 2f 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |X//-----|--------|
|00002240| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002250| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002260| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 0a |--------|-------.|
|00002270| 58 2f 2f 0a 58 2f 2f 20 | 20 20 20 20 20 20 20 20 |X//.X// | |
|00002280| 20 20 20 73 74 72 6c 6f | 63 0a 58 2f 2f 0a 58 2f | strlo|c.X//.X/|
|00002290| 2f 20 44 65 73 63 72 69 | 70 74 69 6f 6e 3a 0a 58 |/ Descri|ption:.X|
|000022a0| 2f 2f 20 20 20 20 43 6f | 6e 73 74 72 75 63 74 6f |// Co|nstructo|
|000022b0| 72 20 63 61 6c 6c 65 64 | 20 77 68 65 6e 20 73 74 |r called| when st|
|000022c0| 72 6c 6f 63 20 61 3d 20 | 62 2e 0a 58 2f 2f 20 41 |rloc a= |b..X// A|
|000022d0| 72 67 75 6d 65 6e 74 73 | 3a 0a 58 2f 2f 20 20 20 |rguments|:.X// |
|000022e0| 20 22 74 68 69 73 22 20 | 69 73 20 22 61 22 20 61 | "this" |is "a" a|
|000022f0| 6e 64 20 22 6f 72 69 67 | 22 20 69 73 20 61 20 70 |nd "orig|" is a p|
|00002300| 6f 69 6e 74 65 72 20 74 | 6f 20 22 62 22 2e 0a 58 |ointer t|o "b"..X|
|00002310| 0a 58 73 74 72 6c 6f 63 | 3a 3a 73 74 72 6c 6f 63 |.Xstrloc|::strloc|
|00002320| 28 20 73 74 72 6c 6f 63 | 20 26 6f 72 69 67 20 29 |( strloc| &orig )|
|00002330| 0a 58 20 20 20 20 7b 0a | 58 20 20 20 20 2f 2f 20 |.X {.|X // |
|00002340| 68 61 76 65 20 22 61 22 | 20 70 6f 69 6e 74 20 74 |have "a"| point t|
|00002350| 6f 20 74 68 65 20 73 61 | 6d 65 20 73 74 72 69 6e |o the sa|me strin|
|00002360| 67 20 73 74 72 75 63 74 | 75 72 65 20 61 73 20 22 |g struct|ure as "|
|00002370| 62 22 0a 58 20 20 20 20 | 73 74 5f 63 6f 6d 3d 20 |b".X |st_com= |
|00002380| 6f 72 69 67 2e 73 74 5f | 63 6f 6d 3b 0a 58 0a 58 |orig.st_|com;.X.X|
|00002390| 20 20 20 20 2f 2f 20 75 | 70 64 61 74 65 20 74 68 | // u|pdate th|
|000023a0| 65 20 72 65 66 65 72 65 | 6e 63 65 20 63 6f 75 6e |e refere|nce coun|
|000023b0| 74 0a 58 20 20 20 20 73 | 74 5f 63 6f 6d 2d 3e 73 |t.X s|t_com->s|
|000023c0| 74 64 5f 72 65 66 63 6e | 74 20 2b 3d 20 31 3b 0a |td_refcn|t += 1;.|
|000023d0| 58 20 20 20 20 7d 0a 58 | 0a 58 2f 2f 2d 2d 2d 2d |X }.X|.X//----|
|000023e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000023f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002400| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002410| 2d 2d 2d 2d 2d 2d 2d 2d | 0a 58 2f 2f 0a 58 2f 2f |--------|.X//.X//|
|00002420| 20 20 20 20 20 20 20 20 | 20 20 20 20 7e 73 74 72 | | ~str|
|00002430| 6c 6f 63 0a 58 2f 2f 0a | 58 2f 2f 20 44 65 73 63 |loc.X//.|X// Desc|
|00002440| 72 69 70 74 69 6f 6e 3a | 0a 58 2f 2f 20 20 20 20 |ription:|.X// |
|00002450| 44 65 73 74 72 75 63 74 | 6f 72 20 66 6f 72 20 74 |Destruct|or for t|
|00002460| 68 65 20 73 74 72 6c 6f | 63 20 63 6c 61 73 73 2e |he strlo|c class.|
|00002470| 0a 58 2f 2f 20 20 20 20 | 54 68 65 20 72 65 66 65 |.X// |The refe|
|00002480| 72 6e 63 65 20 63 6f 75 | 6e 74 20 69 73 20 64 65 |rnce cou|nt is de|
|00002490| 63 72 69 6d 65 6e 74 65 | 64 20 61 6e 64 20 77 68 |crimente|d and wh|
|000024a0| 65 6e 20 69 74 20 67 6f | 65 73 20 74 6f 0a 58 2f |en it go|es to.X/|
|000024b0| 2f 20 20 20 20 7a 65 72 | 6f 20 74 68 65 20 73 74 |/ zer|o the st|
|000024c0| 72 69 6e 67 20 69 73 20 | 64 65 6c 65 74 65 64 2e |ring is |deleted.|
|000024d0| 0a 58 0a 58 73 74 72 6c | 6f 63 3a 3a 7e 73 74 72 |.X.Xstrl|oc::~str|
|000024e0| 6c 6f 63 28 29 0a 58 20 | 20 20 20 7b 0a 58 20 20 |loc().X | {.X |
|000024f0| 20 20 2f 2f 20 64 65 63 | 72 69 6d 65 6e 74 20 74 | // dec|riment t|
|00002500| 68 65 20 72 65 66 65 72 | 65 6e 63 65 20 63 6f 75 |he refer|ence cou|
|00002510| 6e 74 0a 58 20 20 20 20 | 73 74 5f 63 6f 6d 2d 3e |nt.X |st_com->|
|00002520| 73 74 64 5f 72 65 66 63 | 6e 74 20 2d 3d 20 31 3b |std_refc|nt -= 1;|
|00002530| 0a 58 0a 58 20 20 20 20 | 2f 2f 20 73 65 65 20 69 |.X.X |// see i|
|00002540| 66 20 6e 6f 74 68 69 6e | 67 20 65 6c 73 65 20 70 |f nothin|g else p|
|00002550| 6f 69 6e 74 69 6e 67 20 | 74 6f 20 74 68 65 20 73 |ointing |to the s|
|00002560| 74 72 69 6e 67 0a 58 20 | 20 20 20 69 66 28 20 73 |tring.X | if( s|
|00002570| 74 5f 63 6f 6d 2d 3e 73 | 74 64 5f 72 65 66 63 6e |t_com->s|td_refcn|
|00002580| 74 20 3d 3d 20 30 20 29 | 0a 58 20 20 20 20 20 20 |t == 0 )|.X |
|00002590| 20 20 7b 0a 58 20 20 20 | 20 20 20 20 20 64 65 6c | {.X | del|
|000025a0| 65 74 65 20 73 74 5f 63 | 6f 6d 2d 3e 73 74 64 5f |ete st_c|om->std_|
|000025b0| 70 74 72 3b 20 20 20 20 | 2f 2f 20 64 65 6c 65 74 |ptr; |// delet|
|000025c0| 65 20 74 68 65 20 73 74 | 72 69 6e 67 0a 58 20 20 |e the st|ring.X |
|000025d0| 20 20 20 20 20 20 64 65 | 6c 65 74 65 20 73 74 5f | de|lete st_|
|000025e0| 63 6f 6d 3b 20 20 20 20 | 20 20 20 20 20 20 20 20 |com; | |
|000025f0| 20 2f 2f 20 64 65 6c 65 | 74 65 20 74 68 65 20 73 | // dele|te the s|
|00002600| 74 72 69 6e 67 20 73 74 | 72 75 63 74 75 72 65 0a |tring st|ructure.|
|00002610| 58 20 20 20 20 20 20 20 | 20 7d 0a 58 20 20 20 20 |X | }.X |
|00002620| 7d 0a 58 0a 58 2f 2f 2d | 2d 2d 2d 2d 2d 2d 2d 2d |}.X.X//-|--------|
|00002630| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002640| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002650| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002660| 2d 2d 2d 0a 58 2f 2f 0a | 58 2f 2f 20 20 20 20 20 |---.X//.|X// |
|00002670| 20 20 20 20 20 20 20 6f | 70 65 72 61 74 6f 72 3d | o|perator=|
|00002680| 0a 58 2f 2f 0a 58 2f 2f | 20 44 65 73 63 72 69 70 |.X//.X//| Descrip|
|00002690| 74 69 6f 6e 3a 0a 58 2f | 2f 20 20 20 20 49 6d 70 |tion:.X/|/ Imp|
|000026a0| 6c 65 6d 65 6e 74 73 20 | 63 6f 70 79 20 66 75 6e |lements |copy fun|
|000026b0| 63 74 69 6f 6e 2e 0a 58 | 2f 2f 20 20 20 20 46 72 |ction..X|// Fr|
|000026c0| 65 65 73 20 75 70 20 6f | 6c 64 20 73 74 72 69 6e |ees up o|ld strin|
|000026d0| 67 20 61 6e 64 20 63 6f | 70 69 65 73 20 61 20 70 |g and co|pies a p|
|000026e0| 6f 69 6e 74 65 72 20 74 | 6f 20 74 68 65 20 6e 65 |ointer t|o the ne|
|000026f0| 77 20 6f 6e 65 2e 0a 58 | 2f 2f 20 41 72 67 75 6d |w one..X|// Argum|
|00002700| 65 6e 74 73 3a 0a 58 0a | 58 73 74 72 6c 6f 63 20 |ents:.X.|Xstrloc |
|00002710| 26 20 73 74 72 6c 6f 63 | 3a 3a 6f 70 65 72 61 74 |& strloc|::operat|
|00002720| 6f 72 3d 28 20 73 74 72 | 6c 6f 63 20 26 72 76 61 |or=( str|loc &rva|
|00002730| 6c 75 65 20 29 0a 58 20 | 20 20 20 7b 0a 58 20 20 |lue ).X | {.X |
|00002740| 20 20 2f 2f 20 69 6e 63 | 72 69 6d 65 6e 74 20 74 | // inc|riment t|
|00002750| 68 65 20 73 6f 75 72 63 | 65 20 73 74 72 69 6e 67 |he sourc|e string|
|00002760| 20 72 65 66 65 72 65 6e | 63 65 20 63 6f 75 6e 74 | referen|ce count|
|00002770| 0a 58 20 20 20 20 72 76 | 61 6c 75 65 2e 73 74 5f |.X rv|alue.st_|
|00002780| 63 6f 6d 2d 3e 73 74 64 | 5f 72 65 66 63 6e 74 20 |com->std|_refcnt |
|00002790| 2b 3d 20 31 3b 0a 58 0a | 58 20 20 20 20 2f 2f 20 |+= 1;.X.|X // |
|000027a0| 64 65 63 72 69 6d 65 6e | 74 20 74 68 65 20 6f 72 |decrimen|t the or|
|000027b0| 69 67 20 72 65 66 65 72 | 65 6e 63 65 20 63 6f 75 |ig refer|ence cou|
|000027c0| 6e 74 0a 58 20 20 20 20 | 73 74 5f 63 6f 6d 2d 3e |nt.X |st_com->|
|000027d0| 73 74 64 5f 72 65 66 63 | 6e 74 20 2d 3d 20 31 3b |std_refc|nt -= 1;|
|000027e0| 0a 58 0a 58 20 20 20 20 | 2f 2f 20 73 65 65 20 69 |.X.X |// see i|
|000027f0| 66 20 6e 6f 74 68 69 6e | 67 20 65 6c 73 65 20 70 |f nothin|g else p|
|00002800| 6f 69 6e 74 69 6e 67 20 | 74 6f 20 74 68 65 20 73 |ointing |to the s|
|00002810| 74 72 69 6e 67 0a 58 20 | 20 20 20 69 66 28 20 73 |tring.X | if( s|
|00002820| 74 5f 63 6f 6d 2d 3e 73 | 74 64 5f 72 65 66 63 6e |t_com->s|td_refcn|
|00002830| 74 20 3d 3d 20 30 20 29 | 0a 58 20 20 20 20 20 20 |t == 0 )|.X |
|00002840| 20 20 7b 0a 58 20 20 20 | 20 20 20 20 20 64 65 6c | {.X | del|
|00002850| 65 74 65 20 73 74 5f 63 | 6f 6d 2d 3e 73 74 64 5f |ete st_c|om->std_|
|00002860| 70 74 72 3b 20 20 20 20 | 2f 2f 20 64 65 6c 65 74 |ptr; |// delet|
|00002870| 65 20 74 68 65 20 73 74 | 72 69 6e 67 0a 58 20 20 |e the st|ring.X |
|00002880| 20 20 20 20 20 20 64 65 | 6c 65 74 65 20 73 74 5f | de|lete st_|
|00002890| 63 6f 6d 3b 20 20 20 20 | 20 20 20 20 20 20 20 20 |com; | |
|000028a0| 20 2f 2f 20 64 65 6c 65 | 74 65 20 74 68 65 20 73 | // dele|te the s|
|000028b0| 74 72 69 6e 67 20 73 74 | 72 75 63 74 75 72 65 0a |tring st|ructure.|
|000028c0| 58 20 20 20 20 20 20 20 | 20 7d 0a 58 0a 58 20 20 |X | }.X.X |
|000028d0| 20 20 2f 2f 20 70 6f 69 | 6e 74 20 74 68 69 73 20 | // poi|nt this |
|000028e0| 74 6f 20 74 68 65 20 72 | 76 61 6c 75 65 20 73 74 |to the r|value st|
|000028f0| 72 69 6e 67 20 73 74 72 | 75 63 74 75 72 65 0a 58 |ring str|ucture.X|
|00002900| 20 20 20 20 73 74 5f 63 | 6f 6d 3d 20 72 76 61 6c | st_c|om= rval|
|00002910| 75 65 2e 73 74 5f 63 6f | 6d 3b 0a 58 0a 58 20 20 |ue.st_co|m;.X.X |
|00002920| 20 20 72 65 74 75 72 6e | 20 2a 74 68 69 73 3b 0a | return| *this;.|
|00002930| 58 20 20 20 20 7d 0a 58 | 0a 58 2f 2f 2d 2d 2d 2d |X }.X|.X//----|
|00002940| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002950| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002960| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002970| 2d 2d 2d 2d 2d 2d 2d 2d | 0a 58 2f 2f 0a 58 2f 2f |--------|.X//.X//|
|00002980| 20 20 20 20 20 20 20 20 | 20 20 20 20 6f 70 65 72 | | oper|
|00002990| 61 74 6f 72 3d 0a 58 2f | 2f 0a 58 2f 2f 20 44 65 |ator=.X/|/.X// De|
|000029a0| 73 63 72 69 70 74 69 6f | 6e 3a 0a 58 2f 2f 20 20 |scriptio|n:.X// |
|000029b0| 20 20 49 6d 70 6c 65 6d | 65 6e 74 73 20 73 65 74 | Implem|ents set|
|000029c0| 20 66 75 6e 63 74 69 6f | 6e 3a 20 73 74 72 6c 6f | functio|n: strlo|
|000029d0| 63 20 61 3b 20 61 3d 20 | 22 66 6f 6f 22 3b 0a 58 |c a; a= |"foo";.X|
|000029e0| 2f 2f 20 20 20 20 46 72 | 65 65 73 20 75 70 20 6f |// Fr|ees up o|
|000029f0| 6c 64 20 73 74 72 69 6e | 67 20 61 6e 64 20 63 6f |ld strin|g and co|
|00002a00| 70 69 65 73 20 61 20 70 | 6f 69 6e 74 65 72 20 74 |pies a p|ointer t|
|00002a10| 6f 20 74 68 65 20 6e 65 | 77 20 6f 6e 65 2e 0a 58 |o the ne|w one..X|
|00002a20| 0a 58 73 74 72 6c 6f 63 | 20 26 20 73 74 72 6c 6f |.Xstrloc| & strlo|
|00002a30| 63 3a 3a 6f 70 65 72 61 | 74 6f 72 3d 28 20 63 6f |c::opera|tor=( co|
|00002a40| 6e 73 74 20 63 68 61 72 | 20 2a 6e 65 77 73 74 72 |nst char| *newstr|
|00002a50| 20 29 0a 58 20 20 20 20 | 7b 0a 58 20 20 20 20 2f | ).X |{.X /|
|00002a60| 2f 20 64 65 63 72 69 6d | 65 6e 74 20 74 68 65 20 |/ decrim|ent the |
|00002a70| 6f 72 69 67 20 72 65 66 | 65 72 65 6e 63 65 20 63 |orig ref|erence c|
|00002a80| 6f 75 6e 74 0a 58 20 20 | 20 20 73 74 5f 63 6f 6d |ount.X | st_com|
|00002a90| 2d 3e 73 74 64 5f 72 65 | 66 63 6e 74 20 2d 3d 20 |->std_re|fcnt -= |
|00002aa0| 31 3b 0a 58 0a 58 20 20 | 20 20 2f 2f 20 73 65 65 |1;.X.X | // see|
|00002ab0| 20 69 66 20 6e 6f 74 68 | 69 6e 67 20 65 6c 73 65 | if noth|ing else|
|00002ac0| 20 70 6f 69 6e 74 69 6e | 67 20 74 6f 20 74 68 65 | pointin|g to the|
|00002ad0| 20 73 74 72 69 6e 67 0a | 58 20 20 20 20 69 66 28 | string.|X if(|
|00002ae0| 20 73 74 5f 63 6f 6d 2d | 3e 73 74 64 5f 72 65 66 | st_com-|>std_ref|
|00002af0| 63 6e 74 20 3d 3d 20 30 | 20 29 0a 58 20 20 20 20 |cnt == 0| ).X |
|00002b00| 20 20 20 20 7b 0a 58 20 | 20 20 20 20 20 20 20 64 | {.X | d|
|00002b10| 65 6c 65 74 65 20 73 74 | 5f 63 6f 6d 2d 3e 73 74 |elete st|_com->st|
|00002b20| 64 5f 70 74 72 3b 20 20 | 20 20 2f 2f 20 64 65 6c |d_ptr; | // del|
|00002b30| 65 74 65 20 74 68 65 20 | 73 74 72 69 6e 67 0a 58 |ete the |string.X|
|00002b40| 20 20 20 20 20 20 20 20 | 64 65 6c 65 74 65 20 73 | |delete s|
|00002b50| 74 5f 63 6f 6d 3b 20 20 | 20 20 20 20 20 20 20 20 |t_com; | |
|00002b60| 20 20 20 2f 2f 20 64 65 | 6c 65 74 65 20 74 68 65 | // de|lete the|
|00002b70| 20 73 74 72 69 6e 67 20 | 73 74 72 75 63 74 75 72 | string |structur|
|00002b80| 65 0a 58 20 20 20 20 20 | 20 20 20 7d 0a 58 0a 58 |e.X | }.X.X|
|00002b90| 20 20 20 20 2f 2f 20 67 | 65 74 20 61 20 73 74 72 | // g|et a str|
|00002ba0| 75 63 74 75 72 65 20 74 | 6f 20 68 6f 6c 64 20 74 |ucture t|o hold t|
|00002bb0| 68 65 20 73 74 72 69 6e | 67 20 70 6f 69 6e 74 65 |he strin|g pointe|
|00002bc0| 72 20 61 6e 64 20 72 65 | 66 20 63 6f 75 6e 74 0a |r and re|f count.|
|00002bd0| 58 20 20 20 20 73 74 5f | 63 6f 6d 3d 20 6e 65 77 |X st_|com= new|
|00002be0| 20 73 74 72 6c 6f 63 5f | 64 61 74 61 3b 0a 58 20 | strloc_|data;.X |
|00002bf0| 20 20 20 73 74 5f 63 6f | 6d 2d 3e 73 74 64 5f 72 | st_co|m->std_r|
|00002c00| 65 66 63 6e 74 3d 20 31 | 3b 0a 58 0a 58 20 20 20 |efcnt= 1|;.X.X |
|00002c10| 20 69 66 28 20 6e 65 77 | 73 74 72 20 3d 3d 20 30 | if( new|str == 0|
|00002c20| 20 29 0a 58 20 20 20 20 | 20 20 20 20 6e 65 77 73 | ).X | news|
|00002c30| 74 72 3d 20 22 22 3b 0a | 58 0a 58 20 20 20 20 2f |tr= "";.|X.X /|
|00002c40| 2f 20 67 65 74 20 74 68 | 65 20 6c 65 6e 67 74 68 |/ get th|e length|
|00002c50| 20 6f 66 20 74 68 65 20 | 73 74 72 69 6e 67 0a 58 | of the |string.X|
|00002c60| 20 20 20 20 69 6e 74 20 | 6c 65 6e 3d 20 73 74 72 | int |len= str|
|00002c70| 6c 65 6e 28 20 6e 65 77 | 73 74 72 20 29 20 2b 31 |len( new|str ) +1|
|00002c80| 3b 0a 58 0a 58 20 20 20 | 20 2f 2f 20 67 65 74 20 |;.X.X | // get |
|00002c90| 73 6f 6d 65 20 73 70 61 | 63 65 20 66 6f 72 20 74 |some spa|ce for t|
|00002ca0| 68 65 20 73 74 72 69 6e | 67 0a 58 20 20 20 20 73 |he strin|g.X s|
|00002cb0| 74 5f 63 6f 6d 2d 3e 73 | 74 64 5f 70 74 72 3d 20 |t_com->s|td_ptr= |
|00002cc0| 6e 65 77 20 63 68 61 72 | 5b 6c 65 6e 5d 3b 0a 58 |new char|[len];.X|
|00002cd0| 0a 58 20 20 20 20 2f 2f | 20 63 6f 70 79 20 74 68 |.X //| copy th|
|00002ce0| 65 20 64 61 74 61 0a 58 | 20 20 20 20 73 74 72 63 |e data.X| strc|
|00002cf0| 70 79 28 20 73 74 5f 63 | 6f 6d 2d 3e 73 74 64 5f |py( st_c|om->std_|
|00002d00| 70 74 72 2c 20 6e 65 77 | 73 74 72 20 29 3b 0a 58 |ptr, new|str );.X|
|00002d10| 0a 58 20 20 20 20 72 65 | 74 75 72 6e 20 2a 74 68 |.X re|turn *th|
|00002d20| 69 73 3b 0a 58 20 20 20 | 20 7d 0a 58 0a 58 2f 2f |is;.X | }.X.X//|
|00002d30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002d40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002d50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002d60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 0a 58 2f 2f 0a |--------|---.X//.|
|00002d70| 58 2f 2f 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X// | |
|00002d80| 20 20 20 20 20 20 20 6f | 70 65 72 61 74 6f 72 2b | o|perator+|
|00002d90| 3d 0a 58 2f 2f 0a 58 2f | 2f 20 44 65 73 63 72 69 |=.X//.X/|/ Descri|
|00002da0| 70 74 69 6f 6e 3a 0a 58 | 2f 2f 20 20 41 70 70 65 |ption:.X|// Appe|
|00002db0| 6e 64 73 20 74 68 65 20 | 73 70 65 63 69 66 69 65 |nds the |specifie|
|00002dc0| 64 20 73 74 72 69 6e 67 | 20 6f 6e 74 6f 20 74 68 |d string| onto th|
|00002dd0| 65 20 65 6e 64 20 6f 66 | 20 74 68 65 20 63 75 72 |e end of| the cur|
|00002de0| 72 65 6e 74 20 73 74 72 | 69 6e 67 2e 0a 58 0a 58 |rent str|ing..X.X|
|00002df0| 76 6f 69 64 20 73 74 72 | 6c 6f 63 3a 3a 6f 70 65 |void str|loc::ope|
|00002e00| 72 61 74 6f 72 2b 3d 28 | 20 63 6f 6e 73 74 20 63 |rator+=(| const c|
|00002e10| 68 61 72 20 2a 73 74 72 | 69 6e 67 20 29 0a 58 20 |har *str|ing ).X |
|00002e20| 20 20 20 7b 0a 58 20 20 | 20 20 2f 2f 20 6a 75 73 | {.X | // jus|
|00002e30| 74 20 72 65 74 75 72 6e | 20 69 66 20 6e 6f 20 73 |t return| if no s|
|00002e40| 74 72 69 6e 67 20 73 70 | 65 63 69 66 69 65 64 0a |tring sp|ecified.|
|00002e50| 58 20 20 20 20 69 66 28 | 20 28 73 74 72 69 6e 67 |X if(| (string|
|00002e60| 20 3d 3d 20 4e 55 4c 4c | 29 20 7c 7c 20 28 2a 73 | == NULL|) || (*s|
|00002e70| 74 72 69 6e 67 20 3d 3d | 20 27 5c 30 27 29 20 29 |tring ==| '\0') )|
|00002e80| 0a 58 20 20 20 20 20 20 | 20 20 72 65 74 75 72 6e |.X | return|
|00002e90| 3b 0a 58 0a 58 20 20 20 | 20 2f 2f 20 64 65 74 65 |;.X.X | // dete|
|00002ea0| 72 6d 69 6e 65 20 74 68 | 65 20 6c 65 6e 67 74 68 |rmine th|e length|
|00002eb0| 20 6f 66 20 74 68 65 20 | 6e 65 77 20 73 74 72 69 | of the |new stri|
|00002ec0| 6e 67 0a 58 20 20 20 20 | 69 6e 74 20 6c 65 6e 3d |ng.X |int len=|
|00002ed0| 20 73 74 72 6c 65 6e 28 | 20 73 74 5f 63 6f 6d 2d | strlen(| st_com-|
|00002ee0| 3e 73 74 64 5f 70 74 72 | 20 29 20 2b 20 73 74 72 |>std_ptr| ) + str|
|00002ef0| 6c 65 6e 28 20 73 74 72 | 69 6e 67 20 29 20 2b 31 |len( str|ing ) +1|
|00002f00| 3b 0a 58 0a 58 20 20 20 | 20 2f 2f 20 67 65 74 20 |;.X.X | // get |
|00002f10| 73 6f 6d 65 20 73 70 61 | 63 65 20 66 6f 72 20 74 |some spa|ce for t|
|00002f20| 68 65 20 73 74 72 69 6e | 67 0a 58 20 20 20 20 63 |he strin|g.X c|
|00002f30| 68 61 72 20 2a 70 74 72 | 3d 20 6e 65 77 20 63 68 |har *ptr|= new ch|
|00002f40| 61 72 5b 6c 65 6e 5d 3b | 0a 58 0a 58 20 20 20 20 |ar[len];|.X.X |
|00002f50| 2f 2f 20 63 6f 70 79 20 | 74 68 65 20 64 61 74 61 |// copy |the data|
|00002f60| 0a 58 20 20 20 20 73 74 | 72 63 70 79 28 20 70 74 |.X st|rcpy( pt|
|00002f70| 72 2c 20 73 74 5f 63 6f | 6d 2d 3e 73 74 64 5f 70 |r, st_co|m->std_p|
|00002f80| 74 72 20 29 3b 0a 58 20 | 20 20 20 73 74 72 63 61 |tr );.X | strca|
|00002f90| 74 28 20 70 74 72 2c 20 | 73 74 72 69 6e 67 20 29 |t( ptr, |string )|
|00002fa0| 3b 0a 58 0a 58 20 20 20 | 20 2f 2f 20 64 65 6c 65 |;.X.X | // dele|
|00002fb0| 74 65 20 74 68 65 20 6f | 72 69 67 69 6e 61 6c 20 |te the o|riginal |
|00002fc0| 64 61 74 61 0a 58 20 20 | 20 20 64 65 6c 65 74 65 |data.X | delete|
|00002fd0| 20 73 74 5f 63 6f 6d 2d | 3e 73 74 64 5f 70 74 72 | st_com-|>std_ptr|
|00002fe0| 3b 0a 58 0a 58 20 20 20 | 20 2f 2f 20 73 61 76 65 |;.X.X | // save|
|00002ff0| 20 74 68 65 20 70 6f 69 | 6e 74 65 72 20 74 6f 20 | the poi|nter to |
|00003000| 74 68 65 20 6e 65 77 20 | 64 61 74 61 0a 58 20 20 |the new |data.X |
|00003010| 20 20 73 74 5f 63 6f 6d | 2d 3e 73 74 64 5f 70 74 | st_com|->std_pt|
|00003020| 72 3d 20 70 74 72 3b 0a | 58 20 20 20 20 7d 0a 46 |r= ptr;.|X }.F|
|00003030| 52 49 44 41 59 5f 4e 49 | 47 48 54 0a 65 63 68 6f |RIDAY_NI|GHT.echo|
|00003040| 20 65 78 74 72 61 63 74 | 69 6e 67 20 2d 20 73 74 | extract|ing - st|
|00003050| 72 6c 6f 63 2e 68 0a 73 | 65 64 20 27 73 2f 5e 58 |rloc.h.s|ed 's/^X|
|00003060| 2f 2f 27 20 3e 20 73 74 | 72 6c 6f 63 2e 68 20 3c |//' > st|rloc.h <|
|00003070| 3c 20 27 46 52 49 44 41 | 59 5f 4e 49 47 48 54 27 |< 'FRIDA|Y_NIGHT'|
|00003080| 0a 58 2f 2f 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.X//----|--------|
|00003090| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000030a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000030b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000030c0| 0a 58 2f 2f 0a 58 2f 2f | 09 09 09 73 74 72 6c 6f |.X//.X//|...strlo|
|000030d0| 63 2e 68 0a 58 2f 2f 0a | 58 2f 2f 20 50 75 72 70 |c.h.X//.|X// Purp|
|000030e0| 6f 73 65 3a 0a 58 2f 2f | 09 44 65 66 69 6e 65 73 |ose:.X//|.Defines|
|000030f0| 20 74 68 65 20 73 74 72 | 6c 6f 63 20 63 6c 61 73 | the str|loc clas|
|00003100| 73 2e 0a 58 0a 58 2f 2f | 20 2e 53 45 43 54 49 4f |s..X.X//| .SECTIO|
|00003110| 4e 20 44 65 73 63 72 69 | 70 74 69 6f 6e 0a 58 2f |N Descri|ption.X/|
|00003120| 2f 20 54 68 65 20 73 74 | 72 6c 6f 63 20 63 6c 61 |/ The st|rloc cla|
|00003130| 73 73 20 69 73 20 61 20 | 63 6c 61 73 73 20 66 6f |ss is a |class fo|
|00003140| 72 20 6d 61 6e 61 67 69 | 6e 67 20 73 74 72 69 6e |r managi|ng strin|
|00003150| 67 73 2e 0a 58 2f 2f 20 | 49 74 20 75 73 65 73 20 |gs..X// |It uses |
|00003160| 72 65 66 65 72 65 6e 63 | 65 20 63 6f 75 6e 74 73 |referenc|e counts|
|00003170| 20 6f 6e 20 63 6f 70 79 | 20 6f 70 65 72 61 74 69 | on copy| operati|
|00003180| 6f 6e 73 2e 0a 58 0a 58 | 2f 2f 20 2e 4c 49 42 52 |ons..X.X|// .LIBR|
|00003190| 41 52 59 20 42 61 73 65 | 0a 58 2f 2f 20 2e 46 49 |ARY Base|.X// .FI|
|000031a0| 4c 45 20 73 74 72 6c 6f | 63 2e 63 78 78 0a 58 2f |LE strlo|c.cxx.X/|
|000031b0| 2f 20 2e 46 49 4c 45 20 | 73 74 72 6c 6f 63 2e 68 |/ .FILE |strloc.h|
|000031c0| 0a 58 0a 58 23 69 66 6e | 64 65 66 20 55 54 49 4c |.X.X#ifn|def UTIL|
|000031d0| 5f 53 54 52 4c 4f 43 5f | 48 0a 58 23 64 65 66 69 |_STRLOC_|H.X#defi|
|000031e0| 6e 65 20 55 54 49 4c 5f | 53 54 52 4c 4f 43 5f 48 |ne UTIL_|STRLOC_H|
|000031f0| 0a 58 0a 58 23 69 66 6e | 64 65 66 20 53 54 52 49 |.X.X#ifn|def STRI|
|00003200| 4e 47 53 5f 48 58 58 0a | 58 23 69 6e 63 6c 75 64 |NGS_HXX.|X#includ|
|00003210| 65 20 3c 73 74 72 69 6e | 67 73 2e 68 78 78 3e 0a |e <strin|gs.hxx>.|
|00003220| 58 23 65 6e 64 69 66 0a | 58 0a 58 73 74 72 75 63 |X#endif.|X.Xstruc|
|00003230| 74 20 73 74 72 6c 6f 63 | 5f 64 61 74 61 0a 58 20 |t strloc|_data.X |
|00003240| 20 20 20 7b 0a 58 20 20 | 20 20 63 68 61 72 20 2a | {.X | char *|
|00003250| 73 74 64 5f 70 74 72 3b | 20 20 20 20 20 20 2f 2f |std_ptr;| //|
|00003260| 20 70 6f 69 6e 74 65 72 | 20 74 6f 20 73 74 72 69 | pointer| to stri|
|00003270| 6e 67 0a 58 20 20 20 20 | 69 6e 74 20 20 20 73 74 |ng.X |int st|
|00003280| 64 5f 72 65 66 63 6e 74 | 3b 20 20 20 2f 2f 20 72 |d_refcnt|; // r|
|00003290| 65 66 65 72 65 6e 63 65 | 20 63 6f 75 6e 74 0a 58 |eference| count.X|
|000032a0| 20 20 20 20 7d 3b 0a 58 | 0a 58 63 6c 61 73 73 20 | };.X|.Xclass |
|000032b0| 73 74 72 6c 6f 63 0a 58 | 20 20 20 20 7b 0a 58 70 |strloc.X| {.Xp|
|000032c0| 72 69 76 61 74 65 3a 0a | 58 20 20 20 20 73 74 72 |rivate:.|X str|
|000032d0| 6c 6f 63 5f 64 61 74 61 | 20 2a 73 74 5f 63 6f 6d |loc_data| *st_com|
|000032e0| 3b 0a 58 20 20 20 20 2f | 2f 20 50 6f 69 6e 74 65 |;.X /|/ Pointe|
|000032f0| 72 20 74 6f 20 63 68 61 | 72 61 63 74 65 72 20 73 |r to cha|racter s|
|00003300| 74 72 69 6e 67 20 73 74 | 72 75 63 74 2e 0a 58 0a |tring st|ruct..X.|
|00003310| 58 70 75 62 6c 69 63 3a | 0a 58 20 20 20 20 73 74 |Xpublic:|.X st|
|00003320| 72 6c 6f 63 28 20 63 6f | 6e 73 74 20 63 68 61 72 |rloc( co|nst char|
|00003330| 20 2a 73 74 72 3d 20 30 | 20 29 3b 0a 58 20 20 20 | *str= 0| );.X |
|00003340| 20 73 74 72 6c 6f 63 28 | 20 73 74 72 6c 6f 63 20 | strloc(| strloc |
|00003350| 26 20 29 3b 0a 58 20 20 | 20 20 7e 73 74 72 6c 6f |& );.X | ~strlo|
|00003360| 63 28 29 3b 0a 58 20 20 | 20 20 73 74 72 6c 6f 63 |c();.X | strloc|
|00003370| 20 26 20 6f 70 65 72 61 | 74 6f 72 3d 28 20 73 74 | & opera|tor=( st|
|00003380| 72 6c 6f 63 20 26 20 29 | 3b 0a 58 20 20 20 20 73 |rloc & )|;.X s|
|00003390| 74 72 6c 6f 63 20 26 20 | 6f 70 65 72 61 74 6f 72 |trloc & |operator|
|000033a0| 3d 28 20 63 6f 6e 73 74 | 20 63 68 61 72 20 2a 20 |=( const| char * |
|000033b0| 29 3b 0a 58 20 20 20 20 | 76 6f 69 64 20 6f 70 65 |);.X |void ope|
|000033c0| 72 61 74 6f 72 2b 3d 28 | 20 63 6f 6e 73 74 20 63 |rator+=(| const c|
|000033d0| 68 61 72 20 2a 20 29 3b | 0a 58 20 20 20 20 63 6f |har * );|.X co|
|000033e0| 6e 73 74 20 63 68 61 72 | 20 2a 70 74 72 28 29 3b |nst char| *ptr();|
|000033f0| 0a 58 20 20 20 20 69 6e | 74 20 6c 65 6e 28 29 3b |.X in|t len();|
|00003400| 0a 58 20 20 20 20 66 72 | 69 65 6e 64 20 69 6e 74 |.X fr|iend int|
|00003410| 20 6f 70 65 72 61 74 6f | 72 3d 3d 28 20 63 6f 6e | operato|r==( con|
|00003420| 73 74 20 73 74 72 6c 6f | 63 20 26 78 2c 20 63 6f |st strlo|c &x, co|
|00003430| 6e 73 74 20 63 68 61 72 | 20 2a 73 20 29 3b 0a 58 |nst char| *s );.X|
|00003440| 20 20 20 20 66 72 69 65 | 6e 64 20 69 6e 74 20 6f | frie|nd int o|
|00003450| 70 65 72 61 74 6f 72 3d | 3d 28 20 63 6f 6e 73 74 |perator=|=( const|
|00003460| 20 63 68 61 72 20 2a 73 | 2c 20 63 6f 6e 73 74 20 | char *s|, const |
|00003470| 73 74 72 6c 6f 63 20 26 | 78 20 29 3b 0a 58 20 20 |strloc &|x );.X |
|00003480| 20 20 66 72 69 65 6e 64 | 20 69 6e 74 20 6f 70 65 | friend| int ope|
|00003490| 72 61 74 6f 72 3d 3d 28 | 20 63 6f 6e 73 74 20 73 |rator==(| const s|
|000034a0| 74 72 6c 6f 63 20 26 78 | 2c 20 63 6f 6e 73 74 20 |trloc &x|, const |
|000034b0| 73 74 72 6c 6f 63 20 26 | 79 20 29 3b 0a 58 20 20 |strloc &|y );.X |
|000034c0| 20 20 66 72 69 65 6e 64 | 20 69 6e 74 20 6f 70 65 | friend| int ope|
|000034d0| 72 61 74 6f 72 21 3d 28 | 20 63 6f 6e 73 74 20 73 |rator!=(| const s|
|000034e0| 74 72 6c 6f 63 20 26 78 | 2c 20 63 6f 6e 73 74 20 |trloc &x|, const |
|000034f0| 63 68 61 72 20 2a 73 20 | 29 3b 0a 58 20 20 20 20 |char *s |);.X |
|00003500| 66 72 69 65 6e 64 20 69 | 6e 74 20 6f 70 65 72 61 |friend i|nt opera|
|00003510| 74 6f 72 21 3d 28 20 63 | 6f 6e 73 74 20 63 68 61 |tor!=( c|onst cha|
|00003520| 72 20 2a 73 2c 20 63 6f | 6e 73 74 20 73 74 72 6c |r *s, co|nst strl|
|00003530| 6f 63 20 26 78 20 29 3b | 0a 58 20 20 20 20 66 72 |oc &x );|.X fr|
|00003540| 69 65 6e 64 20 69 6e 74 | 20 6f 70 65 72 61 74 6f |iend int| operato|
|00003550| 72 21 3d 28 20 63 6f 6e | 73 74 20 73 74 72 6c 6f |r!=( con|st strlo|
|00003560| 63 20 26 78 2c 20 63 6f | 6e 73 74 20 73 74 72 6c |c &x, co|nst strl|
|00003570| 6f 63 20 26 79 20 29 3b | 0a 58 20 20 20 20 7d 3b |oc &y );|.X };|
|00003580| 0a 58 0a 58 2f 2f 20 44 | 65 73 63 72 69 70 74 69 |.X.X// D|escripti|
|00003590| 6f 6e 3a 0a 58 2f 2f 20 | 20 52 65 74 75 72 6e 73 |on:.X// | Returns|
|000035a0| 20 74 68 65 20 70 6f 69 | 6e 74 65 72 20 74 6f 20 | the poi|nter to |
|000035b0| 74 68 65 20 73 74 72 69 | 6e 67 2e 0a 58 69 6e 6c |the stri|ng..Xinl|
|000035c0| 69 6e 65 20 63 6f 6e 73 | 74 20 63 68 61 72 20 2a |ine cons|t char *|
|000035d0| 73 74 72 6c 6f 63 3a 3a | 70 74 72 28 29 0a 58 20 |strloc::|ptr().X |
|000035e0| 20 20 20 7b 20 72 65 74 | 75 72 6e 20 73 74 5f 63 | { ret|urn st_c|
|000035f0| 6f 6d 2d 3e 73 74 64 5f | 70 74 72 3b 20 7d 0a 58 |om->std_|ptr; }.X|
|00003600| 0a 58 2f 2f 20 44 65 73 | 63 72 69 70 74 69 6f 6e |.X// Des|cription|
|00003610| 3a 0a 58 2f 2f 20 20 52 | 65 74 75 72 6e 73 20 74 |:.X// R|eturns t|
|00003620| 68 65 20 6c 65 6e 67 74 | 68 20 6f 66 20 74 68 65 |he lengt|h of the|
|00003630| 20 73 74 72 69 6e 67 2e | 0a 58 69 6e 6c 69 6e 65 | string.|.Xinline|
|00003640| 20 69 6e 74 20 73 74 72 | 6c 6f 63 3a 3a 6c 65 6e | int str|loc::len|
|00003650| 28 29 0a 58 20 20 20 20 | 7b 20 72 65 74 75 72 6e |().X |{ return|
|00003660| 20 73 74 72 6c 65 6e 28 | 20 73 74 5f 63 6f 6d 2d | strlen(| st_com-|
|00003670| 3e 73 74 64 5f 70 74 72 | 20 29 3b 20 7d 0a 58 0a |>std_ptr| ); }.X.|
|00003680| 58 69 6e 6c 69 6e 65 20 | 69 6e 74 20 6f 70 65 72 |Xinline |int oper|
|00003690| 61 74 6f 72 3d 3d 28 20 | 63 6f 6e 73 74 20 73 74 |ator==( |const st|
|000036a0| 72 6c 6f 63 20 26 78 2c | 20 63 6f 6e 73 74 20 63 |rloc &x,| const c|
|000036b0| 68 61 72 20 2a 73 20 29 | 0a 58 20 20 20 20 7b 20 |har *s )|.X { |
|000036c0| 72 65 74 75 72 6e 20 73 | 74 72 63 6d 70 28 20 78 |return s|trcmp( x|
|000036d0| 2e 73 74 5f 63 6f 6d 2d | 3e 73 74 64 5f 70 74 72 |.st_com-|>std_ptr|
|000036e0| 2c 20 73 20 29 20 3d 3d | 20 30 3b 20 7d 0a 58 0a |, s ) ==| 0; }.X.|
|000036f0| 58 69 6e 6c 69 6e 65 20 | 69 6e 74 20 6f 70 65 72 |Xinline |int oper|
|00003700| 61 74 6f 72 3d 3d 28 20 | 63 6f 6e 73 74 20 63 68 |ator==( |const ch|
|00003710| 61 72 20 2a 73 2c 20 63 | 6f 6e 73 74 20 73 74 72 |ar *s, c|onst str|
|00003720| 6c 6f 63 20 26 78 20 29 | 0a 58 20 20 20 20 7b 20 |loc &x )|.X { |
|00003730| 72 65 74 75 72 6e 20 73 | 74 72 63 6d 70 28 20 78 |return s|trcmp( x|
|00003740| 2e 73 74 5f 63 6f 6d 2d | 3e 73 74 64 5f 70 74 72 |.st_com-|>std_ptr|
|00003750| 2c 20 73 20 29 20 3d 3d | 20 30 3b 20 7d 0a 58 0a |, s ) ==| 0; }.X.|
|00003760| 58 69 6e 6c 69 6e 65 20 | 69 6e 74 20 6f 70 65 72 |Xinline |int oper|
|00003770| 61 74 6f 72 3d 3d 28 20 | 63 6f 6e 73 74 20 73 74 |ator==( |const st|
|00003780| 72 6c 6f 63 20 26 78 2c | 20 63 6f 6e 73 74 20 73 |rloc &x,| const s|
|00003790| 74 72 6c 6f 63 20 26 79 | 20 29 0a 58 20 20 20 20 |trloc &y| ).X |
|000037a0| 7b 20 72 65 74 75 72 6e | 20 73 74 72 63 6d 70 28 |{ return| strcmp(|
|000037b0| 20 78 2e 73 74 5f 63 6f | 6d 2d 3e 73 74 64 5f 70 | x.st_co|m->std_p|
|000037c0| 74 72 2c 20 79 2e 73 74 | 5f 63 6f 6d 2d 3e 73 74 |tr, y.st|_com->st|
|000037d0| 64 5f 70 74 72 20 29 20 | 3d 3d 20 30 3b 20 7d 0a |d_ptr ) |== 0; }.|
|000037e0| 58 0a 58 69 6e 6c 69 6e | 65 20 69 6e 74 20 6f 70 |X.Xinlin|e int op|
|000037f0| 65 72 61 74 6f 72 21 3d | 28 20 63 6f 6e 73 74 20 |erator!=|( const |
|00003800| 73 74 72 6c 6f 63 20 26 | 78 2c 20 63 6f 6e 73 74 |strloc &|x, const|
|00003810| 20 63 68 61 72 20 2a 73 | 20 29 0a 58 20 20 20 20 | char *s| ).X |
|00003820| 7b 20 72 65 74 75 72 6e | 20 73 74 72 63 6d 70 28 |{ return| strcmp(|
|00003830| 20 78 2e 73 74 5f 63 6f | 6d 2d 3e 73 74 64 5f 70 | x.st_co|m->std_p|
|00003840| 74 72 2c 20 73 20 29 20 | 21 3d 20 30 3b 20 7d 0a |tr, s ) |!= 0; }.|
|00003850| 58 0a 58 69 6e 6c 69 6e | 65 20 69 6e 74 20 6f 70 |X.Xinlin|e int op|
|00003860| 65 72 61 74 6f 72 21 3d | 28 20 63 6f 6e 73 74 20 |erator!=|( const |
|00003870| 63 68 61 72 20 2a 73 2c | 20 63 6f 6e 73 74 20 73 |char *s,| const s|
|00003880| 74 72 6c 6f 63 20 26 78 | 20 29 0a 58 20 20 20 20 |trloc &x| ).X |
|00003890| 7b 20 72 65 74 75 72 6e | 20 73 74 72 63 6d 70 28 |{ return| strcmp(|
|000038a0| 20 78 2e 73 74 5f 63 6f | 6d 2d 3e 73 74 64 5f 70 | x.st_co|m->std_p|
|000038b0| 74 72 2c 20 73 20 29 20 | 21 3d 20 30 3b 20 7d 0a |tr, s ) |!= 0; }.|
|000038c0| 58 0a 58 69 6e 6c 69 6e | 65 20 69 6e 74 20 6f 70 |X.Xinlin|e int op|
|000038d0| 65 72 61 74 6f 72 21 3d | 28 20 63 6f 6e 73 74 20 |erator!=|( const |
|000038e0| 73 74 72 6c 6f 63 20 26 | 78 2c 20 63 6f 6e 73 74 |strloc &|x, const|
|000038f0| 20 73 74 72 6c 6f 63 20 | 26 79 20 29 0a 58 20 20 | strloc |&y ).X |
|00003900| 20 20 7b 20 72 65 74 75 | 72 6e 20 73 74 72 63 6d | { retu|rn strcm|
|00003910| 70 28 20 78 2e 73 74 5f | 63 6f 6d 2d 3e 73 74 64 |p( x.st_|com->std|
|00003920| 5f 70 74 72 2c 20 79 2e | 73 74 5f 63 6f 6d 2d 3e |_ptr, y.|st_com->|
|00003930| 73 74 64 5f 70 74 72 20 | 29 20 21 3d 20 30 3b 20 |std_ptr |) != 0; |
|00003940| 7d 0a 58 0a 58 23 65 6e | 64 69 66 20 2f 2a 20 55 |}.X.X#en|dif /* U|
|00003950| 54 49 4c 5f 53 54 52 4c | 4f 43 5f 48 20 2a 2f 0a |TIL_STRL|OC_H */.|
|00003960| 46 52 49 44 41 59 5f 4e | 49 47 48 54 0a 65 63 68 |FRIDAY_N|IGHT.ech|
|00003970| 6f 20 65 78 74 72 61 63 | 74 69 6e 67 20 2d 20 73 |o extrac|ting - s|
|00003980| 74 72 6c 6f 63 2e 6d 61 | 6e 0a 73 65 64 20 27 73 |trloc.ma|n.sed 's|
|00003990| 2f 5e 58 2f 2f 27 20 3e | 20 73 74 72 6c 6f 63 2e |/^X//' >| strloc.|
|000039a0| 6d 61 6e 20 3c 3c 20 27 | 46 52 49 44 41 59 5f 4e |man << '|FRIDAY_N|
|000039b0| 49 47 48 54 27 0a 58 0a | 58 53 54 52 4c 4f 43 2e |IGHT'.X.|XSTRLOC.|
|000039c0| 48 28 63 2b 2b 29 20 20 | 20 20 20 20 20 20 20 20 |H(c++) | |
|000039d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 42 41 53 | | BAS|
|000039e0| 45 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |E | |
|000039f0| 20 20 20 20 20 20 20 20 | 20 53 54 52 4c 4f 43 2e | | STRLOC.|
|00003a00| 48 28 63 2b 2b 29 20 0a | 58 0a 58 20 20 20 20 20 |H(c++) .|X.X |
|00003a10| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003a20| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003a30| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003a40| 20 20 20 20 20 20 20 20 | 20 20 20 20 46 65 62 20 | | Feb |
|00003a50| 31 34 2c 20 31 39 39 30 | 0a 58 0a 58 44 45 53 43 |14, 1990|.X.XDESC|
|00003a60| 52 49 50 54 49 4f 4e 0a | 58 20 20 54 68 65 20 73 |RIPTION.|X The s|
|00003a70| 74 72 6c 6f 63 20 63 6c | 61 73 73 20 69 73 20 61 |trloc cl|ass is a|
|00003a80| 20 63 6c 61 73 73 20 66 | 6f 72 20 6d 61 6e 61 67 | class f|or manag|
|00003a90| 69 6e 67 20 73 74 72 69 | 6e 67 73 2e 0a 58 20 20 |ing stri|ngs..X |
|00003aa0| 49 74 20 75 73 65 73 20 | 72 65 66 65 72 65 6e 63 |It uses |referenc|
|00003ab0| 65 20 63 6f 75 6e 74 73 | 20 6f 6e 20 63 6f 70 79 |e counts| on copy|
|00003ac0| 20 6f 70 65 72 61 74 69 | 6f 6e 73 2e 0a 58 0a 58 | operati|ons..X.X|
|00003ad0| 43 4c 41 53 53 20 73 74 | 72 6c 6f 63 0a 58 0a 58 |CLASS st|rloc.X.X|
|00003ae0| 20 20 50 75 62 6c 69 63 | 20 6d 65 6d 62 65 72 73 | Public| members|
|00003af0| 0a 58 20 20 20 20 20 73 | 74 72 6c 6f 63 28 20 63 |.X s|trloc( c|
|00003b00| 6f 6e 73 74 20 63 68 61 | 72 20 2a 73 74 72 3d 20 |onst cha|r *str= |
|00003b10| 30 20 29 3b 0a 58 20 20 | 20 20 20 73 74 72 6c 6f |0 );.X | strlo|
|00003b20| 63 28 20 73 74 72 6c 6f | 63 20 26 20 29 3b 0a 58 |c( strlo|c & );.X|
|00003b30| 20 20 20 20 20 7e 73 74 | 72 6c 6f 63 28 29 3b 0a | ~st|rloc();.|
|00003b40| 58 20 20 20 20 20 73 74 | 72 6c 6f 63 20 26 20 6f |X st|rloc & o|
|00003b50| 70 65 72 61 74 6f 72 3d | 28 20 73 74 72 6c 6f 63 |perator=|( strloc|
|00003b60| 20 26 20 29 3b 0a 58 20 | 20 20 20 20 73 74 72 6c | & );.X | strl|
|00003b70| 6f 63 20 26 20 6f 70 65 | 72 61 74 6f 72 3d 28 20 |oc & ope|rator=( |
|00003b80| 63 6f 6e 73 74 20 63 68 | 61 72 20 2a 20 29 3b 0a |const ch|ar * );.|
|00003b90| 58 20 20 20 20 20 76 6f | 69 64 20 6f 70 65 72 61 |X vo|id opera|
|00003ba0| 74 6f 72 2b 3d 28 20 63 | 6f 6e 73 74 20 63 68 61 |tor+=( c|onst cha|
|00003bb0| 72 20 2a 20 29 3b 0a 58 | 20 20 20 20 20 63 6f 6e |r * );.X| con|
|00003bc0| 73 74 20 63 68 61 72 20 | 2a 70 74 72 28 29 3b 0a |st char |*ptr();.|
|00003bd0| 58 20 20 20 20 20 69 6e | 74 20 6c 65 6e 28 29 3b |X in|t len();|
|00003be0| 0a 58 20 20 20 20 20 66 | 72 69 65 6e 64 20 69 6e |.X f|riend in|
|00003bf0| 74 20 6f 70 65 72 61 74 | 6f 72 3d 3d 28 20 63 6f |t operat|or==( co|
|00003c00| 6e 73 74 20 73 74 72 6c | 6f 63 20 26 78 2c 20 63 |nst strl|oc &x, c|
|00003c10| 6f 6e 73 74 20 63 68 61 | 72 20 2a 73 20 29 3b 0a |onst cha|r *s );.|
|00003c20| 58 20 20 20 20 20 66 72 | 69 65 6e 64 20 69 6e 74 |X fr|iend int|
|00003c30| 20 6f 70 65 72 61 74 6f | 72 3d 3d 28 20 63 6f 6e | operato|r==( con|
|00003c40| 73 74 20 63 68 61 72 20 | 2a 73 2c 20 63 6f 6e 73 |st char |*s, cons|
|00003c50| 74 20 73 74 72 6c 6f 63 | 20 26 78 20 29 3b 0a 58 |t strloc| &x );.X|
|00003c60| 20 20 20 20 20 66 72 69 | 65 6e 64 20 69 6e 74 20 | fri|end int |
|00003c70| 6f 70 65 72 61 74 6f 72 | 3d 3d 28 20 63 6f 6e 73 |operator|==( cons|
|00003c80| 74 20 73 74 72 6c 6f 63 | 20 26 78 2c 20 63 6f 6e |t strloc| &x, con|
|00003c90| 73 74 20 73 74 72 6c 6f | 63 20 26 79 20 29 3b 0a |st strlo|c &y );.|
|00003ca0| 58 20 20 20 20 20 66 72 | 69 65 6e 64 20 69 6e 74 |X fr|iend int|
|00003cb0| 20 6f 70 65 72 61 74 6f | 72 21 3d 28 20 63 6f 6e | operato|r!=( con|
|00003cc0| 73 74 20 73 74 72 6c 6f | 63 20 26 78 2c 20 63 6f |st strlo|c &x, co|
|00003cd0| 6e 73 74 20 63 68 61 72 | 20 2a 73 20 29 3b 0a 58 |nst char| *s );.X|
|00003ce0| 20 20 20 20 20 66 72 69 | 65 6e 64 20 69 6e 74 20 | fri|end int |
|00003cf0| 6f 70 65 72 61 74 6f 72 | 21 3d 28 20 63 6f 6e 73 |operator|!=( cons|
|00003d00| 74 20 63 68 61 72 20 2a | 73 2c 20 63 6f 6e 73 74 |t char *|s, const|
|00003d10| 20 73 74 72 6c 6f 63 20 | 26 78 20 29 3b 0a 58 20 | strloc |&x );.X |
|00003d20| 20 20 20 20 66 72 69 65 | 6e 64 20 69 6e 74 20 6f | frie|nd int o|
|00003d30| 70 65 72 61 74 6f 72 21 | 3d 28 20 63 6f 6e 73 74 |perator!|=( const|
|00003d40| 20 73 74 72 6c 6f 63 20 | 26 78 2c 20 63 6f 6e 73 | strloc |&x, cons|
|00003d50| 74 20 73 74 72 6c 6f 63 | 20 26 79 20 29 3b 0a 58 |t strloc| &y );.X|
|00003d60| 0a 58 20 20 50 72 69 76 | 61 74 65 20 6d 65 6d 62 |.X Priv|ate memb|
|00003d70| 65 72 73 0a 58 20 20 20 | 20 20 73 74 72 6c 6f 63 |ers.X | strloc|
|00003d80| 5f 64 61 74 61 20 2a 73 | 74 5f 63 6f 6d 3b 0a 58 |_data *s|t_com;.X|
|00003d90| 20 20 20 20 20 20 20 20 | 50 6f 69 6e 74 65 72 20 | |Pointer |
|00003da0| 74 6f 20 63 68 61 72 61 | 63 74 65 72 20 73 74 72 |to chara|cter str|
|00003db0| 69 6e 67 20 73 74 72 75 | 63 74 2e 0a 58 0a 58 0a |ing stru|ct..X.X.|
|00003dc0| 58 44 45 46 49 4e 45 44 | 20 4d 41 43 52 4f 53 0a |XDEFINED| MACROS.|
|00003dd0| 58 20 20 20 20 20 55 54 | 49 4c 5f 53 54 52 4c 4f |X UT|IL_STRLO|
|00003de0| 43 5f 48 0a 58 0a 58 49 | 4e 43 4c 55 44 45 44 20 |C_H.X.XI|NCLUDED |
|00003df0| 46 49 4c 45 53 0a 58 20 | 20 20 20 20 3c 73 74 72 |FILES.X | <str|
|00003e00| 69 6e 67 73 2e 68 78 78 | 3e 0a 58 0a 58 53 54 52 |ings.hxx|>.X.XSTR|
|00003e10| 55 43 54 55 52 45 53 0a | 58 20 20 73 74 72 6c 6f |UCTURES.|X strlo|
|00003e20| 63 5f 64 61 74 61 0a 58 | 20 20 20 20 20 7b 0a 58 |c_data.X| {.X|
|00003e30| 20 20 20 20 20 63 68 61 | 72 20 2a 73 74 64 5f 70 | cha|r *std_p|
|00003e40| 74 72 3b 20 20 20 20 20 | 20 20 20 20 70 6f 69 6e |tr; | poin|
|00003e50| 74 65 72 20 74 6f 20 73 | 74 72 69 6e 67 0a 58 20 |ter to s|tring.X |
|00003e60| 20 20 20 20 69 6e 74 20 | 20 20 73 74 64 5f 72 65 | int | std_re|
|00003e70| 66 63 6e 74 3b 20 20 20 | 20 20 20 72 65 66 65 72 |fcnt; | refer|
|00003e80| 65 6e 63 65 20 63 6f 75 | 6e 74 0a 58 20 20 20 20 |ence cou|nt.X |
|00003e90| 20 7d 3b 0a 58 0a 58 53 | 4f 55 52 43 45 20 46 49 | };.X.XS|OURCE FI|
|00003ea0| 4c 45 53 0a 58 20 20 20 | 20 20 73 74 72 6c 6f 63 |LES.X | strloc|
|00003eb0| 2e 63 78 78 0a 58 20 20 | 20 20 20 73 74 72 6c 6f |.cxx.X | strlo|
|00003ec0| 63 2e 68 0a 58 0a 58 53 | 55 4d 4d 41 52 59 0a 58 |c.h.X.XS|UMMARY.X|
|00003ed0| 20 20 73 74 72 6c 6f 63 | 3a 3a 73 74 72 6c 6f 63 | strloc|::strloc|
|00003ee0| 28 20 63 6f 6e 73 74 20 | 63 68 61 72 20 2a 6e 65 |( const |char *ne|
|00003ef0| 77 73 74 72 20 29 0a 58 | 20 20 20 20 20 4e 6f 72 |wstr ).X| Nor|
|00003f00| 6d 61 6c 20 63 6f 6e 73 | 74 72 75 63 74 6f 72 2e |mal cons|tructor.|
|00003f10| 0a 58 20 20 20 20 20 50 | 61 73 73 65 64 20 61 20 |.X P|assed a |
|00003f20| 70 6f 69 6e 74 65 72 20 | 74 6f 20 61 20 63 68 61 |pointer |to a cha|
|00003f30| 72 61 63 74 65 72 20 73 | 74 72 69 6e 67 20 69 74 |racter s|tring it|
|00003f40| 20 63 6f 70 69 65 73 20 | 69 74 0a 58 20 20 20 20 | copies |it.X |
|00003f50| 20 74 6f 20 6e 65 77 20 | 6d 65 6d 6f 72 79 20 61 | to new |memory a|
|00003f60| 6e 64 20 73 65 74 73 20 | 74 68 65 20 72 65 66 65 |nd sets |the refe|
|00003f70| 72 65 6e 63 65 20 63 6f | 75 6e 74 20 74 6f 20 31 |rence co|unt to 1|
|00003f80| 2e 0a 58 0a 58 20 20 73 | 74 72 6c 6f 63 3a 3a 73 |..X.X s|trloc::s|
|00003f90| 74 72 6c 6f 63 28 20 73 | 74 72 6c 6f 63 20 26 6f |trloc( s|trloc &o|
|00003fa0| 72 69 67 20 29 0a 58 20 | 20 20 20 20 43 6f 6e 73 |rig ).X | Cons|
|00003fb0| 74 72 75 63 74 6f 72 20 | 63 61 6c 6c 65 64 20 77 |tructor |called w|
|00003fc0| 68 65 6e 20 73 74 72 6c | 6f 63 20 61 3d 20 62 2e |hen strl|oc a= b.|
|00003fd0| 0a 58 20 20 20 20 20 22 | 74 68 69 73 22 20 69 73 |.X "|this" is|
|00003fe0| 20 22 61 22 20 61 6e 64 | 20 22 6f 72 69 67 22 20 | "a" and| "orig" |
|00003ff0| 69 73 20 61 20 70 6f 69 | 6e 74 65 72 20 74 6f 20 |is a poi|nter to |
|00004000| 22 62 22 2e 0a 58 0a 58 | 20 20 73 74 72 6c 6f 63 |"b"..X.X| strloc|
|00004010| 3a 3a 7e 73 74 72 6c 6f | 63 28 29 0a 58 20 20 20 |::~strlo|c().X |
|00004020| 20 20 44 65 73 74 72 75 | 63 74 6f 72 20 66 6f 72 | Destru|ctor for|
|00004030| 20 74 68 65 20 73 74 72 | 6c 6f 63 20 63 6c 61 73 | the str|loc clas|
|00004040| 73 2e 0a 58 20 20 20 20 | 20 54 68 65 20 72 65 66 |s..X | The ref|
|00004050| 65 72 6e 63 65 20 63 6f | 75 6e 74 20 69 73 20 64 |ernce co|unt is d|
|00004060| 65 63 72 69 6d 65 6e 74 | 65 64 20 61 6e 64 20 77 |ecriment|ed and w|
|00004070| 68 65 6e 20 69 74 20 67 | 6f 65 73 20 74 6f 0a 58 |hen it g|oes to.X|
|00004080| 20 20 20 20 20 7a 65 72 | 6f 20 74 68 65 20 73 74 | zer|o the st|
|00004090| 72 69 6e 67 20 69 73 20 | 64 65 6c 65 74 65 64 2e |ring is |deleted.|
|000040a0| 0a 58 0a 58 20 20 73 74 | 72 6c 6f 63 20 26 20 73 |.X.X st|rloc & s|
|000040b0| 74 72 6c 6f 63 3a 3a 6f | 70 65 72 61 74 6f 72 3d |trloc::o|perator=|
|000040c0| 28 20 73 74 72 6c 6f 63 | 20 26 72 76 61 6c 75 65 |( strloc| &rvalue|
|000040d0| 20 29 0a 58 20 20 20 20 | 20 49 6d 70 6c 65 6d 65 | ).X | Impleme|
|000040e0| 6e 74 73 20 63 6f 70 79 | 20 66 75 6e 63 74 69 6f |nts copy| functio|
|000040f0| 6e 2e 0a 58 20 20 20 20 | 20 46 72 65 65 73 20 75 |n..X | Frees u|
|00004100| 70 20 6f 6c 64 20 73 74 | 72 69 6e 67 20 61 6e 64 |p old st|ring and|
|00004110| 20 63 6f 70 69 65 73 20 | 61 20 70 6f 69 6e 74 65 | copies |a pointe|
|00004120| 72 20 74 6f 20 74 68 65 | 20 6e 65 77 20 6f 6e 65 |r to the| new one|
|00004130| 2e 0a 58 0a 58 20 20 73 | 74 72 6c 6f 63 20 26 20 |..X.X s|trloc & |
|00004140| 73 74 72 6c 6f 63 3a 3a | 6f 70 65 72 61 74 6f 72 |strloc::|operator|
|00004150| 3d 28 20 63 6f 6e 73 74 | 20 63 68 61 72 20 2a 6e |=( const| char *n|
|00004160| 65 77 73 74 72 20 29 0a | 58 20 20 20 20 20 49 6d |ewstr ).|X Im|
|00004170| 70 6c 65 6d 65 6e 74 73 | 20 73 65 74 20 66 75 6e |plements| set fun|
|00004180| 63 74 69 6f 6e 3a 20 73 | 74 72 6c 6f 63 20 61 3b |ction: s|trloc a;|
|00004190| 20 61 3d 20 22 66 6f 6f | 22 3b 0a 58 20 20 20 20 | a= "foo|";.X |
|000041a0| 20 46 72 65 65 73 20 75 | 70 20 6f 6c 64 20 73 74 | Frees u|p old st|
|000041b0| 72 69 6e 67 20 61 6e 64 | 20 63 6f 70 69 65 73 20 |ring and| copies |
|000041c0| 61 20 70 6f 69 6e 74 65 | 72 20 74 6f 20 74 68 65 |a pointe|r to the|
|000041d0| 20 6e 65 77 20 6f 6e 65 | 2e 0a 58 0a 58 20 20 76 | new one|..X.X v|
|000041e0| 6f 69 64 20 73 74 72 6c | 6f 63 3a 3a 6f 70 65 72 |oid strl|oc::oper|
|000041f0| 61 74 6f 72 2b 3d 28 20 | 63 6f 6e 73 74 20 63 68 |ator+=( |const ch|
|00004200| 61 72 20 2a 73 74 72 69 | 6e 67 20 29 0a 58 20 20 |ar *stri|ng ).X |
|00004210| 20 20 20 41 70 70 65 6e | 64 73 20 74 68 65 20 73 | Appen|ds the s|
|00004220| 70 65 63 69 66 69 65 64 | 20 73 74 72 69 6e 67 20 |pecified| string |
|00004230| 6f 6e 74 6f 20 74 68 65 | 20 65 6e 64 20 6f 66 20 |onto the| end of |
|00004240| 74 68 65 20 63 75 72 72 | 65 6e 74 20 73 74 72 69 |the curr|ent stri|
|00004250| 6e 67 2e 0a 58 0a 58 20 | 20 69 6e 6c 69 6e 65 20 |ng..X.X | inline |
|00004260| 63 6f 6e 73 74 20 63 68 | 61 72 20 2a 73 74 72 6c |const ch|ar *strl|
|00004270| 6f 63 3a 3a 70 74 72 28 | 29 0a 58 20 20 20 20 20 |oc::ptr(|).X |
|00004280| 52 65 74 75 72 6e 73 20 | 74 68 65 20 70 6f 69 6e |Returns |the poin|
|00004290| 74 65 72 20 74 6f 20 74 | 68 65 20 73 74 72 69 6e |ter to t|he strin|
|000042a0| 67 2e 0a 58 0a 58 20 20 | 69 6e 6c 69 6e 65 20 69 |g..X.X |inline i|
|000042b0| 6e 74 20 73 74 72 6c 6f | 63 3a 3a 6c 65 6e 28 29 |nt strlo|c::len()|
|000042c0| 0a 58 20 20 20 20 20 52 | 65 74 75 72 6e 73 20 74 |.X R|eturns t|
|000042d0| 68 65 20 6c 65 6e 67 74 | 68 20 6f 66 20 74 68 65 |he lengt|h of the|
|000042e0| 20 73 74 72 69 6e 67 2e | 0a 58 0a 46 52 49 44 41 | string.|.X.FRIDA|
|000042f0| 59 5f 4e 49 47 48 54 0a | 0a |Y_NIGHT.|. |
+--------+-------------------------+-------------------------+--------+--------+