DBOW is a database compiler-compiler or front-end. It takes table definitions in a relatively high-level language and prepares C, C++, PHP, Perl (etc) functions for manipulating the database. It will also produce SQL table data for MySQL. DBOW allows a user to define a database table in a meta-language and produce SQL for generating the table. It also provides C, C++, PHP, Perl functions or methods for manipulating the table, such as insert/delete/search/update. The system is used to remove the grunt-work of writing class libraries or access functions for database tables and having to update several different source files if the SQL table format should change. The resultant code provides a language-native mechanism for manipulating the database. Currently it supports C, C++, SQL and PHP (with Perl under way). It will be extended to support other languages and database constructs as required. It currently compiles/runs on FreeBSD/Linux. It doesn't require any other libraries or elements except YACC/Bison. 2005-10-25 dtynan * Fixed a few bugs since the previous release and incorporated the changes to the Perl module. 2004-07-05 dtynan * This is a minor update of the DBOW code to fix some bugs found after 0.4 was released. The biggest change is the addition of nested queries so that dbow_query can be called recursively without affecting the "upper" query. Also added the stubs for supporting the 'function' block which allows for a more granular approach to defining functions. 2004-04-30 dtynan * This release of DBOW brings the C interface to a stable (BETA) level, adds some new functionality and fixes a few bugs in the back-end. Added a 'db_findXXXfirst()' function for searching the entire table. Added a 'db_runXXXquery()' function which will run an SQL statement (without parsing any arguments) and return the first match. Fixed a bug where the include() m4 statement was being emitted more than once. Put the 'EMIT' code at the bottom of the output file. 2003-08-07 dtynan * This version has support for C and SQL with the basics of PHP support. Perl needs to be added as does C++. 2003-10-14 dtynan * Extensive hacking to make the back-end use M4 instead of hard-coding the output with printfs. 2004-01-28 dtynan * Modified the M4 back-end so that it uses looping rather than relying on the front-end compiler to produce per-table fields. This makes the intermediate code cleaner and makes it a lot easier to write advanced back-ends. SQL is still hard-coded. 2004-04-30 dtynan * Added a 'db_findXXXfirst()' function for searching the entire table. * Added a 'db_runXXXquery()' function which will run an SQL statement (without parsing any arguments) and return the first match. * Fixed a bug where the include() m4 statement was being emitted more than once. * Put the 'EMIT' code at the bottom of the output file. 2004-05-18 dtynan * Deprecated the use of %proto and %code because they're too hard to deal with in the midst of the M4 stuff. * Added new keywords %[type XXX] proto { and %[type XXX] code { which will immediately emit the following lines from there to the line "%}" either to the include file (or the code file if there is no separate include file) and to the code file respectively.