⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mkapidoc.tcl

📁 sqlite-3.4.1,嵌入式数据库.是一个功能强大的开源数据库,给学习和研发以及小型公司的发展带来了全所未有的好处.
💻 TCL
字号:
#!/usr/bin/tclsh## Run this script redirecting the sqlite3.h file as standard# inputs and this script will generate API documentation.#set rcsid {$Id: mkapidoc.tcl,v 1.2 2007/06/20 09:09:48 danielk1977 Exp $}source common.tclheader {C/C++ Interface For SQLite Version 3}puts {<h2 class=pdf_section>C/C++ Interface For SQLite Version 3</h2>}# Scan standard input to extract the information we need# to build the documentation.#set title {}set type {}set body {}set code {}set phase 0set content {}while {![eof stdin]} {  set line [gets stdin]  if {$phase==0} {    # Looking for the CAPI3REF: keyword    if {[regexp {^\*\* CAPI3REF: +(.*)} $line all tx]} {      set title $tx      set phase 1    }  } elseif {$phase==1} {    if {[string range $line 0 1]=="**"} {      set lx [string trim [string range $line 3 end]]      if {[regexp {^CATEGORY: +([a-z]*)} $lx all cx]} {        set type $cx      } elseif {[regexp {^KEYWORDS: +(.*)} $lx all kx]} {        foreach k $kx {          set keyword($k) 1        }      } else {        append body $lx\n      }    } elseif {[string range $line 0 1]=="*/"} {      set phase 2    }  } elseif {$phase==2} {    if {$line==""} {      set kwlist [lsort [array names keyword]]      unset -nocomplain keyword      set key $type:$kwlist      lappend content [list $key $title $type $kwlist $body $code]      set title {}      set keywords {}      set type {}      set body {}      set code {}      set phase 0    } else {      if {[regexp {^#define (SQLITE_[A-Z0-9_]+)} $line all kx]} {        set type constant        set keyword($kx) 1      } elseif {[regexp {^typedef .* (sqlite[0-9a-z_]+);} $line all kx]} {        set type datatype        set keyword($kx) 1      } elseif {[regexp {^[a-z].*[ *](sqlite3_[a-z0-9_]+)\(} $line all kx]} {        set type function        set keyword($kx) 1      }      append code $line\n    }  }}# Output HTML that displays the given list in N columns#proc output_list {N lx} {  puts {<table width="100%" cellpadding="5"><tr>}  set len [llength $lx]  set n [expr {($len + $N - 1)/$N}]  for {set i 0} {$i<$N} {incr i} {    set start [expr {$i*$n}]    set end [expr {($i+1)*$n}]    puts {<td valign="top"><ul>}    for {set j $start} {$j<$end} {incr j} {      set entry [lindex $lx $j]      if {$entry!=""} {        foreach {link label} $entry break        puts "<li><a href=\"#$link\">$label</a></li>"      }    }    puts {</ul></td>}  }  puts {</tr></table>}}# Do a table of contents for objects#set objlist {}foreach c $content {  foreach {key title type keywords body code} $c break  if {$type!="datatype"} continue  set keywords [lsort $keywords]  set k [lindex $keywords 0]  foreach kw $keywords {    lappend objlist [list $k $kw]  }}puts {<h2>Datatypes:</h2>}output_list 3 $objlistputs {<hr>}# Do a table of contents for constants#set clist {}foreach c $content {  foreach {key title type keywords body code} $c break  if {$type!="constant"} continue  set keywords [lsort $keywords]  set k [lindex $keywords 0]  foreach kw $keywords {    lappend clist [list $k $kw]  }}puts {<h2>Constants:</h2>}set clist [lsort -index 1 $clist]output_list 3 $clistputs {<hr>}# Do a table of contents for functions#set funclist {}foreach c $content {  foreach {key title type keywords body code} $c break  if {$type!="function"} continue  set keywords [lsort $keywords]  set k [lindex $keywords 0]  foreach kw $keywords {    lappend funclist [list $k $kw]  }}puts {<h2>Functions:</h2>}set funclist [lsort -index 1 $funclist]output_list 3 $funclistputs {<hr>}# Resolve links#proc resolve_links {args} {  set tag [lindex $args 0]  regsub -all {[^a-zA-Z0-9_]} $tag {} tag  set x "<a href=\"#$tag\">"  if {[llength $args]>2} {    append x [lrange $args 2 end]</a>  } else {    append x [lindex $args 0]</a>  }  return $x}# Output all the records#foreach c [lsort $content] {  foreach {key title type keywords body code} $c break  foreach k $keywords {    puts "<a name=\"$k\"></a>"  }  puts "<h2>$title</h2>"  puts "<blockquote><pre>"  puts "$code"  puts "</pre></blockquote>"  regsub -all "\n\n+" $body {</p>\1<p>} body  regsub -all {\[} <p>$body</p> {[resolve_links } body  set body [subst -novar -noback $body]  puts "$body"  puts "<hr>"}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -