Documentation Source Text

Hex Artifact Content
Login

Artifact 6f99a0bcbdf3241d7afd9d5df132b7cafab744ff:


0000: 3c 74 69 74 6c 65 3e 53 51 4c 69 74 65 20 52 65  <title>SQLite Re
0010: 71 75 69 72 65 6d 65 6e 74 73 3c 2f 74 69 74 6c  quirements</titl
0020: 65 3e 0a 3c 74 63 6c 3e 68 64 5f 6b 65 79 77 6f  e>.<tcl>hd_keywo
0030: 72 64 73 20 7b 2a 72 65 71 75 69 72 65 6d 65 6e  rds {*requiremen
0040: 74 73 7d 3c 2f 74 63 6c 3e 0a 0a 3c 68 32 3e 31  ts}</tcl>..<h2>1
0050: 2e 30 20 41 62 6f 75 74 20 53 51 4c 69 74 65 20  .0 About SQLite 
0060: 52 65 71 75 69 72 65 6d 65 6e 74 73 3c 2f 68 32  Requirements</h2
0070: 3e 0a 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 70 3e  >...<ul>.<li><p>
0080: 0a 52 65 71 75 69 72 65 6d 65 6e 74 73 20 63 6f  .Requirements co
0090: 6e 73 69 73 74 20 6f 66 20 65 78 63 65 72 70 74  nsist of excerpt
00a0: 73 20 66 72 6f 6d 20 74 68 65 20 64 6f 63 75 6d  s from the docum
00b0: 65 6e 74 61 74 69 6f 6e 2e 0a 41 20 72 65 71 75  entation..A requ
00c0: 69 72 65 6d 65 6e 74 20 69 73 20 75 73 75 61 6c  irement is usual
00d0: 6c 79 20 61 20 6f 6e 65 2d 73 65 6e 74 65 6e 63  ly a one-sentenc
00e0: 65 20 65 78 63 65 72 70 74 20 62 75 74 20 6d 69  e excerpt but mi
00f0: 67 68 74 20 62 65 20 61 20 73 65 6e 74 65 6e 63  ght be a sentenc
0100: 65 0a 66 72 61 67 6d 65 6e 74 2c 20 6d 75 6c 74  e.fragment, mult
0110: 69 70 6c 65 20 73 65 6e 74 65 6e 63 65 73 2c 20  iple sentences, 
0120: 61 20 74 61 62 6c 65 2c 20 6f 72 20 61 20 47 49  a table, or a GI
0130: 46 20 69 6d 61 67 65 20 6f 66 20 61 20 62 75 62  F image of a bub
0140: 62 6c 65 20 73 79 6e 74 61 78 0a 64 69 61 67 72  ble syntax.diagr
0150: 61 6d 2e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 52 65 71  am...<li><p>.Req
0160: 75 69 72 65 6d 65 6e 74 73 20 61 72 65 20 77 72  uirements are wr
0170: 69 74 74 65 6e 20 69 6e 20 63 6f 6e 76 65 72 73  itten in convers
0180: 61 74 69 6f 6e 61 6c 20 45 6e 67 6c 69 73 68 20  ational English 
0190: 61 6e 64 20 77 69 74 68 6f 75 74 20 74 68 65 0a  and without the.
01a0: 6d 6f 64 61 6c 20 61 75 78 69 6c 69 61 72 79 20  modal auxiliary 
01b0: 76 65 72 62 20 22 73 68 61 6c 6c 22 2e 20 20 54  verb "shall".  T
01c0: 68 69 73 20 67 72 6f 77 73 20 6f 75 74 20 6f 66  his grows out of
01d0: 20 74 68 65 20 66 61 63 74 20 74 68 61 74 20 72   the fact that r
01e0: 65 71 75 69 72 65 6d 65 6e 74 73 0a 61 72 65 20  equirements.are 
01f0: 74 61 6b 65 6e 20 66 72 6f 6d 20 74 68 65 20 64  taken from the d
0200: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2e 20 20 54  ocumentation.  T
0210: 68 65 20 69 6e 74 65 6e 64 65 64 20 61 75 64 69  he intended audi
0220: 65 6e 63 65 20 66 6f 72 20 74 68 65 0a 64 6f 63  ence for the.doc
0230: 75 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 61 70  umentation is ap
0240: 70 6c 69 63 61 74 69 6f 6e 20 70 72 6f 67 72 61  plication progra
0250: 6d 6d 65 72 73 2e 20 20 22 53 68 61 6c 6c 22 20  mmers.  "Shall" 
0260: 6c 61 6e 67 75 61 67 65 20 69 73 20 61 70 70 72  language is appr
0270: 6f 70 72 69 61 74 65 0a 77 68 65 6e 20 74 68 65  opriate.when the
0280: 20 61 75 64 69 65 6e 63 65 20 63 6f 6e 73 69 73   audience consis
0290: 74 20 6f 66 20 63 6f 6e 74 72 61 63 74 20 73 70  t of contract sp
02a0: 65 63 69 61 6c 69 73 74 73 2c 20 51 41 20 61 75  ecialists, QA au
02b0: 64 69 74 6f 72 73 2c 20 61 6e 64 20 6c 61 77 79  ditors, and lawy
02c0: 65 72 73 2c 20 0a 62 75 74 20 69 74 20 69 6e 74  ers, .but it int
02d0: 65 72 66 65 72 65 73 20 77 69 74 68 20 63 6f 6d  erferes with com
02e0: 70 72 65 68 65 6e 73 69 6f 6e 20 77 68 65 6e 20  prehension when 
02f0: 74 68 65 20 61 75 64 69 65 6e 63 65 20 69 73 20  the audience is 
0300: 61 70 70 6c 69 63 61 74 69 6f 6e 20 0a 70 72 6f  application .pro
0310: 67 72 61 6d 6d 65 72 73 2e 20 20 48 65 6e 63 65  grammers.  Hence
0320: 2c 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 62 65  , in order to be
0330: 73 74 20 73 65 72 76 65 20 74 68 65 20 69 6e 74  st serve the int
0340: 65 6e 64 65 64 20 61 75 64 69 65 6e 63 65 2c 20  ended audience, 
0350: 74 68 65 0a 22 73 68 61 6c 6c 22 20 6c 61 6e 67  the."shall" lang
0360: 75 61 67 65 20 69 73 20 6f 6d 69 74 74 65 64 2e  uage is omitted.
0370: 0a 0a 3c 6c 69 3e 3c 70 3e 0a 52 65 71 75 69 72  ..<li><p>.Requir
0380: 65 6d 65 6e 74 73 20 61 72 65 20 73 75 66 66 69  ements are suffi
0390: 63 69 65 6e 74 6c 79 20 64 65 74 61 69 6c 65 64  ciently detailed
03a0: 20 61 6e 64 20 70 72 65 63 69 73 65 20 74 6f 20   and precise to 
03b0: 70 65 72 6d 69 74 20 61 20 31 30 30 25 20 63 6f  permit a 100% co
03c0: 6d 70 61 74 69 62 6c 65 0a 63 6c 65 61 6e 2d 72  mpatible.clean-r
03d0: 6f 6f 6d 20 72 65 69 6d 70 6c 65 6d 65 6e 74 61  oom reimplementa
03e0: 74 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65 2e 0a  tion of SQLite..
03f0: 0a 3c 6c 69 3e 3c 70 3e 0a 54 68 65 20 77 6f 72  .<li><p>.The wor
0400: 64 20 22 72 65 71 75 69 72 65 6d 65 6e 74 22 20  d "requirement" 
0410: 69 6e 20 63 6f 6d 6d 6f 6e 20 45 6e 67 6c 69 73  in common Englis
0420: 68 20 75 73 61 67 65 20 69 6d 70 6c 69 65 73 20  h usage implies 
0430: 61 6e 20 6f 72 64 65 72 69 6e 67 3a 20 74 68 61  an ordering: tha
0440: 74 0a 74 68 65 20 72 65 71 75 69 72 65 6d 65 6e  t.the requiremen
0450: 74 20 63 6f 6d 65 73 20 62 65 66 6f 72 65 20 74  t comes before t
0460: 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  he implementatio
0470: 6e 2e 0a 42 75 74 20 74 68 65 72 65 20 69 73 20  n..But there is 
0480: 6e 6f 20 73 75 63 68 20 6f 72 64 65 72 69 6e 67  no such ordering
0490: 20 77 69 74 68 20 53 51 4c 69 74 65 20 72 65 71   with SQLite req
04a0: 75 69 72 65 6d 65 6e 74 73 2e 0a 57 68 61 74 20  uirements..What 
04b0: 61 72 65 20 63 61 6c 6c 65 64 20 22 72 65 71 75  are called "requ
04c0: 69 72 65 6d 65 6e 74 73 22 20 69 6e 20 53 51 4c  irements" in SQL
04d0: 69 74 65 20 61 72 65 20 62 65 74 74 65 72 20 64  ite are better d
04e0: 65 73 63 72 69 62 65 64 20 61 73 0a 22 74 65 73  escribed as."tes
04f0: 74 61 62 6c 65 20 73 74 61 74 65 6d 65 6e 74 73  table statements
0500: 20 6f 66 20 74 72 75 74 68 20 61 62 6f 75 74 20   of truth about 
0510: 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f 66 20  the behavior of 
0520: 74 68 65 20 73 79 73 74 65 6d 22 2e 0a 0a 3c 6c  the system"...<l
0530: 69 3e 3c 70 3e 0a 45 76 65 72 79 20 74 65 73 74  i><p>.Every test
0540: 61 62 6c 65 20 73 74 61 74 65 6d 65 6e 74 20 6f  able statement o
0550: 66 20 74 72 75 74 68 20 61 62 6f 75 74 20 53 51  f truth about SQ
0560: 4c 69 74 65 20 69 6e 20 74 68 65 0a 64 6f 63 75  Lite in the.docu
0570: 6d 65 6e 74 61 74 69 6f 6e 20 62 65 63 6f 6d 65  mentation become
0580: 73 20 61 20 72 65 71 75 69 72 65 6d 65 6e 74 2e  s a requirement.
0590: 0a 0a 3c 6c 69 3e 3c 70 3e 0a 52 65 71 75 69 72  ..<li><p>.Requir
05a0: 65 6d 65 6e 74 20 6e 75 6d 62 65 72 73 20 61 72  ement numbers ar
05b0: 65 20 74 68 65 20 4d 44 35 20 68 61 73 68 20 6f  e the MD5 hash o
05c0: 66 20 74 68 65 20 72 65 71 75 69 72 65 6d 65 6e  f the requiremen
05d0: 74 20 69 74 73 65 6c 66 2e 0a 3c 6f 6c 20 74 79  t itself..<ol ty
05e0: 70 65 3d 22 61 22 3e 0a 3c 6c 69 3e 3c 70 3e 52  pe="a">.<li><p>R
05f0: 65 71 75 69 72 65 6d 65 6e 74 73 20 61 72 65 20  equirements are 
0600: 69 6e 68 65 72 65 6e 74 6c 79 20 69 6d 6d 75 74  inherently immut
0610: 61 62 6c 65 2c 20 73 69 6e 63 65 20 61 6e 79 20  able, since any 
0620: 63 68 61 6e 67 65 0a 74 6f 20 74 68 65 20 72 65  change.to the re
0630: 71 75 69 72 65 6d 65 6e 74 20 72 65 73 75 6c 74  quirement result
0640: 73 20 69 6e 20 61 20 63 6f 6d 70 6c 65 74 65 6c  s in a completel
0650: 79 20 64 69 66 66 65 72 65 6e 74 20 72 65 71 75  y different requ
0660: 69 72 65 6d 65 6e 74 20 6e 75 6d 62 65 72 2e 0a  irement number..
0670: 0a 3c 6c 69 3e 3c 70 3e 46 6f 72 20 74 65 78 74  .<li><p>For text
0680: 20 72 65 71 75 69 72 65 6d 65 6e 74 73 2c 20 74   requirements, t
0690: 68 65 20 74 65 78 74 20 69 73 20 6e 6f 72 6d 61  he text is norma
06a0: 6c 69 7a 65 64 20 70 72 69 6f 72 20 74 6f 20 63  lized prior to c
06b0: 6f 6d 70 75 74 69 6e 67 20 74 68 65 0a 4d 44 35  omputing the.MD5
06c0: 20 68 61 73 68 3a 0a 3c 75 6c 3e 0a 3c 6c 69 3e   hash:.<ul>.<li>
06d0: 52 65 6d 6f 76 65 20 61 6c 6c 20 6c 65 61 64 69  Remove all leadi
06e0: 6e 67 20 61 6e 64 20 74 72 61 69 6c 69 6e 67 20  ng and trailing 
06f0: 77 68 69 74 65 73 70 61 63 65 2e 0a 3c 6c 69 3e  whitespace..<li>
0700: 43 6f 6e 76 65 72 74 20 61 6c 6c 20 69 6e 74 65  Convert all inte
0710: 72 6e 61 6c 20 77 68 69 74 65 73 70 61 63 65 20  rnal whitespace 
0720: 73 65 71 75 65 6e 63 65 73 20 74 6f 20 61 20 73  sequences to a s
0730: 69 6e 67 6c 65 20 73 70 61 63 65 20 63 68 61 72  ingle space char
0740: 61 63 74 65 72 2e 0a 3c 6c 69 3e 43 6f 6e 76 65  acter..<li>Conve
0750: 72 74 20 22 26 61 6d 70 3b 6c 74 3b 22 20 74 6f  rt "&amp;lt;" to
0760: 20 22 26 6c 74 3b 22 2c 20 22 26 61 6d 70 3b 67   "&lt;", "&amp;g
0770: 74 3b 22 20 74 6f 20 22 26 67 74 3b 22 2c 0a 20  t;" to "&gt;",. 
0780: 20 20 20 22 26 61 6d 70 3b 23 39 31 3b 22 20 74     "&amp;#91;" t
0790: 6f 20 22 26 23 39 31 3b 22 2c 20 22 26 61 6d 70  o "&#91;", "&amp
07a0: 3b 23 39 33 3b 22 20 74 6f 20 22 26 23 39 33 3b  ;#93;" to "&#93;
07b0: 22 2c 20 61 6e 64 0a 20 20 20 20 22 26 61 6d 70  ", and.    "&amp
07c0: 3b 61 6d 70 3b 22 20 74 6f 20 22 26 61 6d 70 3b  ;amp;" to "&amp;
07d0: 22 2e 0a 3c 2f 75 6c 3e 0a 3c 6c 69 3e 3c 70 3e  "..</ul>.<li><p>
07e0: 46 6f 72 20 47 49 46 20 73 79 6e 74 61 78 20 64  For GIF syntax d
07f0: 69 61 67 72 61 6d 20 72 65 71 75 69 72 65 6d 65  iagram requireme
0800: 6e 74 73 2c 20 74 68 65 20 4d 44 35 20 68 61 73  nts, the MD5 has
0810: 68 20 69 73 20 63 6f 6d 70 75 74 65 64 20 6f 76  h is computed ov
0820: 65 72 0a 74 68 65 20 65 6e 74 69 72 65 20 63 6f  er.the entire co
0830: 6e 74 65 6e 74 20 6f 66 20 74 68 65 20 47 49 46  ntent of the GIF
0840: 20 69 6d 61 67 65 20 66 69 6c 65 2e 0a 0a 3c 6c   image file...<l
0850: 69 3e 3c 70 3e 54 68 65 20 4d 44 35 20 68 61 73  i><p>The MD5 has
0860: 68 20 69 73 20 65 78 70 72 65 73 73 65 64 20 69  h is expressed i
0870: 6e 20 68 75 6d 61 6e 2d 72 65 61 64 61 62 6c 65  n human-readable
0880: 20 66 6f 72 6d 20 61 73 20 66 6f 6c 6c 6f 77 73   form as follows
0890: 3a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 62  :.<blockquote><b
08a0: 3e 52 2d 3c 2f 62 3e 3c 69 3e 4e 3c 2f 69 3e 3c  >R-</b><i>N</i><
08b0: 62 3e 2d 3c 2f 62 3e 3c 69 3e 4e 3c 2f 69 3e 3c  b>-</b><i>N</i><
08c0: 62 3e 2d 3c 2f 62 3e 3c 69 3e 4e 3c 2f 69 3e 3c  b>-</b><i>N</i><
08d0: 62 3e 2d 3c 2f 62 3e 3c 69 3e 4e 3c 2f 69 3e 3c  b>-</b><i>N</i><
08e0: 62 3e 2d 3c 2f 62 3e 3c 69 3e 4e 3c 2f 69 3e 3c  b>-</b><i>N</i><
08f0: 62 3e 2d 3c 2f 62 3e 3c 69 3e 4e 3c 2f 69 3e 3c  b>-</b><i>N</i><
0900: 62 3e 2d 3c 2f 62 3e 3c 69 3e 4e 3c 2f 69 3e 3c  b>-</b><i>N</i><
0910: 62 3e 2d 3c 2f 62 3e 3c 69 3e 4e 3c 2f 69 3e 3c  b>-</b><i>N</i><
0920: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 57 68 65  /blockquote>.Whe
0930: 72 65 20 65 61 63 68 20 3c 69 3e 4e 3c 2f 69 3e  re each <i>N</i>
0940: 20 69 73 20 61 20 35 2d 64 69 67 69 74 20 6e 75   is a 5-digit nu
0950: 6d 62 65 72 20 62 65 74 77 65 65 6e 20 30 30 30  mber between 000
0960: 30 30 20 61 6e 64 20 36 35 35 33 36 20 74 68 61  00 and 65536 tha
0970: 74 0a 72 65 70 72 65 73 65 6e 74 73 20 31 36 20  t.represents 16 
0980: 62 69 74 73 20 6f 66 20 74 68 65 20 31 32 38 2d  bits of the 128-
0990: 62 69 74 20 4d 44 35 20 68 61 73 68 2e 0a 0a 3c  bit MD5 hash...<
09a0: 6c 69 3e 3c 70 3e 52 65 71 75 69 72 65 6d 65 6e  li><p>Requiremen
09b0: 74 73 20 6d 61 79 20 62 65 20 72 65 66 65 72 65  ts may be refere
09c0: 6e 63 65 64 20 62 79 20 61 6e 79 20 75 6e 69 71  nced by any uniq
09d0: 75 65 20 70 72 65 66 69 78 20 6f 66 20 74 68 65  ue prefix of the
09e0: 69 72 0a 63 6f 6d 70 6c 65 74 65 20 72 65 71 75  ir.complete requ
09f0: 69 72 65 6d 65 6e 74 20 6e 75 6d 62 65 72 2e 0a  irement number..
0a00: 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 3c 6c 69 3e 0a 49  </ol>..<p><li>.I
0a10: 6e 64 69 76 69 64 75 61 6c 20 74 65 78 74 20 72  ndividual text r
0a20: 65 71 75 69 72 65 6d 65 6e 74 73 20 61 72 65 20  equirements are 
0a30: 69 64 65 6e 74 69 66 69 65 64 20 69 6e 20 74 68  identified in th
0a40: 65 0a 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20  e.documentation 
0a50: 61 73 20 74 65 78 74 20 62 65 74 77 65 65 6e 20  as text between 
0a60: 22 3c 62 3e 26 23 39 34 3b 3c 2f 62 3e 22 20 61  "<b>&#94;</b>" a
0a70: 6e 64 20 74 68 65 20 66 69 72 73 74 20 70 65 72  nd the first per
0a80: 69 6f 64 20 6f 72 0a 66 75 6c 6c 2d 73 74 6f 70  iod or.full-stop
0a90: 20 28 22 3c 62 3e 2e 3c 2f 62 3e 22 29 0a 6f 72   ("<b>.</b>").or
0aa0: 20 61 73 20 74 65 78 74 20 62 65 74 77 65 65 6e   as text between
0ab0: 20 22 3c 62 3e 26 23 39 34 3b 28 3c 2f 62 3e 22   "<b>&#94;(</b>"
0ac0: 20 61 6e 64 20 22 3c 62 3e 29 26 23 39 34 3b 3c   and "<b>)&#94;<
0ad0: 2f 62 3e 22 2e 0a 3c 6f 6c 20 74 79 70 65 3d 22  /b>"..<ol type="
0ae0: 61 22 3e 0a 3c 6c 69 3e 3c 70 3e 0a 54 65 78 74  a">.<li><p>.Text
0af0: 20 72 65 71 75 69 72 65 6d 65 6e 74 73 20 61 72   requirements ar
0b00: 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  e automatically 
0b10: 65 78 74 72 61 63 74 65 64 20 66 72 6f 6d 20 74  extracted from t
0b20: 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  he documentation
0b30: 20 62 79 20 73 63 72 69 70 74 73 0a 74 68 61 74   by scripts.that
0b40: 20 72 75 6e 20 61 73 20 70 61 72 74 20 6f 66 20   run as part of 
0b50: 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  the documentatio
0b60: 6e 20 62 75 69 6c 64 20 70 72 6f 63 65 73 73 2e  n build process.
0b70: 0a 0a 3c 6c 69 3e 3c 70 3e 0a 41 66 74 65 72 20  ..<li><p>.After 
0b80: 72 65 71 75 69 72 65 6d 65 6e 74 73 20 68 61 76  requirements hav
0b90: 65 20 62 65 65 6e 20 65 78 74 72 61 63 74 65 64  e been extracted
0ba0: 20 66 72 6f 6d 20 74 68 65 20 64 6f 63 75 6d 65   from the docume
0bb0: 6e 74 61 74 69 6f 6e 2c 20 74 68 65 20 72 65 71  ntation, the req
0bc0: 75 69 72 65 6d 65 6e 74 0a 6d 61 72 6b 65 72 73  uirement.markers
0bd0: 20 22 3c 62 3e 26 23 39 34 3b 3c 2f 62 3e 22 2c   "<b>&#94;</b>",
0be0: 20 22 3c 62 3e 26 23 39 34 3b 28 3c 2f 62 3e 22   "<b>&#94;(</b>"
0bf0: 2c 20 61 6e 64 20 22 3c 62 3e 29 26 23 39 34 3b  , and "<b>)&#94;
0c00: 3c 2f 62 3e 22 20 61 72 65 20 72 65 6d 6f 76 65  </b>" are remove
0c10: 64 0a 66 72 6f 6d 20 74 68 65 20 64 6f 63 75 6d  d.from the docum
0c20: 65 6e 74 61 74 69 6f 6e 20 74 65 78 74 2e 20 20  entation text.  
0c30: 54 68 69 73 20 69 73 20 64 6f 6e 65 20 61 75 74  This is done aut
0c40: 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20 74 68  omatically by th
0c50: 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 0a  e documentation.
0c60: 62 75 69 6c 64 20 73 63 72 69 70 74 73 2e 0a 0a  build scripts...
0c70: 3c 6c 69 3e 3c 70 3e 0a 54 6f 20 61 76 6f 69 64  <li><p>.To avoid
0c80: 20 63 6f 6c 6c 69 73 69 6f 6e 73 20 77 69 74 68   collisions with
0c90: 20 74 68 65 73 65 20 72 65 71 75 69 72 65 6d 65   these requireme
0ca0: 6e 74 73 20 64 65 6c 69 6d 69 74 65 72 73 2c 20  nts delimiters, 
0cb0: 22 26 23 39 34 3b 22 20 63 68 61 72 61 63 74 65  "&#94;" characte
0cc0: 72 73 20 74 68 61 74 0a 61 72 65 20 70 61 72 74  rs that.are part
0cd0: 20 6f 66 20 74 68 65 20 74 65 78 74 20 6f 66 20   of the text of 
0ce0: 61 20 72 65 71 75 69 72 65 6d 65 6e 74 20 6f 72  a requirement or
0cf0: 20 74 68 61 74 20 61 72 65 20 6f 74 68 65 72 77   that are otherw
0d00: 69 73 65 20 66 6f 75 6e 64 20 69 6e 20 74 68 65  ise found in the
0d10: 20 0a 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2c   .documentation,
0d20: 20 73 68 6f 75 6c 64 20 62 65 20 63 6f 64 65 64   should be coded
0d30: 20 61 73 20 22 26 61 6d 70 3b 23 39 34 3b 22 2e   as "&amp;#94;".
0d40: 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 3c 6c 69 3e 0a  .</ol>..<p><li>.
0d50: 49 6e 64 69 76 69 64 75 61 6c 20 47 49 46 20 73  Individual GIF s
0d60: 79 6e 74 61 78 20 64 69 61 67 72 61 6d 20 72 65  yntax diagram re
0d70: 71 75 69 72 65 6d 65 6e 74 73 20 61 72 65 20 69  quirements are i
0d80: 64 65 6e 74 69 66 69 65 64 20 69 6e 20 74 68 65  dentified in the
0d90: 0a 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 61  .documentation a
0da0: 73 20 48 54 4d 4c 20 69 6d 61 67 65 20 6d 61 72  s HTML image mar
0db0: 6b 75 70 20 6f 66 20 74 68 65 0a 66 6f 72 6d 0a  kup of the.form.
0dc0: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 62 3e 0a  <blockquote><b>.
0dd0: 26 6c 74 3b 69 6d 67 20 61 6c 74 3d 22 73 79 6e  &lt;img alt="syn
0de0: 74 61 78 20 64 69 61 67 72 61 6d 20 3c 2f 62 3e  tax diagram </b>
0df0: 3c 69 3e 4e 41 4d 45 3c 2f 69 3e 3c 62 3e 22 20  <i>NAME</i><b>" 
0e00: 73 72 63 3d 22 3c 2f 62 3e 3c 69 3e 46 49 4c 45  src="</b><i>FILE
0e10: 3c 2f 69 3e 3c 62 3e 22 26 67 74 3b 0a 3c 2f 62  </i><b>"&gt;.</b
0e20: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 57  ></blockquote>.W
0e30: 68 65 72 65 20 3c 69 3e 4e 41 4d 45 3c 2f 69 3e  here <i>NAME</i>
0e40: 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   is the name of 
0e50: 74 68 65 20 73 79 6e 74 61 78 20 64 69 61 67 72  the syntax diagr
0e60: 61 6d 20 61 6e 64 20 3c 69 3e 46 49 4c 45 3c 2f  am and <i>FILE</
0e70: 69 3e 20 69 73 0a 74 68 65 20 6e 61 6d 65 20 6f  i> is.the name o
0e80: 66 20 74 68 65 20 47 49 46 20 66 69 6c 65 20 63  f the GIF file c
0e90: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 73 79  ontaining the sy
0ea0: 6e 74 61 78 20 64 69 61 67 72 61 6d 2e 0a 3c 6f  ntax diagram..<o
0eb0: 6c 20 74 79 70 65 3d 22 61 22 3e 0a 3c 6c 69 3e  l type="a">.<li>
0ec0: 3c 70 3e 0a 53 79 6e 74 61 78 20 64 69 61 67 72  <p>.Syntax diagr
0ed0: 61 6d 20 72 65 71 75 69 72 65 6d 65 6e 74 73 20  am requirements 
0ee0: 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  are automaticall
0ef0: 79 20 65 78 74 72 61 63 74 65 64 20 66 72 6f 6d  y extracted from
0f00: 20 74 68 65 20 0a 64 6f 63 75 6d 65 6e 74 61 74   the .documentat
0f10: 69 6f 6e 20 62 79 20 73 63 72 69 70 74 73 0a 74  ion by scripts.t
0f20: 68 61 74 20 72 75 6e 20 61 73 20 70 61 72 74 20  hat run as part 
0f30: 6f 66 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61  of the documenta
0f40: 74 69 6f 6e 20 62 75 69 6c 64 20 70 72 6f 63 65  tion build proce
0f50: 73 73 2e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 54 68 65  ss...<li><p>.The
0f60: 20 47 49 46 20 66 69 6c 65 20 69 73 20 74 68 65   GIF file is the
0f70: 20 72 65 71 75 69 72 65 6d 65 6e 74 2c 20 6e 6f   requirement, no
0f80: 74 20 74 68 65 20 48 54 4d 4c 20 6d 61 72 6b 75  t the HTML marku
0f90: 70 20 74 68 61 74 20 72 65 66 65 72 65 6e 63 65  p that reference
0fa0: 73 20 74 68 65 0a 47 49 46 20 66 69 6c 65 20 6e  s the.GIF file n
0fb0: 6f 72 20 74 68 65 20 64 69 61 67 72 61 6d 20 6e  or the diagram n
0fc0: 61 6d 65 2e 0a 3c 2f 6f 6c 3e 0a 0a 3c 6c 69 3e  ame..</ol>..<li>
0fd0: 3c 70 3e 0a 54 68 65 20 64 6f 63 75 6d 65 6e 74  <p>.The document
0fe0: 61 74 69 6f 6e 20 74 68 61 74 20 63 6f 6e 74 61  ation that conta
0ff0: 69 6e 73 20 74 68 65 0a 72 65 71 75 69 72 65 6d  ins the.requirem
1000: 65 6e 74 20 74 65 78 74 20 69 73 20 67 65 6e 65  ent text is gene
1010: 72 61 74 65 64 20 62 79 20 73 63 72 69 70 74 73  rated by scripts
1020: 20 74 68 61 74 20 75 73 65 20 61 73 20 69 6e 70   that use as inp
1030: 75 74 20 66 69 6c 65 73 0a 66 72 6f 6d 20 62 6f  ut files.from bo
1040: 74 68 20 66 69 6c 65 73 20 69 6e 20 74 68 65 20  th files in the 
1050: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
1060: 73 73 69 6c 20 72 65 70 6f 73 69 74 6f 72 79 20  ssil repository 
1070: 61 6e 64 20 0a 63 6f 6d 6d 65 6e 74 73 20 69 6e  and .comments in
1080: 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65   the source code
1090: 2e 0a 0a 3c 2f 75 6c 3e 0a 0a 0a 3c 68 32 3e 32  ...</ul>...<h2>2
10a0: 2e 30 20 4c 69 73 74 20 4f 66 20 52 65 71 75 69  .0 List Of Requi
10b0: 72 65 6d 65 6e 74 73 3c 2f 68 32 3e 0a 0a 3c 64  rements</h2>..<d
10c0: 6c 3e 0a 3c 74 63 6c 3e 0a 64 62 20 65 76 61 6c  l>.<tcl>.db eval
10d0: 20 7b 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20   {SELECT * FROM 
10e0: 72 65 71 75 69 72 65 6d 65 6e 74 20 4f 52 44 45  requirement ORDE
10f0: 52 20 42 59 20 72 65 71 6e 6f 7d 20 7b 0a 20 20  R BY reqno} {.  
1100: 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5b 5e 61  regsub -all {[^a
1110: 2d 7a 41 2d 5a 30 2d 39 5d 7d 20 5b 66 69 6c 65  -zA-Z0-9]} [file
1120: 20 74 61 69 6c 20 5b 66 69 6c 65 20 72 6f 6f 74   tail [file root
1130: 20 24 73 72 63 66 69 6c 65 5d 5d 20 5f 20 64 6f   $srcfile]] _ do
1140: 63 69 64 0a 20 20 73 65 74 20 64 75 72 6c 20 22  cid.  set durl "
1150: 6d 61 74 72 69 78 2f 6d 61 74 72 69 78 5f 64 24  matrix/matrix_d$
1160: 64 6f 63 69 64 2e 68 74 6d 6c 23 24 72 65 71 6e  docid.html#$reqn
1170: 6f 22 0a 20 20 73 65 74 20 73 75 72 6c 20 22 6d  o".  set surl "m
1180: 61 74 72 69 78 2f 24 73 72 63 66 69 6c 65 23 24  atrix/$srcfile#$
1190: 72 65 71 6e 6f 22 0a 20 20 68 64 5f 70 75 74 73  reqno".  hd_puts
11a0: 20 22 3c 64 74 3e 3c 62 3e 24 72 65 71 6e 6f 3c   "<dt><b>$reqno<
11b0: 2f 62 3e 3c 2f 64 74 3e 5c 6e 22 0a 20 20 69 66  /b></dt>\n".  if
11c0: 20 7b 24 72 65 71 69 6d 61 67 65 7d 20 7b 0a 20   {$reqimage} {. 
11d0: 20 20 20 68 64 5f 70 75 74 73 20 22 3c 64 64 3e     hd_puts "<dd>
11e0: 3c 70 3e 24 6f 72 69 67 74 65 78 74 3c 62 72 3e  <p>$origtext<br>
11f0: 5c 6e 22 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20  \n".  } else {. 
1200: 20 20 20 68 64 5f 70 75 74 73 20 22 3c 64 64 3e     hd_puts "<dd>
1210: 3c 70 3e 24 72 65 71 74 65 78 74 5c 6e 22 0a 20  <p>$reqtext\n". 
1220: 20 7d 0a 20 20 73 65 74 20 63 6b 20 5b 0a 20 20   }.  set ck [.  
1230: 20 20 64 62 20 65 76 61 6c 20 7b 53 45 4c 45 43    db eval {SELEC
1240: 54 20 44 49 53 54 49 4e 43 54 20 73 72 63 63 61  T DISTINCT srcca
1250: 74 20 7c 7c 20 27 2f 27 20 7c 7c 20 73 72 63 66  t || '/' || srcf
1260: 69 6c 65 20 46 52 4f 4d 20 65 76 69 64 65 6e 63  ile FROM evidenc
1270: 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 57  e.             W
1280: 48 45 52 45 20 72 65 71 6e 6f 3d 24 72 65 71 6e  HERE reqno=$reqn
1290: 6f 20 4f 52 44 45 52 20 42 59 20 31 7d 0a 20 20  o ORDER BY 1}.  
12a0: 5d 0a 20 20 68 64 5f 70 75 74 73 20 22 3c 69 3e  ].  hd_puts "<i>
12b0: 28 73 6f 75 72 63 65 3a 20 3c 61 20 68 72 65 66  (source: <a href
12c0: 3d 5c 22 24 73 72 63 66 69 6c 65 5c 22 3e 24 73  =\"$srcfile\">$s
12d0: 72 63 66 69 6c 65 3c 2f 61 3e 22 0a 20 20 69 66  rcfile</a>".  if
12e0: 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 63 6b 5d 3e   {[llength $ck]>
12f0: 30 7d 20 7b 0a 20 20 20 20 68 64 5f 70 75 74 73  0} {.    hd_puts
1300: 20 22 2c 20 63 68 65 63 6b 65 64 2d 62 79 3a 20   ", checked-by: 
1310: 5b 6a 6f 69 6e 20 24 63 6b 20 7b 2c 20 7d 5d 22  [join $ck {, }]"
1320: 0a 20 20 7d 0a 20 20 68 64 5f 70 75 74 73 20 22  .  }.  hd_puts "
1330: 2c 20 6d 61 74 72 69 78 3a 20 3c 61 20 68 72 65  , matrix: <a hre
1340: 66 3d 27 24 73 75 72 6c 27 3e 63 6f 6e 74 65 78  f='$surl'>contex
1350: 74 3c 2f 61 3e 22 0a 20 20 68 64 5f 70 75 74 73  t</a>".  hd_puts
1360: 20 22 2c 20 3c 61 20 68 72 65 66 3d 27 24 64 75   ", <a href='$du
1370: 72 6c 27 3e 64 65 74 61 69 6c 3c 2f 61 3e 29 3c  rl'>detail</a>)<
1380: 2f 69 3e 22 0a 20 20 68 64 5f 70 75 74 73 20 22  /i>".  hd_puts "
1390: 3c 2f 70 3e 3c 2f 64 64 3e 5c 6e 5c 6e 22 0a 7d  </p></dd>\n\n".}
13a0: 0a 3c 2f 74 63 6c 3e 0a 3c 2f 64 6c 3e 0a        .</tcl>.</dl>.