Documentation Source Text

Check-in [22726478ad]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Provide for alternative document titles using <alt-title>...</alt-title>. Have the document page come up with the first sublist (containing lists of other documents) open automatically.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 22726478ade668aedf9fbc4e6690d9142726131e
User & Date: drh 2016-09-22 18:03:29.635
Context
2016-09-23
11:32
Fix a LHS/RHS mixup in the rowvalue documentation. (check-in: db4e5cec36 user: drh tags: trunk)
2016-09-22
18:03
Provide for alternative document titles using <alt-title>...</alt-title>. Have the document page come up with the first sublist (containing lists of other documents) open automatically. (check-in: 22726478ad user: drh tags: trunk)
17:19
Fix typos in the opcode.html page. (check-in: bfe3dc203f user: drh tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to pages/capi3ref.in.
1

2
3
4
5
6
7
8
<title>C/C++ Interface For SQLite Version 3</title>

<tcl>
set in [open sqlite3.h] 
set title {}       ;# title of a section of interface definition
set type {}        ;# one of: constant datatype function
set body {}        ;# human-readable description
set code {}        ;# C code of the definition
set phase 0        ;# Phase used by the parser 

>







1
2
3
4
5
6
7
8
9
<title>C/C++ Interface For SQLite Version 3</title>
<alt-title>C/C++ API Reference</alt-title>
<tcl>
set in [open sqlite3.h] 
set title {}       ;# title of a section of interface definition
set type {}        ;# one of: constant datatype function
set body {}        ;# human-readable description
set code {}        ;# C code of the definition
set phase 0        ;# Phase used by the parser 
Changes to pages/compile.in.
1
2
3
4
5
6
7
8
<title>Compilation Options For SQLite</title>
<tcl>hd_keywords {compile-time options}</tcl>

<table_of_contents>

<h1>Overview</h1>

<p>
|







1
2
3
4
5
6
7
8
<title>Compile-time Options</title>
<tcl>hd_keywords {compile-time options}</tcl>

<table_of_contents>

<h1>Overview</h1>

<p>
Changes to pages/docs.in.
64
65
66
67
68
69
70




71
72

73
74

75

76
77
78
79
80
81
82
}
proc end_heading {} {
  global lDoc cnt prevHead
  if {$prevHead==""} return
  incr cnt
  hd_puts "<li><a onclick='showhide($cnt)'>"
  hd_puts "<span class='sh_mark' id='sh_mark_$cnt'>"




  hd_puts "&#x25ba;</span> $prevHead</a>\n"
  hd_putsnl "<ul id='sh_sub_$cnt'>"

  foreach {name url desc} $lDoc {
    hd_putsnl "<li><a class='sh_link' href='$url'>$name</a>"

    hd_putsnl "<span class='desktoponly'>&rarr; $desc</span>"

  }
  hd_putsnl </ul>
  set lDoc {}
}
source [file join $::DOC pages docsdata.tcl]
end_heading
</tcl>







>
>
>
>
|
|
>


>
|
>







64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
}
proc end_heading {} {
  global lDoc cnt prevHead
  if {$prevHead==""} return
  incr cnt
  hd_puts "<li><a onclick='showhide($cnt)'>"
  hd_puts "<span class='sh_mark' id='sh_mark_$cnt'>"
  if {$cnt==1} {
    hd_puts "&#x25bc;</span> $prevHead</a>\n"
    hd_putsnl "<ul id='sh_sub_$cnt' style='display:block;'>"
  } else {
    hd_puts "&#x25ba;</span> $prevHead</a>\n"
    hd_putsnl "<ul id='sh_sub_$cnt'>"
  }
  foreach {name url desc} $lDoc {
    hd_putsnl "<li><a class='sh_link' href='$url'>$name</a>"
    if {$desc!=""} {
      hd_putsnl "<span class='desktoponly'>&rarr; $desc</span>"
    }
  }
  hd_putsnl </ul>
  set lDoc {}
}
source [file join $::DOC pages docsdata.tcl]
end_heading
</tcl>
Changes to pages/docsdata.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
heading {Document Lists And Indexes} lists

doc {Alphabetical Listing Of Documents} {doclist.html} {
  A list of all titled pages on this website, sorted by title.
}
doc {Website Keyword Index} {keyword_index.html} {
  A cross-reference from keywords to various pages within this website.
}
doc {Permuted Title Index} {sitemap.html#pindex} {
  Also known as a "keyword in context" or "KWIC" index or as a concordance,
  this document is a listing of all other documents sorted by keyword.
}

###############################################################################
heading {Overview Documents} overview

doc {About SQLite} {about.html} {
  A high-level overview of what SQLite is and why you might be
  interested in using it.


|
<
<
|
<
<
|
<
<
<







1
2
3


4


5



6
7
8
9
10
11
12
heading {Document Lists And Indexes} lists

doc {Alphabetical Listing Of All Documents} {doclist.html} {}


doc {Website Keyword Index} {keyword_index.html} {}


doc {Permuted Title Index} {sitemap.html#pindex} {}




###############################################################################
heading {Overview Documents} overview

doc {About SQLite} {about.html} {
  A high-level overview of what SQLite is and why you might be
  interested in using it.
Changes to pages/sitemap.in.
18
19
20
21
22
23
24



25
26
27
28
29
30
31
<tcl>
db eval {
  DROP TABLE IF EXISTS px;
  CREATE TEMP TABLE px(title COLLATE nocase,link);
}
db eval {
  SELECT pagetitle, filename FROM page WHERE pagetitle!='No Title'



  UNION ALL
  SELECT pagetitle, url FROM expage
} {
  set nword [llength $pagetitle]
  db eval {INSERT INTO px VALUES($pagetitle, $filename)}
  for {set i 1} {$i<$nword} {incr i} {
    set firstpart [lrange $pagetitle 0 [expr {$i-1}]]







>
>
>







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<tcl>
db eval {
  DROP TABLE IF EXISTS px;
  CREATE TEMP TABLE px(title COLLATE nocase,link);
}
db eval {
  SELECT pagetitle, filename FROM page WHERE pagetitle!='No Title'
  UNION ALL
  SELECT alttitle, filename FROM alttitle, page
   WHERE alttitle.pageid=page.pageid
  UNION ALL
  SELECT pagetitle, url FROM expage
} {
  set nword [llength $pagetitle]
  db eval {INSERT INTO px VALUES($pagetitle, $filename)}
  for {set i 1} {$i<$nword} {incr i} {
    set firstpart [lrange $pagetitle 0 [expr {$i-1}]]
Changes to pages/versionnumbers.in.
1
2


3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<tcl>hd_keywords {version numbering conventions}</tcl>
<title>Version Numbers in SQLite</title>



<h1>SQLite Version Numbers</h1>

<p>
Beginning with [version 3.9.0] SQLite uses 
[http://semver.org|semantic versioning].
Prior to that time, SQLite employed a version identifier that
contained between two and four numbers.

<h2>The New Version Numbering System (After 2015-10-01)</h2>

<p>
All SQLite releases starting with 3.9.0 use a three-number
"[http://semver.org|semantic version]" of the form X.Y.Z.
The first number X is only increased when there is a change that
breaks backward compatibility.  The
current value for X is 3, and the SQLite developers plan to support


>
>




|




|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<tcl>hd_keywords {version numbering conventions}</tcl>
<title>Version Numbers in SQLite</title>

<fancy_format>

<h1>SQLite Version Numbers</h1>

<p>
Beginning with [version 3.9.0] ([dateof:3.9.0]) SQLite uses 
[http://semver.org|semantic versioning].
Prior to that time, SQLite employed a version identifier that
contained between two and four numbers.

<h2>The New Version Numbering System (After [dateof:3.9.0])</h2>

<p>
All SQLite releases starting with 3.9.0 use a three-number
"[http://semver.org|semantic version]" of the form X.Y.Z.
The first number X is only increased when there is a change that
breaks backward compatibility.  The
current value for X is 3, and the SQLite developers plan to support
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
numbering format used by for [SQLITE_VERSION_NUMBER] and
[sqlite3_libversion_number()] allows versions up to 3.999.999, which is
more than enough for the planned end-of-support date for SQLite
in 2050.  However, the current tarball naming conventions only
reserve two digits for the Y and so the naming format for downloads
will need to be revised in about 2030.

<h2>The Historical Numbering System (Before 2015-10-01)</h2>

<p>This historical version numbering system used a two-, three-,
or four-number version:  W.X, W.X.Y, or W.X.Y.Z.
W was the file format: 1 or 2 or 3.
X was the major version.
Y was the minor version.
Z was used only for patch releases to fix bugs.







|







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
numbering format used by for [SQLITE_VERSION_NUMBER] and
[sqlite3_libversion_number()] allows versions up to 3.999.999, which is
more than enough for the planned end-of-support date for SQLite
in 2050.  However, the current tarball naming conventions only
reserve two digits for the Y and so the naming format for downloads
will need to be revised in about 2030.

<h2>The Historical Numbering System (Before [dateof:3.9.0])</h2>

<p>This historical version numbering system used a two-, three-,
or four-number version:  W.X, W.X.Y, or W.X.Y.Z.
W was the file format: 1 or 2 or 3.
X was the major version.
Y was the minor version.
Z was used only for patch releases to fix bugs.
77
78
79
80
81
82
83







[partial indexes], and [indexes on expressions] are all examples of
"minor" changes.  Again, the distinction between "major" and "minor"
is subjective.

<p>
The patch level Z was historically only used for bug-fix releases
that changed only a small number of code lines.














>
>
>
>
>
>
>
79
80
81
82
83
84
85
86
87
88
89
90
91
92
[partial indexes], and [indexes on expressions] are all examples of
"minor" changes.  Again, the distinction between "major" and "minor"
is subjective.

<p>
The patch level Z was historically only used for bug-fix releases
that changed only a small number of code lines.

<h2>Version History</h2>

<ul>
<li>[chronology|Chronology]
<li>[release history|Change log]
</ul>
Changes to schema.tcl.
14
15
16
17
18
19
20
21







22
23
24
25
26
27
28
    pageid INTEGER PRIMARY KEY,           -- ID for internal use only
    pagetitle TEXT,                       -- Brief title of the page
    pageabstract TEXT,                    -- Verbose title of the page
    filename TEXT UNIQUE NOT NULL,        -- Name of the HTML file
    parent INTEGER REFERENCES page        -- Aggregate page.  Usually NULL
  );
  CREATE INDEX IF NOT EXISTS page_parent ON page(parent);
  







  
  /*
  ** Each page has one or more fragments.  The first fragment has
  ** a NULL name.  All other fragments are named.
  */
  CREATE TABLE IF NOT EXISTS fragment(
    fragid INTEGER PRIMARY KEY,               -- ID for internal use only







|
>
>
>
>
>
>
>







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
    pageid INTEGER PRIMARY KEY,           -- ID for internal use only
    pagetitle TEXT,                       -- Brief title of the page
    pageabstract TEXT,                    -- Verbose title of the page
    filename TEXT UNIQUE NOT NULL,        -- Name of the HTML file
    parent INTEGER REFERENCES page        -- Aggregate page.  Usually NULL
  );
  CREATE INDEX IF NOT EXISTS page_parent ON page(parent);

  /*
  ** Alternative titles for pages
  */
  CREATE TABLE IF NOT EXISTS alttitle(
    alttitle TEXT,                      -- Alternative title
    pageid INTEGER REFERENCES page      -- The page with the alternative title
  );
  
  /*
  ** Each page has one or more fragments.  The first fragment has
  ** a NULL name.  All other fragments are named.
  */
  CREATE TABLE IF NOT EXISTS fragment(
    fragid INTEGER PRIMARY KEY,               -- ID for internal use only
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
    srcclass TEXT,           -- source class:  tcl, th3, src
    srccat TEXT,             -- source category.  Ex: tcl, th3/cov1
    srcfile TEXT,            -- document from which evidence extracted
    srcline INTEGER,         -- line number in source document
    url TEXT,                -- URL & fragment of htmlized evidence
    UNIQUE(srcfile, srcline, srccat)
  );
  CREATE INDEX ev_reqno ON evidence(reqno);
  COMMIT;
}
db eval {
  ATTACH 'history.db' AS history;
  BEGIN;
  CREATE TABLE IF NOT EXISTS history.allreq(
    reqno TEXT PRIMARY KEY,  -- Ex: R-12345-67890-...







|







98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
    srcclass TEXT,           -- source class:  tcl, th3, src
    srccat TEXT,             -- source category.  Ex: tcl, th3/cov1
    srcfile TEXT,            -- document from which evidence extracted
    srcline INTEGER,         -- line number in source document
    url TEXT,                -- URL & fragment of htmlized evidence
    UNIQUE(srcfile, srcline, srccat)
  );
  CREATE INDEX IF NOT EXISTS ev_reqno ON evidence(reqno);
  COMMIT;
}
db eval {
  ATTACH 'history.db' AS history;
  BEGIN;
  CREATE TABLE IF NOT EXISTS history.allreq(
    reqno TEXT PRIMARY KEY,  -- Ex: R-12345-67890-...
Changes to wrap.tcl.
49
50
51
52
53
54
55

56
57
58
59
60
61
62
db eval {
  ATTACH 'history.db' AS history;
  BEGIN;
  DELETE FROM link;
  DELETE FROM keyword;
  DELETE FROM fragment;
  DELETE FROM page;

  DROP TABLE IF EXISTS expage;
}

# Load the syntax diagram linkage data
#
source $DOC/art/syntax/syntax_linkage.tcl








>







49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
db eval {
  ATTACH 'history.db' AS history;
  BEGIN;
  DELETE FROM link;
  DELETE FROM keyword;
  DELETE FROM fragment;
  DELETE FROM page;
  DELETE FROM alttitle;
  DROP TABLE IF EXISTS expage;
}

# Load the syntax diagram linkage data
#
source $DOC/art/syntax/syntax_linkage.tcl

769
770
771
772
773
774
775






776
777
778
779
780
781
782
  set outfile [file root [file tail $infile]].html
  hd_open_main $outfile
  db eval {
    INSERT INTO page(filename,pagetitle)
    VALUES($outfile,$title);
  }
  set h(pageid) [db last_insert_rowid]






  hd_header $title $infile
  regsub -all {<tcl>} $in "\175; eval \173" in
  regsub -all {</tcl>} $in "\175; hd_puts \173" in
  eval "hd_puts \173$in\175"
  cd $::HOMEDIR
  hd_close_main
}







>
>
>
>
>
>







770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
  set outfile [file root [file tail $infile]].html
  hd_open_main $outfile
  db eval {
    INSERT INTO page(filename,pagetitle)
    VALUES($outfile,$title);
  }
  set h(pageid) [db last_insert_rowid]
  while {[regexp {<alt-title>([^\n]*)</alt-title>} $in all alttitle]} {
    regsub {<alt-title>[^\n]*</alt-title>} $in {} in
    db eval {
      INSERT INTO alttitle(alttitle,pageid) VALUES($alttitle,$h(pageid));
    }
  }
  hd_header $title $infile
  regsub -all {<tcl>} $in "\175; eval \173" in
  regsub -all {</tcl>} $in "\175; hd_puts \173" in
  eval "hd_puts \173$in\175"
  cd $::HOMEDIR
  hd_close_main
}