e8ca6eca5a56a897e5f4e328fdf01dbecfc49b9f
[asterisk/asterisk.git] / include / asterisk / doxyref.h
1 /*
2  * Asterisk -- An open source telephony toolkit.
3  *
4  * Copyright (C) 1999 - 2009, Digium, Inc.
5  *
6  * See http://www.asterisk.org for more information about
7  * the Asterisk project. Please do not directly contact
8  * any of the maintainers of this project for assistance;
9  * the project provides a web site, mailing lists and IRC
10  * channels for your use.
11  *
12  * This program is free software, distributed under the terms of
13  * the GNU General Public License Version 2. See the LICENSE file
14  * at the top of the source tree.
15  */
16
17 /*! 
18  * \file
19  *
20  * This is the main header file used for generating miscellaneous developer
21  * documentation using doxygen.  This also pulls in all of the documentation
22  * that is in include/asterisk/doxygen/.
23  */
24
25 /* 
26  * The following is for Doxygen Developer's documentation generated
27  * by running "make progdocs" with doxygen installed on your
28  * system.
29  */
30
31 /*! 
32  * \page DevDoc Asterisk Developer's Documentation - Appendices
33  *
34  * \section devpolicy Development and Release Policies
35  * \arg \ref CodeGuide : The must-read document for all developers
36  * \arg \ref CommitMessages : Information on formatting and special tags for commit messages
37  * \arg \ref ReleaseStatus : The current support level for various Asterisk releases
38  * \arg \ref ReleasePolicies : Asterisk Release and Commit Policies
39  * \arg \ref Reviewboard : Reviewboard Usage and Guidelines
40  * \arg \ref AstCREDITS : A Thank You to contributors (unfortunately out of date)
41  *
42  * \section apisandinterfaces Asterisk APIs and Interfaces
43  * \arg \ref AstAPI
44  * \arg \ref AstAPIChanges
45  * \arg \ref Def_Channel : What's a channel, anyway?
46  * \arg \ref channel_drivers : Existing channel drivers
47  * \arg \ref AstAMI : The Call management socket API
48  * \arg \ref AstARA : A generic data storage and retrieval API for Asterisk
49  * \arg \ref AstDUNDi : A way to find phone services dynamically by using the DUNDi protocol
50  * \arg \ref AJI_intro : The Asterisk Jabber Interface
51  * \arg \ref AstCDR
52  * \arg \ref AstVar
53  * \arg \ref AstVideo
54  * \arg \ref AstENUM : The IETF way to redirect from phone numbers to VoIP calls
55  * \arg \ref AstHTTP
56  * \arg \ref AstSpeech
57  *
58  * \section debugconfig Debugging and Configuration References
59  * \arg \ref AstREADME : General Administrator README file
60  * \arg \ref AstDebug : Hints on debugging
61  * \arg \ref extref 
62  * \arg \ref ConfigFiles
63  * \arg \ref SoundFiles included in the Asterisk distribution
64  *
65  * \section weblinks Web sites
66  * \arg \b Main:  Asterisk Developer's website http://www.asterisk.org/developers/
67  * \arg \b Bugs: The Issue Tracker http://bugs.digium.com
68  * \arg \b Lists: List Server http://lists.digium.com
69  * \arg \b Wiki: The Asterisk Wiki      http://www.voip-info.org
70  * \arg \b Docs: The Asterisk Documentation Project http://www.asteriskdocs.org
71  * \arg \b Digium: The Asterisk Company http://www.digium.com
72  */
73
74 /*! 
75  * \page CodeGuide Coding Guidelines
76  * \AsteriskTrunkWarning
77  * \section Coding Guidelines
78  * This file is in the /doc directory in your Asterisk source tree.
79  * Make sure to stay up to date with the latest guidelines.
80  * \verbinclude CODING-GUIDELINES
81  */
82
83 /*! 
84  * \page AstAPI Asterisk API
85  * \section Asteriskapi Asterisk API
86  * Some generic documents on the Asterisk architecture
87  *
88  * \arg \ref AstThreadStorage
89  * \arg \ref DataStores
90  * \arg \ref AstExtState
91  *
92  * \subsection model_txt Generic Model
93  * \verbinclude model.txt
94  * \subsection channel_txt Channels
95  * \arg See \ref Def_Channel
96  */
97
98 /*! \page AstAPIChanges Asterisk API Changes
99  *  \section Changes161 Version 1.6.1
100  *  \li ast_install_vm_functions()
101  *  \li vmwi_generate()
102  *  \li ast_channel_datastore_alloc()
103  *  \li ast_channel_datastore_free()
104  *  \li ast_channel_cmpwhentohangup()
105  *  \li ast_channel_setwhentohangup()
106  *  \li ast_settimeout()
107  *  \li ast_datastore_alloc()
108  *  \li ast_datastore_free()
109  *  \li ast_device_state_changed()
110  *  \li ast_device_state_changed_literal()
111  *  \li ast_dnsmgr_get()
112  *  \li ast_dnsmgr_lookup()
113  *  \li ast_dsp_set_digitmode()
114  *  \li ast_get_txt()
115  *  \li ast_event_unsubscribe()
116  *  \li localized_context_find_or_create()
117  *  \li localized_merge_contexts_and_delete()
118  *  \li ast_console_puts_mutable()
119  *  \li ast_rtp_get_quality()
120  *  \li ast_tcptls_client_start()
121  *  \li ast_tcptls_server_start()
122  *  \li ast_tcptls_server_stop()
123  */
124
125 /*! 
126  * \page AstDebug Debugging
127  * \section debug Debugging
128  * \verbinclude backtrace.txt
129  */
130
131 /*!
132  * \page AstSpeech The Generic Speech Recognition API
133  * \section debug The Generic Speech Recognition API
134  * \verbinclude speechrec.txt
135  */
136
137 /*! 
138  * \page DataStores Channel Data Stores
139  * \section debug Channel Data Stores
140  * \verbinclude datastores.txt
141  */
142
143 /*! 
144  * \page AstAMI AMI - The Manager Interface
145  * \section ami AMI - The manager Interface
146  * \arg \link Config_ami Configuration file \endlink
147  * \arg \ref manager.c
148  * \verbinclude manager.txt
149  */
150
151 /*!
152  * \page AstARA ARA - The Asterisk Realtime Interface
153  * \section realtime ARA - a generic API to storage and retrieval
154  * Implemented in \ref config.c 
155  * Implemented in \ref pbx_realtime.c 
156  * \verbinclude realtime.txt
157  * \verbinclude extconfig.txt
158  */
159
160 /*! 
161  * \page AstDUNDi DUNDi
162  *
163  * DUNDi is a peer-to-peer system for locating Internet gateways to telephony 
164  * services. Unlike traditional centralized services (such as the remarkably 
165  * simple and concise ENUM standard), DUNDi is fully-distributed with no 
166  * centralized authority whatsoever.
167  *
168  * DUNDi is not itself a Voice-over IP signaling or media protocol. Instead, 
169  * it publishes routes which are in turn accessed via industry standard 
170  * protocols such as IAX, SIP and H.323. 
171  *
172  * \par References
173  * \arg DUNDi is documented at http://www.dundi.com
174  * \arg Implemented in \ref pbx_dundi.c and \ref dundi-parser.c
175  * \arg Configuration in \link Config_dun dundi.conf \endlink
176  */
177
178 /*! 
179  * \page AstCDR CDR - Call Data Records and billing
180  * \section cdr Call Data Records
181  * \par See also
182  * \arg \ref cdr.c
183  * \arg \ref cdr_drivers
184  * \arg \ref Config_cdr CDR configuration files
185  *
186  * \verbinclude cdrdriver.txt
187  */
188
189 /*! 
190  * \page AstREADME README
191  * \verbinclude README
192  */
193  
194 /*! 
195  * \page AstCREDITS CREDITS
196  * \verbinclude CREDITS
197  */
198
199 /*! 
200  * \page AstVideo Video support in Asterisk
201  * \section sectAstVideo Video support in Asterisk
202  * \verbinclude video.txt
203  */
204
205 /*! 
206  * \page AstVar Globally predefined channel variables
207  * \section globchan Globally predefined channel variables
208  *
209  * More and more of these variables are being replaced by dialplan functions.
210  * Some still exist though and some that does still exist needs to move to
211  * dialplan functions.
212  *
213  * See also
214  * - \ref pbx_retrieve_variable()
215  * - \ref AstChanVar
216  *
217  *  \verbinclude channelvariables.tex
218  */
219
220 /*! 
221  * \page AstChanVar Asterisk Dialplan Variables
222  *      Asterisk Dialplan variables are divided into three groups:
223  *      - Predefined global variables, handled by the PBX core
224  *      - Global variables, that exist for the duration of the pbx execution
225  *      - Channel variables, that exist during a channel
226  *
227  * Global variables are reachable in all channels, all of the time.
228  * Channel variables are only reachable within the channel.
229  *
230  * For more information on the predefined variables, see \ref AstVar
231  * 
232  * Global and Channel variables:
233  * - Names are Case insensitive
234  * - Names that start with a character, but are alphanumeric
235  * - Global variables are defined and reached with the GLOBAL() dialplan function
236  *   and the set application, like
237  *
238  *      exten => 1234,1,set(GLOBAL(myvariable)=tomteluva)
239  *
240  *      - \ref func_global.c
241  *
242  * - Channel variables are defined with the set() dialplan application
243  *
244  *      exten => 1234,1,set(xmasattribute=tomtegröt)
245  *
246  * - Some channels also supports setting channel variables with the \b setvar=
247  *   configuraiton option for a device or line.
248  *
249  * \section AstChanVar_globalvars Global Variables
250  * Global variables can also be set in the [globals] section of extensions.conf. The
251  * setting \b clearglobalvars in extensions.conf [general] section affects whether
252  * or not the global variables defined in \b globals are reset at dialplan reload.
253  * 
254  * There are CLI commands to change and read global variables. This can be handy
255  * to reset counters at midnight from an external script.
256  *
257  * \section AstChanVar_devnotes Developer notes
258  * Variable handling is managed within \ref pbx.c
259  * You need to include pbx.h to reach these functions.
260  *      - \ref pbx_builtin_setvar_helper()
261  *      - \ref pbx_builtin_getvar_helper()
262  *
263  * The variables is a linked list stored in the channel data structure
264  * with the list starting at varshead in struct ast_channel
265  */
266
267 /*! 
268  * \page AstENUM ENUM
269  * \section enumreadme ENUM
270  * \arg Configuration: \ref Config_enum
271  * \arg \ref enum.c
272  * \arg \ref func_enum.c
273  *
274  * \verbinclude enum.txt
275  */
276
277 /*! 
278  * \page ConfigFiles Configuration files
279  * \section config Main configuration files
280  * \arg \link Config_ast asterisk.conf - the main configuration file \endlink
281  * \arg \link Config_ext extensions.conf - The Dial Plan \endlink
282  * \arg \link Config_mod modules.conf - which modules to load and not to load \endlink
283  * \arg \link Config_fea features.conf - call features (transfer, parking, etc) \endlink
284  * \section chanconf Channel configuration files
285  * \arg \link Config_iax IAX2 configuration  \endlink
286  * \arg \link Config_sip SIP configuration  \endlink
287  * \arg \link Config_mgcp MGCP configuration  \endlink
288  * \arg \link Config_rtp RTP configuration  \endlink
289  * \arg \link Config_dahdi DAHDI configuration  \endlink
290  * \arg \link Config_oss OSS (sound card) configuration  \endlink
291  * \arg \link Config_alsa ALSA (sound card) configuration  \endlink
292  * \arg \link Config_agent Agent (proxy channel) configuration  \endlink
293  * \arg \link Config_misdn MISDN Experimental ISDN BRI channel configuration  \endlink
294  * \arg \link Config_h323 H.323 configuration  \endlink
295  * \section appconf Application configuration files
296  * \arg \link Config_mm Meetme (conference bridge) configuration  \endlink
297  * \arg \link Config_qu Queue system configuration  \endlink
298  * \arg \link Config_vm Voicemail configuration  \endlink
299  * \arg \link Config_followme Followme configuration  \endlink
300  * \section cdrconf CDR configuration files
301  * \arg \link Config_cdr CDR configuration  \endlink
302  * \arg \link cdr_custom Custom CDR driver configuration \endlink
303  * \arg \link cdr_ami Manager CDR driver configuration \endlink
304  * \arg \link cdr_odbc ODBC CDR driver configuration \endlink
305  * \arg \link cdr_pgsql PostgreSQL CDR driver configuration \endlink
306  * \arg \link cdr_sqlite SQLite CDR driver configuration \endlink
307  * \arg \link cdr_tds FreeTDS CDR driver configuration (Microsoft SQL Server) \endlink
308  * \section miscconf Miscellenaous configuration files
309  * \arg \link Config_adsi ADSI configuration  \endlink
310  * \arg \link Config_ami AMI - Manager configuration  \endlink
311  * \arg \link Config_ara Realtime configuration  \endlink
312  * \arg \link Config_codec Codec configuration  \endlink
313  * \arg \link Config_dun DUNDi configuration  \endlink
314  * \arg \link Config_enum ENUM configuration  \endlink
315  * \arg \link Config_moh Music on Hold configuration  \endlink
316  * \arg \link Config_vm Voicemail configuration  \endlink
317  * \arg \link res_config_sqlite SQLite Resource driver configuration \endlink
318  */
319
320 /*! 
321  * \page Config_ast Asterisk.conf
322  * \verbinclude asterisk-conf.txt
323  */
324
325 /*! 
326  * \page Config_mod Modules configuration
327  * All res_ resource modules are loaded with globals on, which means
328  * that non-static functions are callable from other modules.
329  *
330  * If you want your non res_* module to export functions to other modules
331  * you have to include it in the [global] section.
332  * \verbinclude modules.conf.sample
333  */
334
335 /*! 
336  * \page Config_fea Call features configuration
337  * \par See also
338  * \arg \ref res_features.c : Call feature implementation
339  * \section featconf features.conf
340  * \verbinclude features.conf.sample
341  */
342
343 /*! 
344  * \page Config_followme Followme: An application for simple follow-me calls
345  * \section followmeconf Followme.conf
346  * - See app_followme.c
347  * \verbinclude followme.conf.sample
348  */
349
350 /*! 
351  * \page Config_ext Extensions.conf - the Dial Plan
352  * \section dialplan Extensions.conf 
353  * \verbinclude extensions.conf.sample
354  */
355
356 /*! 
357  * \page Config_iax IAX2 configuration
358  * IAX2 is implemented in \ref chan_iax2.c
359  * \arg \link Config_iax iax.conf Configuration file example \endlink
360  * \section iaxreadme IAX readme file
361  * \verbinclude iax.txt
362  * \section Config_iax IAX Configuration example
363  * \verbinclude iax.conf.sample
364  * \section iaxjitter IAX Jitterbuffer information
365  * \verbinclude jitterbuffer.txt
366  */
367
368 /*! 
369  * \page Config_iax IAX configuration
370  * \arg Implemented in \ref chan_iax2.c
371  * \section iaxconf iax.conf
372  * \verbinclude iax.conf.sample
373  */
374
375 /*! 
376  * \page Config_sip SIP configuration
377  * Also see \ref Config_rtp RTP configuration
378  * \arg Implemented in \ref chan_sip.c
379  * \section sipconf sip.conf
380  * \verbinclude sip.conf.sample
381  *
382  * \arg \b Back \ref chanconf
383  */
384
385 /*! 
386  * \page Config_mgcp MGCP configuration
387  * Also see \ref Config_rtp RTP configuration
388  * \arg Implemented in \ref chan_mgcp.c
389  * \section mgcpconf mgcp.conf
390  * \verbinclude mgcp.conf.sample
391  */
392
393 /*! 
394  * \page README_misdn MISDN documentation
395  * \arg See \ref Config_misdn
396  * \section mISDN configuration
397  * \verbinclude misdn.txt
398  */
399
400 /*! 
401  * \page Config_misdn MISDN configuration
402  * \arg Implemented in \ref chan_misdn.c
403  * \arg \ref README_misdn
404  * \arg See the mISDN home page: http://www.isdn4linux.de/mISDN/
405  * \section misdnconf misdn.conf
406  * \verbinclude misdn.conf.sample
407  */
408
409 /*! 
410  * \page Config_vm VoiceMail configuration
411  * \section vmconf voicemail.conf
412  * \arg Implemented in \ref app_voicemail.c
413  * \verbinclude voicemail.conf.sample
414  */
415
416 /*! 
417  * \page Config_dahdi DAHDI configuration
418  * \section dahdiconf dahdi.conf
419  * \arg Implemented in \ref chan_dahdi.c
420  * \verbinclude dahdi.conf.sample
421  */
422
423 /*! 
424  * \page Config_h323 H.323 channel driver information
425  * This is the configuration of the H.323 channel driver within the Asterisk
426  * distribution. There's another one, called OH323, in asterisk-addons
427  * \arg Implemented in \ref chan_h323.c
428  * \section h323conf h323.conf
429  * \ref chan_h323.c
430  */
431
432 /*! 
433  * \page Config_oss OSS configuration
434  * \section ossconf oss.conf
435  * \arg Implemented in \ref chan_oss.c
436  * \verbinclude oss.conf.sample
437  */
438
439 /*! 
440  * \page Config_alsa ALSA configuration
441  * \section alsaconf alsa.conf
442  * \arg Implemented in \ref chan_alsa.c
443  * \verbinclude alsa.conf.sample
444  */
445
446 /*! 
447  * \page Config_agent Agent configuration
448  * \section agentconf agents.conf
449  * The agent channel is a proxy channel for queues
450  * \arg Implemented in \ref chan_agent.c
451  * \verbinclude agents.conf.sample
452  */
453
454 /*! 
455  * \page Config_rtp RTP configuration
456  * \arg Implemented in \ref rtp.c
457  * Used in \ref chan_sip.c and \ref chan_mgcp.c (and various H.323 channels)
458  * \section rtpconf rtp.conf
459  * \verbinclude rtp.conf.sample
460  */
461
462 /*! 
463  * \page Config_dun DUNDi Configuration
464  * \arg See also \ref AstDUNDi
465  * \section dundiconf dundi.conf
466  * \verbinclude dundi.conf.sample
467  */
468
469 /*! 
470  * \page Config_enum ENUM Configuration
471  * \section enumconf enum.conf
472  * \arg See also \ref enumreadme
473  * \arg Implemented in \ref func_enum.c and \ref enum.c
474  * \verbinclude enum.conf.sample
475  */
476
477 /*! 
478  * \page cdr_custom Custom CDR Configuration
479  * \par See also 
480  * \arg \ref cdrconf
481  * \arg \ref cdr_custom.c
482  * \verbinclude cdr_custom.conf.sample
483  */
484
485 /*! 
486  * \page cdr_ami Manager CDR driver configuration
487  * \par See also 
488  * \arg \ref cdrconf
489  * \arg \ref AstAMI
490  * \arg \ref cdr_manager.c
491  * \verbinclude cdr_manager.conf.sample
492  */
493
494 /*! 
495  * \page cdr_odbc ODBC CDR driver configuration
496  * \arg See also \ref cdrconf
497  * \arg \ref cdr_odbc.c
498  * \verbinclude cdr_odbc.conf.sample
499  * See also:
500  * \arg http://www.unixodbc.org
501  */
502
503 /*! 
504  * \page cdr_pgsql PostgreSQL CDR driver configuration
505  * \arg See also \ref cdrconf
506  * \arg \ref cdr_pgsql.c
507  * See also:
508  * \arg http://www.postgresql.org
509  * \verbinclude cdr_pgsql.conf.sample
510  */
511
512 /*! 
513  * \page cdr_sqlite SQLite CDR driver configuration
514  * \arg See also \ref cdrconf
515  * \arg \ref cdr_sqlite.c
516  * See also:
517  * \arg http://www.sqlite.org
518  */
519
520 /*! 
521  * \page cdr_tds FreeTDS CDR driver configuration
522  * \arg See also \ref cdrconf
523  * See also:
524  * \arg http://www.freetds.org
525  * \verbinclude cdr_tds.conf.sample
526  */
527
528 /*! 
529  * \page Config_cdr CDR configuration
530  * \par See also
531  * \arg \ref cdr_drivers
532  * \arg \link Config_cdr CDR configuration  \endlink  
533  * \arg \link cdr_custom Custom CDR driver configuration \endlink
534  * \arg \link cdr_ami Manager CDR driver configuration \endlink
535  * \arg \link cdr_odbc ODBC CDR driver configuration \endlink
536  * \arg \link cdr_pgsql PostgreSQL CDR driver configuration \endlink
537  * \arg \link cdr_sqlite SQLite CDR driver configuration \endlink
538  * \arg \link cdr_tds FreeTDS CDR driver configuration (Microsoft SQL Server) \endlink
539  * \verbinclude cdr.conf.sample
540  */
541
542 /*! 
543  * \page Config_moh Music on Hold Configuration
544  * \arg Implemented in \ref res_musiconhold.c
545  * \section mohconf musiconhold.conf
546  * \verbinclude musiconhold.conf.sample
547  */
548
549 /*! 
550  * \page Config_adsi ADSI Configuration
551  * \section adsiconf adsi.conf
552  * \verbinclude adsi.conf.sample
553  */
554
555 /*! 
556  * \page Config_codec CODEC Configuration
557  * \section codecsconf codecs.conf
558  * \verbinclude codecs.conf.sample
559  */
560
561 /*! 
562  * \page Config_ara REALTIME Configuration
563  * \arg See also: \arg \link AstARA \endlink
564  * \section extconf extconfig.conf
565  * \verbinclude extconfig.conf.sample
566  */
567
568 /*! 
569  * \page Config_ami AMI configuration
570  * \arg See also: \arg \link AstAMI \endlink
571  * \section amiconf manager.conf
572  * \verbinclude manager.conf.sample
573  */
574
575 /*! 
576  * \page Config_qu ACD - Queue system configuration
577  * \arg Implemented in \ref app_queue.c
578  * \section quconf queues.conf
579  * \verbinclude queues.conf.sample
580  */
581
582 /*! 
583  * \page Config_mm Meetme - The conference bridge configuration
584  * \arg Implemented in \ref app_meetme.c
585  * \section mmconf meetme.conf
586  * \verbinclude meetme.conf.sample
587  */
588
589 /*! 
590  * \page SoundFiles Sound files
591  * \section SecSound Asterisk Sound files
592  * Asterisk includes a large number of sound files. Many of these
593  * are used by applications and demo scripts within asterisk.
594  *
595  * Additional sound files are available in the asterisk-addons
596  * repository on svn.digium.com
597  */
598
599 /*! 
600  * \addtogroup cdr_drivers Module: CDR Drivers
601  * \section CDR_generic Asterisk CDR Drivers
602  * \brief CDR drivers are loaded dynamically, each loaded CDR driver produce 
603  *        a billing record for each call.
604  * \arg \ref Config_mod "Modules Configuration"
605  * \arg \ref Config_cdr "CDR Configuration"
606  */
607
608
609 /*! 
610  * \addtogroup channel_drivers Module: Asterisk Channel Drivers
611  * \section channel_generic Asterisk Channel Drivers
612  * \brief Channel drivers are loaded dynamically. 
613  * \arg \ref Config_mod "Modules Configuration"
614  */
615
616 /*! 
617  * \addtogroup applications Module: Dial plan applications
618  * \section app_generic Asterisk Dial Plan Applications
619  * \brief Applications support the dialplan. They register dynamically with 
620  *        \see ast_register_application() and unregister with 
621  *        \see ast_unregister_application()
622  * \par See also
623  * \arg \ref functions
624  */
625
626 /*! 
627  * \addtogroup functions Module: Dial plan functions
628  * \section func_generic Asterisk Dial Plan Functions
629  * \brief Functions support the dialplan.  They do not change any property of a channel
630  *        or touch a channel in any way.
631  * \par See also
632  * \arg \ref applications
633  *  
634  */
635
636 /*! 
637  * \addtogroup codecs Module: Codecs
638  * \section codec_generic Asterisk Codec Modules
639  * Codecs are referenced in configuration files by name 
640  * \par See also 
641  * \arg \ref formats 
642  */
643
644 /*! 
645  * \addtogroup formats Module: Media File Formats 
646  * \section codec_generic Asterisk Format drivers
647  * Formats are modules that read or write media files to disk.
648  * \par See also
649  * \arg \ref codecs 
650  */
651
652 /*! 
653  * \page AstHTTP AMI over HTTP support
654  * The http.c file includes support for manager transactions over
655  * http.
656  * \section ami AMI - The manager Interface
657  * \arg \link Config_ami Configuration file \endlink
658  */
659
660 /*! 
661  * \page res_config_sqlite SQLite Resource driver configuration
662  * \arg Implemented in \ref res_config_sqlite.c
663  * \arg Configuration file:
664  * \verbinclude res_config_sqlite.conf
665  * \arg SQL tables:
666  * \verbinclude res_config_sqlite.txt
667  * \arg See also:
668  * http://www.sqlite.org
669  */
670
671