c-snippets  Hex Artifact Content

Artifact ebfac31607fba1e4238f2e9b6902c868722ce4ed:

Wiki page [clob] by stephan 2008-05-19 12:16:01.
0000: 44 20 32 30 30 38 2d 30 35 2d 31 39 54 31 32 3a  D 2008-05-19T12:
0010: 31 36 3a 30 31 0a 4c 20 63 6c 6f 62 0a 50 20 36  16:01.L clob.P 6
0020: 34 38 37 34 66 33 62 33 39 34 30 30 61 62 30 66  4874f3b39400ab0f
0030: 63 32 35 66 39 32 37 66 33 64 37 62 32 39 36 35  c25f927f3d7b2965
0040: 61 66 39 66 37 32 35 0a 55 20 73 74 65 70 68 61  af9f725.U stepha
0050: 6e 0a 57 20 31 30 32 36 0a 54 68 65 20 22 63 6c  n.W 1026.The "cl
0060: 6f 62 22 20 41 50 49 20 69 73 20 61 20 64 79 6e  ob" API is a dyn
0070: 61 6d 69 63 61 6c 6c 79 2d 72 65 73 69 7a 69 6e  amically-resizin
0080: 67 20 22 62 6c 6f 62 22 20 28 62 69 6e 61 72 79  g "blob" (binary
0090: 20 6c 61 72 67 65 20 6f 62 6a 65 63 74 29 20 63   large object) c
00a0: 6c 61 73 73 20 63 6f 6e 63 65 70 74 75 61 6c 6c  lass conceptuall
00b0: 79 20 64 65 72 69 76 65 64 20 66 72 6f 6d 20 63  y derived from c
00c0: 6f 64 65 20 69 6e 20 74 68 65 20 46 6f 73 73 69  ode in the Fossi
00d0: 6c 20 73 6f 75 72 63 65 20 74 72 65 65 20 28 74  l source tree (t
00e0: 68 65 69 72 20 41 50 49 73 20 61 72 65 20 61 6c  heir APIs are al
00f0: 73 6f 20 76 65 72 79 20 73 69 6d 69 6c 61 72 2c  so very similar,
0100: 20 62 75 74 20 74 68 69 73 20 69 73 20 61 20 72   but this is a r
0110: 65 2d 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e-implementation
0120: 20 66 6f 72 20 6c 69 63 65 6e 73 69 6e 67 20 72   for licensing r
0130: 65 61 73 6f 6e 73 29 2e 20 49 74 73 20 70 72 69  easons). Its pri
0140: 6d 61 72 79 20 75 73 65 73 20 61 72 65 3a 0d 0a  mary uses are:..
0150: 0d 0a 3c 75 6c 3e 0d 0a 3c 6c 69 3e 43 72 65 61  ..<ul>..<li>Crea
0160: 74 69 6e 67 20 61 6e 64 20 6d 61 6e 61 67 65 6d  ting and managem
0170: 65 6e 74 20 6f 66 20 64 79 6e 61 6d 69 63 20 73  ent of dynamic s
0180: 74 72 69 6e 67 73 2e 20 28 54 68 69 73 20 69 73  trings. (This is
0190: 20 65 73 70 65 63 69 61 6c 6c 79 20 65 61 73 79   especially easy
01a0: 20 69 6e 20 63 6f 6e 6a 75 6e 63 74 69 6f 6e 20   in conjunction 
01b0: 77 69 74 68 20 5b 76 61 70 70 65 6e 64 66 5d 2e  with [vappendf].
01c0: 29 3c 2f 6c 69 3e 0d 0a 3c 6c 69 3e 4f 75 74 70  )</li>..<li>Outp
01d0: 75 74 20 62 75 66 66 65 72 69 6e 67 2e 20 54 68  ut buffering. Th
01e0: 69 73 20 69 73 20 73 6f 6d 65 74 69 6d 65 73 20  is is sometimes 
01f0: 75 73 65 66 75 6c 2c 20 65 2e 67 2e 2c 20 77 68  useful, e.g., wh
0200: 65 6e 20 62 75 69 6c 64 69 6e 67 20 75 70 20 6f  en building up o
0210: 75 74 70 75 74 0d 0a 61 63 72 6f 73 73 20 73 65  utput..across se
0220: 76 65 72 61 6c 20 64 69 66 66 65 72 65 6e 74 20  veral different 
0230: 66 75 6e 63 74 69 6f 6e 73 2e 3c 2f 6c 69 3e 0d  functions.</li>.
0240: 0a 3c 6c 69 3e 48 61 73 20 73 6f 6d 65 20 73 75  .<li>Has some su
0250: 70 70 6f 72 74 20 66 6f 72 20 63 6f 6d 70 72 65  pport for compre
0260: 73 73 69 6e 67 2f 64 65 63 6f 6d 70 72 65 73 73  ssing/decompress
0270: 69 6e 67 20 62 6c 6f 62 73 2e 20 4e 6f 74 20 6f  ing blobs. Not o
0280: 6e 2d 74 68 65 2d 66 6c 79 20 64 65 2f 63 6f 6d  n-the-fly de/com
0290: 70 72 65 73 73 69 6f 6e 2c 20 62 75 74 20 75 73  pression, but us
02a0: 65 66 75 6c 20 6e 6f 6e 65 74 68 65 6c 65 73 73  eful nonetheless
02b0: 2e 3c 2f 6c 69 3e 0d 0a 3c 2f 75 6c 3e 0d 0a 0d  .</li>..</ul>...
02c0: 0a 54 68 65 20 6f 72 69 67 69 6e 61 6c 20 69 6e  .The original in
02d0: 74 65 6e 74 69 6f 6e 20 6f 66 20 74 68 69 73 20  tention of this 
02e0: 63 6c 61 73 73 20 77 61 73 20 74 6f 20 70 72 6f  class was to pro
02f0: 76 69 64 65 20 6f 75 74 70 75 74 20 62 75 66 66  vide output buff
0300: 65 72 69 6e 67 20 73 75 70 70 6f 72 74 0d 0a 66  ering support..f
0310: 6f 72 20 74 68 65 20 5b 68 74 74 70 3a 2f 2f 77  or the [http://w
0320: 61 6e 64 65 72 69 6e 67 68 6f 72 73 65 2e 6e 65  anderinghorse.ne
0330: 74 2f 63 67 69 2d 62 69 6e 2f 66 6f 73 73 69 6c  t/cgi-bin/fossil
0340: 2d 63 67 69 33 2e 63 67 69 7c 63 67 69 33 20 74  -cgi3.cgi|cgi3 t
0350: 6f 6f 6c 6b 69 74 5d 2e 0d 0a 0d 0a 49 74 27 73  oolkit].....It's
0360: 20 75 73 65 64 20 73 6f 6d 65 74 68 69 6e 67 20   used something 
0370: 6c 69 6b 65 20 74 68 69 73 3a 0d 0a 0d 0a 3c 70  like this:....<p
0380: 72 65 20 63 6c 61 73 73 3d 27 63 6f 64 65 27 3e  re class='code'>
0390: 0d 0a 43 6c 6f 62 20 2a 20 63 3b 0d 0a 63 6c 6f  ..Clob * c;..clo
03a0: 62 5f 69 6e 69 74 28 20 26 61 6d 70 3b 63 2c 20  b_init( &amp;c, 
03b0: 30 2c 20 30 20 29 3b 0d 0a 63 6c 6f 62 5f 61 70  0, 0 );..clob_ap
03c0: 70 65 6e 64 66 28 20 63 2c 20 22 48 65 6c 6c 6f  pendf( c, "Hello
03d0: 2c 20 25 73 21 22 2c 20 22 77 6f 72 6c 64 22 29  , %s!", "world")
03e0: 3b 0d 0a 2e 2e 2e 0d 0a 63 6c 6f 62 5f 66 69 6e  ;.......clob_fin
03f0: 61 6c 69 7a 65 28 20 63 20 29 3b 0d 0a 3c 2f 70  alize( c );..</p
0400: 72 65 3e 0d 0a 0d 0a 3c 74 74 3e 63 6c 6f 62 5f  re>....<tt>clob_
0410: 61 70 70 65 6e 64 66 28 29 3c 2f 74 74 3e 20 69  appendf()</tt> i
0420: 73 20 62 61 73 65 64 20 6f 6e 20 5b 76 61 70 70  s based on [vapp
0430: 65 6e 64 66 5d 28 29 20 61 6e 64 20 74 68 65 72  endf]() and ther
0440: 65 66 6f 72 20 75 73 65 73 20 69 74 73 20 65 78  efor uses its ex
0450: 74 65 6e 73 69 6f 6e 73 2e 0d 0a 0a 5a 20 30 65  tensions....Z 0e
0460: 33 61 32 33 30 32 65 32 61 62 31 32 38 35 62 64  3a2302e2ab1285bd
0470: 61 62 38 32 31 37 65 36 30 65 65 32 38 62 0a     ab8217e60ee28b.