Artifact 618dedd4787479016e002dafd4b1b0c48d5c8d73:
File
tools/cvs2fossil/lib/id.tcl
part of check-in
[89e9b357ed]
- Fixed saving of authors, log messages, meta data. This was wrong since revision 99e165d5c4, when the id databases were introduced. Simplified meta saving due to changed trunk coding (no NULL).
by
aku on
2007-10-25 05:16:57.
0000: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 # # ## ### #####
0010: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######## ######
0020: 23 23 23 23 23 23 23 0a 0a 23 23 20 41 20 73 69 #######..## A si
0030: 6d 70 6c 65 20 63 6c 61 73 73 20 66 6f 72 20 68 mple class for h
0040: 61 6e 64 6c 69 6e 67 20 61 6e 20 69 6e 2d 6d 65 andling an in-me
0050: 6d 6f 72 79 20 69 6e 64 65 78 20 6d 61 70 70 69 mory index mappi
0060: 6e 67 20 66 72 6f 6d 0a 23 23 20 61 72 62 69 74 ng from.## arbit
0070: 72 61 72 79 20 73 74 72 69 6e 67 73 20 74 6f 20 rary strings to
0080: 61 20 73 6d 61 6c 6c 20 6e 75 6d 65 72 69 63 20 a small numeric
0090: 69 64 2e 20 43 61 6e 20 62 65 20 71 75 65 72 69 id. Can be queri
00a0: 65 64 20 69 6e 20 72 65 76 65 72 73 65 0a 23 23 ed in reverse.##
00b0: 20 74 6f 6f 2c 20 72 65 74 75 72 6e 69 6e 67 20 too, returning
00c0: 74 68 65 20 73 74 72 69 6e 67 20 66 6f 72 20 74 the string for t
00d0: 68 65 20 69 64 2e 0a 0a 23 23 20 49 64 27 73 20 he id...## Id's
00e0: 61 72 65 20 73 74 61 72 74 69 6e 67 20 66 72 6f are starting fro
00f0: 6d 20 31 2e 0a 0a 23 20 23 20 23 23 20 23 23 23 m 1...# # ## ###
0100: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 ##### ########
0110: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 #############.##
0120: 20 52 65 71 75 69 72 65 6d 65 6e 74 73 2e 0a 0a Requirements...
0130: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 package require
0140: 54 63 6c 20 20 3b 20 23 20 52 75 6e 74 69 6d 65 Tcl ; # Runtime
0150: 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 ..package requir
0160: 65 20 73 6e 69 74 20 3b 20 23 20 4f 4f 20 72 75 e snit ; # OO ru
0170: 6e 74 69 6d 65 2e 0a 0a 23 20 23 20 23 23 20 23 ntime...# # ## #
0180: 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 ## ##### #######
0190: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a # #############.
01a0: 23 23 20 49 6d 70 6c 65 6d 65 6e 74 61 74 69 6f ## Implementatio
01b0: 6e 2e 0a 0a 73 6e 69 74 3a 3a 74 79 70 65 20 3a n...snit::type :
01c0: 3a 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 69 64 20 7b :vc::tools::id {
01d0: 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 20 . # # ## ###
01e0: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 ##### ######## #
01f0: 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 20 20 ############..
0200: 20 20 63 6f 6e 73 74 72 75 63 74 6f 72 20 7b 7d constructor {}
0210: 20 7b 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 20 {}.. # # ##
0220: 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 ### ##### ######
0230: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 ## #############
0240: 0a 20 20 20 20 23 23 20 50 75 62 6c 69 63 20 41 . ## Public A
0250: 50 49 2e 0a 20 20 20 20 23 23 20 2d 20 50 75 74 PI.. ## - Put
0260: 20 64 61 74 61 20 69 6e 74 6f 20 74 68 65 20 69 data into the i
0270: 6e 64 65 78 2c 20 69 6e 63 6c 2e 20 71 75 65 72 ndex, incl. quer
0280: 79 20 66 6f 72 20 69 64 20 6f 66 20 6b 65 79 2e y for id of key.
0290: 0a 20 20 20 20 23 23 20 2d 20 4c 6f 6f 6b 75 70 . ## - Lookup
02a0: 20 64 61 74 61 20 66 6f 72 20 69 64 2e 0a 0a 20 data for id...
02b0: 20 20 20 6d 65 74 68 6f 64 20 70 75 74 20 7b 6b method put {k
02c0: 65 79 7d 20 7b 0a 09 69 66 20 7b 5b 69 6e 66 6f ey} {..if {[info
02d0: 20 65 78 69 73 74 73 20 6d 79 64 61 74 61 28 24 exists mydata($
02e0: 6b 65 79 29 5d 7d 20 7b 20 72 65 74 75 72 6e 20 key)]} { return
02f0: 24 6d 79 64 61 74 61 28 24 6b 65 79 29 20 7d 0a $mydata($key) }.
0300: 09 69 6e 63 72 20 6d 79 63 6f 75 6e 74 65 72 0a .incr mycounter.
0310: 0a 09 73 65 74 20 6d 79 64 61 74 61 28 24 6b 65 ..set mydata($ke
0320: 79 29 20 20 20 24 6d 79 63 6f 75 6e 74 65 72 0a y) $mycounter.
0330: 09 73 65 74 20 6d 79 69 6e 76 65 72 74 28 24 6d .set myinvert($m
0340: 79 63 6f 75 6e 74 65 72 29 20 24 6b 65 79 0a 0a ycounter) $key..
0350: 09 72 65 74 75 72 6e 20 24 6d 79 63 6f 75 6e 74 .return $mycount
0360: 65 72 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 er. }.. me
0370: 74 68 6f 64 20 6b 65 79 6f 66 20 7b 69 64 7d 20 thod keyof {id}
0380: 7b 20 72 65 74 75 72 6e 20 24 6d 79 69 6e 76 65 { return $myinve
0390: 72 74 28 24 69 64 29 20 7d 0a 20 20 20 20 6d 65 rt($id) }. me
03a0: 74 68 6f 64 20 67 65 74 20 20 20 7b 7d 20 20 20 thod get {}
03b0: 7b 20 72 65 74 75 72 6e 20 5b 61 72 72 61 79 20 { return [array
03c0: 67 65 74 20 6d 79 64 61 74 61 5d 20 7d 0a 0a 20 get mydata] }..
03d0: 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23 # # ## ### ##
03e0: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 ### ######## ###
03f0: 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 ##########. #
0400: 23 20 49 6e 74 65 72 6e 61 6c 2e 20 53 74 61 74 # Internal. Stat
0410: 65 2e 0a 0a 20 20 20 20 76 61 72 69 61 62 6c 65 e... variable
0420: 20 6d 79 64 61 74 61 20 20 20 2d 61 72 72 61 79 mydata -array
0430: 20 7b 7d 20 3b 20 23 20 4d 61 70 20 64 61 74 61 {} ; # Map data
0440: 20 2d 3e 20 69 64 0a 20 20 20 20 76 61 72 69 61 -> id. varia
0450: 62 6c 65 20 6d 79 69 6e 76 65 72 74 20 2d 61 72 ble myinvert -ar
0460: 72 61 79 20 7b 7d 20 3b 20 23 20 4d 61 70 20 69 ray {} ; # Map i
0470: 64 20 2d 3e 20 64 61 74 61 0a 20 20 20 20 76 61 d -> data. va
0480: 72 69 61 62 6c 65 20 6d 79 63 6f 75 6e 74 65 72 riable mycounter
0490: 20 20 20 20 20 20 20 20 30 20 3b 20 23 20 43 6f 0 ; # Co
04a0: 75 6e 74 65 72 20 66 6f 72 20 69 64 20 67 65 6e unter for id gen
04b0: 65 72 61 74 69 6f 6e 2e 0a 0a 20 20 20 20 23 20 eration... #
04c0: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
04d0: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
04e0: 23 23 23 23 23 0a 7d 0a 0a 6e 61 6d 65 73 70 61 #####.}..namespa
04f0: 63 65 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 74 6f ce eval ::vc::to
0500: 6f 6c 73 20 7b 0a 20 20 20 20 6e 61 6d 65 73 70 ols {. namesp
0510: 61 63 65 20 65 78 70 6f 72 74 20 69 64 0a 7d 0a ace export id.}.
0520: 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 .# # ## ### ####
0530: 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 # ######## #####
0540: 23 23 23 23 23 23 23 23 0a 23 23 20 52 65 61 64 ########.## Read
0550: 79 2e 0a 0a 70 61 63 6b 61 67 65 20 70 72 6f 76 y...package prov
0560: 69 64 65 20 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 69 ide vc::tools::i
0570: 64 20 31 2e 30 0a d 1.0.