============ 1.2.0.pre231 ============

2006-12-01 Ulrik Petersen

	* Updates to Win32 build and install scripts.

	* Updated About box for ChunkingTool.

	* Emdros Query Tool now knows where to find its Users' Guide on
	  Windows.

	* doc/progref/buildhtb.py: Fixed an issue with
	  <center>...</center> in LaTeX: The centering wouldn't stop until
	  the end of the document.

	* Fixed some typos in menus in Chunking Tool and Query Tool.

	* include/debug.h:ASSERT_THROW_X() macro changed such that it does
	  not use long2string.  Specifically, added a MY_ASSERT_THROW_X
	  macro which has an extra parameter, MYLINE, which is meant to
	  contain __LINE__ (and does, if you call ASSERT_THROW_X).  MYLINE
	  is then string-ified with #, and added to the rest of the
	  message-string by string concatenation.  Also, include/debug.h
	  now does NOT #include <string_func.h>.  Consequently,
	  util/opt.cpp had to explicitly #include it after this change.

	* MonadSetElement::MonadSetElement(a,b) now throws
	  BadMonadsException, as advertised, rather than an
	  EmdrosException (ASSERT_THROW --> ASSERT_THROW_X).

============ 1.2.0.pre230 ============

2006-11-30 Ulrik Petersen

	* Memoryleak fix: MQLSymbolTableEntry::addFeature() would leak
	  small amounts of memory whenever the m_vec SmartVector didn't
	  need to add the ValPair.

	* Memoryleak fix: includ/string_list.h:ParserList::~ParserList()
	  would delete from m_head, and ParserListNode::~ParserListNode()
	  would delete m_next.  ~ParserList now deletes m_tail, and
	  ~ParserListNode now deletes m_prev.  This was necessary because,
	  when doing a list from the parser, we would delete the tail, not
	  the head.

	* Memoryleak fix: FlatStraw::~FlatStraw didn't delete its
	  MatchedObjects.  This caused severe memory leaks; the larger the
	  result set, the larger the leak.

	* Memoryleak fix: The statements CREATE DATBASE, USE DATABASE, and
	  INITIALIZE DATABASE all failed to delete the WITH KEY key.
	  Therefore, created a WithKeyDatabaseStatement from which they
	  now derive.

	* Memoryleak fix: mqltry.cpp:exec_string_test_sheaf() failed to
	  delete both the sheaf and the flat sheaf after printing.  This
	  caused valgrind to go ballistic on mqltry, even though there was
	  nothing wrong with Emdros itself on this account.

	* Memoryleak fix: SELECT ALL OBJECTS that had a RETURNING clause
	  that was a RETURNING FLAT SHEAF ON object_type_name_list had a
	  memory leak whereby the list of object types would leak.  This
	  was fixed.

	* Memoryleak fix: All Expressions that had
	  either (list_of_integer) or (list_of_identifier) would leak the
	  list.

	* Memoryleak fix: tests/emdftry.cpp had a memory leak when testing
	  IntegerList.

	* Memoryleak fix: tests/mqllingtry.cpp had some memory leaks.  Of
	  course, they weren't serious or threatening, since mqllingtry(1)
	  always exited before the leaks could do any damage.

	* Bugfix in src/qrytool/mqlqt.cpp (eqtc(1)): It would not accept a
	  filename to on the command line as a query to run.  It does now.

	* Bugfix in src/qrytool/mqlqt.cpp (eqtc(1)): Usage and --version
	  would say 'mqlqt' rather than 'eqtc'.

	* Memoryleak fix in src/qrytool/solution.cpp: Did not clear
	  m_raster, m_data, or m_reference in destructor.  It does now,
	  using mytable.cpp:clear_OTTableMap().

	* Memoryleak fix in src/qrytool/qtoutput.cpp: TECkits were never
	  disposed of.

	* Bugfix on Mac OS X for ChunkingTool: Now gets the right path to
	  the .htb file, so that online help is actually displayed.

	* "Bugfix" on Mac OS X for ChunkingTool and EmdrosQueryTool:
	  wxID_ABOUT is used instead of custom ID, which means that the
	  "About" menu item apears under the application menu, where Mac
	  OS X users expect it to be.
	
2006-11-27 Ulrik Petersen

	* Gave InterlinearLineMetrics a "double m_pointSizeScaleFactor",
	  which can be set via the constructor, or else is given the
	  default of 1.0.  This was so as to be able to configure (via
	  ViewMetrics::setILM()) whether to scale a particular line up or
	  down w.r.t. to the default point size.

2006-11-24 Ulrik Petersen

	* Made sure that the minimum m_nSerifLength in a LayoutBracketBox
	  is now something tolerable, thus ensuring that we get good
	  displays of double bracket boxes even at small magnifications
	  and single-line interlinear boxes.

	* Changed the way LayoutBracketBox::Draw draws double bracket
	  boxes, such that: a) It never goes above or below its yTop, and
	  b) It always has a good distance between the top/bottom and the
	  inner serif.

2006-11-19 Ulrik Petersen

	* Simplified the src/qrytool/Makefile.am, taking out
	  libwxqtl(u).a, instead having this in the _SOURCES for eqt and
	  eqtu.

	* Added the following to wx/configwizard.cpp:

	  - class DBConnectionWizardPage
	  - class ConnectionStatusWizardPage

	* Bugfixed wx/conndlg.cpp:ConnectionPanel and
	  wx/conndl.cpp:ConnectionDialog such that:

	  - bHasConfiguration is obeyed.

	  - getters and setters now work correctly (and exist on
	    ConnectionPanel).

	* wx/leftrightchooser.cpp: Added bWantsOnlyOneAtRight parameter to
	  constructor, and made the list boxes larger.  Also made UI
	  updaters for the left/right buttons.

	* Implemented some more of the ConnectionWizard for the Emdros
	  Query Tool.  In particular, the raster unit can now be
	  specified (by RasterUnitWizardPage), but it still won't write
	  the config to a file!

============ 1.2.0.pre229 ============

2006-11-13 Ulrik Petersen

	* configure.in is now configure.ac.

	* Finished the Chunking Tool User's Guide.

	* The Chunking Tool:

	  - Now doesn't respond to "reference_unit" in the config file.

          - Doesn't need (or want) _1, _2, etc. on the end of
	    chunking_area_font_name.

	  - Has some *.cfg files which are much more self-documenting.

	* On Win32, the etc\ directory now has three subdirs: qrytool,
	  hal, and chunkingtool.

	* Bugfix: CreateEnumerationStatement::symbol would check for the
	  existence of constants in an enumeration that did not even
	  exist.  This has been commented out.  Also,
	  EnumerationStatement's constructor now sets m_enum_id to NIL, so
	  as to avoid further embarrassment.
	
============ 1.2.0.pre228 ============

2006-11-13 Ulrik Petersen

	* Removed "OK" and "Cancel" buttons from
	  wx/conndlg.cpp:ConnectionPanel::CreateControls().

2006-11-03 Ulrik Petersen

	* Changed things back in configure.in such that it never links
	  directly against libpq.a or libmysqlclient.a, but rather uses
	  -lpq and -lmysqlclient, thus letting the linker choose.

	  This was due to problems on Mac OS X.  See configure.in (look 
	  for PG_LDADD) for why this was changed back.

	* Changed the way configure.in sets LDFLAGS: Now it doesn't set 
	  it when doing PostgreSQL or MySQL libraries, but rather sets
	  PG_LDADD and MY_LDADD.

2006-10-29 Ulrik Petersen

	* Fixed bug in MySQLEMdFDB::createObjectsOT_objects_data():
	  Handling of empty (but non-0) IntegerLists produced faulty SQL.
	  This bug had been there since 1.2.0.pre226.

	* Changed build procedure on Unix/Linux/Mac OS X as follows:

	  - Added PG_LDADD to configure.in, which, on Mac OS X, defaults
	    to library switches such that libpq.a is linked against,
	    rather than libpq.dylib.  This reduces the dependency on Fink
	    for binaries.  On all other platforms, it defaults to
	    "-L$libpqdir_dir -lpq".

	  - Made it so that -L$libpqdir_dir was not added to LDFLAGS on
	    Mac OS X (or rather, when pg_libfound is true, which it
	    currently is on Mac OS X when libpq.a is found).
	
	  - Used PG_LDADD in BACKENDLDADD.

	  - The default search order for tgetent in configure.in is now:

   	      readline curses ncurses termcap

	    rather than

	      readline ncurses curses termcap

	    This was again so as to reduce the dependency on Fink on Mac
	    OS X.

	  - src/qrytool/Makefile.am and examples/ChunkingTool/Makefile.am
	    had their ALWAYSLDADD rearranged such that EMDFLDADDSWIG was
	    moved behind libmql.la.

	  - EMdF/Makefile.am now uses LIBADD rather than LDADD for
	    BACKENDLDADD.

	  - sqlite/src/Makefile.am now uses LIBADD where appropriate.
	
	  - SQLite 2.X.X and SQLite 3.X.X are no longer searched for in
	    the PostgreSQL-specific directories (libsqlitedir_try_dirs and
	    libsqlite3dir_try_dirs).

	- Updated instructions in doc/bootstrapping.txt for Mac OS X.


============ 1.2.0.pre227 ============

2006-10-28 Ulrik Petersen

	* Updated instructions in INSTALL.Mac.txt.

	* Fixed non-Unicode builds in src/qrytool/Makefile.am and
	  examples/ChunkingTool/Makefile.am such that the Emdros libraries
	  can be depended on, by moving $(ALWAYSLDADD) to the spot after
	  -lemdrosgui.

	* Fixed ALWAYSLDADD in examples/ChunkingTool/Makefile.am such that
	  @PCRE_LIBADD_SWIG@ was moved to the spot AFTER libmql.la.

	* Fixed #pragma interface in include/configwizard.h to point to
	  wx/configwizard.cpp.

	* Fixed the following files such that @prefix@ --> $(prefix).
	  This was so as to be able to rpmbuild as non-root.

	  - src/qrytool/doc/Makefile.am
	  - SWIG/java/Makefile.am
	  - examples/ChunkingTool/doc/Makefile.am

	
2006-10-24 Ulrik Petersen

	* Added include/browsewidget.h and wx/browsewidget.cpp.

	* wx/win32.mak now compiles leftrightchooser.cpp (as well as
	  browsewidget.cpp).

	* Added include/configwizard.h and wx/configwizard.cpp, intended
	  for later use when implementing configuration wizards.

	* Implemented the very beginnings of a configuration wizard for
	  the Chunking Tool.

	* Split the ConnectionDialog in wx/conndlg.cpp into a
	  ConnectionPanel and a ConnectionDialog, so that the
	  ConnectionPanel can be reused.

	* Used the new ConnectionDialog in src/qrytool/mqlqtwx.cpp and in
	  examples/ChunkingTool/ctmf.cpp.
	
============ 1.2.0.pre226 ============

2006-10-20 Ulrik Petersen

	* Added the following to include/string_func.h:

	  - long2compact_string7bits()

	  - compact_string7bits2long()

	  - IntegerList2compact_string7bits()

	  - compact_string7bits2IntegerList()

	  They are not used, however, since this would require yet another
	  incompatible change to the schema.

	* Upgraded on Win32 to wxWidgets 2.6.3 and J2SDK 1.4.2_12 in
	  win32/config.mak.in.

	* Now always does X'hexstring' rewriting in
	  SQLite3EMdFDB::escapeStringForSQL.

	* Made win32 build machinery work with 1.2.0.pre226 (SQLite3 and
	  util/messages.cpp).


2006-10-14 Ulrik Petersen

	* Now the following are always compiled in:

	  - pgemdfdb.cpp
	  - mysqlemdfdb.cpp
	  - sqliteemdfdb.cpp
	  - sqlite3emdfdb.cpp

	  When a particular EMdFDB is not supported, only the constructor
	  and destructor are compiled in.  The constructor does nothing,
	  except construct the object.
	
	  This was so as to simplify the SWIG interface build procedure:
	  Before, all combinations had to be produced; now a single SWIG
	  interface can be built.

	* Now distributes sqlite3/doc/doc/

	* Now macdists sqlite_emdros.1 and sqlite3_emdros.1.

	* Changed the way macdist works: There is now a development/
	  directory which contains bin/, lib/, include/, man/, share/, and
	  sources/.

	* Added install_mac.sh.in, which gets compiled to install_mac.sh
	  and placed in $(MACDISTDIR)/development/ by the macdist target.

2006-10-09 Ulrik Petersen

	* Now actually supports compiling with system-wide PCRE.  Before,
	  it had problems with PCRE_DEP being specified as -lpcre.  I have
	  added PCRE_LIBADD and PCRE_LIBADD_SWIG to configure.in in order
	  to solve this problem.

2006-10-06 Ulrik Petersen

	* Added util/messages.cpp and include/messages.h.

	* Used emdrosMessageConnectionNotOK() from util/messages.cpp in:

	  - src/mql.cpp
	  - src/agexport.cpp
	  - src/manage_indices.cpp
	  - src/mqldump.cpp
	  - src/upgrade_db.cpp
	  - src/qrytool/mqlqt.cpp
	  - tests/emdftry.cpp
	  - tests/mqltry.cpp
	  - examples/HAL/hal.cpp

	* Fixed bug in src/qrytool/mqlqt.cpp: app_prefix referred to
	  _WXMSW_, not WIN32.

	* Changed configure.in and SWIG/*/Makefile.am such that all the
	  SWIG-related -I/include/dir CPPFLAGS are not added to CPPFLAGS,
	  but are only used in the appropriate SWIG/*/ subdir.

	* Added some Doxygen docs to various files.

	* Renamed sqlite3emdfdb.cpp:parseIndexCreationString to
	  parseIndexCreationStringSQLite3, and
	  sqliteemdfdb.cpp:parseIndexCreationString to
	  parseIndexCreationStringSQLite2.  This was so as to get rid of
	  some Doxygen warnings.
	
2006-09-26 Ulrik Petersen

	* src/mql_exporter.cpp now economizes with the amount of 
	  characters it spits out, so that redundant characters are now
	  not emitted.  This, of course, affects mqldump(1).

2006-09-24 Ulrik Petersen

	* Added --with-sqlite3-no-fsync to configure.in, and used it in 
	  EMdF/sqlite3emdfdb.cpp

	* The default is now --with-sqlite-no-fsync=yes and 
	  --with-sqlite3-no-fsync on those platforms that use the 
	  configure script, just like on Win32.

2006-09-23 Ulrik Petersen

	* Fixed bug in EMdFDB: The strings added to the StringSet cache
	  were escaped before being added, but weren't de-escaped when
	  getting them out of the cache.

	* EMdFDB::escapeStringForSQL() (and its descendants) now add
	  "'" ... "'" around the string.

	* Added SQLite 3.3.7.  There is a new eBackendKind enum, 
	  kSQLite3, and a new EMdFDB, SQLite3EMdFDB, but otherwise, it 
	  should just be plug and play.

	* EMdFDB now always drops indexes on FROM SET tables when doing a
	  manage_indices --drop, and recreates them on --create.
	
	* Added EMdFDB::createIndicesOnStringSetTable and
	  EMdFDB::dropIndicesOnStringSetTable.

	* EMdF/emdfdb.cpp: Added extra condition to #include <unistd.h>
	  such that it compiles on Windows.
	
============ 1.2.0.pre225 ============

2006-09-16 Ulrik Petersen

	* Edited emdros.spec.in slightly.
	
2006-09-14 Ulrik Petersen

	* Added docs to progref on IntegerList as well as extending the
	  docs on EMdFValue.

	* string_list.h: ParserListConstIterator::operator= is now NOT
	  SWIG-wrapped.  It wasn't before either, but now it explicitly
	  isn't so, and thus SWIG does not give a warning about its being
	  unable to do so.

	* Added some JDK dirs to jdk_try_dirs in configure.in, including
	  the default JPackage.org package for JDK 1.5.0_8.

============ 1.2.0.pre224 ============

2006-09-13 Ulrik Petersen

	* Made it compile on older systems (libstdc++5 with gcc 3.3, for
	  example, e.g., Ubuntu 5.04 Hoary Hedgehog).  This was done by
	  #include'ing <emdros-config.h> at the top of all files that
	  #include'd it, then immediately #undef'ing malloc.  This is
	  because, on older systems, configure thinks that malloc is not
	  available, and so #defines malloc.  Then, when getting to
	  #include <cstdlib> (either directly or indirectly, e.g., through
	  <string>), <malloc.h> is not #include'd, and so we get build
	  errors.
	
2006-09-11 Ulrik Petersen

	* string_list.h: Bugfix: isEmpty() returned the reverse of what it
	  really was...

	* emdfdb.h: IntegerList used to be #include'd from <string_list.h>
	  directly in emdfdb.h; now it is merely forward-declared, and
	  <string_list.h> is #include'd in emdfdb.cpp.  This should make
	  for faster recompilation.  However, it does mean that you may
	  have to #include <string_list.h> explicitly if you just used
	  emdfdb.h before.  Also add #include <string_list.h> to
	  pgemdfdb.cpp, mysqlemdfdb.cpp, sqliteemdfdb.cpp, and
	  tests/emdftry.cpp.

	* emdf_value.h: Same thing as for emdfdb.h, with respect to
	  <string_list.h>.

	* mql_sheaf.h: Same thing as for emdfdb.h, w.r.t. <string_list.h>.

	* include/sqliteconn.h: Now #includes <debug.h>.

	* MQL/lexer2.awk: Removed #include <string_list.h> from this.
	  This means that mqlflexr.h now doesn't #include <string_list.h>.

	* include/pennimporter.h: Added #include <string_list.h>.

	* include/string_list.h: Added operator= to ParserList, and so
	  also to StringList and IntegerList.

	* include/string_list.h: Turned ParserList around, such that
	  m_next points from head to tail, and m_prev from tail to head,
	  in order to be consistent with normal terminology (and thus be
	  more maintainable).

	* MQL/mql.yxx: Added setNext() calls whenever a StringList or
	  IntegerList was involved, thus making sure that both directions
	  can be traversed.
	
	* src/qrytool/wxilqtout.cpp: Got rid of a warning about unsigned
	  vs. signed, which was really a bug.

	* Removed redundant m_enum_const_values_in_list from class
	  FeatureAssignment.
	

2006-09-07 Ulrik Petersen

	* StringList and IntegerList now have isEmpty exposed in the SWIG
	  interface.

	* Now is actually able to use system SQLite2.  Before, it would
	  complain about sqlite_open_encrypted not being available.

============ 1.2.0.pre223 ============

2006-09-04 Ulrik Petersen

	* Fixed bug in util/sfmimporter.cpp whereby objects could overlap
	  in their monads even though they were distinct.

	* Fixed formatting in doc/sfmimporter.1.

	* string_func.cpp: Added strip(string,string) and strip(string).
	
	* tests/emdftry.cpp now tests strip().

	* tests/emdftry.cpp now actually prints "FAILURE" on last line if
	  one fo the backends failed.

	* util/sfmimporter.cpp now uses strip(field_value) when reading
	  sfm schema.

	* Removed redundant #include <string_func.h> from some header
	  files.

	* util/sfmimporter.cpp now has the option to do integer features.

	* util/unboundbibleimporter.cpp: EmdrosMemObject::putMQL() now
	  converts the value to long and then back to string when doing an
	  INTEGER or ID_D feature.
	
============ 1.2.0.pre222 ============

2006-08-29 Ulrik Petersen

	* Fixed bug in emdf.h: SQLITE_TEXT_TYPE was set to TEXT if we did
	  PostgreSQL (even if other backends were compiled in), and to
	  nothing if we only did SQLite.  

	  In particular, this caused strange behavior on MySQL, whereby
	  searches that were case-sensitive before were now
	  case-INsensitive, since it needed to be LONGBLOB for text...

	  This was fixed by adding EMdFDB::getSQL_TEXT_TYPE() and using it
	  whereever necessary.

	* Reindented emdfdb.h.

	* Mac OS X: Now distributes doc/EQTUsersGuide.htb in the
	  EmdrosQueryTool.app bundle, such that the user's guide is
	  actually there on Mac.

	* Mac OS X: Now distributes all libraries and programs in macdist.

	* Mac OS X: Now doesn't distribute full complement of SWIG
	  dylib or .so libraries; only the first (i.e., XYZ.dylib).

	* Win32: Fixed building of util/sfm.cpp and src/sfmimport.cpp.
	
2006-08-28 Ulrik Petersen

	* Added leftrightchooser.{cpp,h}

	* Created the beginnings of a connection wizard for the Emdros
	  Query Tool.

	* SWIG/java/Makefile.am now uses jar -0 so as to only _store_, not
	  compress the .java and .class files.  This saves some space in
	  the source tarball, since gzip is much better able to work with
	  the uncompressed data than the jar-compressed data.

2006-08-26 Ulrik Petersen

	* Changed all occurrences of assert(X) to ASSERT_THROW(X,
	  "reason").
	
2006-08-25 Ulrik Petersen

	* Finished SFM importer.  Added src/sfmimport.cpp.

	* Fixed bug in src/slashedtextimport.cpp: It said 'negraimport'
	  rather than 'slashedtextimport."

	* Changed the last two colors in the interlinear display of the 
	  wxWidgets-version of the Emdros Query Tool from "BLUE, CYAN" 
	  to "DARK_GREEN, LIGHT_GREEN".

2006-08-24 Ulrik Petersen

	* Moved test.pl target in SWIG/perl/Makefile.am out of the 
          condition that SWIG bindings be built.

============ 1.2.0.pre221 ============

2006-08-24 Ulrik Petersen

	* Added SFM (Standard Format Marker) importer.  It doesn't 
	  work yet.

	* Changed SWIG build processes such that the test programs
	  are now built regardless of whether that particular SWIG 
	  backend is to be built.  This is because the RPM SPEC 
	  file needs them.

	* Changed ChunkingTool build process such that 
	  CHUNKINGTOOLDATA is always installed.  This is because 
	  the RPM SPEC file needs the data.

============ 1.2.0.pre220 ============

2006-08-23 Ulrik Petersen

	* Removed printing of text to std::cerr in
	  util/plaintextimporter.cpp.

============ 1.2.0.pre219 ============

2006-08-18 Ulrik Petersen

	* Removed the option to not do stripped_surface in
	  unboundbibleimporter.

	* Added EMdF/string_func.cpp:remove_chars_in_string().

	* Added EMdF/string_func.cpp:remove_punct().

	* Used remove_punct() in unboundbibleimporter.cpp to get
	  stripped_surface.

	* Added stripped_surface to [word] object type in
	  util/plaintextschema.mql.

	* Made util/plaintextimporter.cpp produce a "stripped_surface"
	  feature.

	* Made util/plaintextimporter.cpp add paragraphs based on '\n\n'.

	* Consoliated the emitMQL* and cleanObjects* methods into one with
	  code and three with parameters, inc util/plaintextimporter.cpp.

	* Fixed bug in src/plaintextimport.cpp: It said 'negraimport' when
	  it should say 'plaintextimport."

	* The split_* family of functions in string_func.cpp now return
	  the list containing instring if none of the split-strings/chars
	  are found.
	
2006-08-17 Ulrik Petersen

	* Added EMdF/string_func.cpp:replace_substring().

	* Tested replace_substring() in tests/emdftry.cpp.

	* Unbound Bible importer:

	  - Added a boolean to the unboundbibleimporter constructor,
	    saying whether we want a stripped_surface feature.
	
	  - Added "%%STRIPPED_SURFACE%%" to [word] object type in
	    unboundbibleschema.mql

	  - Used the replace_substring() function to replace this
	    "%%STRIPPED_SURFACE%%" string with the proper replacement,
	    based on whether we want to do the stripped surface or not.

	  - Added the stripped_surface feature to the Word, which is the
	    surface stripped if "ispunct(3)" characters as defined by
	    FreeBSD ispunct(), plus space.
	
	* Used replace_substring() in unboundbibleimporter.cpp to give the
	  schema a stripped_surface feature, and also added a parameter to
	  the construction of unboundbibleimporter to say

============ 1.2.0.pre218 ============

2006-08-16 Ulrik Petersen

	* Made it compile on Win32.

============ 1.2.0.pre217 ============

2006-08-16 Ulrik Petersen

	* mysqlconn.cpp now reads the "[client]" group from the default
	  configuration files before connecting.

	* configure.in: Now doesn't complain when doing --disable-shared
	  if you have left all SWIG backends as =maybe.  Instead, it
	  simply turns all SWIG backends off.

	* configure.in: Fixed problem with SWIG Python checking: The block
	  finding the Python site directory had a faulty test: "test
	  $DO_SWIG_PYTHON != xno" rather than putting an x in front of
	  $DO_SWIG_PYTHON.


2006-08-09 Ulrik Petersen

	* Improved pennimporter.cpp: It now parses trees that do not 
	  start with ( and that do not start with (S1, but which are 
	  merely trees... In particular, the penn corpus from NLTK 
	  imports cleanly. Also did away with 'S1' token in
	  pennlexer.lxx.

	* Mac OS X: configure.in changed such that certain tests for
	  backends now work correctly.

	* Added util/slashedtextimporter.cpp,
	  include/slashedtextimporter.h, util/slashedtextschema.mql,
	  src/slashedtextimport.cpp, and doc/slashedtextimport.1.

	* EMdF/string_func.cpp: Added is_hex() and parse_C_backslashes(),
	  and tested them in tests/emdftry.cpp.

	* EMdF/string_func.cpp: Added split_string_on_string, both a 
	  std::list version and a std::vector version.

	* Fixed an issue with the word 'defualt' (default) in various
	  programs in src/.

	* util/pennparser.yxx: Now says 'C = T;' for the top_tree rule
	  that has merely a subtree, without introducing another level
	  of indirection.
	
============ 1.2.0.pre216 ============

2006-08-09 Ulrik Petersen

	* Added a plaintextimport program, along with
	  util/PlainTextImporter.cpp, include/PlainTextImporter.h, and
	  util/plaintextschema.mql.

	* PHP_LIBS are now not added to the PHP LIBADD line in
	  SWIG/php/Makefile.am.  The reasons are:

	  1) They are not necessary, and

	  2) libaspell, which is in the PHP_LIBS on Fedora Core 5, is not
	     properly present on FC5: libaspell.so is lacking, while
	     libaspell.so.15 is present.  This causes linking errors on
	     Emdros.
	
============ 1.2.0.pre215 ============

2006-08-08 Ulrik Petersen

	* Solaris/SunOS: Added -R$libpqdir_dir and
	  -R$libmysqlclientdir_dir to SUN_LDFLAGS when ISHOSTSUNCC is
	  "yes".
	
	* Solaris/SunOS: Added @SUN_LDFLAGS@ to SWIG/*/Makefile.am.

2006-08-05 Ulrik Petersen

	* Mac OS X: Now the following libraries are also compiled with
	  -static on Mac OS X: libemdf, libmql, libpcre_emdros,
	  libsqlite_emdros.  This is so as to be able to distribute a .dmg
	  in which the SWIG bindings do not depend on Emdros libraries
	  which are not installed by "make install".

	* SWIG/php and configure.in: Added PHP_LIBS and PHP_LDFLAGS to
	  configure.in, via php-config, and used them in
	  SWIG/php/Makefile.am.

2006-08-04 Ulrik Petersen

	* Mac OS X: src/qrytool/Info.plist.in and
	  examples/ChunkingTool/Info.plist.in updated to say "2006", and
	  changed DTD to be newest, version 1.0.

	* Mac OS X: All binaries are now linked with the libtool -static
	  LDFLAGS flag, via MACLDFLAGS.  This means that no local dylibs
	  are used; instead, the static versions are used.  This is
	  because I wanted the libraries to be installable in a .dmg.  I
	  could not figure out how to tell libtool to look inside the .dmg
	  for the dylibs.

	* configure.in: An error is now thrown if doing at least one SWIG
	  backend, yet not doing shared libraries.

	* configure.in: Added EMDFLDADDSWIG, analogously to EMDFDEPSSWIG,
	  but with $BACKENDLDADD thrown in.

	* Mac OS X: Now distributes SWIG bindings in the .dmg.

	* SWIG/java/TestEmdros.java.in: Changed "enum" to "enum_const" so
	  as to be able to compile with JDK 5.0.

	* configure.in: Now obeys --disable-debug again.  The reason it
	  had started to fail was that AC_PROG_CC and AC_PROG_CXX set
	  CFLAGS and CXXFLAGS to "-g -O2" by default, and also do the
	  AC_SUBST.  AC_PROG_CC and AC_PROG_CXX are invoked by
	  AC_PROG_LIBTOOL, which I had moved up before the test which set
	  CFLAGS and CXXFLAGS to empty if not set at all.

	* configure.in: Now checks for XXX.dylib whenever trying to find
	  XXX.a or XXX.so (Mac OS X).
	
	* configure.in: Now displays message when not doing PostgreSQL
	  because neither libpq.a nor libpq.so nor libpq.dylib can be
	  found.

============ 1.2.0.pre214 ============

2006-08-03 Ulrik Petersen

	* Added #include <dataobj.h> to src/qrytool/mainframe.cpp so as to
	  be able to build on Solaris (wx-motif).

	* Changed build process for examples/HAL/doc/*.tex to use --latex
	  switch on buildhtb.py.

	* Workaround added for bug in wx-config on Solaris: "-L
	  /usr/sfw/lib" was made into "-L/usr/sfw/lib", in configure.in.

2006-08-02 Ulrik Petersen

	* Corrected include/string_list.h such that:

	  - StringList now explicitly has a "StringListConstIterator
	    const_iterator() const;" method.

	  - IntegerList now explicitly has an "IntegerListConstIterator
	    const_iterator() const;" method.

2006-07-28 Ulrik Petersen

	* Changed win32/include to always do pcre_emdros.h,
	  unconditionally.  Note that this involves having a target which
	  is not the name of the file to be copied.

	* Changed all instances of "SQLITE" to "SQLITE2" in the win32.mak
	  files and config.mak.in.

	* include/Makefile.inc: Now doesn't distribute pcre_emdros.h.
	  Instead, it is built by include/Makefile.am.

	* pcre/djgpp.mak: Now copies pcre.h to ../include/pcre_emdros.h.

	* Now creates a different .dmg filename (Intel vs. PPC) on Mac OS
	  X, based on the $host information.

============ 1.2.0.pre213 ============

2006-07-28 Ulrik Petersen

	* There was a problem: SWIG had to know, at swigification time,
	  what backends to support.  So building 1 SWIGified thing was not
	  good. Solution:

	  - configure.in: CHARACTERISTIC_BACKEND_STRING was added as an
	    AC_SUBST().  It is the concatentation of the strings "_sq",
	    "_pg_", and/or "_my", depending on which backends are present.

	  - In SWIG/*/Makefile.am, all 7 combinations (excluding the one
	    where none of them are present) are built.

	  - At compile-time, the right one is selected, based on
	    CHARACTERISTIC_BACKEND_STRING.

	* Changed include/win32.mak to produce emdros-lconfig.h, with
	  USE_XXX and DEFAULT_BACKEND_ENUM #define'ed.  Thus the -D
	  switches in win32/config.mak.in that took care of this before
	  are gone.

	* wx/conndlg.cpp now only lists the choices of backend that are in
	  the binary.

	* configure.in: Fixed bug whereby SQLite 2.x.x would always be
	  built.

	* SQLite: offset_t (which was introduced by me) is now offs_t, due
	  to a conflict with naming on Solaris.

	* TECkit was upgraded to TECkit release 2006-06-02.  My changes
	  were forward ported into the new code.

	* Fixed bug in TECkit/Compiler.h: appendToTable(string, T x) had
	  an extraneous semicolon at the end of the function.  This made
	  it not compile on Solaris.

	* Solaris make did not understand "cp $< $@", so I had to change
	  it throughout all Makefiles.

	* Solaris: EMdF/logging.cpp: ctime_r(pTime, szTime,
	  BUFFER_LENGTH): Restored third parameter.  This works with Sun's
	  compiler, though probably not with gcc


2006-07-27 Ulrik Petersen

	* Changed license so that we can link against OpenSSL (by adding
	  an exception).  This is because OpenSSL is linked to by
	  PostgreSQL, and OpenSSL is under a license that is incompatible
	  with the GPL.  Just to be sure, I added an exception so that one
	  can link against libraries normally distributed with PostgreSQL.

	* On Win32, now distributes libpq.dll, as well as its
	  dependencies (including OpenSSL).

	* On Win32, now doesn't need the buildtools-win32 package!

	* Changed src/qrytool/mainframe.cpp to only complain about
	  libmysql.dll if we are on Win32, and the backend chosen is
	  really kMySQL.

	* On Win32: Now distributes src/qrytool/penn.cfg.

	* Changes to configure.in and Makefile.am's:

	  - --with-wxwin is now --with-wx because the name of the library
	    has changed from wxWindows to wxWidgets.

	  - WXWIN_* is now WX_*

	  - wxWidgets on Mac OS X and others are now treated in the same
	    if ... fi structure.

	  - The following were added:

	    - AC_SUBST(WITH_SQLITE)
	    - AC_SUBST(WITH_POSTGRESQL)
	    - AC_SUBST(WITH_MYSQL)
	    - AC_SUBST(WITH_SWIG_JAVA)
	    - AC_SUBST(WITH_SWIG_PERL)
	    - AC_SUBST(WITH_SWIG_PHP)
	    - AC_SUBST(WITH_SWIG_PYTHON)
	    - AC_SUBST(WITH_SWIG_RUBY)
	    - AC_SUBST(WITH_WXWIDGETS)
	    - AC_SUBST(ENABLE_SHARED)
	    - AC_SUBST(ENABLE_DEBUG)

	  - emdros.spec is now created.

	  - 'maybe' is now a legitimate option for all the --with switches
	    that support it.

	  - --with-swig-language-XXX now supports [yes|no|maybe].

	  - There new WITH_XXX are given the exact value passed to them
	    upon invocation of configure.
	
	* Changes to .spec (RPM) creation:

	  - There is only one emdros.spec that comes out of the
	    configure-process, not several.

	  - Only one RPM is built, not several (simply "emdros"
	    vs. emdros-postgresql, emdros-mysql, emdros-mysql-swig-php,
	    etc.)

	  - All of the configure-time options are carried over from the
	    configure-script to the .spec file.

	* Removed SWIG_SWITCHES from SWIG/*/Makefile.am.  Instead, each
	  SWIG/*/libemdf*.i now #includes AND %includes
	  ../../include/emdros-lconfig.h, and thereby gets USE_XXX.  These
	  are then used in SWIG/*/libemdf*.i.

	
2006-07-26 Ulrik Petersen

	* Changed wx/conndlg.cpp to have a "Backend" combobox.

	* Used this in src/qrytool/ and in examples/ChunkingTool/.

	* Deleted wx/conndlgsimple.cpp and include/conndlgsimple.h.

	
2006-07-25 Ulrik Petersen

	* Improved doc/progref/*.py to be generic, with config.py.  Also
	  made it better able to handle nearly all of the tags and symbols
	  in the DBDG, HAL example docs, QueryTool, etc.  Also made it
	  able to spit out something with a navbar on the left.
	
	* Added:

	  - examples/HAL/doc/

2006-07-21 Ulrik Petersen

	* Used util/opt.cpp in:

	  - src/qrytool/mqlqt.cpp
	  - examples/HAL/hal.cpp
	  - examples/HAL/halblddb.cpp
	  - tests/emdftry.cpp
	  - tests/mqltry.cpp
	  - tests/mqllingtry.cpp

	* Upgraded PCRE to PCRE version 6.7.

	* Made searching for the JDK possible on Mac OS X.

2006-07-20 Ulrik Petersen

	* Used util/opt.cpp in:

	  - src/agexport.cpp
          - src/manage_indices.cpp
	  - src/mqldump.cpp
	  - src/negraimport.cpp
	  - src/pennimport.cpp
	  - src/ubimport.cpp
	  - src/upgrade_db.cpp

	* Fixed bug in util/opt.cpp:getArgumentValue(): It should return
	  false if not present, which it does now.

	* Fixed bug in util/opt.cpp:getStandardArgumentValues():
	  backend_kind was now not being set when no "-b" switch, after
	  the above bug was fixed.

	* Refactored util/opt.cpp such that the default value is now
	  present in the option map.

	* Added encoding to standard arguments.

	* The default encoding on mql(1) is now kCSUTF8 rather than
	  kCSISO_8859_1.

	* Fixed bug in util/opt.cpp:getHasEncodingOption(): It would
	  return true even if there was an "-e" switch which did not have
	  "--encoding" as the long version.

	* Changes to src/negraimport.cpp and src/pennimport.cpp:

	  - --startmonad is now --start-monad
	  - --start_id_d is now --start-id-d
	  - Usage and documentation fixed on the above two points.

	  Note that the usage and documentation used to say --start_monad,
	  which was not what was actually parsed -- it was --startmonad.
	
2006-07-19 Ulrik Petersen

	* Fixed bug in configure.in whereby AC_ARG_WITH(mysql was not
	  --with-mysql but --with-DO_MYSQL.
	
	* Changed configure.in such that it has a default backend.

	* Used default backend as DEFAULT_BACKEND_ENUM in
	  emdros-lconfig.h.in and win32/lconfig*.

	* Used default backend (DEFAULT_BACKEND_ENUM) as backend_kind
	  parameter in include/environment_emdros.h.

	* Surrounded "new PgEMdFDB", "new MySQLEMdFDB" and "new
	  SQLiteEMdFDB" with " #if USE_{BACKEND}...#else throw exception
	  ... #endif" in the following files:

	  - MQL/emdros_environment.cpp
	  - src/manage_indices.cpp
	  - tests/emdftry.cpp

	* Added doc/progref/, also to build machinery.

	* Added include/opt.h and util/opt.cpp.

	* Used util/opt.cpp in src/mql.cpp.

2006-07-18 Ulrik Petersen

	* Changed include/emdf.h:MYSQL_BINARY to EMdFDB::getMYSQL_BINARY()
	  so as to be able to get it only when actually using MYSQL.

	* Uses new EMdFDB::getMYSQL_BINARY in place of VARCHAR_MODIFIER,
	  which has been removed from include/emdf.h.

	* Now tests SQLite 2.X.X in
	  tests/{emdftry.cpp,mqltry.cpp,mqllingtry.cpp} before testing the
	  others.

	* Now prints at the end of configure.in whether we are doing
	  wxWidgets, and if so, which version.

2006-07-10 Ulrik Petersen

	* The system PCRE is now used by default if present, rather than
	  the local pcre.

	* The same goes for SQLite: If it is present on the system, the
	  local SQLite is not compiled.  To do this, include/sqlite.h was
	  renamed to include/sqlite_emdros.h.

	* Reindented a number of files.
	
	* BIG CHANGE: All present (and desired) backends are now compiled
	  into the same binary.

	  - --with-sqlite can now be given the values "yes", "no",
	    "local", "system", and "maybe".

	  - --with-mysql and --with-postgresql can now be given the values
	    "yes", "no", and "maybe". The "maybe" option means that it is
	    compiled in if present on the system.
	
          - configure.in/Makefile.am machinery rearranged.

	  - sqlite/configure.ac no longer used; the relevant sections have
	    been moved to ../configure.in.

	  - Changed "SQLITE" to "SQLITE2" in the
	    configure/Makefile/emdros-lconfig.h machinery, in anticipation
	    of the addition of SQLite3 as a supported backend.  In
	    particular, the AM_CONDITIONAL "SQLITE" is now "SQLITE2", and
	    the #define "USE_SQLITE" is now "USE_SQLITE2".

	  - EMdFDB::getBackendName() is no longer static.  Neither is
	    EmdrosEnv::getBackendName static any longer.

	  - Added eBackendKind enumeration to include/emdf_enums.h.
	
	  - Added eBackendKind EMdFDB::getBackendKind().
	 
	
2006-07-09 Ulrik Petersen

	* Added support for gcc 4.1 by doing a static variable initialization in the template rather than outside of it in smartvector.h.

	* Made libmql link to PCRE_DEP.

============ 1.2.0.pre212 ============

2006-07-01 Ulrik Petersen

	* EMdF/emdfbd.cpp: Changed a DEBUG_X_IS_WRONG from SQLiteEMdFDB to
	  EMdFDB.

	* Now doesn't unconditionally build wxWidgets programs.

	* Fixed bugs introduced in pre211 on PostgreSQL and MySQL:
	  useDatabase() wouldn't connect to the right database, but
	  instead simply (on PostgreSQL) connected to template1.  This
	  caused an EMdFDB::createDatabase to fail, because the right
	  database wasn't connected to.

	  To fix this:

	  - Added PostgreSQL::useDatabase(string,string,bool) and its
	    MySQL equivalent.

	  - Rewrote PgSQL::useDatabase(string,string) (and its MySQL
	    equivalent) to call its local useDatabase(string,string,bool)
	    equivalent, with false as the bool parameter.

	* Fixed bug in SQLite::createDatabase: if the first useDatabase
	  fails, the whole thing now fails.  Before, it simply continued.

2006-06-26 Ulrik Petersen

	* Character tokens are now reported as "the character 0xXY" when
	  the cause of a syntax error.

	* Added include/sfm.h and util/sfm.cpp from LTC project
	  (Linguistic Tree Constructor).
	
	
============ 1.2.0.pre211 ============

2006-06-17 Ulrik Petersen

	* Fixed a bug introduced in pre210 whereby CREATE DATABASE would
	  fail on SQLite.  To fix this:
	
	  - Added EMdFDB::useDatabase(string,string,bool), where the last
	    bool must be true if we are creating or initializing the
	    database.

	  - Moved the code from EMdFDB::useDatabase(string,string) into
	    new useDatabase method.

	  - Added stub in old EMdFDB::useDatabase(string,string) to call
	    the new one with false as the last parameter.

	  - Used the new one dutifully in various places.
	

============ 1.2.0.pre210 ============

2006-06-16 Ulrik Petersen

	* Now uses m_object_type_cache_map in order to answer the question
	  of largest_object_length, if possible.

	* Changes to configure.in to better support latest Solaris.

	* Changes to EMdF/logging.cpp to better support latest Solaris.
	
2006-06-15 Ulrik Petersen
	
	* Fixed compilation of EMdF/logging.cpp on Win32.

	* Removed m_object_type_cache_table from EMdFDB, and reorganized
	  m_object_type_cache_map to be centered around the object type
	  name rather than the object id_d. Also added largest object
	  length to m_object_type_cache_map.  This is done through class
	  EMdF/emdfdb.cpp:ObjectTypeCacheInfo.

	* Fixed bug introduced in 1.2.0.pre208: EMdFDB::dropObject and
	  EMdFDB::dropObjectsInMonads did not update the largest object
	  length.

	* Added EMdFDB::getLargestObjectLengthFromOT_objects().

	* All EMdFDB subclass constructors now call this->useDatabase().
	
2006-05-16  Ulrik Petersen

	* Made FastSetOfMonads::addMSE() faster.

============ 1.2.0.pre209 ============

2006-05-15  Ulrik Petersen

	* Implemented the same idea as in 1.2.0.pre208, but in getInst() 
	  instead.  This made for a very, very nice speed increase, 
	  especially on large (multi-million-token) corpora.

	* Reindented emdfdb.cpp.

============ 1.2.0.pre208 ============

2006-05-14  Ulrik Petersen

	* Removed deleteToken() from include/mql_yylex.h; instead moving
	  it into the destructor of Token!  Also reflected this change in
	  MQL/mql.yxx and elsewhere where deleteToken was being used.

	* Changed the schema to number 12:

	  - Table object_types now has a column called
	    "largest_object_length".  This is maintained whenever an
	    object/a batch of objects is/are created.

	  - This is used in EMdFDB::getObjectsHavingMonadsIn() to speed
	    things up, sometimes dramatically.

	  - Old versions can read the new databases, and this version can
	    read (but not write to) old databases.

	  - Speedups of up to 60% on the Emdros Query Tool over pre199!

	* Moved "logging" definitions out of emdf.h and into logging.h.

	
2006-05-13  Ulrik Petersen

	* Fixed bug in EMdFDB::createObjects() that it didn't abort the
	  transaction although necessary to do so under certain
	  circumstances.

============ 1.2.0.pre207 ============
	
2006-05-13  Ulrik Petersen

	* Removed 'UP100' debugging output from eqtc.

	* Made query tool about 10-15% faster on average, by implementing
	  the idea that if we know the length of the largest object, we
	  don't need to scan the table (MyTable) from the very beginning
	  when doing MyTable::set_universe().

	* Reindented some code.

2006-04-30  Ulrik Petersen

	* Added some Doxygen docs.

	* Reindented a number of files.

	* Added a "clear output window" menu-item and toolbar-button to
	  the Emdros Query Tool.

	* Emdros Query Tool: Now refreshes itself in
	  MainFrame::ClearTextCtrls and in MainFrame::OnFileNew().

	
2006-04-29  Ulrik Petersen

	* Added a lot of Doxygen docs.

	* Removed string_func.{cpp,h}:encodeASCIIstring.

============ 1.2.0.pre206 ============

2006-04-27  Ulrik Petersen

	* Made SWIG java and Python compile on Win32.

	* Fixed bug introduced somewhere around 1.2.0.pre198:
	  EMdFDB::addFeature() always returned before doing its job.

	* Improvements to win32 clean process.

	
2006-04-26  Ulrik Petersen

	* Better support for compilation on Mac OS X even without being
	  dist'ed first on Linux.  In particular, the way the files based
	  on FlexLexer.h are built has been changed (lexer3.sed,
	  lexer2.awk, etc.).

	* Improved src/qrytool/BETA2Unicode.map.
	
============ 1.2.0.pre204-pre205 ============

2006-04-07  Ulrik Petersen

	* All SWIG bindings now are SWIG'ified at dist time, rather than
	  compile time.  SWIG is thus no longer needed (except after a
	  distclean).

============ 1.2.0.pre203 ============

2006-04-05  Ulrik Petersen

	* Changed the RPM SPEC machinery such that:

	  - All RPMs now end in "1.fc5" rather than "1.fc4", as I upgraded
	    to Fedora Core 5.
	
	  - It is possible to do or not do the SWIG bindings and the
	    wxWidgets programs and libraries, based on sed-style
	    configuration.

	  - The default RPM specs no longer produce SWIG bindings; this
	    was decided based on the philosophy that the default RPMs
	    should be easy/easier to compile for the average installation.

	  - It is possible to compile "swig" RPMs.

	  - It is possible to compile "php" RPMs.
	
2006-03-27  Ulrik Petersen

	* Added path for Java 1.5.0_06 to configure.in.

	* Made it compile with gcc 4.1.
	
	
2006-03-21  Ulrik Petersen
	
	* Added capability in wx/layout.cpp for outputting the
	  LayoutCanvas to HTML.

	* Used this in the Emdros Query Tool.
	
============ 1.2.0.pre202 ============

	* Added two optimizations to GET OBJECTS HAVING MONADS IN
	  (EMdFDB::getObjectsHavingMonadsIn):

	  - On SQLite: If there is more than one MSE in the reduced
	    FastSetOfMonads, then the first, sweeping AND is not made,
	    i.e., first_monad <= monad_set.last() AND last_monad >=
	    monad_set.first().

	  - On all backends: If there is only one MSE in the reduced monad
	    set, then there is no WHERE condition on the monads at all iff
	    the first and last monads of the monad set are each within 20%
	    of the total number of monads away from the boundaries in
	    all_m_1.


============ 1.2.0.pre201 ============

2006-03-13  Ulrik Petersen

	* Fixed bug in sqlitemdfdb.h such that it compiles again.

============ 1.2.0.pre200 ============

2006-03-11  Ulrik Petersen

	* Added some Doxygen docs.

	* Added a new path to the logic in configure.in which finds Java
	  JVMs.

============ 1.2.0.pre199 ============

2006-03-11  Ulrik Petersen

	* Made a new distinction: HAVING UNIQUE FIRST MONADS / HAVING
	  UNIQUE FIRST AND LAST MONADS / WITHOUT UNIQUE MONADS.

	* Took advantage of this new structure in CREATE OBJECT TYPE.
	
	* Bumped current schema version to 11.

============ 1.2.0.pre198 ============

2006-03-01  Ulrik Petersen

	* Finished the NEGRA importer added in 1.2.0.pre177.

	* Added "remove_from_substring_and_out()" to EMdF/string_func.cpp.

	* Added "EmdrosImporterBase" to pennimporter.{cpp,h} and used it
	  in NEGRAImporter.

============ 1.2.0.pre197 ============

2006-02-23  Ulrik Petersen

	* The Penn importer now folds Terminals and the Nonterminal right
	  above it into one object.
	
============ 1.2.0.pre196 ============

2006-02-22  Ulrik Petersen

	* Changed util/pennlexer.lxx so that it can handle NAMEs of the
	  form "$(-PNC", which does occur in the TIGER corpus.

============ 1.2.0.pre195 ============

2006-02-21  Ulrik Petersen

	* Made it compile with NSIS on Win32.

	* Made the detection of the PostgreSQL libpq.a library and
	  PostgreSQL include-files better.  In particular, it now works
	  with Fink on Mac OS X, and also has a separate
	  POSTGRESQL_LIB_DIR environment variable for when it goes wrong.
	

============ 1.2.0.pre194 ============

2006-02-20  Ulrik Petersen

	* Apparently it wasn't enough what I did with ARFLAGS in pre193;
	  so I've aded an explicit ARFLAGS = @ARFLAGS@ line to the
	  relevant Makefile.am files, and AC_SUBST(ARFLAGS) to
	  configure.in.  This is so as to work on Sun CC.

============ 1.2.0.pre193 ============

2006-02-20  Ulrik Petersen

	* Changed emdros.spec.in file documentation in INSTALL and in
	  emdros.spec.in.

	* Added section on compiling on Mac OS X in INSTALL.

	* In order to be able to compile on Mac OS X with MySQL's
	  precompiled MySQL binaries, I've changed include/mysqlconn.h so
	  that it #include's <mysql.h> rather than <mysql/mysql.h>.  The
	  configure-script and win32 build procedures have been changed
	  accordingly.

	* Changed "typedef class ...template here..." to "typedef
	  ...template here..." in order to be able to compile with Sun's
	  CC compiler.  Also removed typedef from "typedef class
	  PennToken/Token" in include/penn_yylex.h and in
	  include/mql_yylex.h.

	* Removed function exec_file from src/ubimport.cpp.

	* AR_FLAGS is now ARFLAGS in configure.in. So it works again on
	  Sun CC.
	
	
============ 1.2.0.pre192 ============

2006-02-19  Ulrik Petersen

	* Finished the Penn Treebank importer.

	* Updated *.spec.in files for pennimport.

	* Merged emdros.spec2.in into emdros.spec.in, and removed all
	  traces of spec2 in build.sh.in and in the top Makefile.am.

	* Now differentiates in configure.in between powerpc and Darwin
	  when it comes to BIG_ENDIAN-ness.
	
2006-02-17  Ulrik Petersen

	* Added an almost finished Penn Treebank Importer (util/ and
	  src/).
	
2006-02-17  Ulrik Petersen

	* Added the following files:
	  - include/unboundbibleimporter.h
	  - utils/unboundbibleimporter.cpp
	  - utils/simplebibleschema.mql
	  - src/ubimport.cpp

	  This is basically an importer for the Unbound Bible format.

	* Moved joinList from utils/negraimporter.cpp to
 	  include/string_func.h.

	* Added two versions of split_string to string_func.{cpp,h}: One
	  which yields a std::list<std::string>, and one which yields a
	  std::vector<std::string>.  Also tested the list one in
	  tests/emdftry.cpp.

	
============ 1.2.0.pre191 ============

2006-02-13  Ulrik Petersen

	* Moved chunkingtool from main package to wxwidgets package in
	  emdros.spec*.in.

	* Added parameter for font family to constructor for
	  InterlinearLineMetrics in include/viewmetrics.h.

============ 1.2.0.pre190 ============

2006-02-13  Ulrik Petersen

	* Changed examples/ChunkingTool/ctmf.cpp:loadFile in a manner
	  similar to that done to qrytool/qtoutput.cpp in pre189.

	* Added kForm_NFC to the "output flags" to the call in
	  src/qrytool/qtoutput.cpp which creates the TECkit Converter.

	* Made the RPM .spec files work again.

============ 1.2.0.pre189 ============

2006-02-12  Ulrik Petersen

	* Made it compile, run, and macdist on Mac OS X.

	* Changed src/qrytool/qtoutput.cpp:loadFile such that it works in
	  the case of not being able to load first time, but needing to
	  add app_prefix.

============ 1.2.0.pre188 ============

2006-02-09  Ulrik Petersen

	* Changes to wx/viewmetrics: m_latinFont is now deleted whenever
	  it needs to be deleted.

	* In wx/layout.cpp: Better handling of pDC->SetFont and
	  pDC->GetTextExtent.

============ 1.2.0.pre187 ============

2006-01-28  Ulrik Petersen

	* Changes to wx/layout.cpp and include/layout.h to speed things
	  up.

	* Fixed bug in src/qrytool/wxilqtout.cpp: bool bRightToLeft =
	  false should be m_bIsRightToLeft = false.

	* Added EMdF/monads.cpp:FastSetOfMonads::unionWith(const
	  SetOfMonads& other).

	* Changes to ChunkingTool:

	  - Made the interface a bit faster in response-times.

	  - Added a "Combine" command.

	  - Added a "pre_chunking_unit" feature, which allows you to
	    specify a unit that will be converted to chunks if there are
	    no chunks in the database.

	
============ 1.2.0.pre186 ============

2006-01-24  Ulrik Petersen

	* Added support to the topographic MQL part for NOTEXIST that is
	  not the sole block in the block_str.  See the MQL Programmer's
	  Guide for information on what the new semantics is.

============ 1.2.0.pre185 ============

2006-01-20  Ulrik Petersen

	* Fixed a bug in MatchedObject::sheafIsEmpty(): It would only
	  check whether m_sheaf was 0 (nil), not whether the sheaf was
	  actually empty if there was a sheaf.

	* Fixed a bug in FastSetOfMonads::addMSE(): For the cases of
	  overlap, adjacent, and subsume, I incremented the iterator AFTER
	  I had erased the thing.  Apparently this worked on Linux but not
	  on Windows with the SGI STL.

	
2006-01-14  Ulrik Petersen

	* Got a very small speed increase by:

	  - Reimplementing InstObject::getMonads() and

	  - Removing the focus parameter to MatchedObject's constructor
	    for ID_D MOs.  It wasn't necessary, as it was moved into
	    ObjectBlockBase some time ago.

============ 1.2.0.pre184 ============

2006-01-13  Ulrik Petersen

	* Made the lexers (mql.lxx and mql_get_query.lxx) somewhat faster.
	  This is especially noticeable if a query is very long.

	
============ 1.2.0.pre183 ============

2006-01-13  Ulrik Petersen

	* Fixed bug in manage_indices.cpp: It zero-filled the password
	  before it was used...

	* Fixed bug in win32/win32.mak: libutil_emdros.lib wasn't being
	  built if EMDROS_ONLY==0, which it should.

	* Got a speed increase on CREATE OBJECTS WITH OBJECT TYPE, by
	  doing FeatureAssignment::typeAssignTypes a different way.
	  Instead of relying on the cache in EMdFDB, it now gets passed a
	  std::list<FeatureInfo>.  This affects CREATE OBJECT, CREATE
	  OBJECTS WITH OBJECT TYPE, and UPDATE OBJECT.

	* Changed the way CREATE OBJECT TYPE works: Before, the
	  object_id_d would be INTEGER PRIMARY KEY if range type was not
	  kORTMultipleRange, but would get just an INT NOT NULL and a
	  PRIMARY KEY(object_id_d) if it was kORTMultipleRange.  This was
	  inefficient on SQLite, and was also unnecessary.  This made the
	  example databases quite a bit smaller.  There is no change to
	  the schema: Emdros versions from 1.2.0.pre154 and up can read
	  the new databases, and this version can read databases created
	  with versions 1.2.0.pre154 to 1.2.0.pre182.  It is just an
	  optimization of the OT_objects table.

	* Fixed bug in BlockString::symbolObjectReferences():
	  ppInnermostBlockStringHavingAllForBlockString wasn't being
	  initialized to 0 as it should!

	* Reimplemented mql_R.cpp, the  topographic part of MQL.  That is,
	  I removed  the pParentStraw paremeter.   The reason was  that it
	  was impossible to keep the stipulated invariant, namely that:

	      I12) All functions below R_blocks_XXX and above R_opt_blocks
	      have a parameter, pParentStraw, which shows the current
	      straw being made.  If this parent straw is not added to
	      pResultLOS, then the call in which it is not added must
	      return an empty pResultLOS.  If the call does not return an
	      empty pResultLOS, then the caller can assume that
	      pParentStraw was added exactly once to pResultLOS, or that
	      the callee has deleted pParentStraw.

	* Changed prototype of ListOfStraws::join(Straw* s) to have const
	  Straw *s. Removed ListOfStraws::join(Straw *s, bool bTakeOver)
	  and moved the functionality into
	  ListOfStraws::joinAndTakeOver(Straw *s) and
	  ListOfStraws::join(const Straw *s).

	* Implemented ListOfStraws::appendACopy(const ListOfStraws
	  *pOther).  Used it in the ObjectBlockSTAR implementation in
	  mql_R.cpp.


============ 1.2.0.pre182 ============

2006-01-13  Ulrik Petersen

	* Upgraded to SQLite 2.8.17.

============ 1.2.0.pre181 ============

2006-01-11  Ulrik Petersen

	* Fixed bug in string_func.cpp:string2charset(): Control reached
	  end of function without return value.

	* Updated Win32 build process to use wxWidgets 2.6.2.

	* Made FastMonadSet not SWIG'ified.

	* Removed redundant variables in a number of files (I compiled
	  with -Wall and heeded warnings).

	
============ 1.2.0.pre180 ============

2006-01-11  Ulrik Petersen

	* Fixed bug in EMdFDB::getObjectsHavingMonadsIn():
	  objects_already_seen was not being used, and so an object might
	  show up more than once...

	* Took greater advantage of the new FastSetOfMonads in
	  EMdFDB::getObjectsHavingMonadsIn() by raising both MAX_MSES2 and
	  MIN_GAP.  The result is a nice speed increas on GET OBJECTS
	  HAVING MONADS IN.

	
2006-01-10  Ulrik Petersen

	* Bugfixed + enhanced FastSetOfMonads.

	* Implemented more monads-set tests in emdftry.cpp.

	* Found a bug in the logic for how to treat MSEs in a monad set,
	  and corrected it.  The affected methods are
	  SetOfMonads::part_of, SetOfMonads::removeMSE,
	  SetOfMonads::intersect, SetOfMonads::overlap.  Basically, the
	  order in which the 6 relationships were checked was wrong.  It
	  needs to be 1,5,3,6,2 instead of 1,2,3,4,5.

	
============ 1.2.0.pre179 ============

2006-01-10  Ulrik Petersen

	* Implemented a FastSetOfMonads.

	* Used it in GET OBJECTS HAVING MONADS IN, and got a nice speed
	  increase.

	* Implemented som tests in tests/emdftry.cpp for FastSetOfMonads.
	
============ 1.2.0.pre178 ============

2006-01-09  Ulrik Petersen

	* Fixed bug #1400913 in EMdF/inst.cpp: With the new mql_R.cpp
	  (from 1.2.0.pre163), Inst::next() should really advance the
	  iterator to the next monad, which it didn't.  This caused
	  duplicate results to be returned in some cases.  This was done
	  by changing "pInst->next(i)" to "pInst->nextAtHigherKey(i)".
	  Also, implemented SkipListConstIterator::advanceToNextKey().

	* inst.cpp now uses ci.currentKey() instead of
	  ci.current()->first().

============ 1.2.0.pre177 ============

2005-12-18  Ulrik Petersen

	* Fixed an off-by-one bug in
	  src/qrytool/output_style.cpp:do_reference.
	
2005-12-17  Ulrik Petersen

	* Fixed bug in creation of AGXML anchors: Only the start and end
	  of all SOMs were added, not the start and end of all MSEs in
	  each SOM.

	* Added the rudiments of a NeGRA-format importer.  Doesn't
	  actually even compile yet...

	* Now distributes the TECkit headers on all platforms.

	* Fixed bug in R_object_block_DB: som_last and su_last were not
	  initialized.

	* Emdros Query Tool: 

	  - Fixed doc/EQTUsersGuide.hhp to say "EQTUsersGuide" rather than
	    just "UsersGuide".

	  - Bumped version number to 1.0.2.

	  - app_path is now set correctly on Win32.

	  - It doesn't connect upon startup: You have to press the new
	    "Connect to DB" button, or choose "Tools|New DB connection".

	  - Various typos fixed in strings.

	  - Now refreshes itself upon connect.

	  - Now checks that m_pEE is not 0 (nil) before attempting connection.

	  - Documentation of EQT is now build in PDF as well as in HTML.
	
	
2005-12-16  Ulrik Petersen

	* Added doc/agexport.1.
	
	* Added Emdros Chunking Tool to Start menu on Win32, along with
	  agexport.html.

	* Renamed the Emdros Query Tool's UsersGuide.htb to
	  EQTUsersGuide.htb.

	* Moved the core functionality of mqldump.cpp into
	  util/mql_exporter.cpp.
	

============ 1.2.0.pre176 ============

2005-12-16  Ulrik Petersen

	* Made EmdrosChunkingTool compile and run under Win32.  Changed
	  mainframe.{cpp,h} to ctmf.{cpp,h}.  It is NOT a good idea to
	  have the same filename in different places in the sourcecode,
	  since this will cause problems on Win32 unless the .obj files
	  are placed in different directories -- as is done with SQLite,
	  because it produces a file called "table.obj", which of course
	  would conflict with the object file from EMdF/table.cpp.

	* Now builds agexport.exe on Win32.

	* Updated DJGPP build process.

	* Now distributes EmdrosChunkingTool.exe on Win32, along with
	  libemdrosgui and libutil_emdros, as well as agexport.exe.
	
	
2005-12-15  Ulrik Petersen

	* Added examples/ChunkingTool.

	* Rewrote parts of wx/layout.cpp and include/layout.h such that
	  paragraphs can now be created with a certain indentation.

	* Added GetLong/SetLong in include/layout.h:LayoutBox.

	* doc/ no longer cleans $(PDFFILES) and TheDoor.eps; it merely
	  distcleans them.

	* Added some icons to wx/.

	* Removed option to not compile PCRE.

	* Added blue-E.icns resource to wx/, and used it in the Query Tool
	  and in the ChunkingTool.

	* Added src/agexport.cpp, util/agxml.cpp, and include/agxml.h.

	* Added string_func.cpp:string2charset().

	* Added FlatStraw::getObjectTypeName().

2005-12-14  Ulrik Petersen

	* Restored build of the non-unicode version of the Emdros Query
	  Tool.
	
============ 1.2.0.pre175 ============

2005-11-16  Ulrik Petersen

	* Added Mac OS X support for the Emdros Query Tool.

============ 1.2.0.pre174 ============

2005-11-12  Ulrik Petersen

	* Made eqt not crash if there was something wrong in reading the
	  configuration file.

	* Various other improvements to EQT.

	* Now distributes libteckit.a.

	* Various improvements to the wx/ library.

============ 1.2.0.pre173 ============

2005-11-10  Ulrik Petersen

	* Re-added support for DJGPP.

	* Added LayoutCanvas to wx/layout.cpp.

	* Took advantage of LayoutCanvas in the Emdros Query Tool.  Added
	  src/qrytool/wxilqtout.{cpp,h}.  Got rid of
	  src/qrytool/wxqtout.{cpp,h}.

	* Added Alex Bodn's Public Domain patch for DJGPP to SQLite.

	* Made various improvements to the Emdros Query Tool.

	
============ 1.2.0.pre172 ============

2005-11-07  Ulrik Petersen

	* Implemented Sheaf::appendAndSubsume()

	* Added a BlockString class to mql_query.{cpp,h}
	
	* Implemented OR between strings of blocks (that's what resides in
	  a BlockString).

	* Added checks to mql_query.cpp (::symbolObjectReferences()) which
	  check that we do not cross an "export barrier" with an object
	  reference declaration.  An export barrier is either a STAR, an
	  OR, or a NOTEXIST.

	* Added checks to mqltry.cpp checking the new OR machinery, as
	  well as the symbol-machinery for export barriers.

	* Fixed bug in mqltry.cpp:
	  exec_string_expect_compiler_error_but_no_DB_error did not set
	  bAllOK to false upon failure, which it should and does now.

	* Fixed bug in mql_R.cpp: NOTEXIST at the outermost level would
	  segfault due to R_block_string_NOTEXIST_object_block() returning
	  0 for the sheaf.
	
============ 1.2.0.pre171 ============

2005-11-07  Ulrik Petersen
	
	* Added ListOfStraws::clearButDontDeleteStraws.

	* Rewrote mql_R.cpp partially, so that the current Straw being
	  made is always accessible, on the stack.

2005-11-04  Ulrik Petersen

	* Changed emdros.spec[2].in so that libutil_emdros.a and
	  libemdrosgui.a are now installed.

============ 1.2.0.pre170 ============

2005-11-03  Ulrik Petersen

	* Made the changes from pre169 compile on Win32.

	* Changed eqtc (src/qrytool/mqlqt.cpp) so that it prints the
	  config file being used upon startup.

	* Changed eqtc (src/qrytool/mqlqt.cpp) and eqt(u) so that they use
	  the correct prefix (app_prefix() rather than just prefix()).

============ 1.2.0.pre169 ============

2005-11-03  Ulrik Petersen

	* Added the directories wx/ and util/.  The wx directory has some
	  classes that I plan to use for the Emdros Query Tool, and also
	  splits out some classes from the Emdros Query Tool which are
	  generally useful for wxWidgets-based programs.  The util/
	  directory separates out some stuff from the Emdros Query Tool
	  which is generally useful.

	* Rewrote Emdros Query Tool and HAL-space to use the libraries in
	  wx/ and util/.

	* Added some functions to EMdF/string_func.cpp.

	* Moved myos.h.in from src/qrytool and examples/HAL to
	  include/prefix_emdros.h.in.
	
2005-11-01  Ulrik Petersen

	* Bugfix/Enhancement: It used to be that you could use any
	  operator with LIST_FEATURE op Object_Reference.LIST_FEATURE, not
	  just IN and HAS.  This was bad, as it allowed = between the two,
	  but did not do the expected thing.  Now = is a possibility in
	  addition to IN and HAS, and it compares equal if and only if the
	  two lists have exactly the same sequence of values.

============ 1.2.0.pre168 ============

2005-10-29  Ulrik Petersen

	* Changed configure.in in several ways:

	  - Finding Python, PostgreSQL's libpq, PostgreSQL's libpq-fe.h,
	    and MySQL's libmysqlclient are now much better, and handle
	    FreeBSD and NetBSD in addition to Linux and Solaris.

	* Added -lphtread to
	  sqlite/src/Makefile.am:libsqlite_emdros_la_LDADD.  This was
	  necessary to get it working on NetBSD, and didn't do any harm on
	  Linux or FreeBSD.

	* Changed examples/HAL/Makefile.am: It now adds libhal.a directly
	  on the _LDADD line for halblddb and mqlhal.

	* Added -L/usr/pkg/lib to LDFLAGS in sqlite/configure.ac.  This
	  was so as to get it to work on NetBSD.

	* Changed SWIG/perl/Makefile.am such that the BUILT_SOURCES are
	  now relative to $(srcdir), as they are in the targets.  This was
	  so as to get it to work on NetBSD.

	* Changed SWIG/python/Makefile.am to export PYTHON=$(PYTHON)
	  before running py-compile.  This was so as to get it to work on
	  NetBSD, where PYTHON is set by configure.in, and where "python"
	  does not necessarily exist.

	* Changed sqlite/configure.ac so that -L/usr/pkg/lib is added to
	  LDFLAGS if on NetBSD, and so that Tcl_Init is looked for in
	  tcl84, tcl83, and tcl82 in addition to tcl8.4, tcl8.3, and
	  tcl8.2, and so that -lpthread is added to otherlibs for
	  determining tcl library.  All of this is necessary on NetBSD.
	
	
2005-10-28  Ulrik Petersen

	* Added preliminary support for PHP via SWIG.

	* Got a large speed-increase on the Emdros Query Tool by
	  implementing a different algorithm for comparing MyRow's with
	  each other in the MyTable::m_rows std::multimap.  Especially if
	  the solution-sets are large, you will see a large speed
	  increase.

============ 1.2.0.pre167 ============

2005-10-25  Ulrik Petersen

	* Added INITIALIZE DATABASE statement to docs and code.
	
2005-10-21  Ulrik Petersen

	* Updated emdros.spec.in/emdros.spec2.in to reflect changes in
	  documentation.

============ 1.2.0.pre166 ============

2005-10-20  Ulrik Petersen

	* Made changes to the Win32 build process.

	* Changed off_t to offset_t in SQLite sources.

============ 1.2.0.pre165 ============

2005-10-20  Ulrik Petersen

	* Modified win32/win32.mak to reflect changes in documentation.

============ 1.2.0.pre164 ============

2005-10-20  Ulrik Petersen

	* Removed all kMOKXXX (MatchedObject kinds) except kMOKEMPTY_mo,
	  kMOKID_D, and kMOKID_M from MatchedObject and mql_enums.h
	  (eMOKKind still has kMOKNIL_mo, but this is not present in
	  MatchedObject as an option).

	* Rewrote the weeder for topographic queries.  Also added some
	  constraints, documented in mql_R.cpp.

	* Documented the new invariants in mql_R.cpp.

	* Implemented R_blocks_opt_gap().

	* Got rid of ObjectBlockCommon: Now there is only ObjectBlock.
	  The distinction between ObjectBlock and ObjectBlockFirst had
	  become obsolete when I redesigned the language in 1.2.0.pre163.

	* Updated win32/emdros.nsi.in to reflect new documentation.

	* Fixed some bugs in mql_R.cpp.

	* Added some tests to mqltry.cpp.

	
============ 1.2.0.pre163 ============

2005-10-15  Ulrik Petersen

	* Redesigned the topographic part of MQL from scratch:

	  - STAR is now allowed on the first block in the blocks, and also
	    on the first block after a power block.

	  - You can now start a blocks with a gap_block (but still not
	    after a power_block).

	  - NOTEXIST is now only allowed on a single, lone object block,
	    which has to be the only block in the blocks.

	* mqltry.cpp was updated with new tests.

	* Changes to Emdros Query Tool:

	  - A message is now given when the TECKit mapping can't be
	    loaded.

	  - Another error message was edited slightly.

	* Changes to HAL example:

	  - The default .cfg file is now called "default.cfg" instead of
	    "hal.cfg".

	  - Added preliminary support for output of Burmeister Format
  	    (*.cxt).

	  - Added preliminary support for output of SQL.

	* Added SetOfMonads::getGaps.

	* Added mql_query.h: class Gaps.
	
2005-10-07  Ulrik Petersen

	* Bugfix/speedup: CREATE OBJECTS WITH OBJECT TYPE is now faster in
	  the case where you don't wrap it in a transaction (which you
	  should do, however): The whole process is now wrapped in a
	  transaction, not just some of it (unless you've started a
	  transaction yourself).  This can be seen as a correctness bug,
	  but it can also be seen as a speedup, since all those
	  getNextObject_ID_D calls were done in individual transactions,
	  which was very slow.  This was especially noticeable in
	  hal_build_db.

	* Bugfix: emdfdb.cpp now calls pConn2->finalize() explicitly upon
	  failure.

	* Bugfix in examples/HAL/HALSpace.cpp: maybeExecQuery now sets
	  count = 0 after a successful commit.  This bug (i.e., not doing
	  it) caused problems if there were more than 100000 words.
	
2005-10-07  Ulrik Petersen

	* Optimized Emdros Query Tool to use Llist<> instead of std::list
	  and std::vector.

============ 1.2.0.pre162 ============
	
2005-10-07  Ulrik Petersen

	* Optimized XML output:

	  - Added kOKCompactXML as a new eOutputKind.  Use it unless you
  	    want pretty-printed XML.

	  - Changed interface to EMdFOutput's XML output methods to use
 	    const char* rather than std::string.

	  - Added EMdFOutput::out(char) and EMdFOutput::out(const char*)
	    as inline method.

	  - Made EMdFOutput::out(std::string) into an inline method.

	  - Optimized the XML output code heavily.

	  - Added --cxml switch to mql(1) to select compact XML.
	
============ 1.2.0.pre161 ============
	
2005-10-07  Ulrik Petersen

	* GET OBJECTS HAVING MONADS IN got a speed boost, by increasing
	  MIN_GAP to 40000.

2005-10-06  Ulrik Petersen
	
	* On PostgreSQL, when creating the database, the default encoding
	  is now set to SQL_ASCII.  This was because that was the DEFAULT
	  on versions prior to PostgreSQL 8.0 (on my various Linux
	  systems, at least), but this changed to UNICODE on PostgreSQL
	  8.0 (at least on Fedora Core 4).  This is a temporary fix while
	  I figure out what to do about encodings....

============ 1.2.0.pre160 ============

2005-09-29  Ulrik Petersen

	* Fixed a correctness bug in mql_R.cpp:R_block(): The rest of the
	  code assumed that R_block returned a list of straw with 1 MO in
	  each straw if this was an object block, but that wasn't
	  happening: Instead, the straw that was handed back from
	  R_object_block was appended to the ListOfStraw that was passed
	  to R_block.  This led to bug #1307568, which could cause
	  problems if there was more than 1 object starting at a given
	  point.
	
============ 1.2.0.pre159 ============

2005-09-26  Ulrik Petersen

	* Fixed bug in mqldump.cpp: not being able to dump list of enum.

	* Added macro to emdfdb.h:
	  GET_ENUM_FEATURE_ID_FROM_LIST_OF_ENUM_FEATURE_ID(X).

	* Expanded mqltry.cpp to test lists of {id_d,integer,enum_const}
	  more rigorously.

	* Fixed a bug in EMdFComparison::compare: HAS didn't work.

	* Fixed bug in FeatureComparison::type: lists of enums weren't
	  being type-tested rigorously enough.
	
============ 1.2.0.pre158 ============

2005-09-23  Ulrik Petersen

	* Fixed a bug in the CREATE OBJECT statement whereby lists of
	  enums would get added as a list of enum constants, not as a list
	  of integers as they should.

	* Fixed a bug in CREATE OBJECTS WITH OBJECT TYPE whereby lists of
	  enum would be added to the database in reverse order.

	* Fixed a bug in MatchedObject::printConsole and a similar one in
	  MatchedObject::printXML whereby list of enum constants would be
	  in reverse order of what was in the database.

============ 1.2.0.pre157 ============

2005-09-21  Ulrik Petersen

	* Made the Win32 SWIG DLLs really work again.

	* Made the SWIG Java example work.

============ 1.2.0.pre156 ============

2005-09-21  Ulrik Petersen

	* Made the Win32 SWIG DLLs work again.

2005-09-14  Ulrik Petersen

	* Got a speed increase by removing a copyMO in
	  mql_R.cpp:R_block_str().

	* Got a speed increase by rearranging some stuff in
	  EMdFDB::getInst().  In particular, an InstObject is now only
	  created if bDoAdd is true -- before, it was always created, and
	  then its destructor was called if bDoAdd was false.

============ 1.2.0.pre155 ============

2005-09-10  Ulrik Petersen

	* mqldump.cpp now emits BEGIN transaction immediately after DROP
	  INDEXES ON OBJECT TYPE, and COMMITs it immediately before CREATE
	  INDEXES ON OBJECT TYPE.  Transactions aren't committed and begun
	  in between.  This led to a speed increase when reloading the
	  database.
	
============ 1.2.0.pre154 ============

2005-09-10  Ulrik Petersen

	* Made changes to Solaris Sun Forte CC build in configure.in:
	  libtool is changed so that "CXX=\"g++\"" is changed to
	  "CXX=\"CC\"".  This was so as to make it work again with shared
	  libraries.  
  	    - Automake version: automake-1.9.5-1
	    - libtool version: libtool-1.5.16.multilib2-2
	    - autoconf version: autoconf-2.59-5
	  This is on Fedora Core 4.
	
	* In EMdF/pgconn.cpp, unistd.h is now only #include'd if this is
	  not WIN32.
	
	* By default, Win32 is now compiled as /MT rather than /MD.  This
	  removes the dependency on msvcrt71.dll and msvcp71.dll.  I could
	  not legally distribute these, so users who did not have them
	  were left to obtain them for themselves.  Not very nice...

	* On Win32, the new build machinery (from pre148) is now
	  implemented for SWIG/java and SWIG/python.

	* On Win32, the win32/emdros.nsi.in script now installs the
	  sourcecode.

	* Overhauled the FEATURE_TYPE #defines:
	  - Added FEATURE_TYPE_ENUM
	  - Added FEATURE_TYPE_LIST_OF_INTEGER
	  - Added FEATURE_TYPE_LIST_OF_ID_D
	  - Added FEATURE_TYPE_LIST_OF_ENUM
	  - Changed FEATURE_TYPE_TYPE_MASK so that it strips out all but
  	    the lowest 8 bits.
	  - Overhauled everything that touched featureTypeIdIsXXX and/or
	    FEATURE_TYPE_XXX.

	* src/mqldump.cpp now adds 'quotes' around the DB name when
	  dumping that, so as to accommodate SQLite.
	
	* mqldump now works with LIST OF X.

	* mql_execute.{h,cpp} and
	  emdros_environment.cpp/environment_emdros.h now have
	  "throw(... , EmdrosException)" because that is throwable now.
	  If this were not added, then the program would abort prematurely
	  if an EmdrosException was thrown (on Linux, at least).

	* Added ASSERT_THROW and ASSERT_THROW_X to include/debug.h.  Used
	  them in a number of places.  Removed ASSERT_THROW from
	  EMdF/table.cpp.  Used ASSERT_THROW_X instead.

	* In PgEMdFDB::createObjectsOT_objects_data: FeatureInfo2SQLvalue
	  might throw an EMdFDBDBError exception in getID_DFromSet().
	  Therefore, this is now surrounded by a try... catch, which
	  prints an error message on the local error message stream,
	  including the error message of the exception.  Then throws the
	  exception.

	* mql.cpp now catches more exceptions.
	
============ 1.2.0.pre153 ============

	
2005-09-09  Ulrik Petersen

	* Made BIG_ENDIAN configure.in-variable work on Solaris SPARC.

	* Made changes to TECKit/Compiler.cpp to make it compile on Sun
	  Solaris.

	* Made changes to qrytool/mytable.h to make it compile on Sun
	  Solaris with Sun Forte CC (extraneous const keywords in template
	  arguments which didn't do anything...).

	* libteckit.a, libqrytool.a, libwxqtl.a, libwxqtlu.a, and libhal.a
	  are now lib'ified on Sun Forte CC with "libXXX_a_AR = $(CXX)
	  -xar -o" when HOSTISSUNCC is AM_CONDITIONAL true, and
	  "libXXX_a_AR = $(AR) $(AR_FLAGS)" otherwise.  Note that this may
	  break the build on Darwin -- I just haven't gotten a chance to
	  check that yet.

============ 1.2.0.pre152 ============

2005-09-09  Ulrik Petersen

	* Sets of strings now draw their id_ds from SEQUENCE_OBJECT_ID_DS.
	  This was necessary because SEQUENCE_OTHER_ID_DS is now a limited
	  resource.

	* Renamed sequence_118_0 and sequence_118_1 to sequence_0 and
	  sequence_0 respectively.

	* Renamed SEQUENCE_OTHER_IDS (sequence_1) to SEQUENCE_TYPE_IDS.
	  It is now only used for object type ids, enum ids, and feature
	  type ids.  It is still shift-lefted.
	
	* Added a third sequence (sequence_2), called SEQUENCE_OTHER_IDS.
	  It is used for everything else (i.e., monad sets, and string set
	  ids).

	
2005-09-08  Ulrik Petersen

	* The weeder now catches the case where we have an object
	  reference usage on the same object block as that on which it was
	  declared.

	* Added lists of integers, id_ds, and enum constants to the EMdF
	  and MQL layer.  NOTE: This breaks backwards
	  schema-compatibility!

	* SEQUENCE_OBJECT_ID_DS and SEQUENCE_OTHER_ID_DS now start at 1.
	
	* The way SEQUENCE_OTHER_ID_DS is generated is now changed: The
	  number is drawn, and then shift-lefted 16 bits.  This was so as
	  to make room for a byte (bits 8-15) of modifier-bits.

	* Added feature IN (integer1, integer2, ..., integerN) to
	  topographic language.

	* Added feature IN object_reference_usage to topographic language,
	  where the object reference usage refers to a list of something.

	* Added feature HAS value to topographic language where feature is
	  a list of something, and value is an atomic value or an object
	  reference usage referring to an atomic feature.
	
============ 1.2.0.pre151 ============

2005-08-27  Ulrik Petersen

	* Changed SQLite build scripts to define HOST_IS_BIGENDIAN=[0|1]
	  according to whether this is a PowerPC or Sparc, or something
	  else.
	
2005-08-25  Ulrik Petersen

	* Removed a memory leak in the harvester of the query tool.

============ 1.2.0.pre150 ============

2005-08-21  Ulrik Petersen

	* Made it compile again on Win32, by removing some extraneous
	  stuff in win32/config.mak.in.

============ 1.2.0.pre149 ============

2005-08-21  Ulrik Petersen

	* Added new statement: GET SET FROM FEATURE, which makes use of
	  the new EMdFDB::getStringSetStringsAndAddToCache().

============ 1.2.0.pre148 ============

2005-08-15  Ulrik Petersen

	* Completely overhauled the win32 build, such that debug
	  information can be compiled except if compiling with SWIG.
	
2005-08-08  Ulrik Petersen

	* Fixed bug in lexer/parser: It now gives a meaningful token name
	  rather than a misleading message upon syntax error.

============ 1.2.0.pre147 ============

2005-08-05  Ulrik Petersen

	* Added code to support encryption on SQLite.  You might want to
	  get the encryption-enabled version of SQLite from Dr. Hipp, the
	  author of SQLite.

	* Added Makefile-machinery to distribute the SQLite tests that
	  were added in pre146.
	
============ 1.2.0.pre146 ============

2005-08-04  Ulrik Petersen
	
	* Upgraded to the latest CVS version of SQLite 2.8.16.

	* Added the tests to SQLite 2.8.16, and the machinery to build
	  them, but only on Linux and only if tcl.h is available.
	
============ 1.2.0.pre145 ============

2005-08-02  Ulrik Petersen
	
	* Took out the default password.  Removed default_password.h and
	  print_default_password.cpp.  Also fixed up the documentation.

	* Changed "encryption" so that it is simpler.  In particular,
	  encryption.h is now a static file; it is not dynamically
	  generated.

	* USE DATABASE on SQLite now returns error if the database doesn't
	  exist.  It doesn't just create the database file silently.  To
	  do this, I made an extern definition of sqliteOsFileExists in
	  sqliteconn.cpp.  This is defined in sqlite/src/os.c.

	* Removed some warnings on MSVC by adding a #pragma to emdf.h and
	  including that judiciously.  Also changed some ints to unsigned
	  int to keep the compiler from complaining about comparison type
	  mismatches.
	
============ 1.2.0.pre144 ============

2005-07-30  Ulrik Petersen

	* Upgraded to PCRE 6.1.

	* Added "EMDROS_ONLY" to win32/config.mak.in.

	* Homogenized win32 build process so that LIBFLAGS or LIBFLAGS
	  are always used.

	* Made it build on gcc 4.0.1.

============ 1.2.0.pre143 ============

2005-07-12  Ulrik Petersen

	* Syntactic sugar in monad sets: You can now say {10-} and mean
	  "from 10 (inclusive) up to MAX_MONAD (i.e., practical infinity)".

	* Fixed bug: mql_query.h wasn't installed, but was #include'd in
	  mql_sheaf.h.  It is installed now.

	* Fixed bug: pcre.h was #include'd in mql_query.h, but wasn't
	  installed.  It is now called pcre_emdros.h and is installed.

	* Removed straight_join from MySQL EMdFDB::getInst() because it
	  wasn't serving its purpose any more, and didn't give noticeable
	  speedups.

============ 1.2.0.pre142 ============

2005-07-11  Ulrik Petersen

	* Added machinery on Win32 to build an installer with NSIS
	  (http://nsis.sourceforge.net).

	* Emdros on PostgreSQL on Win32 now REQUIRES PostgreSQL 8.0 or
	  later.

	* Added LyX docs to doc/, and machinery to build and distribute
	  PDFs of them.

	* src/qrytool/TECkit/{TxtConv,TECkit_Compile} are now installed.

	
2005-07-10  Ulrik Petersen

	* Did a reorganization of the documentation files such that they
	  are more Windows-friendly (i.e., unix2dos; a .txt ending).

	* mqlqtwx is now called eqt (Emdros Query Tool); mqlqtwxu is now
	  called eqtu; mqlqt is now called eqtc (Emdros Query Tool
	  Console).

============ 1.2.0.pre141 ============

2005-07-08  Ulrik Petersen

	* Got a speed increase on GET OBJECTS HAVING MONADS IN, and
	  sometimes on getInst, by doing a simple join in the case of a
	  string that is FROM SET, instead of getting them all afterwards.

	* Got a speed increase on SELECT ALL OBJECTS and GET OBJECTS
	  HAVING MONADS IN by not allocating EMdFValue and then assigning,
	  but rather using the new-placement operator directly when
	  constructing the EMdFValue object.

============ 1.2.0.pre140 ============

2005-06-07  Ulrik Petersen

	* Added an optimization to SetOfMonads::part_of().

	* Added changes to src/qrytool/Amsterdam.map from Christopher
	  Samuel.
	
2005-06-04  Ulrik Petersen

	* Changed splash screen of mqlqtwx(u) to the Emdros logo.

	* Changed PROGRAMLDADD to be "" even on COMPILER_IS_GPLUSPLUS.  It
	  was "-lgcc -lstd++".  Also changed DARWIN_LDFLAGS to be "".
	  This was in a bid to make it compile on Mac OS X 10.4 (Tiger).

	* Added a sample TECkit mapping (Amsterdam.map) to mqlqt(wx(u)).
	  Thanks to Dr. Christopher J. Samuel for contributing this.
	
2005-05-31  Ulrik Petersen

	* Changed mqlqtwx(u):

	  - Updated docs slightly.

	
============ 1.2.0.pre139 ============

2005-05-31  Ulrik Petersen

	* Changed mqlqtwx(u):

	  - Made it compile on Win32 again.

	  - Removed an extraneous MainFrame::InfoMessage.
	

============ 1.2.0.pre138 ============

2005-05-31  Ulrik Petersen

	* Changed mqlqt(wx(u)):

	  - Added options "{input,output}_area_font_{name,size}", also to
	    docs.

	  - Made it compile and build in Win32.

	  - Made docs comply with PCRE license.

	  - Changed COPYING and src/qrytool/TECkit/README.txt to reflect
	    inclusion of TECkit, and that the sources are modified.

	  - Added splash screen.

	
============ 1.2.0.pre137 ============

2005-05-31  Ulrik Petersen

	* Changed mqlqt(wx(u)):

	  - Refactored to have EmdrosWrapper as the one that holds an
	    EmdrosEnv, a Configuration, and a QTOutputBase.

	  - Refactored so that getting the schema is now in separate
	    classes, not in mainframe.cpp.

	  - TECkit is now fully configurable, and works.

	  - Added an MQL Cheat Sheet to User's Guide, and updated User's
	    Guide in other ways.

	
2005-05-30  Ulrik Petersen

	* Added monads.cpp:SOMConstMonadIterator, which is an iterator
	  over monads, not monad set elements.

	* Changed mqlqt(wx(u)):

	  - Added "Solution number: %d" before each solution.

	  - Harvesting's calculation of results is now much faster, due to
	    using a multimap based on first monad rather than a vector.

	  - Now does single_raster_units correctly: It is not just the
	    first raster unit in the table, but all raster units, that
	    must be checked for its id_d having been seen before.

	  - Added ability in conf.cpp to have subsubkeys.

	  - Added ability in conf.cpp to have strings as sub(sub)keys.

	* Changed mqlqtwx(u):
	
	  - Added "Save output as...".

	  - Splitter windows are now resized to sensible defaults when the
	    window is maximized or sized.

	  - You can now copy from the schema tree to the clipboard (on
	    Win32).

	  - The "Tab" key now doesn't change to the next window in the
	    input/query window, but instead inserts a tab.
	

============ 1.2.0.pre136 ============

2005-05-28  Ulrik Petersen

	* Gained a ~4% speed increase by only calculating the inst of the
	  inner blocks when necessary.

============ 1.2.0.pre135 ============

2005-05-28  Ulrik Petersen

	* Made it compile on PostgreSQL again.

	* Changed getInst slightly.  Got a negligible speed increase.

	* Now doesn't add opt_gap_block in parser, but in
	  mql_query.cpp:*::type(), and only if surrounding context is
	  potentially a kORTMultipleRange.

	* Got a speed increase on opt_gap_blocks and gap_blocks that have
	  an inner blocks, by doing aggregate querying inside the gap.
	
============ 1.2.0.pre134 ============

2005-05-28  Ulrik Petersen
	
	* Changed machinery in mqlqt(wx(u)) so that it prints much faster
	  on mqlqtwx(u), i.e., it doesn't immediately print to the text
	  control, but buffers stuff and prints upon WXQTOutput::flush().
	
2005-05-27  Ulrik Petersen

	* Added btree_rb.c to the objects built for SQLite.

2005-05-24  Ulrik Petersen

	* Made configure.in look automatically in /usr/lib64/mysql for
	  -lmysqlclient.

============ 1.2.0.pre133 ============

2005-05-24  Ulrik Petersen

	* Changed win32/config.mak.in to reflect my new machine.

	* Changed QTOutput::Yield() and descendants to MyYield().  This
	  was so as to avoid a name-clash on Win32.

	* Gave QTOutput::printFeature and descendants a new parameter,
	  namely const std::string& feature_name.

	* Added TECkit from SIL.

	* Added machinery to QTOutputBase to compile and use TECkit
	  mappings.

	* Changed definition of INTPTR_TYPE from long long to long in
	  sqlite/src/sqliteInt.h, since Visual C++ 6.0 with no service
	  packs installed complained about this when on AMD64.

	* Added definition of BIG_ENDIAN={0|1} to configure.in, and used
	  it in TECkit and querytool Makefile.am's.

	
2005-05-19  Ulrik Petersen

	* Removed some unused methods and constructors from
	  src/qrytool/mytable.cpp.
	
	* Got a speed increase on GET OBJECTS HAVING MONADS IN when there
	  are "strings from sets" to be retrieved -- by batch-loading them
	  after retrieval and then setting the string in the EMdFValue.
	
	* Got a speed increase on MySQL and SQLite on GET OBJECTS HAVING
	  MONADS IN in the case of SINGLE MONAD OBJECTS by using
	  "first_monad IN (...)" instead of direct comparisons.
	
2005-05-18  Ulrik Petersen

	* Added "option = single_raster_units" to src/qrytool/harvest.cpp.
	  It means, if set, that any given raster unit will only ever be
	  printed once.
	
	* Added --with-32bit switch to configure.in and
	  sqlite/configure.ac: It adds the -m32 switch to tell gcc to
	  compile in 32 bit mode om x86_64.  Also added
	  ADDITIONAL_CXXFLAGS and ADDITIONAL_CFLAGS to Makefile.am's.
	
2005-05-15  Ulrik Petersen

	* Completed the refactorization of pre132.

============ 1.2.0.pre132 ============

2005-05-15  Ulrik Petersen

	* Now only compiles mqlqtwxu if Unicode is turned on in wx-config.
	
	* Made mqlqt(wx)(u) able to have no reference feature.

	* Refactored the include/mql_types.h:Feature class to not have to
	  be turned around, using a GrammarFeature class as an intermediate.
	
2005-05-13  Ulrik Petersen
	
	* The XML output now does an EMdFOutput::newline() after the end-tag
	  "</mql_result>", and after the <mql_result> begin-tag.

	
============ 1.2.0.pre131 ============

2005-05-13  Ulrik Petersen

	* The XML output now does an EMdFOutput::flush() after the end-tag
	  "</mql_results>".


============ 1.2.0.pre130 ============

2005-05-11  Ulrik Petersen

	* Added support to the Makefile.am's for compiling in a build
	  directory rather than right in the sources.  This is useful,
	  e.g., for kdevelop.  Also added autogen.sh, which simply calls
	  "autoreconf --install"

	* Moved m_bIsNOTEXIST from ObjectBlockCommon into ObjectBlockBase.

	* Fixed bug: The inner blocks in a gap_block and an opt_gap_block
	  would not get weeded.

	* Removed the changes to mql_R.cpp and mql_sheaf.{h,cpp} in 129
	  (since they caused inaccurate results to be returned).  

============ 1.2.0.pre129 ============

	* Changes unknown.

============ 1.2.0.pre128 ============

2005-05-06  Ulrik Petersen

	* Fixed bug: mql_R.cpp would return Gen 1.1 on the following
	  query:

	  SELECT ALL OBJECTS
	  IN {1-11}
	  WHERE
	  [clause
	     [phrase [word lexeme = "BR>[" ]  ]!  // the verb 'to create'
	     [phrase] *{1-100}!
	     NOTEXIST [phrase function = Objc]
	  ] 
	  GO

	  This is not the desired result.  In order to fix this, I had to
	  differentiate between kMOKEMPTY_mo and
	  kMOKNOTEXIST_EXHAUSTED_POSSIBILITIES_mo.

	* Changed NOT to NOTEXIST in sources where applicable.
	
	* Fixed bug: mql_R.cpp would go into an infinite loop on the
	  following query:

	  SELECT ALL OBJECTS WHERE 
	  [clause
	     NOTEXIST [phrase function = Objc]
	     ..
	     [phrase [word lexeme = "BR>[" ]  ]
	     ..
	     NOTEXIST [phrase function = Objc]
	  ] GO

	  This was because R_block_string failed to return at the end of
	  the function if the inst had been exhausted.

	  Thanks to Hendrik Jan Bosman for reporting this bug.


============ 1.2.0.pre127 ============

2005-05-02  Ulrik Petersen

	* Made mqlqtwx(u) work with wxWidgets-2.6.0.
	
============ 1.2.0.pre126 ============

2005-05-02  Ulrik Petersen

	* Changes to mqlqtwx(u):
	
	  - Changed message "You stopped the process" to "You successfully
	    stopped the process" in src/qrytool/mainframe.cpp.

	  - Added support for key = "string value with spaces" in conf.cpp.

	  - wxqtout.cpp now uses wxTextCtrl.AppendText rather than << for
	    printing and setConf was derived from QTOutputBase in
	    preparation for changing fonts on-the-fly.

	  - wxqtout.cpp:WXQTOutput::Yield now checks for wxWidgets version
	    2.5, and uses a different signature for wxApp::SendIdleEvents
	    in that case.
	
2005-04-30  Ulrik Petersen

	* Changed the default directory on WIN32 for mqlqtwx(u) to be Cwd
	  rather than UserHome.

============ 1.2.0.pre125 ============

2005-04-28  Ulrik Petersen

	* Added examples/HAL/hal.cfg to win32 dist --> etc\.
	
	* Added some more src/qrytool/*.cfg
	
	* Added online help to mqlqtwx(u), and a src/qrytool/doc/
	  directory.
	
============ 1.2.0.pre124 ============

2005-04-27  Ulrik Petersen
	
	* Added a tree control to mqlqtwx(u) to show database schema.

	* Bumped mqlqtwx(u) version to 1.0.1.
	
============ 1.2.0.pre123 ============

	* Changed default win32 build configuration back to no-SWIG,
	  no-WXWIN.
	
	* Fixed bug in EMdFDB::getObjectsHavingMonadsIn(): It chose
	  WITH_MULTIPLE_RANGE_OBJECTS precisely when they did not overlap
	  with original monad set.

============ 1.2.0.pre122 ============

2005-04-18  Ulrik Petersen

	* Made mqlqtwx build in a Unicode and a non-Unicode version under
	  Win32 and Linux.  Note that the Linux Unicode version requires a
	  wxWidgets that uses GTK+ 2.0 or greater.  Otherwise, there is no
	  difference between the Unicode version and the non-Unicode
	  version.
	
	* Added src/qrytool/mqlqtwxu.exe.manifest
	
	* Made "stop" button og mqlqtwx work under Win32.
	
2005-04-16  Ulrik Petersen

	* The Win32 builds now use /MD rather than /MT.  This was so as to
	  accommodate wxWidgets.  This also meant that libmysqlclient.lib
	  had to be exchanged for libmysql.lib.  This means that users
	  must now supply libmysql.dll from their own MySQL
	  installation. It should be placed in the PATH, or together with
	  the Emdros binaries.
	
	* Made HAL work under win32.
	
	* Added win32 build machinery for mqlqtwx.exe.
	
	* Added machinery to src/qrytool/ to check whether we should stop
	  the process in the middle.
	
	* Added src/qrytool/wxqtout.{cpp,h}.
	
	* Fleshed out src/qrytool/mqlqtwx so that it actually sets up the
	  connection, and queries.
	
	* src/qrytool/ now uses SetOfMonads::hasMonadsInRange() instead of
	  SOM::intersect().
	
	* emdftry.cpp now tests SetOfMonads::hasMonadsInRange().
	
	* Used new SetOfMonads::overlap() and
	  SetOfMonads::hasMonadsInRange() to speed up
	  EMdFDB::getObjectsHavingMonadsIn().
	
	* Added SetOfMonads::overlap() and
	  SetOfMonads::hasMonadsInRange().
	
	* Changed implementations of weeder and monads stage in
	  MQLMonadSetElement to iterative rather than a recursive
	  implementations.
	
	* examples/HAL/hal.cpp now uses ConsoleQTOutput instead of
	  std::ostream.

2005-04-15  Ulrik Petersen

	* Used the new QTOutputBase in src/qrytool/*.cpp, and the new
	  ConsoleQTOutput in src/qrytool/mqlqt.cpp.
	
	* Added the following files to src/qrytool/: consout.cpp,
	  consout.h, qtoutput.h.
	
	* Added the beginnings of a mqlqtwx program which uses wxWidgets
	  to accomplish the same as mqlqt(1).
	
	* Added support for --with-wxwin in configure.in.
	
	* Added doc/mqlhal.1.in and doc/halblddb.1.

2005-04-14  Ulrik Petersen

	* Updated win32/win32.mak so that it builds and cleans
	  examples\HAL.  Also removed PostgreSQL-on-Win98.txt.
	
	* Updated examples/HAL build machinery: a) So that it does not
	  depend on flex in the distributed state. b) So that win32 and
	  djgpp hopefully work.

2005-04-13  Ulrik Petersen

	* Updated src/qrytool/exec.cpp so that it respects a QUIT command.
	
	* Fixed bug in mql_get_query.lxx: QUIT now appends " GO" rather
	  than "GO", so that it doesn't become "QUITGO".
2005-04-12  Ulrik Petersen

	* Added examples/HAL, and the machinery to build it.
	
	* Bigstring::addsz(char *) --> addsz(const char*).

============ 1.2.0.pre121 ============

2005-04-12  Ulrik Petersen

	* Fixed some Windows-issues in mql_get_query.cpp, by making it
	  work with Bigstring instead of std::string.  The issue was that
	  on MS Visual C++ 6.0, the adding stuff to a std::string gets
	  slow-er and slow-e-r and sl-ow-e-r and s-l--o---w----e-----r
	  when the string gets above about 1MB in size.  So any big import
	  (CREATE OBJECTS) would get really slow, just in the
	  query-demarcation stage.

	* Added Bigstring *pBigstring to mql_yylex.h:Token.

	* Added Bigstring to arena.h, which is a crude implementation of a
	  big string, optimized for adding characters and C-style strings.

	* Fixed bug in src/qrytool/conf.cpp: a find() was replaced by
	  std::find().
	
	* Added a win32 makefile machinery to support the new qrytool, and
	  also some initial support for DJGPP (which may not work yet).
	
	* Fixed bugs in src/qrytool.cpp:parse_config_file().

	* Redid some output messages in the query tool.

============ 1.2.0.pre120 ============

2005-04-11  Ulrik Petersen

	* Changed build process so that it works on Mac OS X.
	
2005-04-10  Ulrik Petersen

	* Reimplemented
	  src/qrytool/output_style.cpp:Output_style::do_data() so that it
	  works better with linguistic data.
	
	* Added some more constants to
	  src/qrytool/conf.cpp:Configration::do_constants().
	
	* Removed the ability to have more than one reference unit from
	  qrytool.
	
	* Removed separate_solutions option from qrytool: Made a new
	  algorithm that always calculates separate solutions.  Also
	  removed the option from the configuration files.
	
	* Made qrytool HAVE_OSTREAM- and HAVE_ISTREAM-compliant.
	
	* Reinstated HJB's subkey-system in the qrytool configuration
	  files, and used them in the harvester.  Also changed the sample
	  configuration files to reflect this.

	* Updated qrytool's output_style.cpp to only use n-1
	  reference_sep's when there are n features.

	* Fixed bugs in EMdFDB::getObjectsHavingMonadsIn() and in
	  GetObjectsHavingMonadsIn::exec().
	
2005-04-09  Ulrik Petersen

	* Used new GET OBJECTS HAVING MONADS IN statement in the query
	  tool introduced in pre119.
	
	* Fixed bug in MQLResult::out() that would print an empty table if
	  it was a flat sheaf.
	
	* Added two EMdFDB::getObjectsHavingMonadsIn() methods to support
	  the new GET OBJECTS HAVING MONADS IN statement.

	* Added a new GET OBJECTS HAVING MONADS IN statement to MQL.
	
	* Fixed some bugs in ArenaConstIterator, and added Arena::Chunk()
	  constructor.
	
	* Moved some of the symbol-tasks into ObjectBlockBase from
	  ObjectBlockCommon.
	
	* Added
	  Feature::execMakeFeatureNameVector(std::vector<std::string>&).

============ 1.2.0.pre119 ============

2005-04-08  Ulrik Petersen

	* Fixed two bugs in EMdFDB::getMonadsFromID_Ds(). One was for
	  MULTIPLE RANGE OBJECTS: ci.hasNext() had to be ci.next().  The
	  other was an error in counting the number of object ids given
	  already.

	* Fixed memory-leak in MatchedObject's destructor: If an object
	  block had a GET clause, the EMdFValue's would not be deleted.

	* Added mql_execute.h:mqlGetNextQuery().

	* Added src/qrytool to build process.  This is a generic querying
	  tool for MQL.

============ 1.2.0.pre118 ============

2005-04-07  Ulrik Petersen

	* Fixed bug in mql_R.cpp whereby a ! was applied to
	  KleeneSOM.last() instead of to the boolean expression
	  (KleeneSOM.last() >= 2).

	* Updated the build machinery to work on Win32 again, and
	  hopefully to work on DJGPP.

2005-04-04  Ulrik Petersen

	* Gained a speed increase by reworking the "characterstic
	  string"/"MMap" machinery in mql_query.cpp.  Briefly, there is
	  only one query-wide mmap (in the Topograph), and all
	  characteristic strings are now prefixed with the characteristic
	  strings from the object block up to the Topograph (the topograph
	  having the characteristic string "").
	
============ 1.2.0.pre117 ============

2005-04-04  Ulrik Petersen

	* Made TestEmdros.java.in work again, added a Copyright statement
	  to that file.

	* Updated NEWS to reflect changes since pre106.
	
============ 1.2.0.pre116 ============

2005-04-04  Ulrik Petersen

	* Changed mqltry.cpp and mqllingtry.cpp to not use "feature(s)"
	  before feature-constraints.
	
	* Changed "NOT" before an object block to "notexist ::=
	  KEY_NOTEXIST | KEY_NOTEXISTS" in parser.
	
	* Added "notexist" and "notexists" to lexer.
	
	* Removed the "FEATURE"/"FEATURES" keyword before the
	  feature_constraints.
	
============ 1.2.0.pre115 ============

2005-04-04  Ulrik Petersen

	* Fixed some memory leaks in mql_R.cpp.

============ 1.2.0.pre114 ============
	
2005-04-03  Ulrik Petersen

	* Used new Straw::getFirstKind() and got a ~3% speed increase.
	
============ 1.2.0.pre113 ============

2005-04-03  Ulrik Petersen

	* New, faster way of printing monads from MatchedObject.

	* Added Straw::getFirstKind().
	
============ 1.2.0.pre112 ============

2005-04-02  Ulrik Petersen

	* Fixed numerous bugs in the NOT and STAR handling code.  It does
	  work now with all my test queries.
	
	* Removed extraneous printConsole().
	
============ 1.2.0.pre111 ============

2005-04-02  Ulrik Petersen

	* Fixed numerous bugs in the NOT handling code.  It should work
	  now...
	
============ 1.2.0.pre110 ============

2005-04-02  Ulrik Petersen

	* Added support for arbitrary "monad sets" after the star on
	  object blocks.
	
	* Refactored mql_R.cpp so that it now uses Straw instead of
	  ListOfMoNR, and ListOfStraw instead of ListOfListOfMoNR.
	
	* Moved eRetrieval into ObjectBlockBase from ObjectBlockCommon.
	
	* Moved kMOKEMPTY_mo and kMOKNIL_mo into MatchedObject.
	
	* Did away with MoNr.
	
============ 1.2.0.pre109 ============

2005-04-02  Ulrik Petersen

	* Added the rudiments of how to do a monad-set on the Kleene-star.
	
	* Added SetOfMonads::isMemberOf(monad_m, SOMConstIterator&) and
	  MonadSetElement::isBefore(monad_m).
	
============ 1.2.0.pre108 ============

2005-04-01  Ulrik Petersen

	* Implemented support in mql_R.cpp for STAR on non-first object
	  blocks.
	
	* Added STAR rule to block non-terminal.
	
	* Added '\*' to MQL lexer.
	
	* Added ObjectBlockCommon::weedStar, and used it from
	  Block::weedGET().
	
	* Fixed bug in MoNR(pMO, bool) constructor: It did not set m_kind
	  properly if pMO was a gap block.
	
	* Added ListOfListOfMoNR and iterators.
	
	* Added MoNR::isGapBlock_mo() and ListOfMoNR::hasGapBlock_mo().
	
	* Made Block a subclass of ByMonads.
	
	* Moved ByMonads declaration into mql_types.h.
	
============ 1.2.0.pre107 ============

2005-04-01  Ulrik Petersen

	* Fixed three memory leaks: One in each of the Sheaf and FlatSheaf
	  destructors, and one in the QueryBase destructor.
	
	
============ 1.2.0.pre106 ============

2005-03-31  Ulrik Petersen

	* Removed the "-Wl,-rpath -Wl,${my_prefix}/lib/emdros" incantation
	  from PROGRAMLDADD in the configure script, since it was causing
	  problems on Mac OS X.  Added "-lgcc -lstdc++" to that variable
	  for the same reason.

2005-03-30  Ulrik Petersen

	* Now all the mql_flatten_sheaf(...) functions are hidden from
	  SWIG.  This was so as to avoid pointers to sheaves as SWIGTYPEs.
	
	* Updated SWIG/java/TestEmdros.java.in so that it works with this
	  version.
	
	* Fixed bug: GET FEATURES would not turn around the m_features
	  list, so only the last would be retrieved.
	
	* When taking over a sheaf, it used to be that any program would
	  segfault, since the statement, containing the object blocks
	  pointed to in the MatchedObject, would also be destroyed.  So I
	  implemented things so that ObjectBlockBase now contains the
	  parts that are vital for a MatchedObject, and made sure that a
	  copy of the data were made and stored in a vector of
	  ObjectBlockBase pointers.  Then, when creating the MQLResult,
	  that vector is copied into the top-level sheaf from the
	  MQLExecEnv, and set to 0 in MQLExecEnv.
	
	* When flattening a sheaf, the original sheaf is now destroyed.
	  The mql_flatt_sheaf(...) functions now take a "Sheaf**" and set
	  the "*" to 0 after deleting the sheaf.
	
	* Added Feature::getPrev().
	
	* Fixed bug in StringList constructor: It did not set m_prev to 0.
	
	* Changed StringList::addString() to StringList::addStringBack(),
	  and added StringList::addStringFront().
	
	* Added "feature" to the topographic queries in mqltry.cpp
	
	* Added tests/mqllingtry.cpp.
	
	* Added support to mql_R.cpp for processing "NOT".

	* Added "feature"/"features" before feature_constraints in
	  grammar.  This was necessary to keep the grammar LALR(1) after
	  the addition of the NOT.
	
	* Added optional "NOT" before object_block(_first) in mql grammar.

	* Added "m_bIsNOT" to ObjectBlockCommon, and constructor-support
	  in that and derived classes.

2005-03-24  Ulrik Petersen

	* Changed djgpp.mak's to use -O2, and in addition, -DNDEBUG=1 for
	  SQLite.

============ 1.2.0.pre105 ============

2005-03-24  Ulrik Petersen

	* Fixed bug #1169630: ObjectSpecNoOT destructor segfaults on
	  PostgreSQL.  Did so by adding disposeOfObjectSpecNoOT and making
	  the ObjectSpecNoOT destructor non-recursive.

============ 1.2.0.pre104 ============

2005-03-23  Ulrik Petersen

	* Fixed bug in inst_object.cpp: A void function was attempting to
	  return something.
	
	* Made it work with DJGPP again.
	
	* Added mql_flatten_sheaf() function in four overloaded
	  incarnations, and used them in MQLResult::flatten(*).
	
	* Fixed bug #1122043: "SELECT on empty database will throw
	  BadMonadsException". This was done by changing the code in
	  QueryBase::myMonads so that when the DB is the empty DB, we set
	  the substrate to empty rather than intersecting.

============ 1.2.0.pre103 ============

2005-03-23  Ulrik Petersen
	
	* Fixed bug #1169083: llist.h:LVlist<T>::erase() didn't update
	  m_pTail in the case of the node to be deleted BEING the tail.
	
	* Added case in SetOfMonads::addMSE(mse) where the newcomer was
	  just before the first element.

2005-03-13  Ulrik Petersen

	* Fixed potential bug in Sheaf::copyOther(): It now does the right
	  thing if other is a failed sheaf (i.e., makes ourselves a failed
	  sheaf rather than dereferencing the nil pointer).  The fact that
	  this bug has never surfaced may mean it's not a real bug.
	
2005-03-10  Ulrik Petersen

	* Added some more Doxygen docs

2005-03-05  Ulrik Petersen

	* Added some more Doxygen docs

2005-03-04  Ulrik Petersen

	* Fixed bug: MySQLEMdFDB::vacuum() still tried to vacuum
	  OT_monad_ms.
	
	* Removed the following, very old functions which were used to
	  upgrade legacy database to 1.1.8.  No one in their right mind
	  uses them any more, and if they do, they can upgrade with
	  mqldump, which was introduced around 1.1.11.

	  - EMdFDB::upgradeObjectTypeTo110()
	  - EMdFDB::upgradeDatabaseTo110()
	  - EMdFDB::upgradeDatabaseTo115()
	  - EMdFDB::upgradeDatabaseTo118()
	  - EMdFDB::createSequenceTables110()
	  - EMdFDB::moveSequenceValue110()
	  - EMdFDB::moveSequenceValue118()
	
	* Added more Doxygen docs.

2005-03-02  Ulrik Petersen

	* Added loads of Doxygen docs.
	
	* Made EMdFDB::getObjectsHavingMonadsInMonadSet protected, in the
	  version that takes a std::set<id_d_t>; it is used by the other
	  getObjectsHavingMonadsInMonadSet, and should not be public.
	
	* Added EmdrosEnv::isFlatSheaf(), EmdrosEnv::getFlatSheaf(),
	  EmdrosEnv::takeOverFlatSheaf(), and EmdrosEnv::out(FlatSheaf*).
	
	* Added MQLResult::isFlatSheaf() and MQLResult::getFlatSheaf().
	
	* mqltry.cpp now checks more carefully for certain sheaves,
	  checking them against a known-good sheaf, with
	  exec_string_test_sheaf().

============ 1.2.0.pre102 ============
	
2005-03-02  Ulrik Petersen

	* Made it work with SWIG.
	
	* Moved Arena and ArenaConstIterator into arena.h, since it is now
	  shared between mql_sheaf.h and inst.h

2005-03-01  Ulrik Petersen
	
	* mqltry.cpp now checks flat sheaf.
	
	* Added flat sheaf, flat straw, and iterators on them.

	* Added ArenaConstIterator.

	* Added StringList::isEmpty().
	
	* Changed implementation of inst.cpp:Arena so that it adds to the
	  tail and not to the head.

============ 1.2.0.pre101 ============
	
2005-02-26  Ulrik Petersen

	* Added MatchedObject::getEnumLabel()
	
	* Fixed bug: list of features for the GET clause now occurs in
	  sheaf output in the order in which the user entered it.  In so
	  doing, turned Feature-list around.
	
	* mqltry.cpp now tests getting enum with GET clause in sheaf.
	
	* Added mql_helper_classes.cpp: Feature::m_enum_const_cache and
	  Feature::getEnumConstNameFromValue(); populated it in
	  Feature::symbolFeaturesExist().
	
	* Sheaf (both Console and XML) now return label rather than value
	  for enums.
	
	* Made normalizeOTName and featureTypeIdIs* inline functions.
	
	* Made Feature::makeVectorOfSelves pass an unsigned int instead of
	  an int to get rid of a signed/unsigned warning.
	
	* Removed superfluous obj_first and obj_last variables from
	  EMdFDB::getInst().
	
	* Implemented MatchedObject::getNoOfEMdFValues() and
	  MatchedObject::getFeatureList().
	
	* Fixed bug in MatchedObject::printXML(): the i index was never
	  incremented for the feature value vector.
	
	* Fixed a couple of "possibly unitialized variable" warnings (-W).
	
	* Fixed bug: EMdFDB::getInst() could have
	  bFirstLastMonadAreMinMMaxM used uninitialized.


============ 1.2.0.pre100 ============

2005-02-25  Ulrik Petersen

	* The bottom line is that I now point to the ObjectBlockCommon
	  object that gave rise to a MatchedObject from within that
	  MatchedObject.  Then I have a vector of mql_helper_classes.cpp:
	  Feature* in ObjectBlockCommon, in the same order and with the
	  same length as the vector of EMdFValue in MatchedObject.  This
	  vector in ObjectBlocKCommon is used to get at the feature-info,
	  instead of MQLExecEnv::all-sorts-of-stupid-StrVec's.
	
	* Redid MatchedObject::addEMdFValue(): new signature, and used
	  correctly in mql_helper_classes.cpp: Feature::addEMdFValue().
	
	* Added MatchedObject::getFeatureList() and
	  MatchedObject::getNoOfEMdFValues.
	
	* MatchedObject::m_id_d now stores focus.
	
	* Removed MatchedObject::m_object_type_index_focus.
	
	* Added ObjectBlockCommon *m_pObjectBlock to MatchedObject.
	
	* Removed DISABLE_MATCHED_OBJECT_ID_D.
	
	* Made mql_sheaf.h: copyMO() a #define instead of a function.
	
	* Removed ValueTriple from mql_sheaf.cpp.

	* Normalized OT name in ObjectBlockCommon's constructor.
	
	* Added ObjectBlockCommon::m_pFeature_retrieval_as_vector.  Fill
	  it in ObjectBlockCommon::symbol().
	
	* Added mql_helper_classes.cpp:
	  Feature::makeVectorOfSelves(std::vector<Feature*> **ppVec, int
	  current_index) and makeVectorOfSelves(ppVec).
	
	* Removed machinery from MQLExecEnv to statically store object
	  type names, feature names, and enum names:

	  - StrVec MQLExecEnv::m_object_type_names(true);
	  - StrVec MQLExecEnv::m_feature_names(true);
	  - StrVec MQLExecEnv::m_enum_names(true); 
	  - MQLExecEnv::getOTNameFromIndex()
	  - MQLExecEnv::getFeatureNameFromIndex()
	  - MQLExecEnv::getEnumNameFromIndex()
	  - MQLExecEnv::addObjectTypeName()
	  - MQLExecEnv::addFeatureName()
	  - MQLExecEnv::addEnumName()
	  - MQLExecEnv::addStringToStrVec()
	  - MQLExecEnv::fillOTNs()

	  Also removed the places that used them.
	
	* Added copy-constructor to StringList.
	
	* Removed getLeftmostObjectTypeName() from mql_query.cpp.
	
	* Re-added MatchedObject::getKind() method.

============ 1.2.0.pre99 ============

2005-02-24  Ulrik Petersen

	* Fixed SWIG-Java bindings so that they don't have ID_D_mo and
	  ID_M_mo, but only MatchedObject.
	
	* Removed ID_D_mo and ID_M_mo, merging them into MatchedObject.

============ 1.2.0.pre98 ============

2005-02-24  Ulrik Petersen

	* Fixed SWIG-Java bindings so that they work with new (pre93)
	  exceptions.
	
	* Removed Empty_mo and NIL_mo from mql_sheaf.h; implemented
	  support for them in MoNR instead.

============ 1.2.0.pre97 ============

2005-02-22  Ulrik Petersen

	* Updated the schema version to EMDROS_VERSION_1_2_0_PRE97 (8).
	
	* Removed string2dbstring and dbstring2string from
	  string_func.cpp.
	
	* Updated mqltry.cpp to test 8-bit strings.

	* Now stores STRING (as well as ASCII) as plain string, instead of
	  going via string2dbstring.
	
	* Updated emdftry.cpp to test the monad set.
	
	* Updated mql_helper_classes.cpp to use the new InstObject
	  constructor.

	* Gave InstObject a new signature for the constructor that takes a
	  SetOfMonads*.  Now is has a bool saying whether we should delete
	  the SetOfMonads in the destructor.
	
	* Changed way of storing monads: There is no longer an OT_monad_ms
	  table for WITH MULTIPLE RANGE OBJECTS.  Instead, the monad set
	  is stored compactly as a 64-bit encoded string in a "monads"
	  column.

============ 1.2.0.pre96 ============

2005-02-20  Ulrik Petersen

	* Fixed mqldump.cpp so that it works with the new (pre91) way of
	  doing features.
	
2005-02-17  Ulrik Petersen

	* After reading the GPL FAQ carefully, I realized that I needed to
	  make explicit allowance in the license terms for linking against
	  the libraries distributed with Java, Python, Jython, Perl, and
	  Ruby. So I have added this special exception.
	
============ 1.2.0.pre95 ============
	
2005-02-15  Ulrik Petersen
	
	* This has meant that the algorithms for getting string from set
	  can be simplified: You no longer need to do it after the fact,
	  since the connection is completely different.
	
	* This second EMdFConnection is used only in getStringFromSet at
	  the moment.
	
	* There is now a second EMdFConnection in EMdFDB, pConn2.
	
	* SQLite now compiles with -DTHREADSAFE=1.

2005-02-14  Ulrik Petersen

	* Completed the work from 1.2.0.pre94 of making string-comparisons
	  BINARY on MySQL where applicable.

============ 1.2.0.pre94 ============
	
2005-02-13  Ulrik Petersen

	* I also removed some redundant 'quotes' around numbers in WHERE
	  clauses in emdfdb.cpp.
	
	* Just to be sure, and to be backwards compatible with databases
	  created before this preview, I added the BINARY keyword before
	  string literals in WHERE clauses (also in emdf_ffeatures.cpp).
	
	* I also found out that MySQL uses case-insensitive string
	  comparisons on VARCHAR and CHAR unless either a) the column is
	  declared BINARY, or b) the string with which it is compared is
	  prefixed with the keyword BINARY.  Accordingly, I added the
	  BINARY keyword to all VARCHAR declarations for MySQL in
	  emdfdb.cpp.
	
	* I found out that MySQL uses case-insensitive string comparisons
	  for TEXT blobs, whereas it uses case-sensitive string
	  comparisons for BLOB blobs.  This could give problems.
	  Accordingly, I changed emdf.h to say "LONGBLOB" instead of
	  "LONGTEXT" for SQL_TEXT_TYPE.

============ 1.2.0.pre93 ============
	
2005-02-12  Ulrik Petersen

	* Added throw(EMdFDBDBError) to mql_query.{h,cpp} for
	  getConstraints and makeConstraints, and let
	  ObjectBlockCommon::symbol() return false if an EMdFDBDBError was
	  thrown, via calculatePreQueryString, which was modified to catch
	  EMdFDBDBError.
	
	* Added include/emdf_exception.h to hold all EMdF exceptions, and
	  #included it wher necessary.  This was a good idea because
	  emdf_ffeatures.h needed knowledge of EMdFDBDBError, but
	  emdfdb.h, where it was defined, needed knowledge of
	  emdf_ffeatures.h.

	* Added throw(EMdFDBDBError) to emdf_ffeatures, because
	  FeatureInfo2SQLvalue now throws EMdFDBDBError.
	
============ 1.2.0.pre92 ============
	
2005-02-12  Ulrik Petersen

	* Fixed bug in EMdFDB::getID_DFromStringSet: Now it has a boolean
	  parameter saying whether it should create the value if not
	  already there.  If this is set to false, and it is not there,
	  the method returns "0" (NIL).  Since FeatureInfo2SQLvalue is the
	  only place that calls getID_DFromStringSet, a corresponding
	  parameter was added to this method.

	  This is sound: We only do not create it when we are going to use
	  it for comparison, not for creating or updating.  For
	  comparisons, the logic works out so that comparing anything it
	  to NIL yields the expected results.  This is provided NIL never
	  enters the set.

============ 1.2.0.pre91 ============
	
2005-02-10  Ulrik Petersen

	* Made mqldump dump FROM SET and WITH INDEX information.
	
	* Added WITHOUT as a keyword to the lexer.
	
	* The initialization order in SQLiteEMdFDBConnection was
	  reorganized to match the declaration order.
	
	* Added final return statement to
	  upgrade_db.cpp:parse_arguments().
	
	* Changed instantiation order of content and next in constructor
	  of llist.h:LVnode<T>::LVnode(T,n).  This was so as to avoid gcc
	  giving warnings when using -Wall.
	
	* Added EMdFDB::createIndex version which has a
	  std::pair<std::string, unsigned int> in its column list instead
	  of a std::string.
	
	* Added support for WITH INDEX on STRING, ASCII, INTEGER, and
	  ID_D.
	
	* DEBUG_NULL_VALUE_EXCEPTION now says that it is a NULL VALUE
	  EXCEPTION.
	
	* Added InstObject::changeString() and EMdFValue::changeString().
	
	* Added a destructor to all non-terminals in the parser, since I
	  found that sometimes the default destructor was not invoked
	  correctly.
	
	* Added test of FROM SET and WITH INDEX to mqltry.cpp.
	
	* Added test to emdftry for getFeatures(...single object_id_d...).
	
	* Added error message to GetFeaturesStatement::symbol() when
	  object type does not exist.
	
	* Implemented support for FROM SET in EMdFDB and its derived
	  classes.

	* Added "INDEX" as a keyword to the lexer.
	
	* Added "WITH INDEX" as a possibility for declaring features of
	  type STRING, ASCII, INTEGER, and ID_D.
	
	* Added "FROM SET" as a possibility for declaring features of type
	  STRING and ASCII.
	
	* Renamed EMdFDB::ypeIdToString to EMdFDB::typeIdToString.  Note
	  that this is a typo in the sed script below.

============ 1.2.0.pre90 ============
	
2005-02-09  Ulrik Petersen

	* Fixed bug #1103385: "Dropping enum doesn't drop constants from
	  cache".  Actually, I implemented EnumConstCache::dropEnum() to
	  solve it, and called it in EMdFDB::dropEnum().

============ 1.2.0.pre89 ============
	
2005-02-07  Ulrik Petersen

	* Removed quite a few non-used non-terminals from the lexer.
	
	* Removed bison parser, added lemon parser.
	
	* Fixed bug in "BETWEEN first AND last" in EMdFDB that had crept
	  in in pre88.

============ 1.2.0.pre88 ============

2005-01-30  Ulrik Petersen

	* Changed "BETWEEN first AND last" back to ">= first AND <= last"
	  in EMdFDB for WITH SINGLE MONAD OBJECTS.  This gave a speed
	  increase of 5% on average.

============ 1.2.0.pre87 ============
	
2005-01-28  Ulrik Petersen

	* Fixed bug in mqldump.cpp.


============ 1.2.0.pre86 ============
	
2005-01-28  Ulrik Petersen

	* Implemented new WITH SINGLE MONAD OBJECTS object type modifier.
	  This gave a speedup of around 4-8% on my suites of test queries.
	

============ 1.2.0.pre85 ============
	
2005-01-26  Ulrik Petersen

	* Fiddled with DJGPP makefiles so that Emdros once again compiles
	  under DJGPP.


============ 1.2.0.pre84 ============

2005-01-22  Ulrik Petersen

	* Made sure that all header files that need to be #include'd from
	  an installation can also be #include'd.
	
	* Removed the <emdros/> prefix from the #include's in
	  tests/testincludes.cpp.  You are now supposed to
	  -I<path-to-emdros>/include/emdros.

============ 1.2.0.pre83 ============

2005-01-21  Ulrik Petersen

	* Table classes now don't assert() anything, but throw the
	  appropriate exception.
	
	* Added support to SWIG Java bindings for the new exceptions.
	
	* Added "throw" declarations to all (?) methods that can throw an
	  exception.
	
	* Added EmdrosException as a base of all exceptions, and added
	  default string constructors, as well as constructors to give
	  messages, and a destructor, to all exceptions.
	
	* Added --start and --end options to the usage printout for
	  mqldump.

2005-01-19  Ulrik Petersen

	* Removed monads.h:NoElementsException, and all traces of it
	  elsewhere.  This was because it was not used.
	
	* Added more Doxygen docs.

2005-01-16  Ulrik Petersen

	* Added the beginnings of Doxygen documentation.  Still a long
	  ways to go.
	
============ 1.2.0.pre82 ============

2005-01-16  Ulrik Petersen

	* Added three new exceptions: TableException, TableRowException,
	  and TableColumnException.  Used them in some
	  table(row)(iterator) methods.
	
	* Added exception support to Java bindings.  Now the methods that
	  can throw anything in the EMdF and MQL libraries are caught, and
	  a java.lang.Exception thrown, with the exception string set to
	  whatever was the exception.

============ 1.2.0.pre81 ============

2005-01-15  Ulrik Petersen

	* Fixed bug #1102787: UPDATE OBJECT TYPE causes indices on
	  OT_objects to be dropped after removal or addition of features.
	  Now they are all recreated, including any that the user has
	  created, also UNIQUE indexes.  The following methods were added
	  to SQLiteEMdFDB: getIndices(), createIndicesFromIndexMap(), and
	  removeIndicesWithFeature().  In addition, the local (static)
	  function parseIndexCreationString() was added to
	  sqliteemdfdb.cpp.
	
	* Fixed bug #1102813 in SQLiteEMdFDB::dropFeatureFromOT_objects:
	  removing the last feature from an object type with UPDATE OBJECT
	  TYPE used to cause an error on SQLite.  This was due to an
	  extraneous comma in OT_Objects_stream.
	
	* Added message symbol pass of to UPDATE OBJECT TYPE if feature
	  scheduled for addition exists already.
	
	* SQLiteEMdFDB::add/DropFeatureFromOT_objects now use INTEGER
 	  PRIMARY KEY.
	
	* Fixed src/Makefile.am to link upgrade_db against MQL and PCRE.

2005-01-11  Ulrik Petersen

	* Fixed an initialisation bug in mql_R.cpp which caused it not to
	  compile with MSVC6.0.
	
	* Updated upgrade_db.cpp so that one could, in principle, use
	  another malloc than the standard malloc used in the Microsoft
	  standard C library.

2005-01-04  Ulrik Petersen

	* SQLite shell (sqlite_emdros(1)) now really does use libreadline
	  if present.

2005-01-01  Ulrik Petersen
	
	* In mql_R.cpp, moved some declarations of MQLObject *pObj out of
	  the loops, and used pObj instead of object_block->getObject().
	  This gave a slight speed increase.
	
	* Made mql_R.cpp clearer: Moved initialization of variables into
	  separate statements.
	
	* Made a few statements clearer in mql_R.cpp: moved a "new
	  MoNR(...)" out of a call to ListOfMoNR->append() and into a
	  variable declaration.
	
	* Moved case kObjectBlock to the end in Block::XXX()
	  switch(m_kind).  This gave a slight speed increase.
	
	* Added bool isFocus() methods to ObjectBlockCommon and GapBlock,
	  then used them in mql_R.cpp, and got a speed increase of about
	  1% average.
	
	* Simplified mql_R.cpp by removing the pEE argument to the
	  retrieval and focus functions.
	
	* Added BETWEEN X and Y to the ways a power restrictor can be
	  done.  Added BETWEEN keyword to lexer.

============ 1.2.0.pre80 ============

2004-12-06  Ulrik Petersen

	* Made SWIG/java/TestEmdros.java.in work with SWIG 1.3.22.
	
	* Now needs SWIG 1.3.22 or later.

2004-11-08  Ulrik Petersen

	* Changed build procedure to always compile lemon.
	
	* Fixed bug in sqliteemdfdb.cpp:useDatabase: When database is
	  'emdf', we shouldn't set "PRAGMA synchronous", since the emdf
	  database is really no database at all, so there is no sqlite
	  database to perform this on.

2004-11-05  Ulrik Petersen

	* Removed '(object_id_d,mse_first,mse_last)' from INSERT INTO
	  statement in SQLiteEMdFDB::createObjectsOT_monad_ms.
	
	* sqliteemdfdb.cpp:useDatabase now sets "PRAGMA synchronous" based
	  on SQLITE_EMDFDB_NO_FSYNC.
	
	* sqliteconn.cpp:execCommand now does busy-waiting on SQLITE_BUSY.
	
	* sqliteconn.cpp:execCommand now uses sqlite_exec rather than the
	  sqlite_prepare/sqlite_step/sqlite_finalize interface.

2004-10-28  Ulrik Petersen

	* Now uses BETWEEN for object_id_d in EMdFDB::getFeaturesByQuery()
	  and EMdFDB::getMonadsFromID_Ds().
	
	* In EMDFDB::getInst() and
	  EMdFDB::EMdFDB::makeMonadConstraintsFromSOM(), use (first_monad
	  BETWEEN fm AND lm AND last_monad BETWEEN fm AND lm).  See
	  SQL/README.txt for sql10 for reasons for this.  Basically, the
	  old and new expressions are logically equivalent, since
	  first_monad <= last_monad, and the new ones are faster (by
	  between 5% and 8%).
	
	* Did away with all indexes on monads except
	  first_monad/mse_first.  This was due to the conclusion of the
	  SQL/sql9 experiments that only first_monad/mse_first was used,
	  and thus we could save space if we didn't have the extra
	  indexes.
	
	* Moved some variable definitions outside of a loop in
	  EMdFDB::getObjectsHavingMonadsInMonadSet().  This probably
	  increases performance ever so slightly.
	
	* Changed an SOM.add(mse_first,mse_last) to
	  SOM(mse_first,mse_last) in
	  EMdFDB::getObjectsHavingMonadsInMonadSet().  This increases
	  performance ever so slightly.

2004-10-21  Ulrik Petersen

	* Now uses getSOMForObject instead of getMonadsFromID_D in
	  EMdFDB::dropObject.
	
	* Removed EMdFDB::getObjectsAtM() -- it was the same as
	  getObjectsStartingAtSm.
	
	* Added mqlpars.h and mql_parser.cpp to CLEANFILES in
	  MQL/Makefile.am.

2004-10-20  Ulrik Petersen

	* Added WITHOUT OIDS to all CREATE TABLE statements on
	  PostgreSQL. This should speed up database creation and use, and
	  reduce database size by 4 bytes per row.
	
	* Simplified the code in emdfdb.cpp: Now does INTEGER PRIMARY KEY
	  NOT NULL where possible on all platforms, not just SQLite.

	* New way of doing indexes on MySQL on monads on OT_objects and
	  OT_monad_ms: (last_monad,first_monad) and (mse_last,mse_first)
	  rather than all of them separate.  This should speed things up
	  when doing queries on very large databases (millions of words).

2004-10-18  Ulrik Petersen

	* Made the PCRE library an option.  You can now choose not to
	  compile it in.  On Unix/Linux, do --without-pcre at the
	  configure command line.  On Win32, see win32/README.txt.  The
	  default is still to compile it in.

	  The weeder will complain if you try to use a ~ or !~ operator if
	  the PCRE library is missing.

	* Upgraded SQLite to 2.8.15 with DJGPP enhancements by Alex
	  Bodn??? from Israel, <alexbodn{t-a}012{d-ot}net{do-t}il>. See
	  SQLite CVStrac #833:
	  <http://www.sqlite.org/cvstrac/tktview?tn=833>. These sources
	  were placed into the public domain by Alex in the SQLite Wiki,
	  http://www.sqlite.org/cvstrac/wiki?p=HowToCompile, and confirmed
	  to me by email 2004-09-13 from the same email address.

2004-10-10  Ulrik Petersen

	* Removed some bool bIsFirst's from pgemdfdb.cpp, mysqlemdfdb.cpp,
	  and sqliteemdfdb.cpp.

2004-10-09  Ulrik Petersen

	* Fixed critical bug in InstObject::addMse(): It neglected to set
	  m_first if MSEs arrived out-of-order, i.e., the MSE used when
	  constructing the object was not the first MSE.  This caused
	  incomplete results to be returned by the MQL topographic engine
	  when the backend gave the MSEs out-of-order.  See
	  tests/hebrew/correctness-4.mql for an example of what went
	  wrong.  This bug was introduced in 1.2.0.pre30.
	
	* Fixed bug in include/pgconn.h: accessTuple(..., long&) now
	  actually throws EMdFNULLValueException when the value is NULL.

	* mqltry.cpp now explicitly says it's a ROW_ERROR when it is.

2004-10-08  Ulrik Petersen

	* Rewrote ObjectSpecNoOT to use pointer-arithmetic rather than
	  recursive calls to do weed/symbol/type, etc.  The weed call sets
	  a "m_prev" pointer, and then every subsequent call traces m_next
	  to the last one, then does the chain backwards.
	
	* Updated include/emdf.h to reflect the new version
	  (EMDROS_VERSION_1_2_0_PRE_80 was added).  The places that used
	  the versions were updated.

2004-10-07  Ulrik Petersen

	* SQLite now uses INTEGER PRIMARY KEY where possible, instead of
	  PRIMARY KEY (...).  This gives a size reduction in the database.

	* Added dependencies to Makefile.am for the programs in src/ and
	  tests/.

	* Changed "_gut" to "_objects", thereby simplifying the API.
	  There is still a distinction between HAS_SINGLE_RANGE_OBJECTS
	  and its opposite.  It's just that the _gut table is now
	  _objects.  This simplifies the code somewhat.

2004-10-07  Ulrik Petersen

	* Changed '\"' to '\'' in
	  MySQLEMdFBD::CreateObjectsOT_gut_or_objects_data, to harmonize
	  with other backends.  MySQL supports both, but '\'' is more
	  standard SQL.

	* Removed "is_first" from OT_monad_ms.  The only place where it
	  was used was in EMdFDB::getObjectsStartingAtSm(), and there it
	  could just as well be served by "OT_objects.first_monad = Sm".

2004-09-25  Ulrik Petersen

	* Updated win32/config.mak.in to reflect new paths on my system.

============ 1.2.0.pre79 ============

2004-09-20  Ulrik Petersen

	* Added some path options for jdk_try_dir in configure.in.

	* Removed CYGWIN support from sqlite/configure.ac.  Emdros doesn't
	  compile on Cygwin anyway, so no need to support it for sqlite.

	* Made sqlite/configure.ac work with automake-1.6.3, by calling
	  AM_INIT_AUTOMAKE and AC_INIT correctly.

	* Made sqlite/src/Makefile.am work with automake-1.6.3 by moving
	  around some conditional VAR += XXX definitions.

============ 1.2.0.pre78 ============

2004-09-11  Ulrik Petersen

	* Did some reconsideration of certain details of the big name
	  change.  The following sed script was applied to the sources:

s:\([^A-Za-z0-9_]\)EscapeStringForCOPY\([^A-Za-z0-9_]\|$\):\1escapeStringForCOPY\2:g
s:\([^A-Za-z0-9_]\)FreeResult\([^A-Za-z0-9_]\|$\):\1freeResult\2:g
s:\([^A-Za-z0-9_]\)unencrypt_char\([^A-Za-z0-9_]\|$\):\1unencryptChar\2:g
s:\([^A-Za-z0-9_]\)encrypt_char\([^A-Za-z0-9_]\|$\):\1encryptChar\2:g

	  Again, this was done with apply.sh, today.awk, and the command
	  as below (7/17-2004) (except for today's date in today.awk).
	
	  Afterwards, the sources just before the big namechange were
	  changed with this updated sed script, which YOU can use to
	  change your sources.  

	  Note, however, that it changes all free-standing occurrences of
	  "Next" to "getNext", which means that some of your strings or
	  comments may get unintentionally changed (if they contain the
	  string "Next").

s:\([^A-Za-z0-9_]\)EscapeStringForCOPY\([^A-Za-z0-9_]\|\$\):\1escapeStringForCOPY\2:g
s:\([^A-Za-z0-9_]\)FreeResult\([^A-Za-z0-9_]\|\$\):\1freeResult\2:g
s:\([^A-Za-z0-9_]\)unencrypt_char\([^A-Za-z0-9_]\|\$\):\1unencryptChar\2:g
s:\([^A-Za-z0-9_]\)encrypt_char\([^A-Za-z0-9_]\|\$\):\1encryptChar\2:g
s:\([^A-Za-z0-9_]\)AbortTransaction\([^A-Za-z0-9_]\|\$\):\1abortTransaction\2:g
s:\([^A-Za-z0-9_]\)AccessTuple\([^A-Za-z0-9_]\|\$\):\1accessTuple\2:g
s:\([^A-Za-z0-9_]\)AddEMdFValue\([^A-Za-z0-9_]\|\$\):\1addEMdFValue\2:g
s:\([^A-Za-z0-9_]\)AddFeature\([^A-Za-z0-9_]\|\$\):\1addFeature\2:g
s:\([^A-Za-z0-9_]\)AddFeatureToOT_gut\([^A-Za-z0-9_]\|\$\):\1addFeatureToOT_gut\2:g
s:\([^A-Za-z0-9_]\)AddFeatureToOT_gut_or_objects\([^A-Za-z0-9_]\|\$\):\1addFeatureToOT_gut_or_objects\2:g
s:\([^A-Za-z0-9_]\)AddFeatureToOT_objects\([^A-Za-z0-9_]\|\$\):\1addFeatureToOT_objects\2:g
s:\([^A-Za-z0-9_]\)AddMSE\([^A-Za-z0-9_]\|\$\):\1addMSE\2:g
s:\([^A-Za-z0-9_]\)AddOid\([^A-Za-z0-9_]\|\$\):\1addOid\2:g
s:\([^A-Za-z0-9_]\)AggregateQuery\([^A-Za-z0-9_]\|\$\):\1aggregateQuery\2:g
s:\([^A-Za-z0-9_]\)BackendName\([^A-Za-z0-9_]\|\$\):\1getBackendName\2:g
s:\([^A-Za-z0-9_]\)BeginTransaction\([^A-Za-z0-9_]\|\$\):\1beginTransaction\2:g
s:\([^A-Za-z0-9_]\)CAbortTransactionStatement:\1AbortTransactionStatement:g
s:^CAbortTransactionStatement:AbortTransactionStatement:g
s:\([^A-Za-z0-9_]\)CArena:\1Arena:g
s:^CArena:Arena:g
s:\([^A-Za-z0-9_]\)CBeginTransactionStatement:\1BeginTransactionStatement:g
s:^CBeginTransactionStatement:BeginTransactionStatement:g
s:\([^A-Za-z0-9_]\)CBlock_string:\1BlockString:g
s:^CBlock_string:BlockString:g
s:\([^A-Za-z0-9_]\)CBlock_str:\1BlockStr:g
s:^CBlock_str:BlockStr:g
s:\([^A-Za-z0-9_]\)CBlocks:\1Blocks:g
s:^CBlocks:Blocks:g
s:\([^A-Za-z0-9_]\)CBlock:\1Block:g
s:^CBlock:Block:g
s:\([^A-Za-z0-9_]\)CByMonads:\1ByMonads:g
s:^CByMonads:ByMonads:g
s:\([^A-Za-z0-9_]\)CChunk:\1Chunk:g
s:^CChunk:Chunk:g
s:\([^A-Za-z0-9_]\)CCommitTransactionStatement:\1CommitTransactionStatement:g
s:^CCommitTransactionStatement:CommitTransactionStatement:g
s:\([^A-Za-z0-9_]\)CCreateDatabaseStatement:\1CreateDatabaseStatement:g
s:^CCreateDatabaseStatement:CreateDatabaseStatement:g
s:\([^A-Za-z0-9_]\)CCreateEnumerationStatement:\1CreateEnumerationStatement:g
s:^CCreateEnumerationStatement:CreateEnumerationStatement:g
s:\([^A-Za-z0-9_]\)CCreateIndexesStatement:\1CreateIndexesStatement:g
s:^CCreateIndexesStatement:CreateIndexesStatement:g
s:\([^A-Za-z0-9_]\)CCreateMonadSetStatement:\1CreateMonadSetStatement:g
s:^CCreateMonadSetStatement:CreateMonadSetStatement:g
s:\([^A-Za-z0-9_]\)CCreateObjectFromID_DsStatement:\1CreateObjectFromID_DsStatement:g
s:^CCreateObjectFromID_DsStatement:CreateObjectFromID_DsStatement:g
s:\([^A-Za-z0-9_]\)CCreateObjectFromMonadsStatement:\1CreateObjectFromMonadsStatement:g
s:^CCreateObjectFromMonadsStatement:CreateObjectFromMonadsStatement:g
s:\([^A-Za-z0-9_]\)CCreateObjectFromQueryStatement:\1CreateObjectFromQueryStatement:g
s:^CCreateObjectFromQueryStatement:CreateObjectFromQueryStatement:g
s:\([^A-Za-z0-9_]\)CCreateObjectStatement:\1CreateObjectStatement:g
s:^CCreateObjectStatement:CreateObjectStatement:g
s:\([^A-Za-z0-9_]\)CCreateObjectTypeStatement:\1CreateObjectTypeStatement:g
s:^CCreateObjectTypeStatement:CreateObjectTypeStatement:g
s:\([^A-Za-z0-9_]\)CCreateObjectsStatement:\1CreateObjectsStatement:g
s:^CCreateObjectsStatement:CreateObjectsStatement:g
s:\([^A-Za-z0-9_]\)CCreateOrUpdateMonadSetStatement:\1CreateOrUpdateMonadSetStatement:g
s:^CCreateOrUpdateMonadSetStatement:CreateOrUpdateMonadSetStatement:g
s:\([^A-Za-z0-9_]\)CCreateSegmentStatement:\1CreateSegmentStatement:g
s:^CCreateSegmentStatement:CreateSegmentStatement:g
s:\([^A-Za-z0-9_]\)CDatabaseStatement:\1DatabaseStatement:g
s:^CDatabaseStatement:DatabaseStatement:g
s:\([^A-Za-z0-9_]\)CDeleteMonadsStatement:\1DeleteMonadsStatement:g
s:^CDeleteMonadsStatement:DeleteMonadsStatement:g
s:\([^A-Za-z0-9_]\)CDeleteObjectsByID_DsStatement:\1DeleteObjectsByID_DsStatement:g
s:^CDeleteObjectsByID_DsStatement:DeleteObjectsByID_DsStatement:g
s:\([^A-Za-z0-9_]\)CDeleteObjectsByMonadsStatement:\1DeleteObjectsByMonadsStatement:g
s:^CDeleteObjectsByMonadsStatement:DeleteObjectsByMonadsStatement:g
s:\([^A-Za-z0-9_]\)CDeleteObjectsByQueryStatement:\1DeleteObjectsByQueryStatement:g
s:^CDeleteObjectsByQueryStatement:DeleteObjectsByQueryStatement:g
s:\([^A-Za-z0-9_]\)CDeleteObjectsStatement:\1DeleteObjectsStatement:g
s:^CDeleteObjectsStatement:DeleteObjectsStatement:g
s:\([^A-Za-z0-9_]\)CDropDatabaseStatement:\1DropDatabaseStatement:g
s:^CDropDatabaseStatement:DropDatabaseStatement:g
s:\([^A-Za-z0-9_]\)CDropEnumerationStatement:\1DropEnumerationStatement:g
s:^CDropEnumerationStatement:DropEnumerationStatement:g
s:\([^A-Za-z0-9_]\)CDropIndexesStatement:\1DropIndexesStatement:g
s:^CDropIndexesStatement:DropIndexesStatement:g
s:\([^A-Za-z0-9_]\)CDropMonadSetStatement:\1DropMonadSetStatement:g
s:^CDropMonadSetStatement:DropMonadSetStatement:g
s:\([^A-Za-z0-9_]\)CDropObjectTypeStatement:\1DropObjectTypeStatement:g
s:^CDropObjectTypeStatement:DropObjectTypeStatement:g
s:\([^A-Za-z0-9_]\)CECDeclaration:\1ECDeclaration:g
s:^CECDeclaration:ECDeclaration:g
s:\([^A-Za-z0-9_]\)CECUpdate:\1ECUpdate:g
s:^CECUpdate:ECUpdate:g
s:\([^A-Za-z0-9_]\)CEMdFComparison:\1EMdFComparison:g
s:^CEMdFComparison:EMdFComparison:g
s:\([^A-Za-z0-9_]\)CEMdFDBDBError:\1EMdFDBDBError:g
s:^CEMdFDBDBError:EMdFDBDBError:g
s:\([^A-Za-z0-9_]\)CEMdFDBException:\1EMdFDBException:g
s:^CEMdFDBException:EMdFDBException:g
s:\([^A-Za-z0-9_]\)CEMdFFFactor:\1EMdFFFactor:g
s:^CEMdFFFactor:EMdFFFactor:g
s:\([^A-Za-z0-9_]\)CEMdFFFeatures:\1EMdFFFeatures:g
s:^CEMdFFFeatures:EMdFFFeatures:g
s:\([^A-Za-z0-9_]\)CEMdFFTerm:\1EMdFFTerm:g
s:^CEMdFFTerm:EMdFFTerm:g
s:\([^A-Za-z0-9_]\)CEMdFOutputException:\1EMdFOutputException:g
s:^CEMdFOutputException:EMdFOutputException:g
s:\([^A-Za-z0-9_]\)CEMdFOutputWrongCharactersetException:\1WrongCharacterSetException:g
s:^CEMdFOutputWrongCharactersetException:WrongCharacterSetException:g
s:\([^A-Za-z0-9_]\)CEMdFOutput:\1EMdFOutput:g
s:^CEMdFOutput:EMdFOutput:g
s:\([^A-Za-z0-9_]\)CEMdFValue:\1EMdFValue:g
s:^CEMdFValue:EMdFValue:g
s:\([^A-Za-z0-9_]\)CEmdrosEnv:\1EmdrosEnv:g
s:^CEmdrosEnv:EmdrosEnv:g
s:\([^A-Za-z0-9_]\)CEnumConstCache:\1EnumConstCache:g
s:^CEnumConstCache:EnumConstCache:g
s:\([^A-Za-z0-9_]\)CEnumerationStatement:\1EnumerationStatement:g
s:^CEnumerationStatement:EnumerationStatement:g
s:\([^A-Za-z0-9_]\)CExpression:\1Expression:g
s:^CExpression:Expression:g
s:\([^A-Za-z0-9_]\)CFFactor:\1FFactor:g
s:^CFFactor:FFactor:g
s:\([^A-Za-z0-9_]\)CFFeatures:\1FFeatures:g
s:^CFFeatures:FFeatures:g
s:\([^A-Za-z0-9_]\)CFTerm:\1FTerm:g
s:^CFTerm:FTerm:g
s:\([^A-Za-z0-9_]\)CFeatureAssignment:\1FeatureAssignment:g
s:^CFeatureAssignment:FeatureAssignment:g
s:\([^A-Za-z0-9_]\)CFeatureDeclaration:\1FeatureDeclaration:g
s:^CFeatureDeclaration:FeatureDeclaration:g
s:\([^A-Za-z0-9_]\)CFeatureUpdate:\1FeatureUpdate:g
s:^CFeatureUpdate:FeatureUpdate:g
s:\([^A-Za-z0-9_]\)CFeature_comparison:\1FeatureComparison:g
s:^CFeature_comparison:FeatureComparison:g
s:\([^A-Za-z0-9_]\)CFeature:\1Feature:g
s:^CFeature:Feature:g
s:\([^A-Za-z0-9_]\)CGap_block:\1GapBlock:g
s:^CGap_block:GapBlock:g
s:\([^A-Za-z0-9_]\)CGetFeaturesStatement:\1GetFeaturesStatement:g
s:^CGetFeaturesStatement:GetFeaturesStatement:g
s:\([^A-Za-z0-9_]\)CGetMonadSetsStatement:\1GetMonadSetsStatement:g
s:^CGetMonadSetsStatement:GetMonadSetsStatement:g
s:\([^A-Za-z0-9_]\)CGetMonadsStatement:\1GetMonadsStatement:g
s:^CGetMonadsStatement:GetMonadsStatement:g
s:\([^A-Za-z0-9_]\)CID_D:\1ID_D:g
s:^CID_D:ID_D:g
s:\([^A-Za-z0-9_]\)CInsertMonadsStatement:\1InsertMonadsStatement:g
s:^CInsertMonadsStatement:InsertMonadsStatement:g
s:\([^A-Za-z0-9_]\)CInstContents:\1InstContents:g
s:^CInstContents:InstContents:g
s:\([^A-Za-z0-9_]\)CInstObject:\1InstObject:g
s:^CInstObject:InstObject:g
s:\([^A-Za-z0-9_]\)CInst:\1Inst:g
s:^CInst:Inst:g
s:\([^A-Za-z0-9_]\)CList_of_mo_nr:\1ListOfMoNR:g
s:^CList_of_mo_nr:ListOfMoNR:g
s:\([^A-Za-z0-9_]\)CList_of_straws:\1ListOfStraws:g
s:^CList_of_straws:ListOfStraws:g
s:\([^A-Za-z0-9_]\)CMOEMPTY_mo:\1Empty_mo:g
s:^CMOEMPTY_mo:Empty_mo:g
s:\([^A-Za-z0-9_]\)CMOID_D:\1ID_D_mo:g
s:^CMOID_D:ID_D_mo:g
s:\([^A-Za-z0-9_]\)CMOID_M:\1ID_M_mo:g
s:^CMOID_M:ID_M_mo:g
s:\([^A-Za-z0-9_]\)CMONIL_mo:\1Nil_mo:g
s:^CMONIL_mo:Nil_mo:g
s:\([^A-Za-z0-9_]\)CMQLError:\1MQLError:g
s:^CMQLError:MQLError:g
s:\([^A-Za-z0-9_]\)CMQLObject:\1MQLObject:g
s:^CMQLObject:MQLObject:g
s:\([^A-Za-z0-9_]\)CMQLResult:\1MQLResult:g
s:^CMQLResult:MQLResult:g
s:\([^A-Za-z0-9_]\)CMQLSymbolTableEntry:\1MQLSymbolTableEntry:g
s:^CMQLSymbolTableEntry:MQLSymbolTableEntry:g
s:\([^A-Za-z0-9_]\)CMQLSymbolTableEntryException:\1MQLSymbolTableEntryException:g
s:^CMQLSymbolTableEntryException:MQLSymbolTableEntryException:g
s:\([^A-Za-z0-9_]\)CMQLSymbolTableException:\1MQLSymbolTableException:g
s:^CMQLSymbolTableException:MQLSymbolTableException:g
s:\([^A-Za-z0-9_]\)CMQLSymbolTable:\1MQLSymbolTable:g
s:^CMQLSymbolTable:MQLSymbolTable:g
s:\([^A-Za-z0-9_]\)CMQL_execution_environment:\1MQLExecEnv:g
s:^CMQL_execution_environment:MQLExecEnv:g
s:\([^A-Za-z0-9_]\)CMatched_object:\1MatchedObject:g
s:^CMatched_object:MatchedObject:g
s:\([^A-Za-z0-9_]\)CMo_nr:\1MoNR:g
s:^CMo_nr:MoNR:g
s:\([^A-Za-z0-9_]\)CMonadSetCalculationStatement:\1MonadSetCalculationStatement:g
s:^CMonadSetCalculationStatement:MonadSetCalculationStatement:g
s:\([^A-Za-z0-9_]\)CMonadSetChainElement:\1MonadSetChainElement:g
s:^CMonadSetChainElement:MonadSetChainElement:g
s:\([^A-Za-z0-9_]\)CMonadSetElement:\1MQLMonadSetElement:g
s:^CMonadSetElement:MQLMonadSetElement:g
s:\([^A-Za-z0-9_]\)CMonadSetStatement:\1MonadSetStatement:g
s:^CMonadSetStatement:MonadSetStatement:g
s:\([^A-Za-z0-9_]\)CMonadsStatement:\1MonadsStatement:g
s:^CMonadsStatement:MonadsStatement:g
s:\([^A-Za-z0-9_]\)CObjectSpecBase:\1ObjectSpecBase:g
s:^CObjectSpecBase:ObjectSpecBase:g
s:\([^A-Za-z0-9_]\)CObjectSpecNoOT:\1ObjectSpecNoOT:g
s:^CObjectSpecNoOT:ObjectSpecNoOT:g
s:\([^A-Za-z0-9_]\)CObjectSpec:\1ObjectSpec:g
s:^CObjectSpec:ObjectSpec:g
s:\([^A-Za-z0-9_]\)CObjectTypeStatement:\1ObjectTypeStatement:g
s:^CObjectTypeStatement:ObjectTypeStatement:g
s:\([^A-Za-z0-9_]\)CObjectTypesStatement:\1ObjectTypesStatement:g
s:^CObjectTypesStatement:ObjectTypesStatement:g
s:\([^A-Za-z0-9_]\)CObject_block_common:\1ObjectBlockCommon:g
s:^CObject_block_common:ObjectBlockCommon:g
s:\([^A-Za-z0-9_]\)CObject_block_first:\1ObjectBlockFirst:g
s:^CObject_block_first:ObjectBlockFirst:g
s:\([^A-Za-z0-9_]\)CObject_block:\1ObjectBlock:g
s:^CObject_block:ObjectBlock:g
s:\([^A-Za-z0-9_]\)CObject_reference_usage:\1ObjectReferenceUsage:g
s:^CObject_reference_usage:ObjectReferenceUsage:g
s:\([^A-Za-z0-9_]\)COpt_gap_block:\1OptGapBlock:g
s:^COpt_gap_block:OptGapBlock:g
s:\([^A-Za-z0-9_]\)CPower:\1Power:g
s:^CPower:Power:g
s:\([^A-Za-z0-9_]\)CQueryBase:\1QueryBase:g
s:^CQueryBase:QueryBase:g
s:\([^A-Za-z0-9_]\)CQuitStatement:\1QuitStatement:g
s:^CQuitStatement:QuitStatement:g
s:\([^A-Za-z0-9_]\)CRest_of_block_str:\1RestOfBlockStr:g
s:^CRest_of_block_str:RestOfBlockStr:g
s:\([^A-Za-z0-9_]\)CSegmentStatement:\1SegmentStatement:g
s:^CSegmentStatement:SegmentStatement:g
s:\([^A-Za-z0-9_]\)CSelectEnumerationConstantsStatement:\1SelectEnumerationConstantsStatement:g
s:^CSelectEnumerationConstantsStatement:SelectEnumerationConstantsStatement:g
s:\([^A-Za-z0-9_]\)CSelectEnumerationsStatement:\1SelectEnumerationsStatement:g
s:^CSelectEnumerationsStatement:SelectEnumerationsStatement:g
s:\([^A-Za-z0-9_]\)CSelectFeaturesStatement:\1SelectFeaturesStatement:g
s:^CSelectFeaturesStatement:SelectFeaturesStatement:g
s:\([^A-Za-z0-9_]\)CSelectMaxMStatement:\1SelectMaxMStatement:g
s:^CSelectMaxMStatement:SelectMaxMStatement:g
s:\([^A-Za-z0-9_]\)CSelectMinMStatement:\1SelectMinMStatement:g
s:^CSelectMinMStatement:SelectMinMStatement:g
s:\([^A-Za-z0-9_]\)CSelectMonadSetsStatement:\1SelectMonadSetsStatement:g
s:^CSelectMonadSetsStatement:SelectMonadSetsStatement:g
s:\([^A-Za-z0-9_]\)CSelectObjectTypesStatement:\1SelectObjectTypesStatement:g
s:^CSelectObjectTypesStatement:SelectObjectTypesStatement:g
s:\([^A-Za-z0-9_]\)CSelectObjectTypesUsingEnumerationStatement:\1SelectObjectTypesUsingEnumerationStatement:g
s:^CSelectObjectTypesUsingEnumerationStatement:SelectObjectTypesUsingEnumerationStatement:g
s:\([^A-Za-z0-9_]\)CSelectObjectsAtStatement:\1SelectObjectsAtStatement:g
s:^CSelectObjectsAtStatement:SelectObjectsAtStatement:g
s:\([^A-Za-z0-9_]\)CSelectObjectsHavingMonadsInStatement:\1SelectObjectsHavingMonadsInStatement:g
s:^CSelectObjectsHavingMonadsInStatement:SelectObjectsHavingMonadsInStatement:g
s:\([^A-Za-z0-9_]\)CSelectStatement:\1SelectStatement:g
s:^CSelectStatement:SelectStatement:g
s:\([^A-Za-z0-9_]\)CSet_of_monad_ms:\1SetOfMonads:g
s:^CSet_of_monad_ms:SetOfMonads:g
s:\([^A-Za-z0-9_]\)CSheaf:\1Sheaf:g
s:^CSheaf:Sheaf:g
s:\([^A-Za-z0-9_]\)CSkipListConstIterator:\1SkipListConstIterator:g
s:^CSkipListConstIterator:SkipListConstIterator:g
s:\([^A-Za-z0-9_]\)CSkipListNode:\1SkipListNode:g
s:^CSkipListNode:SkipListNode:g
s:\([^A-Za-z0-9_]\)CSkipList:\1SkipList:g
s:^CSkipList:SkipList:g
s:\([^A-Za-z0-9_]\)CSmartVector:\1SmartVector:g
s:^CSmartVector:SmartVector:g
s:\([^A-Za-z0-9_]\)CStatement:\1Statement:g
s:^CStatement:Statement:g
s:\([^A-Za-z0-9_]\)CStraw:\1Straw:g
s:^CStraw:Straw:g
s:\([^A-Za-z0-9_]\)CStringListNode:\1StringListNode:g
s:^CStringListNode:StringListNode:g
s:\([^A-Za-z0-9_]\)CStringList:\1StringList:g
s:^CStringList:StringList:g
s:\([^A-Za-z0-9_]\)CTable:\1Table:g
s:^CTable:Table:g
s:\([^A-Za-z0-9_]\)CTopograph:\1Topograph:g
s:^CTopograph:Topograph:g
s:\([^A-Za-z0-9_]\)CUpdateEnumerationStatement:\1UpdateEnumerationStatement:g
s:^CUpdateEnumerationStatement:UpdateEnumerationStatement:g
s:\([^A-Za-z0-9_]\)CUpdateMonadSetStatement:\1UpdateMonadSetStatement:g
s:^CUpdateMonadSetStatement:UpdateMonadSetStatement:g
s:\([^A-Za-z0-9_]\)CUpdateObjectTypeStatement:\1UpdateObjectTypeStatement:g
s:^CUpdateObjectTypeStatement:UpdateObjectTypeStatement:g
s:\([^A-Za-z0-9_]\)CUpdateObjectsByID_DsStatement:\1UpdateObjectsByID_DsStatement:g
s:^CUpdateObjectsByID_DsStatement:UpdateObjectsByID_DsStatement:g
s:\([^A-Za-z0-9_]\)CUpdateObjectsByMonadsStatement:\1UpdateObjectsByMonadsStatement:g
s:^CUpdateObjectsByMonadsStatement:UpdateObjectsByMonadsStatement:g
s:\([^A-Za-z0-9_]\)CUpdateObjectsByQueryStatement:\1UpdateObjectsByQueryStatement:g
s:^CUpdateObjectsByQueryStatement:UpdateObjectsByQueryStatement:g
s:\([^A-Za-z0-9_]\)CUpdateObjectsStatement:\1UpdateObjectsStatement:g
s:^CUpdateObjectsStatement:UpdateObjectsStatement:g
s:\([^A-Za-z0-9_]\)CUseStatement:\1UseStatement:g
s:^CUseStatement:UseStatement:g
s:\([^A-Za-z0-9_]\)CVacuumDatabaseStatement:\1VacuumDatabaseStatement:g
s:^CVacuumDatabaseStatement:VacuumDatabaseStatement:g
s:\([^A-Za-z0-9_]\)CValueTriple:\1ValueTriple:g
s:^CValueTriple:ValueTriple:g
s:\([^A-Za-z0-9_]\)CValue:\1Value:g
s:^CValue:Value:g
s:\([^A-Za-z0-9_]\)CalculateMMap\([^A-Za-z0-9_]\|\$\):\1calculateMMap\2:g
s:\([^A-Za-z0-9_]\)CanDoComparisonOp\([^A-Za-z0-9_]\|\$\):\1canDoComparisonOp\2:g
s:\([^A-Za-z0-9_]\)CommitTransaction\([^A-Za-z0-9_]\|\$\):\1commitTransaction\2:g
s:\([^A-Za-z0-9_]\)Connect\([^A-Za-z0-9_]\|\$\):\1connect\2:g
s:\([^A-Za-z0-9_]\)ConnectionOk\([^A-Za-z0-9_]\|\$\):\1connectionOk\2:g
s:\([^A-Za-z0-9_]\)ConvertDBName\([^A-Za-z0-9_]\|\$\):\1convertDBName\2:g
s:\([^A-Za-z0-9_]\)CreateConstants\([^A-Za-z0-9_]\|\$\):\1createConstants\2:g
s:\([^A-Za-z0-9_]\)CreateDatabase\([^A-Za-z0-9_]\|\$\):\1createDatabase\2:g
s:\([^A-Za-z0-9_]\)CreateEnum\([^A-Za-z0-9_]\|\$\):\1createEnum\2:g
s:\([^A-Za-z0-9_]\)CreateEnumConstant\([^A-Za-z0-9_]\|\$\):\1createEnumConstant\2:g
s:\([^A-Za-z0-9_]\)CreateFeature\([^A-Za-z0-9_]\|\$\):\1createFeature\2:g
s:\([^A-Za-z0-9_]\)CreateIndex\([^A-Za-z0-9_]\|\$\):\1createIndex\2:g
s:\([^A-Za-z0-9_]\)CreateIndicesOnDatabase\([^A-Za-z0-9_]\|\$\):\1createIndicesOnDatabase\2:g
s:\([^A-Za-z0-9_]\)CreateIndicesOnOTGut\([^A-Za-z0-9_]\|\$\):\1createIndicesOnOTGut\2:g
s:\([^A-Za-z0-9_]\)CreateIndicesOnOTMonadMs\([^A-Za-z0-9_]\|\$\):\1createIndicesOnOTMonadMs\2:g
s:\([^A-Za-z0-9_]\)CreateIndicesOnOTObjects\([^A-Za-z0-9_]\|\$\):\1createIndicesOnOTObjects\2:g
s:\([^A-Za-z0-9_]\)CreateIndicesOnObjectType\([^A-Za-z0-9_]\|\$\):\1createIndicesOnObjectType\2:g
s:\([^A-Za-z0-9_]\)CreateMonadSet\([^A-Za-z0-9_]\|\$\):\1createMonadSet\2:g
s:\([^A-Za-z0-9_]\)CreateObject\([^A-Za-z0-9_]\|\$\):\1createObject\2:g
s:\([^A-Za-z0-9_]\)CreateObjectType\([^A-Za-z0-9_]\|\$\):\1createObjectType\2:g
s:\([^A-Za-z0-9_]\)CreateObjectTypeOT_gut\([^A-Za-z0-9_]\|\$\):\1createObjectTypeOT_gut\2:g
s:\([^A-Za-z0-9_]\)CreateObjectTypeOT_gut_or_objects\([^A-Za-z0-9_]\|\$\):\1createObjectTypeOT_gut_or_objects\2:g
s:\([^A-Za-z0-9_]\)CreateObjectTypeOT_objects\([^A-Za-z0-9_]\|\$\):\1createObjectTypeOT_objects\2:g
s:\([^A-Za-z0-9_]\)CreateObjects\([^A-Za-z0-9_]\|\$\):\1createObjects\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsInBetweenData\([^A-Za-z0-9_]\|\$\):\1createObjectsInBetweenData\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_gut\([^A-Za-z0-9_]\|\$\):\1createObjectsOT_gut\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_gut_DB\([^A-Za-z0-9_]\|\$\):\1createObjectsOT_gut_DB\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_gut_data\([^A-Za-z0-9_]\|\$\):\1createObjectsOT_gut_data\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_gut_or_objects\([^A-Za-z0-9_]\|\$\):\1createObjectsOT_gut_or_objects\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_gut_or_objects_DB\([^A-Za-z0-9_]\|\$\):\1createObjectsOT_gut_or_objects_DB\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_monad_ms\([^A-Za-z0-9_]\|\$\):\1createObjectsOT_monad_ms\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_monad_ms_DB\([^A-Za-z0-9_]\|\$\):\1createObjectsOT_monad_ms_DB\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_monad_ms_data\([^A-Za-z0-9_]\|\$\):\1createObjectsOT_monad_ms_data\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_objects\([^A-Za-z0-9_]\|\$\):\1createObjectsOT_objects\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_objects_DB\([^A-Za-z0-9_]\|\$\):\1createObjectsOT_objects_DB\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_objects_data\([^A-Za-z0-9_]\|\$\):\1createObjectsOT_objects_data\2:g
s:\([^A-Za-z0-9_]\)CreateSchemaVersionTable\([^A-Za-z0-9_]\|\$\):\1createSchemaVersionTable\2:g
s:\([^A-Za-z0-9_]\)CreateSegment\([^A-Za-z0-9_]\|\$\):\1createSegment\2:g
s:\([^A-Za-z0-9_]\)CreateSequenceTables110\([^A-Za-z0-9_]\|\$\):\1createSequenceTables110\2:g
s:\([^A-Za-z0-9_]\)CreateSequenceTables118\([^A-Za-z0-9_]\|\$\):\1createSequenceTables118\2:g
s:\([^A-Za-z0-9_]\)Create_min_max_m_table\([^A-Za-z0-9_]\|\$\):\1createMin_max_m_table\2:g
s:\([^A-Za-z0-9_]\)DBIsInitialized\([^A-Za-z0-9_]\|\$\):\1dbIsInitialized\2:g
s:\([^A-Za-z0-9_]\)DatabaseNameIsOK\([^A-Za-z0-9_]\|\$\):\1databaseNameIsOK\2:g
s:\([^A-Za-z0-9_]\)DeleteDatabase\([^A-Za-z0-9_]\|\$\):\1deleteDatabase\2:g
s:\([^A-Za-z0-9_]\)DeleteMonads\([^A-Za-z0-9_]\|\$\):\1deleteMonads\2:g
s:\([^A-Za-z0-9_]\)DeleteRedundantSequenceInfo\([^A-Za-z0-9_]\|\$\):\1deleteRedundantSequenceInfo\2:g
s:\([^A-Za-z0-9_]\)DropDatabase\([^A-Za-z0-9_]\|\$\):\1dropDatabase\2:g
s:\([^A-Za-z0-9_]\)DropEnum\([^A-Za-z0-9_]\|\$\):\1dropEnum\2:g
s:\([^A-Za-z0-9_]\)DropEnumConst\([^A-Za-z0-9_]\|\$\):\1dropEnumConst\2:g
s:\([^A-Za-z0-9_]\)DropFeature\([^A-Za-z0-9_]\|\$\):\1dropFeature\2:g
s:\([^A-Za-z0-9_]\)DropFeatureFromOT_gut\([^A-Za-z0-9_]\|\$\):\1dropFeatureFromOT_gut\2:g
s:\([^A-Za-z0-9_]\)DropFeatureFromOT_gut_or_objects\([^A-Za-z0-9_]\|\$\):\1dropFeatureFromOT_gut_or_objects\2:g
s:\([^A-Za-z0-9_]\)DropFeatureFromOT_objects\([^A-Za-z0-9_]\|\$\):\1dropFeatureFromOT_objects\2:g
s:\([^A-Za-z0-9_]\)DropIndex\([^A-Za-z0-9_]\|\$\):\1dropIndex\2:g
s:\([^A-Za-z0-9_]\)DropIndicesOnDatabase\([^A-Za-z0-9_]\|\$\):\1dropIndicesOnDatabase\2:g
s:\([^A-Za-z0-9_]\)DropIndicesOnOTGut\([^A-Za-z0-9_]\|\$\):\1dropIndicesOnOTGut\2:g
s:\([^A-Za-z0-9_]\)DropIndicesOnOTMonadMs\([^A-Za-z0-9_]\|\$\):\1dropIndicesOnOTMonadMs\2:g
s:\([^A-Za-z0-9_]\)DropIndicesOnOTObjects\([^A-Za-z0-9_]\|\$\):\1dropIndicesOnOTObjects\2:g
s:\([^A-Za-z0-9_]\)DropIndicesOnObjectType\([^A-Za-z0-9_]\|\$\):\1dropIndicesOnObjectType\2:g
s:\([^A-Za-z0-9_]\)DropMonadSet\([^A-Za-z0-9_]\|\$\):\1dropMonadSet\2:g
s:\([^A-Za-z0-9_]\)DropObject\([^A-Za-z0-9_]\|\$\):\1dropObject\2:g
s:\([^A-Za-z0-9_]\)DropObjectType\([^A-Za-z0-9_]\|\$\):\1dropObjectType\2:g
s:\([^A-Za-z0-9_]\)DropObjectsInMonads\([^A-Za-z0-9_]\|\$\):\1dropObjectsInMonads\2:g
s:\([^A-Za-z0-9_]\)EnumConstExists\([^A-Za-z0-9_]\|\$\):\1enumConstExists\2:g
s:\([^A-Za-z0-9_]\)EnumExists\([^A-Za-z0-9_]\|\$\):\1enumExists\2:g
s:\([^A-Za-z0-9_]\)ErrorMessage\([^A-Za-z0-9_]\|\$\):\1errorMessage\2:g
s:\([^A-Za-z0-9_]\)EscapeStringForSQL\([^A-Za-z0-9_]\|\$\):\1escapeStringForSQL\2:g
s:\([^A-Za-z0-9_]\)ExecAdd\([^A-Za-z0-9_]\|\$\):\1execAdd\2:g
s:\([^A-Za-z0-9_]\)ExecAddUpdateRemove\([^A-Za-z0-9_]\|\$\):\1execAddUpdateRemove\2:g
s:\([^A-Za-z0-9_]\)ExecCOPY\([^A-Za-z0-9_]\|\$\):\1execCOPY\2:g
s:\([^A-Za-z0-9_]\)ExecCommand\([^A-Za-z0-9_]\|\$\):\1execCommand\2:g
s:\([^A-Za-z0-9_]\)ExecMakeFeatureArray\([^A-Za-z0-9_]\|\$\):\1execMakeFeatureArray\2:g
s:\([^A-Za-z0-9_]\)ExecMakeFeatureList\([^A-Za-z0-9_]\|\$\):\1execMakeFeatureList\2:g
s:\([^A-Za-z0-9_]\)ExecMakeList\([^A-Za-z0-9_]\|\$\):\1execMakeList\2:g
s:\([^A-Za-z0-9_]\)ExecMakeNameList\([^A-Za-z0-9_]\|\$\):\1execMakeNameList\2:g
s:\([^A-Za-z0-9_]\)ExecMakeSOM\([^A-Za-z0-9_]\|\$\):\1execMakeSOM\2:g
s:\([^A-Za-z0-9_]\)ExecOneType\([^A-Za-z0-9_]\|\$\):\1execOneType\2:g
s:\([^A-Za-z0-9_]\)ExecSelect\([^A-Za-z0-9_]\|\$\):\1execSelect\2:g
s:\([^A-Za-z0-9_]\)FeatureExists\([^A-Za-z0-9_]\|\$\):\1featureExists\2:g
s:\([^A-Za-z0-9_]\)Finalize\([^A-Za-z0-9_]\|\$\):\1finalize\2:g
s:\([^A-Za-z0-9_]\)GetComputedFeature\([^A-Za-z0-9_]\|\$\):\1getComputedFeature\2:g
s:\([^A-Za-z0-9_]\)GetComputedFeatures\([^A-Za-z0-9_]\|\$\):\1getComputedFeatures\2:g
s:\([^A-Za-z0-9_]\)GetCurrentDatabaseVersion\([^A-Za-z0-9_]\|\$\):\1getCurrentDatabaseVersion\2:g
s:\([^A-Za-z0-9_]\)GetDefault\([^A-Za-z0-9_]\|\$\):\1getDefault\2:g
s:\([^A-Za-z0-9_]\)GetEMdFComparison\([^A-Za-z0-9_]\|\$\):\1getEMdFComparison\2:g
s:\([^A-Za-z0-9_]\)GetEMdFFFactor\([^A-Za-z0-9_]\|\$\):\1getEMdFFFactor\2:g
s:\([^A-Za-z0-9_]\)GetEMdFFFeatures\([^A-Za-z0-9_]\|\$\):\1getEMdFFFeatures\2:g
s:\([^A-Za-z0-9_]\)GetEMdFFTerm\([^A-Za-z0-9_]\|\$\):\1getEMdFFTerm\2:g
s:\([^A-Za-z0-9_]\)GetEVkindFromTypeID_D\([^A-Za-z0-9_]\|\$\):\1getEVkindFromTypeID_D\2:g
s:\([^A-Za-z0-9_]\)GetEnumConstNameFromValue\([^A-Za-z0-9_]\|\$\):\1getEnumConstNameFromValue\2:g
s:\([^A-Za-z0-9_]\)GetEnumConstants\([^A-Za-z0-9_]\|\$\):\1getEnumConstants\2:g
s:\([^A-Za-z0-9_]\)GetEnumerations\([^A-Za-z0-9_]\|\$\):\1getEnumerations\2:g
s:\([^A-Za-z0-9_]\)GetFeatures\([^A-Za-z0-9_]\|\$\):\1getFeatures\2:g
s:\([^A-Za-z0-9_]\)GetFeaturesByQuery\([^A-Za-z0-9_]\|\$\):\1getFeaturesByQuery\2:g
s:\([^A-Za-z0-9_]\)GetFeaturesByQueryExec\([^A-Za-z0-9_]\|\$\):\1getFeaturesByQueryExec\2:g
s:\([^A-Za-z0-9_]\)GetFeaturesForObjectType\([^A-Za-z0-9_]\|\$\):\1getFeaturesForObjectType\2:g
s:\([^A-Za-z0-9_]\)GetInst\([^A-Za-z0-9_]\|\$\):\1getInst\2:g
s:\([^A-Za-z0-9_]\)GetLastInsertRowID\([^A-Za-z0-9_]\|\$\):\1getLastInsertRowID\2:g
s:\([^A-Za-z0-9_]\)GetMonadsFromID_D\([^A-Za-z0-9_]\|\$\):\1getMonadsFromID_D\2:g
s:\([^A-Za-z0-9_]\)GetMonadsFromID_Ds\([^A-Za-z0-9_]\|\$\):\1getMonadsFromID_Ds\2:g
s:\([^A-Za-z0-9_]\)GetNextID\([^A-Za-z0-9_]\|\$\):\1getNextID\2:g
s:\([^A-Za-z0-9_]\)GetNextObjectID_D\([^A-Za-z0-9_]\|\$\):\1getNextObjectID_D\2:g
s:\([^A-Za-z0-9_]\)GetNextOtherID\([^A-Za-z0-9_]\|\$\):\1getNextOtherID\2:g
s:\([^A-Za-z0-9_]\)GetNextTuple\([^A-Za-z0-9_]\|\$\):\1getNextTuple\2:g
s:\([^A-Za-z0-9_]\)GetOTGutOrObjects\([^A-Za-z0-9_]\|\$\):\1getOTGutOrObjects\2:g
s:\([^A-Za-z0-9_]\)GetOTHasSingleRangeObjects\([^A-Za-z0-9_]\|\$\):\1getOTHasSingleRangeObjects\2:g
s:\([^A-Za-z0-9_]\)GetObjectTypes\([^A-Za-z0-9_]\|\$\):\1getObjectTypes\2:g
s:\([^A-Za-z0-9_]\)GetObjectTypesUsingEnumeration\([^A-Za-z0-9_]\|\$\):\1getObjectTypesUsingEnumeration\2:g
s:\([^A-Za-z0-9_]\)GetObjectsAtM\([^A-Za-z0-9_]\|\$\):\1getObjectsAtM\2:g
s:\([^A-Za-z0-9_]\)GetObjectsByMonads\([^A-Za-z0-9_]\|\$\):\1getObjectsByMonads\2:g
s:\([^A-Za-z0-9_]\)GetObjectsHavingMonadsInMonadSet\([^A-Za-z0-9_]\|\$\):\1getObjectsHavingMonadsInMonadSet\2:g
s:\([^A-Za-z0-9_]\)GetObjectsStartingAtSm\([^A-Za-z0-9_]\|\$\):\1getObjectsStartingAtSm\2:g
s:\([^A-Za-z0-9_]\)GetObjectsWithinMonads\([^A-Za-z0-9_]\|\$\):\1getObjectsWithinMonads\2:g
s:\([^A-Za-z0-9_]\)GetSOMForObject\([^A-Za-z0-9_]\|\$\):\1getSOMForObject\2:g
s:\([^A-Za-z0-9_]\)GetSchemaVersion\([^A-Za-z0-9_]\|\$\):\1getSchemaVersion\2:g
s:\([^A-Za-z0-9_]\)Get_all_m_1\([^A-Za-z0-9_]\|\$\):\1getAll_m_1\2:g
s:\([^A-Za-z0-9_]\)Get_max_m\([^A-Za-z0-9_]\|\$\):\1getMax_m\2:g
s:\([^A-Za-z0-9_]\)Get_min_m\([^A-Za-z0-9_]\|\$\):\1getMin_m\2:g
s:\([^A-Za-z0-9_]\)HasFirstLast\([^A-Za-z0-9_]\|\$\):\1hasFirstLast\2:g
s:\([^A-Za-z0-9_]\)HasRow\([^A-Za-z0-9_]\|\$\):\1hasRow\2:g
s:\([^A-Za-z0-9_]\)Hat\([^A-Za-z0-9_]\|\$\):\1hat\2:g
s:\([^A-Za-z0-9_]\)InsertMonads\([^A-Za-z0-9_]\|\$\):\1insertMonads\2:g
s:\([^A-Za-z0-9_]\)Join\([^A-Za-z0-9_]\|\$\):\1join\2:g
s:\([^A-Za-z0-9_]\)JoinTakeOver\([^A-Za-z0-9_]\|\$\):\1joinAndTakeOver\2:g
s:\([^A-Za-z0-9_]\)LoadEnumConstantsIntoCache\([^A-Za-z0-9_]\|\$\):\1loadEnumConstantsIntoCache\2:g
s:\([^A-Za-z0-9_]\)MakeFeatureSQLType\([^A-Za-z0-9_]\|\$\):\1makeFeatureSQLType\2:g
s:\([^A-Za-z0-9_]\)MakeMonadConstraintsFromSOM\([^A-Za-z0-9_]\|\$\):\1makeMonadConstraintsFromSOM\2:g
s:\([^A-Za-z0-9_]\)MayCOPY\([^A-Za-z0-9_]\|\$\):\1mayCOPY\2:g
s:\([^A-Za-z0-9_]\)MonadSetExists\([^A-Za-z0-9_]\|\$\):\1monadSetExists\2:g
s:\([^A-Za-z0-9_]\)Monad_Set_Element:\1MonadSetElement:g
s:\([^A-Za-z0-9_]\)MonadsBuildSet\([^A-Za-z0-9_]\|\$\):\1monadsBuildSet\2:g
s:\([^A-Za-z0-9_]\)MoveSequenceValue110\([^A-Za-z0-9_]\|\$\):\1moveSequenceValue110\2:g
s:\([^A-Za-z0-9_]\)MoveSequenceValue118\([^A-Za-z0-9_]\|\$\):\1moveSequenceValue118\2:g
s:\([^A-Za-z0-9_]\)MyExec\([^A-Za-z0-9_]\|\$\):\1myExec\2:g
s:\([^A-Za-z0-9_]\)Exec\([^A-Za-z0-9_]\|\$\):\1exec\2:g
s:\([^A-Za-z0-9_]\)MyMonads\([^A-Za-z0-9_]\|\$\):\1myMonads\2:g
s:\([^A-Za-z0-9_]\)MySymbol\([^A-Za-z0-9_]\|\$\):\1mySymbol\2:g
s:\([^A-Za-z0-9_]\)MyType\([^A-Za-z0-9_]\|\$\):\1myType\2:g
s:\([^A-Za-z0-9_]\)MyWeed\([^A-Za-z0-9_]\|\$\):\1myWeed\2:g
s:\([^A-Za-z0-9_]\)NoOfFields\([^A-Za-z0-9_]\|\$\):\1getNoOfFields\2:g
s:\([^A-Za-z0-9_]\)NoOfResultTuples\([^A-Za-z0-9_]\|\$\):\1noOfResultTuples\2:g
s:\([^A-Za-z0-9_]\)NormalizeOTName\([^A-Za-z0-9_]\|\$\):\1normalizeOTName\2:g
s:\([^A-Za-z0-9_]\)ObjectID_DExists\([^A-Za-z0-9_]\|\$\):\1objectID_DExists\2:g
s:\([^A-Za-z0-9_]\)ObjectID_DExistsInType\([^A-Za-z0-9_]\|\$\):\1objectID_DExistsInType\2:g
s:\([^A-Za-z0-9_]\)Print\([^A-Za-z0-9_]\|\$\):\1out\2:g
s:\([^A-Za-z0-9_]\)PrintConsole\([^A-Za-z0-9_]\|\$\):\1printConsole\2:g
s:\([^A-Za-z0-9_]\)PrintXML\([^A-Za-z0-9_]\|\$\):\1printXML\2:g
s:\([^A-Za-z0-9_]\)PrintXML_Header\([^A-Za-z0-9_]\|\$\):\1printXMLHeader\2:g
s:\([^A-Za-z0-9_]\)PrintXML_Row\([^A-Za-z0-9_]\|\$\):\1printXMLRow\2:g
s:\([^A-Za-z0-9_]\)PrintXML_Rows\([^A-Za-z0-9_]\|\$\):\1printXMLRows\2:g
s:\([^A-Za-z0-9_]\)Print_DTD_CMQLResult\([^A-Za-z0-9_]\|\$\):\1printDTDMQLResult\2:g
s:\([^A-Za-z0-9_]\)Print_DTD_CSheaf\([^A-Za-z0-9_]\|\$\):\1printDTDSheaf\2:g
s:\([^A-Za-z0-9_]\)Print_DTD_CTable\([^A-Za-z0-9_]\|\$\):\1printDTDTable\2:g
s:\([^A-Za-z0-9_]\)Print_DTD_end\([^A-Za-z0-9_]\|\$\):\1printDTDEnd\2:g
s:\([^A-Za-z0-9_]\)Print_DTD_start\([^A-Za-z0-9_]\|\$\):\1printDTDStart\2:g
s:\([^A-Za-z0-9_]\)Print_XMLDecl\([^A-Za-z0-9_]\|\$\):\1printXMLDecl\2:g
s:\([^A-Za-z0-9_]\)RemoveMSE\([^A-Za-z0-9_]\|\$\):\1removeMSE\2:g
s:\([^A-Za-z0-9_]\)Restrict\([^A-Za-z0-9_]\|\$\):\1restrict\2:g
s:\([^A-Za-z0-9_]\)SelectMonadSets\([^A-Za-z0-9_]\|\$\):\1selectMonadSets\2:g
s:\([^A-Za-z0-9_]\)SetDefaultEnumConst\([^A-Za-z0-9_]\|\$\):\1setDefaultEnumConst\2:g
s:\([^A-Za-z0-9_]\)SetNextObjectID_DIfNotHigher\([^A-Za-z0-9_]\|\$\):\1setNextObjectID_DIfNotHigher\2:g
s:\([^A-Za-z0-9_]\)SetSchemaVersion\([^A-Za-z0-9_]\|\$\):\1setSchemaVersion\2:g
s:\([^A-Za-z0-9_]\)Set_max_m\([^A-Za-z0-9_]\|\$\):\1setMax_m\2:g
s:\([^A-Za-z0-9_]\)Set_min_m\([^A-Za-z0-9_]\|\$\):\1setMin_m\2:g
s:\([^A-Za-z0-9_]\)Set_min_max_m_from_object_type\([^A-Za-z0-9_]\|\$\):\1setMin_max_m_fromObjectType\2:g
s:\([^A-Za-z0-9_]\)Set_min_max_m_from_object_types\([^A-Za-z0-9_]\|\$\):\1setMin_max_m_fromObjectTypes\2:g
s:\([^A-Za-z0-9_]\)ShutdownConnection\([^A-Za-z0-9_]\|\$\):\1shutdownConnection\2:g
s:\([^A-Za-z0-9_]\)Symbol\([^A-Za-z0-9_]\|\$\):\1symbol\2:g
s:\([^A-Za-z0-9_]\)SymbolAddFeatures\([^A-Za-z0-9_]\|\$\):\1symbolAddFeatures\2:g
s:\([^A-Za-z0-9_]\)SymbolAddToObject\([^A-Za-z0-9_]\|\$\):\1symbolAddToObject\2:g
s:\([^A-Za-z0-9_]\)SymbolAllAreOfSameType\([^A-Za-z0-9_]\|\$\):\1symbolAllAreOfSameType\2:g
s:\([^A-Za-z0-9_]\)SymbolAllFeaturesMustBeAssigned\([^A-Za-z0-9_]\|\$\):\1symbolAllFeaturesMustBeAssigned\2:g
s:\([^A-Za-z0-9_]\)SymbolAllFeaturesMustExist\([^A-Za-z0-9_]\|\$\):\1symbolAllFeaturesMustExist\2:g
s:\([^A-Za-z0-9_]\)SymbolAssignValues\([^A-Za-z0-9_]\|\$\):\1symbolAssignValues\2:g
s:\([^A-Za-z0-9_]\)SymbolAssignValuesPrivate\([^A-Za-z0-9_]\|\$\):\1symbolAssignValuesPrivate\2:g
s:\([^A-Za-z0-9_]\)SymbolCheckNoTwoValuesSamePrivate\([^A-Za-z0-9_]\|\$\):\1symbolCheckNoTwoValuesSamePrivate\2:g
s:\([^A-Za-z0-9_]\)SymbolConstantExistence\([^A-Za-z0-9_]\|\$\):\1symbolExistenceOfConstants\2:g
s:\([^A-Za-z0-9_]\)SymbolDefaultIsRemoved\([^A-Za-z0-9_]\|\$\):\1symbolDefaultIsRemoved\2:g
s:\([^A-Za-z0-9_]\)SymbolDoLocalUpdatePrivate\([^A-Za-z0-9_]\|\$\):\1symbolDoLocalUpdatePrivate\2:g
s:\([^A-Za-z0-9_]\)SymbolEnumConstantsExist\([^A-Za-z0-9_]\|\$\):\1symbolEnumConstantsExist\2:g
s:\([^A-Za-z0-9_]\)SymbolEnumerationExists\([^A-Za-z0-9_]\|\$\):\1symbolEnumerationExists\2:g
s:\([^A-Za-z0-9_]\)SymbolEnumerations\([^A-Za-z0-9_]\|\$\):\1symbolEnumerations\2:g
s:\([^A-Za-z0-9_]\)SymbolEnumerationsExist\([^A-Za-z0-9_]\|\$\):\1symbolEnumerationsExist\2:g
s:\([^A-Za-z0-9_]\)SymbolExistenceOfConstants\([^A-Za-z0-9_]\|\$\):\1symbolExistenceOfConstants\2:g
s:\([^A-Za-z0-9_]\)SymbolExistenceOfFeatures\([^A-Za-z0-9_]\|\$\):\1symbolExistenceOfFeatures\2:g
s:\([^A-Za-z0-9_]\)SymbolFeaturesExist\([^A-Za-z0-9_]\|\$\):\1symbolFeaturesExist\2:g
s:\([^A-Za-z0-9_]\)SymbolFeaturesMustNotExist\([^A-Za-z0-9_]\|\$\):\1symbolFeaturesMustNotExist\2:g
s:\([^A-Za-z0-9_]\)SymbolNoFeatureMayBeComputed\([^A-Za-z0-9_]\|\$\):\1symbolNoFeatureMayBeComputed\2:g
s:\([^A-Za-z0-9_]\)SymbolNoTwoValuesSame\([^A-Za-z0-9_]\|\$\):\1symbolNoTwoValuesSame\2:g
s:\([^A-Za-z0-9_]\)SymbolObjectTypeExists\([^A-Za-z0-9_]\|\$\):\1symbolObjectTypeExists\2:g
s:\([^A-Za-z0-9_]\)SymbolObjectsExist\([^A-Za-z0-9_]\|\$\):\1symbolObjectsExist\2:g
s:\([^A-Za-z0-9_]\)SymbolObjectsExistInType\([^A-Za-z0-9_]\|\$\):\1symbolObjectsExistInType\2:g
s:\([^A-Za-z0-9_]\)SymbolValueMoreThanOnce\([^A-Za-z0-9_]\|\$\):\1symbolValueMoreThanOnce\2:g
s:\([^A-Za-z0-9_]\)SymbolValueMoreThanOncePrivate\([^A-Za-z0-9_]\|\$\):\1symbolValueMoreThanOncePrivate\2:g
s:\([^A-Za-z0-9_]\)TableExists\([^A-Za-z0-9_]\|\$\):\1tableExists\2:g
s:\([^A-Za-z0-9_]\)ToString\([^A-Za-z0-9_]\|\$\):\1toString\2:g
s:\([^A-Za-z0-9_]\)TypeAssignTypeID\([^A-Za-z0-9_]\|\$\):\1typeAssignTypeID\2:g
s:\([^A-Za-z0-9_]\)TypeAssignTypes\([^A-Za-z0-9_]\|\$\):\1typeAssignTypes\2:g
s:\([^A-Za-z0-9_]\)TypeFeatureName\([^A-Za-z0-9_]\|\$\):\1typeFeatureName\2:g
s:\([^A-Za-z0-9_]\)Type_id_to_string\([^A-Za-z0-9_]\|\$\):\1ypeIdToString\2:g
s:\([^A-Za-z0-9_]\)Type_id_to_TableColumnType\([^A-Za-z0-9_]\|\$\):\1typeIdToTableColumnType\2:
s:\([^A-Za-z0-9_]\)TypeTypeCompatibility\([^A-Za-z0-9_]\|\$\):\1typeTypeCompatibility\2:g
s:\([^A-Za-z0-9_]\)UpdateEnumConst\([^A-Za-z0-9_]\|\$\):\1updateEnumConst\2:g
s:\([^A-Za-z0-9_]\)UpdateObject\([^A-Za-z0-9_]\|\$\):\1updateObject\2:g
s:\([^A-Za-z0-9_]\)UpgradeDatabase\([^A-Za-z0-9_]\|\$\):\1upgradeDatabase\2:g
s:\([^A-Za-z0-9_]\)UpgradeDatabaseTo110\([^A-Za-z0-9_]\|\$\):\1upgradeDatabaseTo110\2:g
s:\([^A-Za-z0-9_]\)UpgradeDatabaseTo115\([^A-Za-z0-9_]\|\$\):\1upgradeDatabaseTo115\2:g
s:\([^A-Za-z0-9_]\)UpgradeDatabaseTo118\([^A-Za-z0-9_]\|\$\):\1upgradeDatabaseTo118\2:g
s:\([^A-Za-z0-9_]\)UpgradeObjectTypeTo110\([^A-Za-z0-9_]\|\$\):\1upgradeObjectTypeTo110\2:g
s:\([^A-Za-z0-9_]\)UseDatabase\([^A-Za-z0-9_]\|\$\):\1useDatabase\2:g
s:\([^A-Za-z0-9_]\)Vacuum\([^A-Za-z0-9_]\|\$\):\1vacuum\2:g
s:\([^A-Za-z0-9_]\)VacuumObjectType\([^A-Za-z0-9_]\|\$\):\1vacuumObjectType\2:g
s:\([^A-Za-z0-9_]\)Weed\([^A-Za-z0-9_]\|\$\):\1weed\2:g
s:\([^A-Za-z0-9_]\)WeedDefault\([^A-Za-z0-9_]\|\$\):\1weedDefault\2:g
s:\([^A-Za-z0-9_]\)WeedDefaultPrivate\([^A-Za-z0-9_]\|\$\):\1weedDefaultPrivate\2:g
s:\([^A-Za-z0-9_]\)WeedFirstLast\([^A-Za-z0-9_]\|\$\):\1weedFirstLast\2:g
s:\([^A-Za-z0-9_]\)WeedGET\([^A-Za-z0-9_]\|\$\):\1weedGET\2:g
s:\([^A-Za-z0-9_]\)WeedMonotonic\([^A-Za-z0-9_]\|\$\):\1weedMonotonic\2:g
s:\([^A-Za-z0-9_]\)WeedNoneIsNIL\([^A-Za-z0-9_]\|\$\):\1weedNoneIsNIL\2:g
s:\([^A-Za-z0-9_]\)WeedObjectTypeNameNotSpecial\([^A-Za-z0-9_]\|\$\):\1weedObjectTypeNameNotSpecial\2:g
s:\([^A-Za-z0-9_]\)WeedPositive\([^A-Za-z0-9_]\|\$\):\1weedPositive\2:g
s:\([^A-Za-z0-9_]\)WeedSelfNotAssigned\([^A-Za-z0-9_]\|\$\):\1weedSelfNotAssigned\2:g
s:\([^A-Za-z0-9_]\)WeedSelfNotDeclared\([^A-Za-z0-9_]\|\$\):\1weedSelfNotDeclared\2:g
s:\([^A-Za-z0-9_]\)WeedTildeOperator\([^A-Za-z0-9_]\|\$\):\1weedTildeOperator\2:g
s:\([^A-Za-z0-9_]\)add_EMdFValue\([^A-Za-z0-9_]\|\$\):\1addEMdFValue\2:g
s:\([^A-Za-z0-9_]\)add_eci\([^A-Za-z0-9_]\|\$\):\1addEci\2:g
s:\([^A-Za-z0-9_]\)add_enum\([^A-Za-z0-9_]\|\$\):\1addEnum\2:g
s:\([^A-Za-z0-9_]\)add_enum_const_to_cache\([^A-Za-z0-9_]\|\$\):\1addEnumConstToCache\2:g
s:\([^A-Za-z0-9_]\)add_enum_to_cache\([^A-Za-z0-9_]\|\$\):\1addEnumToCache\2:g
s:\([^A-Za-z0-9_]\)add_feature\([^A-Za-z0-9_]\|\$\):\1addFeature\2:g
s:\([^A-Za-z0-9_]\)add_feature_to_cache\([^A-Za-z0-9_]\|\$\):\1addFeatureToCache\2:g
s:\([^A-Za-z0-9_]\)add_feature_to_cache_if_not_already_there\([^A-Za-z0-9_]\|\$\):\1addFeatureToCacheIfNotAlreadyThere\2:g
s:\([^A-Za-z0-9_]\)add_mse\([^A-Za-z0-9_]\|\$\):\1addMse\2:g
s:\([^A-Za-z0-9_]\)add_object\([^A-Za-z0-9_]\|\$\):\1addObject\2:g
s:\([^A-Za-z0-9_]\)add_object_type_to_cache\([^A-Za-z0-9_]\|\$\):\1addObjectTypeToCache\2:g
s:\([^A-Za-z0-9_]\)add_stringlist_nodes\([^A-Za-z0-9_]\|\$\):\1addStringListNodes\2:g
s:\([^A-Za-z0-9_]\)add_value\([^A-Za-z0-9_]\|\$\):\1addValue\2:g
s:\([^A-Za-z0-9_]\)append_and_subsume\([^A-Za-z0-9_]\|\$\):\1appendAndSubsume\2:g
s:\([^A-Za-z0-9_]\)append_header\([^A-Za-z0-9_]\|\$\):\1appendHeader\2:g
s:\([^A-Za-z0-9_]\)append_local_error\([^A-Za-z0-9_]\|\$\):\1appendLocalError\2:g
s:\([^A-Za-z0-9_]\)big_union\([^A-Za-z0-9_]\|\$\):\1bigUnion\2:g
s:\([^A-Za-z0-9_]\)calculate_characteristic_string\([^A-Za-z0-9_]\|\$\):\1calculateCharacteristicString\2:g
s:\([^A-Za-z0-9_]\)calculate_pre_query_string\([^A-Za-z0-9_]\|\$\):\1calculatePreQueryString\2:g
s:\([^A-Za-z0-9_]\)clear_errors\([^A-Za-z0-9_]\|\$\):\1clearErrors\2:g
s:\([^A-Za-z0-9_]\)clear_local_error\([^A-Za-z0-9_]\|\$\):\1clearLocalError\2:g
s:\([^A-Za-z0-9_]\)compare_int\([^A-Za-z0-9_]\|\$\):\1compareInt\2:g
s:\([^A-Za-z0-9_]\)compare_string\([^A-Za-z0-9_]\|\$\):\1compareString\2:g
s:\([^A-Za-z0-9_]\)copy_MO\([^A-Za-z0-9_]\|\$\):\1copyMO\2:g
s:\([^A-Za-z0-9_]\)copy_other\([^A-Za-z0-9_]\|\$\):\1copyOther\2:g
s:\([^A-Za-z0-9_]\)create_headers\([^A-Za-z0-9_]\|\$\):\1createHeaders\2:g
s:\([^A-Za-z0-9_]\)decode_feature_name\([^A-Za-z0-9_]\|\$\):\1decodeFeatureName\2:g
s:\([^A-Za-z0-9_]\)decrease_indent\([^A-Za-z0-9_]\|\$\):\1decreaseIndent\2:g
s:\([^A-Za-z0-9_]\)delete_contents\([^A-Za-z0-9_]\|\$\):\1deleteContents\2:g
s:\([^A-Za-z0-9_]\)delete_mos\([^A-Za-z0-9_]\|\$\):\1deleteMos\2:g
s:\([^A-Za-z0-9_]\)delete_object_type_from_cache\([^A-Za-z0-9_]\|\$\):\1deleteObjectTypeFromCache\2:g
s:\([^A-Za-z0-9_]\)delete_straws\([^A-Za-z0-9_]\|\$\):\1deleteStraws\2:g
s:\([^A-Za-z0-9_]\)dump_results\([^A-Za-z0-9_]\|\$\):\1dumpResults\2:g
s:\([^A-Za-z0-9_]\)dump_results_all\([^A-Za-z0-9_]\|\$\):\1dumpResultsAll\2:g
s:\([^A-Za-z0-9_]\)emit_attributes\([^A-Za-z0-9_]\|\$\):\1emitAttributes\2:g
s:\([^A-Za-z0-9_]\)emit_horizontal_line\([^A-Za-z0-9_]\|\$\):\1emitHorizontalLine\2:g
s:\([^A-Za-z0-9_]\)encode_feature_name\([^A-Za-z0-9_]\|\$\):\1encodeFeatureName\2:g
s:\([^A-Za-z0-9_]\)encode_feature_name_for_prequery_string\([^A-Za-z0-9_]\|\$\):\1encodeFeatureNameForPrequeryString\2:g
s:\([^A-Za-z0-9_]\)encrypt_string\([^A-Za-z0-9_]\|\$\):\1encryptString\2:g
s:\([^A-Za-z0-9_]\)end_tag\([^A-Za-z0-9_]\|\$\):\1endTag\2:g
s:\([^A-Za-z0-9_]\)enum_const_info:\1EnumConstInfo:g
s:^enum_const_info:EnumConstInfo:g
s:\([^A-Za-z0-9_]\)execute_file\([^A-Za-z0-9_]\|\$\):\1executeFile\2:g
s:\([^A-Za-z0-9_]\)execute_stream\([^A-Za-z0-9_]\|\$\):\1executeStream\2:g
s:\([^A-Za-z0-9_]\)execute_string\([^A-Za-z0-9_]\|\$\):\1executeString\2:g
s:\([^A-Za-z0-9_]\)extend_with_me\([^A-Za-z0-9_]\|\$\):\1extendWithMe\2:g
s:\([^A-Za-z0-9_]\)feature_type_id_is_ASCII\([^A-Za-z0-9_]\|\$\):\1featureTypeIdIsASCII\2:g
s:\([^A-Za-z0-9_]\)feature_type_id_is_ENUM\([^A-Za-z0-9_]\|\$\):\1featureTypeIdIsENUM\2:g
s:\([^A-Za-z0-9_]\)feature_type_id_is_STRING\([^A-Za-z0-9_]\|\$\):\1featureTypeIdIsSTRING\2:g
s:\([^A-Za-z0-9_]\)fill_gaps\([^A-Za-z0-9_]\|\$\):\1fillGaps\2:g
s:\([^A-Za-z0-9_]\)gap_exists\([^A-Za-z0-9_]\|\$\):\1gapExists\2:g
s:\([^A-Za-z0-9_]\)get_DB_error\([^A-Za-z0-9_]\|\$\):\1getDBError\2:g
s:\([^A-Za-z0-9_]\)get_EMdFValue\([^A-Za-z0-9_]\|\$\):\1getEMdFValue\2:g
s:\([^A-Za-z0-9_]\)get_EMdFValue_index\([^A-Za-z0-9_]\|\$\):\1getEMdFValueIndex\2:g
s:\([^A-Za-z0-9_]\)get_Enumeration\([^A-Za-z0-9_]\|\$\):\1getEnumeration\2:g
s:\([^A-Za-z0-9_]\)get_Next\([^A-Za-z0-9_]\|\$\):\1getNext\2:g
s:\([^A-Za-z0-9_]\)get_as_EMdFValue\([^A-Za-z0-9_]\|\$\):\1getAsEMdFValue\2:g
s:\([^A-Za-z0-9_]\)get_as_string\([^A-Za-z0-9_]\|\$\):\1getAsString\2:g
s:\([^A-Za-z0-9_]\)get_block\([^A-Za-z0-9_]\|\$\):\1getBlock\2:g
s:\([^A-Za-z0-9_]\)get_block_str\([^A-Za-z0-9_]\|\$\):\1getBlockStr\2:g
s:\([^A-Za-z0-9_]\)get_block_string\([^A-Za-z0-9_]\|\$\):\1getBlockString\2:g
s:\([^A-Za-z0-9_]\)get_characteristic_string\([^A-Za-z0-9_]\|\$\):\1getCharacteristicString\2:g
s:\([^A-Za-z0-9_]\)get_column\([^A-Za-z0-9_]\|\$\):\1getColumn\2:g
s:\([^A-Za-z0-9_]\)get_comparison_op\([^A-Za-z0-9_]\|\$\):\1getComparisonOp\2:g
s:\([^A-Za-z0-9_]\)get_compiler_error\([^A-Za-z0-9_]\|\$\):\1getCompilerError\2:g
s:\([^A-Za-z0-9_]\)get_const_reference\([^A-Za-z0-9_]\|\$\):\1getConstReference\2:g
s:\([^A-Za-z0-9_]\)get_constraints\([^A-Za-z0-9_]\|\$\):\1getConstraints\2:g
s:\([^A-Za-z0-9_]\)get_content\([^A-Za-z0-9_]\|\$\):\1getContent\2:g
s:\([^A-Za-z0-9_]\)get_copy_of_mo\([^A-Za-z0-9_]\|\$\):\1getCopyOfMo\2:g
s:\([^A-Za-z0-9_]\)get_default\([^A-Za-z0-9_]\|\$\):\1getDefault\2:g
s:\([^A-Za-z0-9_]\)get_default_password\([^A-Za-z0-9_]\|\$\):\1getDefaultPassword\2:g
s:\([^A-Za-z0-9_]\)get_default_specification\([^A-Za-z0-9_]\|\$\):\1getDefaultSpecification\2:g
s:\([^A-Za-z0-9_]\)get_default_value\([^A-Za-z0-9_]\|\$\):\1getDefaultValue\2:g
s:\([^A-Za-z0-9_]\)get_ec_initialization\([^A-Za-z0-9_]\|\$\):\1getEcInitialization\2:g
s:\([^A-Za-z0-9_]\)get_ec_name\([^A-Za-z0-9_]\|\$\):\1getEcName\2:g
s:\([^A-Za-z0-9_]\)get_emdf_value\([^A-Za-z0-9_]\|\$\):\1getEMdFValue\2:g
s:\([^A-Za-z0-9_]\)get_enum\([^A-Za-z0-9_]\|\$\):\1getEnum\2:g
s:\([^A-Za-z0-9_]\)get_enum_const\([^A-Za-z0-9_]\|\$\):\1getEnumConst\2:g
s:\([^A-Za-z0-9_]\)get_enum_id\([^A-Za-z0-9_]\|\$\):\1getEnumId\2:g
s:\([^A-Za-z0-9_]\)get_enum_name_from_index\([^A-Za-z0-9_]\|\$\):\1getEnumNameFromIndex\2:g
s:\([^A-Za-z0-9_]\)get_enum_value\([^A-Za-z0-9_]\|\$\):\1getEnumValue\2:g
s:\([^A-Za-z0-9_]\)get_expression\([^A-Za-z0-9_]\|\$\):\1getExpression\2:g
s:\([^A-Za-z0-9_]\)get_feature\([^A-Za-z0-9_]\|\$\):\1getFeature\2:g
s:\([^A-Za-z0-9_]\)get_feature_addition\([^A-Za-z0-9_]\|\$\):\1getFeatureAddition\2:g
s:\([^A-Za-z0-9_]\)get_feature_assignments\([^A-Za-z0-9_]\|\$\):\1getFeatureAssignments\2:g
s:\([^A-Za-z0-9_]\)get_feature_comparison\([^A-Za-z0-9_]\|\$\):\1getFeatureComparison\2:g
s:\([^A-Za-z0-9_]\)get_feature_constraints\([^A-Za-z0-9_]\|\$\):\1getFeatureConstraints\2:g
s:\([^A-Za-z0-9_]\)get_feature_index\([^A-Za-z0-9_]\|\$\):\1getFeatureIndex\2:g
s:\([^A-Za-z0-9_]\)get_feature_index_db\([^A-Za-z0-9_]\|\$\):\1getFeatureIndexDB\2:g
s:\([^A-Za-z0-9_]\)get_feature_index_inst\([^A-Za-z0-9_]\|\$\):\1getFeatureIndexInst\2:g
s:\([^A-Za-z0-9_]\)get_feature_info\([^A-Za-z0-9_]\|\$\):\1getFeatureInfo\2:g
s:\([^A-Za-z0-9_]\)get_feature_infos\([^A-Za-z0-9_]\|\$\):\1getFeatureInfos\2:g
s:\([^A-Za-z0-9_]\)get_feature_name\([^A-Za-z0-9_]\|\$\):\1getFeatureName\2:g
s:\([^A-Za-z0-9_]\)get_feature_name_from_index\([^A-Za-z0-9_]\|\$\):\1getFeatureNameFromIndex\2:g
s:\([^A-Za-z0-9_]\)get_feature_names\([^A-Za-z0-9_]\|\$\):\1getFeatureNames\2:g
s:\([^A-Za-z0-9_]\)get_feature_removal\([^A-Za-z0-9_]\|\$\):\1getFeatureRemoval\2:g
s:\([^A-Za-z0-9_]\)get_feature_retrieval\([^A-Za-z0-9_]\|\$\):\1getFeatureRetrieval\2:g
s:\([^A-Za-z0-9_]\)get_feature_type_id\([^A-Za-z0-9_]\|\$\):\1getFeatureTypeId\2:g
s:\([^A-Za-z0-9_]\)get_feature_value\([^A-Za-z0-9_]\|\$\):\1getFeatureValue\2:g
s:\([^A-Za-z0-9_]\)get_feature_value_arr_size\([^A-Za-z0-9_]\|\$\):\1getFeatureValueArrSize\2:g
s:\([^A-Za-z0-9_]\)get_ffactor\([^A-Za-z0-9_]\|\$\):\1getFFactor\2:g
s:\([^A-Za-z0-9_]\)get_ffeatures\([^A-Za-z0-9_]\|\$\):\1getFFeatures\2:g
s:\([^A-Za-z0-9_]\)get_first_last\([^A-Za-z0-9_]\|\$\):\1getFirstLast\2:g
s:\([^A-Za-z0-9_]\)get_focus\([^A-Za-z0-9_]\|\$\):\1getFocus\2:g
s:\([^A-Za-z0-9_]\)get_fterm\([^A-Za-z0-9_]\|\$\):\1getFTerm\2:g
s:\([^A-Za-z0-9_]\)get_gap_block\([^A-Za-z0-9_]\|\$\):\1getGapBlock\2:g
s:\([^A-Za-z0-9_]\)get_gap_vector\([^A-Za-z0-9_]\|\$\):\1getGapVector\2:g
s:\([^A-Za-z0-9_]\)get_has_single_range_objects\([^A-Za-z0-9_]\|\$\):\1getHasSingleRangeObjects\2:g
s:\([^A-Za-z0-9_]\)get_id_d\([^A-Za-z0-9_]\|\$\):\1getID_D\2:g
s:\([^A-Za-z0-9_]\)get_identifier\([^A-Za-z0-9_]\|\$\):\1getIdentifier\2:g
s:\([^A-Za-z0-9_]\)get_index\([^A-Za-z0-9_]\|\$\):\1getIndex\2:g
s:\([^A-Za-z0-9_]\)get_index_in_symboltable\([^A-Za-z0-9_]\|\$\):\1getIndexInSymboltable\2:g
s:\([^A-Za-z0-9_]\)get_index_in_symboltable_entry\([^A-Za-z0-9_]\|\$\):\1getIndexInSymboltableEntry\2:g
s:\([^A-Za-z0-9_]\)get_int\([^A-Za-z0-9_]\|\$\):\1getInt\2:g
s:\([^A-Za-z0-9_]\)get_integer\([^A-Za-z0-9_]\|\$\):\1getInteger\2:g
s:\([^A-Za-z0-9_]\)get_is_computed\([^A-Za-z0-9_]\|\$\):\1getIsComputed\2:g
s:\([^A-Za-z0-9_]\)get_is_default\([^A-Za-z0-9_]\|\$\):\1getIsDefault\2:g
s:\([^A-Za-z0-9_]\)get_kind\([^A-Za-z0-9_]\|\$\):\1getKind\2:g
s:\([^A-Za-z0-9_]\)get_last\([^A-Za-z0-9_]\|\$\):\1getLast\2:g
s:\([^A-Za-z0-9_]\)get_last_compiler_stage\([^A-Za-z0-9_]\|\$\):\1getLastCompilerStage\2:g
s:\([^A-Za-z0-9_]\)get_last_kind\([^A-Za-z0-9_]\|\$\):\1getLastKind\2:g
s:\([^A-Za-z0-9_]\)get_leftmost_object_block_first\([^A-Za-z0-9_]\|\$\):\1getLeftmostObjectBlockFirst\2:g
s:\([^A-Za-z0-9_]\)get_leftmost_object_type_name\([^A-Za-z0-9_]\|\$\):\1getLeftmostObjectTypeName\2:g
s:\([^A-Za-z0-9_]\)get_limit\([^A-Za-z0-9_]\|\$\):\1getLimit\2:g
s:\([^A-Za-z0-9_]\)get_local_error\([^A-Za-z0-9_]\|\$\):\1getLocalError\2:g
s:\([^A-Za-z0-9_]\)get_max_lengths\([^A-Za-z0-9_]\|\$\):\1getMaxLengths\2:g
s:\([^A-Za-z0-9_]\)get_max_lengths_all\([^A-Za-z0-9_]\|\$\):\1getMaxLengthsAll\2:g
s:\([^A-Za-z0-9_]\)get_monad_m_vector\([^A-Za-z0-9_]\|\$\):\1getMonad_mVector\2:g
s:\([^A-Za-z0-9_]\)get_monad_ms_list\([^A-Za-z0-9_]\|\$\):\1getMonad_mList\2:g
s:\([^A-Za-z0-9_]\)get_monads\([^A-Za-z0-9_]\|\$\):\1getMonads\2:g
s:\([^A-Za-z0-9_]\)get_mse_first\([^A-Za-z0-9_]\|\$\):\1getMseFirst\2:g
s:\([^A-Za-z0-9_]\)get_mse_last\([^A-Za-z0-9_]\|\$\):\1getMseLast\2:g
s:\([^A-Za-z0-9_]\)get_name\([^A-Za-z0-9_]\|\$\):\1getName\2:g
s:\([^A-Za-z0-9_]\)get_nr\([^A-Za-z0-9_]\|\$\):\1getNR\2:g
s:\([^A-Za-z0-9_]\)get_object\([^A-Za-z0-9_]\|\$\):\1getObject\2:g
s:\([^A-Za-z0-9_]\)get_object_block\([^A-Za-z0-9_]\|\$\):\1getObjectBlock\2:g
s:\([^A-Za-z0-9_]\)get_object_block_first\([^A-Za-z0-9_]\|\$\):\1getObjectBlockFirst\2:g
s:\([^A-Za-z0-9_]\)get_object_reference\([^A-Za-z0-9_]\|\$\):\1getObjectReference\2:g
s:\([^A-Za-z0-9_]\)get_object_reference_index\([^A-Za-z0-9_]\|\$\):\1getObjectReferenceIndex\2:g
s:\([^A-Za-z0-9_]\)get_object_reference_usage\([^A-Za-z0-9_]\|\$\):\1getObjectReferenceUsage\2:g
s:\([^A-Za-z0-9_]\)get_object_type_id\([^A-Za-z0-9_]\|\$\):\1getObjectTypeId\2:g
s:\([^A-Za-z0-9_]\)get_object_type_index\([^A-Za-z0-9_]\|\$\):\1getObjectTypeIndex\2:g
s:\([^A-Za-z0-9_]\)get_object_type_name\([^A-Za-z0-9_]\|\$\):\1getObjectTypeName\2:g
s:\([^A-Za-z0-9_]\)get_object_type_name_from_index\([^A-Za-z0-9_]\|\$\):\1getOTNameFromIndex\2:g
s:\([^A-Za-z0-9_]\)get_operator\([^A-Za-z0-9_]\|\$\):\1getSetOperator\2:g
s:\([^A-Za-z0-9_]\)get_opt_blocks\([^A-Za-z0-9_]\|\$\):\1getOptBlocks\2:g
s:\([^A-Za-z0-9_]\)get_opt_ec_initialization\([^A-Za-z0-9_]\|\$\):\1getOptEcInitialization\2:g
s:\([^A-Za-z0-9_]\)get_opt_gap_block\([^A-Za-z0-9_]\|\$\):\1getOptGapBlock\2:g
s:\([^A-Za-z0-9_]\)get_output_kind\([^A-Za-z0-9_]\|\$\):\1getOutputKind\2:g
s:\([^A-Za-z0-9_]\)get_power\([^A-Za-z0-9_]\|\$\):\1getPower\2:g
s:\([^A-Za-z0-9_]\)get_pre_query_string\([^A-Za-z0-9_]\|\$\):\1getPreQueryString\2:g
s:\([^A-Za-z0-9_]\)get_rest_of_block_str\([^A-Za-z0-9_]\|\$\):\1getRestOfBlockStr\2:g
s:\([^A-Za-z0-9_]\)get_result\([^A-Za-z0-9_]\|\$\):\1getResult\2:g
s:\([^A-Za-z0-9_]\)get_retrieval\([^A-Za-z0-9_]\|\$\):\1getRetrieval\2:g
s:\([^A-Za-z0-9_]\)get_set\([^A-Za-z0-9_]\|\$\):\1getSet\2:g
s:\([^A-Za-z0-9_]\)get_sheaf\([^A-Za-z0-9_]\|\$\):\1getSheaf\2:g
s:\([^A-Za-z0-9_]\)get_string\([^A-Za-z0-9_]\|\$\):\1getString\2:g
s:\([^A-Za-z0-9_]\)get_table\([^A-Za-z0-9_]\|\$\):\1getTable\2:g
s:\([^A-Za-z0-9_]\)get_type\([^A-Za-z0-9_]\|\$\):\1getType\2:g
s:\([^A-Za-z0-9_]\)get_type_id\([^A-Za-z0-9_]\|\$\):\1getTypeId\2:g
s:\([^A-Za-z0-9_]\)get_value\([^A-Za-z0-9_]\|\$\):\1getValue\2:g
s:\([^A-Za-z0-9_]\)has_EMPTY_mo\([^A-Za-z0-9_]\|\$\):\1hasEmpty_mo\2:g
s:\([^A-Za-z0-9_]\)has_NIL_mo\([^A-Za-z0-9_]\|\$\):\1hasNil_mo\2:g
s:\([^A-Za-z0-9_]\)has_default\([^A-Za-z0-9_]\|\$\):\1hasDefault\2:g
s:\([^A-Za-z0-9_]\)has_enum\([^A-Za-z0-9_]\|\$\):\1hasEnum\2:g
s:\([^A-Za-z0-9_]\)has_opt_ec_initialization\([^A-Za-z0-9_]\|\$\):\1hasOptEcInitialization\2:g
s:\([^A-Za-z0-9_]\)increase_indent\([^A-Za-z0-9_]\|\$\):\1increaseIndent\2:g
s:\([^A-Za-z0-9_]\)insert_after\([^A-Za-z0-9_]\|\$\):\1insertAfter\2:g
s:\([^A-Za-z0-9_]\)insert_before\([^A-Za-z0-9_]\|\$\):\1insertBefore\2:g
s:\([^A-Za-z0-9_]\)is_EMPTY_mo\([^A-Za-z0-9_]\|\$\):\1isEmpty_mo\2:g
s:\([^A-Za-z0-9_]\)is_NIL_mo\([^A-Za-z0-9_]\|\$\):\1isNil_mo\2:g
s:\([^A-Za-z0-9_]\)is_NOT\([^A-Za-z0-9_]\|\$\):\1isNOT\2:g
s:\([^A-Za-z0-9_]\)is_aggregate\([^A-Za-z0-9_]\|\$\):\1isAggregate\2:g
s:\([^A-Za-z0-9_]\)is_block\([^A-Za-z0-9_]\|\$\):\1isBlock\2:g
s:\([^A-Za-z0-9_]\)is_block_str\([^A-Za-z0-9_]\|\$\):\1isBlockStr\2:g
s:\([^A-Za-z0-9_]\)is_empty\([^A-Za-z0-9_]\|\$\):\1isEmpty\2:g
s:\([^A-Za-z0-9_]\)is_fail\([^A-Za-z0-9_]\|\$\):\1isFail\2:g
s:\([^A-Za-z0-9_]\)is_feature_comparison\([^A-Za-z0-9_]\|\$\):\1isFeatureComparison\2:g
s:\([^A-Za-z0-9_]\)is_ffactor\([^A-Za-z0-9_]\|\$\):\1isFFactor\2:g
s:\([^A-Za-z0-9_]\)is_fterm\([^A-Za-z0-9_]\|\$\):\1isFTerm\2:g
s:\([^A-Za-z0-9_]\)is_gap_or_opt_gap_block\([^A-Za-z0-9_]\|\$\):\1isGapOrOptGapBlock\2:g
s:\([^A-Za-z0-9_]\)is_member_of\([^A-Za-z0-9_]\|\$\):\1isMemberOf\2:g
s:\([^A-Za-z0-9_]\)is_object_block_first\([^A-Za-z0-9_]\|\$\):\1isObjectBlockFirst\2:g
s:\([^A-Za-z0-9_]\)is_parenthesis\([^A-Za-z0-9_]\|\$\):\1isParenthesis\2:g
s:\([^A-Za-z0-9_]\)kDB:\1kDb:g
s:\([^A-Za-z0-9_]\)kIN:\1kIn:g
s:\([^A-Za-z0-9_]\)list_has_feature\([^A-Za-z0-9_]\|\$\):\1listHasFeature\2:g
s:\([^A-Za-z0-9_]\)log_write\([^A-Za-z0-9_]\|\$\):\1logWrite\2:g
s:\([^A-Za-z0-9_]\)log_write_time\([^A-Za-z0-9_]\|\$\):\1logWriteTime\2:g
s:\([^A-Za-z0-9_]\)make_constraints\([^A-Za-z0-9_]\|\$\):\1makeConstraints\2:g
s:\([^A-Za-z0-9_]\)make_empty\([^A-Za-z0-9_]\|\$\):\1makeEmpty\2:g
s:\([^A-Za-z0-9_]\)make_inst\([^A-Za-z0-9_]\|\$\):\1makeInst\2:g
s:\([^A-Za-z0-9_]\)mql_append_error\([^A-Za-z0-9_]\|\$\):\1appendError\2:g
s:\([^A-Za-z0-9_]\)mql_clear_error\([^A-Za-z0-9_]\|\$\):\1clearError\2:g
s:\([^A-Za-z0-9_]\)mql_execute_file\([^A-Za-z0-9_]\|\$\):\1mqlExecuteFile\2:g
s:\([^A-Za-z0-9_]\)mql_execute_stream\([^A-Za-z0-9_]\|\$\):\1mqlExecuteStream\2:g
s:\([^A-Za-z0-9_]\)mql_execute_string\([^A-Za-z0-9_]\|\$\):\1mqlExecuteString\2:g
s:\([^A-Za-z0-9_]\)mql_get_error\([^A-Za-z0-9_]\|\$\):\1getError\2:g
s:\([^A-Za-z0-9_]\)mql_prepend_error\([^A-Za-z0-9_]\|\$\):\1prependError\2:g
s:\([^A-Za-z0-9_]\)mql_set_error\([^A-Za-z0-9_]\|\$\):\1setError\2:g
s:\([^A-Za-z0-9_]\)object_type_info:\1ObjectTypeInfo:g
s:^object_type_info:ObjectTypeInfo:g
s:\([^A-Za-z0-9_]\)objects_at_Sm\([^A-Za-z0-9_]\|\$\):\1objectsAtSm\2:g
s:\([^A-Za-z0-9_]\)out_char_data\([^A-Za-z0-9_]\|\$\):\1outCharData\2:g
s:\([^A-Za-z0-9_]\)prepend_and_take_over\([^A-Za-z0-9_]\|\$\):\1prependAndTakeOver\2:g
s:\([^A-Za-z0-9_]\)prepend_with_me\([^A-Za-z0-9_]\|\$\):\1prependWithMe\2:g
s:\([^A-Za-z0-9_]\)print_DTD\([^A-Za-z0-9_]\|\$\):\1printDTD\2:g
s:\([^A-Za-z0-9_]\)print_DTD_end\([^A-Za-z0-9_]\|\$\):\1printDTDend\2:g
s:\([^A-Za-z0-9_]\)print_DTD_start\([^A-Za-z0-9_]\|\$\):\1printDTDstart\2:g
s:\([^A-Za-z0-9_]\)print_XMLDecl\([^A-Za-z0-9_]\|\$\):\1printXMLDecl\2:g
s:\([^A-Za-z0-9_]\)put_Console\([^A-Za-z0-9_]\|\$\):\1printConsole\2:g
s:\([^A-Za-z0-9_]\)put_XML\([^A-Za-z0-9_]\|\$\):\1printXML\2:g
s:\([^A-Za-z0-9_]\)remove_mo\([^A-Za-z0-9_]\|\$\):\1removeMo\2:g
s:\([^A-Za-z0-9_]\)retrieve_feature_values\([^A-Za-z0-9_]\|\$\):\1retrieveFeatureValues\2:g
s:\([^A-Za-z0-9_]\)set_Next\([^A-Za-z0-9_]\|\$\):\1setNext\2:g
s:\([^A-Za-z0-9_]\)set_content\([^A-Za-z0-9_]\|\$\):\1setContent\2:g
s:\([^A-Za-z0-9_]\)set_delete_result\([^A-Za-z0-9_]\|\$\):\1setDeleteResult\2:g
s:\([^A-Za-z0-9_]\)set_feature\([^A-Za-z0-9_]\|\$\):\1setFeature\2:g
s:\([^A-Za-z0-9_]\)set_features\([^A-Za-z0-9_]\|\$\):\1setFeatures\2:g
s:\([^A-Za-z0-9_]\)set_id_d\([^A-Za-z0-9_]\|\$\):\1setID_D\2:g
s:\([^A-Za-z0-9_]\)set_is_aggregate\([^A-Za-z0-9_]\|\$\):\1setIsAggregate\2:g
s:\([^A-Za-z0-9_]\)set_is_computed\([^A-Za-z0-9_]\|\$\):\1setIsComputed\2:g
s:\([^A-Za-z0-9_]\)set_is_default\([^A-Za-z0-9_]\|\$\):\1setIsDefault\2:g
s:\([^A-Za-z0-9_]\)set_new_default\([^A-Za-z0-9_]\|\$\):\1setNewDefault\2:g
s:\([^A-Za-z0-9_]\)set_object_reference_index\([^A-Za-z0-9_]\|\$\):\1setObjectReferenceIndex\2:g
s:\([^A-Za-z0-9_]\)set_success\([^A-Za-z0-9_]\|\$\):\1setSuccess\2:g
s:\([^A-Za-z0-9_]\)set_value\([^A-Za-z0-9_]\|\$\):\1setValue\2:g
s:\([^A-Za-z0-9_]\)sheaf_is_empty\([^A-Za-z0-9_]\|\$\):\1sheafIsEmpty\2:g
s:\([^A-Za-z0-9_]\)start_new_row\([^A-Za-z0-9_]\|\$\):\1startNewRow\2:g
s:\([^A-Za-z0-9_]\)start_single_tag\([^A-Za-z0-9_]\|\$\):\1startSingleTag\2:g
s:\([^A-Za-z0-9_]\)start_tag\([^A-Za-z0-9_]\|\$\):\1startTag\2:g
s:\([^A-Za-z0-9_]\)unencrypt_string\([^A-Za-z0-9_]\|\$\):\1unencryptString\2:g
s:\([^A-Za-z0-9_]\)union_with\([^A-Za-z0-9_]\|\$\):\1unionWith\2:g
s:\([^A-Za-z0-9_]\)update_last\([^A-Za-z0-9_]\|\$\):\1updateLast\2:g
s:\([^A-Za-z0-9_]\)update_row\([^A-Za-z0-9_]\|\$\):\1updateRow\2:g
s:\([^A-Za-z0-9_]\)update_value\([^A-Za-z0-9_]\|\$\):\1updateValue\2:g
s:\([^A-Za-z0-9_]\)zero_fill_string\([^A-Za-z0-9_]\|\$\):\1zeroFillString\2:g
s:\([^A-Za-z0-9_]\)feature_info:\1FeatureInfo:g
s:^feature_info:FeatureInfo:g
s:\([^A-Za-z0-9_]\)Type\([^A-Za-z0-9_]\|\$\):\1type\2:g
s:\([^A-Za-z0-9_]\)CType:\1MQLType:g
s:^CType:MQLType:g
s:\([^A-Za-z0-9_]\)Next\([^A-Za-z0-9_]\|\$\):\1getNext\2:g
s:\([^A-Za-z0-9_]\)Monads\([^A-Za-z0-9_]\|\$\):\1monads\2:g
s:\([^A-Za-z0-9_]\)ObjectTypeExists\([^A-Za-z0-9_]\|\$\):\1objectTypeExists\2:g






	
	  The two codebases were then compared, and they diff'ed equal
	  except for cosmetic differences and code differences in between.
	
	
	* Updated configure.in to work on the latest Debian sid.

2004-08-06  Ulrik Petersen

	* Updated files in the SWIG directories.  Specifically:

	  - SWIG/java/README-Java
	  - SWIG/java/Makefile.inc
	  - SWIG/java/TestEmdros.java.in
	  - SWIG/perl/test.pl.in
	  - SWIG/python/test.py
	  - SWIG/ruby/test.rb.in
	
	* Did some reconsideration of certain details of the big
	  namechange of 2004-07-17.  Thanks to Chris Wilson for comments.

	  The following sed script was applied to the sources:

s:\([^A-Za-z0-9_]\)ListOfMoNr\([^A-Za-z0-9_]\):\1ListOfMoNR\2:g
s:^ListOfMoNr:ListOfMoNR:g
s:\([^A-Za-z0-9_]\)getNr\([^A-Za-z0-9_]\):\1getNR\2:g
s:\([^A-Za-z0-9_]\)getMonad_msList\([^A-Za-z0-9_]\):\1getMonad_mList\2:g
s:\([^A-Za-z0-9_]\)getOTIndex\([^A-Za-z0-9_]\):\1getObjectTypeIndex\2:g
s:\([^A-Za-z0-9_]\)get_operator\([^A-Za-z0-9_]\):\1getSetOperator\2:g
s:\([^A-Za-z0-9_]\)Id_d_mo\([^A-Za-z0-9_]\):\1ID_D_mo\2:g
s:^Id_d_mo:ID_D_mo:g
s:\([^A-Za-z0-9_]\)Id_m_mo\([^A-Za-z0-9_]\):\1ID_M_mo\2:g
s:^Id_m_mo:ID_M_mo:g
s:\([^A-Za-z0-9_]\)getId_d\([^A-Za-z0-9_]\):\1getID_D\2:g
s:\([^A-Za-z0-9_]\)setId_d\([^A-Za-z0-9_]\):\1setID_D\2:g
s:\([^A-Za-z0-9_]\)EMdFOutputWrongCharactersetException\([^A-Za-z0-9_]\):\1WrongCharacterSetException\2:g
s:^EMdFOutputWrongCharactersetException:WrongCharacterSetException:g

	  Again, this was done with apply.sh, today.awk, and the command
	  as below (7/17-2004) (except for today's date in today.awk).
	
	  Afterwards, the sources just before the big namechange were
	  changed with this updated sed script, which YOU can use to
	  change your sources.

s:\([^A-Za-z0-9_]\)AbortTransaction\([^A-Za-z0-9_]\):\1abortTransaction\2:g
s:\([^A-Za-z0-9_]\)AccessTuple\([^A-Za-z0-9_]\):\1accessTuple\2:g
s:\([^A-Za-z0-9_]\)AddEMdFValue\([^A-Za-z0-9_]\):\1addEMdFValue\2:g
s:\([^A-Za-z0-9_]\)AddFeature\([^A-Za-z0-9_]\):\1addFeature\2:g
s:\([^A-Za-z0-9_]\)AddFeatureToOT_gut\([^A-Za-z0-9_]\):\1addFeatureToOT_gut\2:g
s:\([^A-Za-z0-9_]\)AddFeatureToOT_gut_or_objects\([^A-Za-z0-9_]\):\1addFeatureToOT_gut_or_objects\2:g
s:\([^A-Za-z0-9_]\)AddFeatureToOT_objects\([^A-Za-z0-9_]\):\1addFeatureToOT_objects\2:g
s:\([^A-Za-z0-9_]\)AddMSE\([^A-Za-z0-9_]\):\1addMSE\2:g
s:\([^A-Za-z0-9_]\)AddOid\([^A-Za-z0-9_]\):\1addOid\2:g
s:\([^A-Za-z0-9_]\)AggregateQuery\([^A-Za-z0-9_]\):\1aggregateQuery\2:g
s:\([^A-Za-z0-9_]\)BackendName\([^A-Za-z0-9_]\):\1getBackendName\2:g
s:\([^A-Za-z0-9_]\)BeginTransaction\([^A-Za-z0-9_]\):\1beginTransaction\2:g
s:\([^A-Za-z0-9_]\)CAbortTransactionStatement:\1AbortTransactionStatement:g
s:^CAbortTransactionStatement:AbortTransactionStatement:g
s:\([^A-Za-z0-9_]\)CArena:\1Arena:g
s:^CArena:Arena:g
s:\([^A-Za-z0-9_]\)CBeginTransactionStatement:\1BeginTransactionStatement:g
s:^CBeginTransactionStatement:BeginTransactionStatement:g
s:\([^A-Za-z0-9_]\)CBlock_string:\1BlockString:g
s:^CBlock_string:BlockString:g
s:\([^A-Za-z0-9_]\)CBlock_str:\1BlockStr:g
s:^CBlock_str:BlockStr:g
s:\([^A-Za-z0-9_]\)CBlocks:\1Blocks:g
s:^CBlocks:Blocks:g
s:\([^A-Za-z0-9_]\)CBlock:\1Block:g
s:^CBlock:Block:g
s:\([^A-Za-z0-9_]\)CByMonads:\1ByMonads:g
s:^CByMonads:ByMonads:g
s:\([^A-Za-z0-9_]\)CChunk:\1Chunk:g
s:^CChunk:Chunk:g
s:\([^A-Za-z0-9_]\)CCommitTransactionStatement:\1CommitTransactionStatement:g
s:^CCommitTransactionStatement:CommitTransactionStatement:g
s:\([^A-Za-z0-9_]\)CCreateDatabaseStatement:\1CreateDatabaseStatement:g
s:^CCreateDatabaseStatement:CreateDatabaseStatement:g
s:\([^A-Za-z0-9_]\)CCreateEnumerationStatement:\1CreateEnumerationStatement:g
s:^CCreateEnumerationStatement:CreateEnumerationStatement:g
s:\([^A-Za-z0-9_]\)CCreateIndexesStatement:\1CreateIndexesStatement:g
s:^CCreateIndexesStatement:CreateIndexesStatement:g
s:\([^A-Za-z0-9_]\)CCreateMonadSetStatement:\1CreateMonadSetStatement:g
s:^CCreateMonadSetStatement:CreateMonadSetStatement:g
s:\([^A-Za-z0-9_]\)CCreateObjectFromID_DsStatement:\1CreateObjectFromID_DsStatement:g
s:^CCreateObjectFromID_DsStatement:CreateObjectFromID_DsStatement:g
s:\([^A-Za-z0-9_]\)CCreateObjectFromMonadsStatement:\1CreateObjectFromMonadsStatement:g
s:^CCreateObjectFromMonadsStatement:CreateObjectFromMonadsStatement:g
s:\([^A-Za-z0-9_]\)CCreateObjectFromQueryStatement:\1CreateObjectFromQueryStatement:g
s:^CCreateObjectFromQueryStatement:CreateObjectFromQueryStatement:g
s:\([^A-Za-z0-9_]\)CCreateObjectStatement:\1CreateObjectStatement:g
s:^CCreateObjectStatement:CreateObjectStatement:g
s:\([^A-Za-z0-9_]\)CCreateObjectTypeStatement:\1CreateObjectTypeStatement:g
s:^CCreateObjectTypeStatement:CreateObjectTypeStatement:g
s:\([^A-Za-z0-9_]\)CCreateObjectsStatement:\1CreateObjectsStatement:g
s:^CCreateObjectsStatement:CreateObjectsStatement:g
s:\([^A-Za-z0-9_]\)CCreateOrUpdateMonadSetStatement:\1CreateOrUpdateMonadSetStatement:g
s:^CCreateOrUpdateMonadSetStatement:CreateOrUpdateMonadSetStatement:g
s:\([^A-Za-z0-9_]\)CCreateSegmentStatement:\1CreateSegmentStatement:g
s:^CCreateSegmentStatement:CreateSegmentStatement:g
s:\([^A-Za-z0-9_]\)CDatabaseStatement:\1DatabaseStatement:g
s:^CDatabaseStatement:DatabaseStatement:g
s:\([^A-Za-z0-9_]\)CDeleteMonadsStatement:\1DeleteMonadsStatement:g
s:^CDeleteMonadsStatement:DeleteMonadsStatement:g
s:\([^A-Za-z0-9_]\)CDeleteObjectsByID_DsStatement:\1DeleteObjectsByID_DsStatement:g
s:^CDeleteObjectsByID_DsStatement:DeleteObjectsByID_DsStatement:g
s:\([^A-Za-z0-9_]\)CDeleteObjectsByMonadsStatement:\1DeleteObjectsByMonadsStatement:g
s:^CDeleteObjectsByMonadsStatement:DeleteObjectsByMonadsStatement:g
s:\([^A-Za-z0-9_]\)CDeleteObjectsByQueryStatement:\1DeleteObjectsByQueryStatement:g
s:^CDeleteObjectsByQueryStatement:DeleteObjectsByQueryStatement:g
s:\([^A-Za-z0-9_]\)CDeleteObjectsStatement:\1DeleteObjectsStatement:g
s:^CDeleteObjectsStatement:DeleteObjectsStatement:g
s:\([^A-Za-z0-9_]\)CDropDatabaseStatement:\1DropDatabaseStatement:g
s:^CDropDatabaseStatement:DropDatabaseStatement:g
s:\([^A-Za-z0-9_]\)CDropEnumerationStatement:\1DropEnumerationStatement:g
s:^CDropEnumerationStatement:DropEnumerationStatement:g
s:\([^A-Za-z0-9_]\)CDropIndexesStatement:\1DropIndexesStatement:g
s:^CDropIndexesStatement:DropIndexesStatement:g
s:\([^A-Za-z0-9_]\)CDropMonadSetStatement:\1DropMonadSetStatement:g
s:^CDropMonadSetStatement:DropMonadSetStatement:g
s:\([^A-Za-z0-9_]\)CDropObjectTypeStatement:\1DropObjectTypeStatement:g
s:^CDropObjectTypeStatement:DropObjectTypeStatement:g
s:\([^A-Za-z0-9_]\)CECDeclaration:\1ECDeclaration:g
s:^CECDeclaration:ECDeclaration:g
s:\([^A-Za-z0-9_]\)CECUpdate:\1ECUpdate:g
s:^CECUpdate:ECUpdate:g
s:\([^A-Za-z0-9_]\)CEMdFComparison:\1EMdFComparison:g
s:^CEMdFComparison:EMdFComparison:g
s:\([^A-Za-z0-9_]\)CEMdFDBDBError:\1EMdFDBDBError:g
s:^CEMdFDBDBError:EMdFDBDBError:g
s:\([^A-Za-z0-9_]\)CEMdFDBException:\1EMdFDBException:g
s:^CEMdFDBException:EMdFDBException:g
s:\([^A-Za-z0-9_]\)CEMdFFFactor:\1EMdFFFactor:g
s:^CEMdFFFactor:EMdFFFactor:g
s:\([^A-Za-z0-9_]\)CEMdFFFeatures:\1EMdFFFeatures:g
s:^CEMdFFFeatures:EMdFFFeatures:g
s:\([^A-Za-z0-9_]\)CEMdFFTerm:\1EMdFFTerm:g
s:^CEMdFFTerm:EMdFFTerm:g
s:\([^A-Za-z0-9_]\)CEMdFOutputException:\1EMdFOutputException:g
s:^CEMdFOutputException:EMdFOutputException:g
s:\([^A-Za-z0-9_]\)CEMdFOutput:\1EMdFOutput:g
s:^CEMdFOutput:EMdFOutput:g
s:\([^A-Za-z0-9_]\)CEMdFOutputWrongCharactersetException:\1WrongCharacterSetException:g
s:^CEMdFOutputWrongCharactersetException:WrongCharacterSetException:g
s:\([^A-Za-z0-9_]\)CEMdFValue:\1EMdFValue:g
s:^CEMdFValue:EMdFValue:g
s:\([^A-Za-z0-9_]\)CEmdrosEnv:\1EmdrosEnv:g
s:^CEmdrosEnv:EmdrosEnv:g
s:\([^A-Za-z0-9_]\)CEnumConstCache:\1EnumConstCache:g
s:^CEnumConstCache:EnumConstCache:g
s:\([^A-Za-z0-9_]\)CEnumerationStatement:\1EnumerationStatement:g
s:^CEnumerationStatement:EnumerationStatement:g
s:\([^A-Za-z0-9_]\)CExpression:\1Expression:g
s:^CExpression:Expression:g
s:\([^A-Za-z0-9_]\)CFFactor:\1FFactor:g
s:^CFFactor:FFactor:g
s:\([^A-Za-z0-9_]\)CFFeatures:\1FFeatures:g
s:^CFFeatures:FFeatures:g
s:\([^A-Za-z0-9_]\)CFTerm:\1FTerm:g
s:^CFTerm:FTerm:g
s:\([^A-Za-z0-9_]\)CFeatureAssignment:\1FeatureAssignment:g
s:^CFeatureAssignment:FeatureAssignment:g
s:\([^A-Za-z0-9_]\)CFeatureDeclaration:\1FeatureDeclaration:g
s:^CFeatureDeclaration:FeatureDeclaration:g
s:\([^A-Za-z0-9_]\)CFeatureUpdate:\1FeatureUpdate:g
s:^CFeatureUpdate:FeatureUpdate:g
s:\([^A-Za-z0-9_]\)CFeature_comparison:\1FeatureComparison:g
s:^CFeature_comparison:FeatureComparison:g
s:\([^A-Za-z0-9_]\)CFeature:\1Feature:g
s:^CFeature:Feature:g
s:\([^A-Za-z0-9_]\)CGap_block:\1GapBlock:g
s:^CGap_block:GapBlock:g
s:\([^A-Za-z0-9_]\)CGetFeaturesStatement:\1GetFeaturesStatement:g
s:^CGetFeaturesStatement:GetFeaturesStatement:g
s:\([^A-Za-z0-9_]\)CGetMonadSetsStatement:\1GetMonadSetsStatement:g
s:^CGetMonadSetsStatement:GetMonadSetsStatement:g
s:\([^A-Za-z0-9_]\)CGetMonadsStatement:\1GetMonadsStatement:g
s:^CGetMonadsStatement:GetMonadsStatement:g
s:\([^A-Za-z0-9_]\)CID_D:\1ID_D:g
s:^CID_D:ID_D:g
s:\([^A-Za-z0-9_]\)CInsertMonadsStatement:\1InsertMonadsStatement:g
s:^CInsertMonadsStatement:InsertMonadsStatement:g
s:\([^A-Za-z0-9_]\)CInstContents:\1InstContents:g
s:^CInstContents:InstContents:g
s:\([^A-Za-z0-9_]\)CInstObject:\1InstObject:g
s:^CInstObject:InstObject:g
s:\([^A-Za-z0-9_]\)CInst:\1Inst:g
s:^CInst:Inst:g
s:\([^A-Za-z0-9_]\)CList_of_mo_nr:\1ListOfMoNR:g
s:^CList_of_mo_nr:ListOfMoNR:g
s:\([^A-Za-z0-9_]\)CList_of_straws:\1ListOfStraws:g
s:^CList_of_straws:ListOfStraws:g
s:\([^A-Za-z0-9_]\)CMOEMPTY_mo:\1Empty_mo:g
s:^CMOEMPTY_mo:Empty_mo:g
s:\([^A-Za-z0-9_]\)CMOID_D:\1ID_D_mo:g
s:^CMOID_D:ID_D_mo:g
s:\([^A-Za-z0-9_]\)CMOID_M:\1ID_M_mo:g
s:^CMOID_M:ID_M_mo:g
s:\([^A-Za-z0-9_]\)CMONIL_mo:\1Nil_mo:g
s:^CMONIL_mo:Nil_mo:g
s:\([^A-Za-z0-9_]\)CMQLError:\1MQLError:g
s:^CMQLError:MQLError:g
s:\([^A-Za-z0-9_]\)CMQLObject:\1MQLObject:g
s:^CMQLObject:MQLObject:g
s:\([^A-Za-z0-9_]\)CMQLResult:\1MQLResult:g
s:^CMQLResult:MQLResult:g
s:\([^A-Za-z0-9_]\)CMQLSymbolTableEntry:\1MQLSymbolTableEntry:g
s:^CMQLSymbolTableEntry:MQLSymbolTableEntry:g
s:\([^A-Za-z0-9_]\)CMQLSymbolTableEntryException:\1MQLSymbolTableEntryException:g
s:^CMQLSymbolTableEntryException:MQLSymbolTableEntryException:g
s:\([^A-Za-z0-9_]\)CMQLSymbolTableException:\1MQLSymbolTableException:g
s:^CMQLSymbolTableException:MQLSymbolTableException:g
s:\([^A-Za-z0-9_]\)CMQLSymbolTable:\1MQLSymbolTable:g
s:^CMQLSymbolTable:MQLSymbolTable:g
s:\([^A-Za-z0-9_]\)CMQL_execution_environment:\1MQLExecEnv:g
s:^CMQL_execution_environment:MQLExecEnv:g
s:\([^A-Za-z0-9_]\)CMatched_object:\1MatchedObject:g
s:^CMatched_object:MatchedObject:g
s:\([^A-Za-z0-9_]\)CMo_nr:\1MoNR:g
s:^CMo_nr:MoNR:g
s:\([^A-Za-z0-9_]\)CMonadSetCalculationStatement:\1MonadSetCalculationStatement:g
s:^CMonadSetCalculationStatement:MonadSetCalculationStatement:g
s:\([^A-Za-z0-9_]\)CMonadSetChainElement:\1MonadSetChainElement:g
s:^CMonadSetChainElement:MonadSetChainElement:g
s:\([^A-Za-z0-9_]\)CMonadSetElement:\1MQLMonadSetElement:g
s:^CMonadSetElement:MQLMonadSetElement:g
s:\([^A-Za-z0-9_]\)CMonadSetStatement:\1MonadSetStatement:g
s:^CMonadSetStatement:MonadSetStatement:g
s:\([^A-Za-z0-9_]\)CMonadsStatement:\1MonadsStatement:g
s:^CMonadsStatement:MonadsStatement:g
s:\([^A-Za-z0-9_]\)CObjectSpecBase:\1ObjectSpecBase:g
s:^CObjectSpecBase:ObjectSpecBase:g
s:\([^A-Za-z0-9_]\)CObjectSpecNoOT:\1ObjectSpecNoOT:g
s:^CObjectSpecNoOT:ObjectSpecNoOT:g
s:\([^A-Za-z0-9_]\)CObjectSpec:\1ObjectSpec:g
s:^CObjectSpec:ObjectSpec:g
s:\([^A-Za-z0-9_]\)CObjectTypeStatement:\1ObjectTypeStatement:g
s:^CObjectTypeStatement:ObjectTypeStatement:g
s:\([^A-Za-z0-9_]\)CObjectTypesStatement:\1ObjectTypesStatement:g
s:^CObjectTypesStatement:ObjectTypesStatement:g
s:\([^A-Za-z0-9_]\)CObject_block_common:\1ObjectBlockCommon:g
s:^CObject_block_common:ObjectBlockCommon:g
s:\([^A-Za-z0-9_]\)CObject_block_first:\1ObjectBlockFirst:g
s:^CObject_block_first:ObjectBlockFirst:g
s:\([^A-Za-z0-9_]\)CObject_block:\1ObjectBlock:g
s:^CObject_block:ObjectBlock:g
s:\([^A-Za-z0-9_]\)CObject_reference_usage:\1ObjectReferenceUsage:g
s:^CObject_reference_usage:ObjectReferenceUsage:g
s:\([^A-Za-z0-9_]\)COpt_gap_block:\1OptGapBlock:g
s:^COpt_gap_block:OptGapBlock:g
s:\([^A-Za-z0-9_]\)CPower:\1Power:g
s:^CPower:Power:g
s:\([^A-Za-z0-9_]\)CQueryBase:\1QueryBase:g
s:^CQueryBase:QueryBase:g
s:\([^A-Za-z0-9_]\)CQuitStatement:\1QuitStatement:g
s:^CQuitStatement:QuitStatement:g
s:\([^A-Za-z0-9_]\)CRest_of_block_str:\1RestOfBlockStr:g
s:^CRest_of_block_str:RestOfBlockStr:g
s:\([^A-Za-z0-9_]\)CSegmentStatement:\1SegmentStatement:g
s:^CSegmentStatement:SegmentStatement:g
s:\([^A-Za-z0-9_]\)CSelectEnumerationConstantsStatement:\1SelectEnumerationConstantsStatement:g
s:^CSelectEnumerationConstantsStatement:SelectEnumerationConstantsStatement:g
s:\([^A-Za-z0-9_]\)CSelectEnumerationsStatement:\1SelectEnumerationsStatement:g
s:^CSelectEnumerationsStatement:SelectEnumerationsStatement:g
s:\([^A-Za-z0-9_]\)CSelectFeaturesStatement:\1SelectFeaturesStatement:g
s:^CSelectFeaturesStatement:SelectFeaturesStatement:g
s:\([^A-Za-z0-9_]\)CSelectMaxMStatement:\1SelectMaxMStatement:g
s:^CSelectMaxMStatement:SelectMaxMStatement:g
s:\([^A-Za-z0-9_]\)CSelectMinMStatement:\1SelectMinMStatement:g
s:^CSelectMinMStatement:SelectMinMStatement:g
s:\([^A-Za-z0-9_]\)CSelectMonadSetsStatement:\1SelectMonadSetsStatement:g
s:^CSelectMonadSetsStatement:SelectMonadSetsStatement:g
s:\([^A-Za-z0-9_]\)CSelectObjectTypesStatement:\1SelectObjectTypesStatement:g
s:^CSelectObjectTypesStatement:SelectObjectTypesStatement:g
s:\([^A-Za-z0-9_]\)CSelectObjectTypesUsingEnumerationStatement:\1SelectObjectTypesUsingEnumerationStatement:g
s:^CSelectObjectTypesUsingEnumerationStatement:SelectObjectTypesUsingEnumerationStatement:g
s:\([^A-Za-z0-9_]\)CSelectObjectsAtStatement:\1SelectObjectsAtStatement:g
s:^CSelectObjectsAtStatement:SelectObjectsAtStatement:g
s:\([^A-Za-z0-9_]\)CSelectObjectsHavingMonadsInStatement:\1SelectObjectsHavingMonadsInStatement:g
s:^CSelectObjectsHavingMonadsInStatement:SelectObjectsHavingMonadsInStatement:g
s:\([^A-Za-z0-9_]\)CSelectStatement:\1SelectStatement:g
s:^CSelectStatement:SelectStatement:g
s:\([^A-Za-z0-9_]\)CSet_of_monad_ms:\1SetOfMonads:g
s:^CSet_of_monad_ms:SetOfMonads:g
s:\([^A-Za-z0-9_]\)CSheaf:\1Sheaf:g
s:^CSheaf:Sheaf:g
s:\([^A-Za-z0-9_]\)CSkipListConstIterator:\1SkipListConstIterator:g
s:^CSkipListConstIterator:SkipListConstIterator:g
s:\([^A-Za-z0-9_]\)CSkipListNode:\1SkipListNode:g
s:^CSkipListNode:SkipListNode:g
s:\([^A-Za-z0-9_]\)CSkipList:\1SkipList:g
s:^CSkipList:SkipList:g
s:\([^A-Za-z0-9_]\)CSmartVector:\1SmartVector:g
s:^CSmartVector:SmartVector:g
s:\([^A-Za-z0-9_]\)CStatement:\1Statement:g
s:^CStatement:Statement:g
s:\([^A-Za-z0-9_]\)CStraw:\1Straw:g
s:^CStraw:Straw:g
s:\([^A-Za-z0-9_]\)CStringListNode:\1StringListNode:g
s:^CStringListNode:StringListNode:g
s:\([^A-Za-z0-9_]\)CStringList:\1StringList:g
s:^CStringList:StringList:g
s:\([^A-Za-z0-9_]\)CTable:\1Table:g
s:^CTable:Table:g
s:\([^A-Za-z0-9_]\)CTopograph:\1Topograph:g
s:^CTopograph:Topograph:g
s:\([^A-Za-z0-9_]\)CUpdateEnumerationStatement:\1UpdateEnumerationStatement:g
s:^CUpdateEnumerationStatement:UpdateEnumerationStatement:g
s:\([^A-Za-z0-9_]\)CUpdateMonadSetStatement:\1UpdateMonadSetStatement:g
s:^CUpdateMonadSetStatement:UpdateMonadSetStatement:g
s:\([^A-Za-z0-9_]\)CUpdateObjectTypeStatement:\1UpdateObjectTypeStatement:g
s:^CUpdateObjectTypeStatement:UpdateObjectTypeStatement:g
s:\([^A-Za-z0-9_]\)CUpdateObjectsByID_DsStatement:\1UpdateObjectsByID_DsStatement:g
s:^CUpdateObjectsByID_DsStatement:UpdateObjectsByID_DsStatement:g
s:\([^A-Za-z0-9_]\)CUpdateObjectsByMonadsStatement:\1UpdateObjectsByMonadsStatement:g
s:^CUpdateObjectsByMonadsStatement:UpdateObjectsByMonadsStatement:g
s:\([^A-Za-z0-9_]\)CUpdateObjectsByQueryStatement:\1UpdateObjectsByQueryStatement:g
s:^CUpdateObjectsByQueryStatement:UpdateObjectsByQueryStatement:g
s:\([^A-Za-z0-9_]\)CUpdateObjectsStatement:\1UpdateObjectsStatement:g
s:^CUpdateObjectsStatement:UpdateObjectsStatement:g
s:\([^A-Za-z0-9_]\)CUseStatement:\1UseStatement:g
s:^CUseStatement:UseStatement:g
s:\([^A-Za-z0-9_]\)CVacuumDatabaseStatement:\1VacuumDatabaseStatement:g
s:^CVacuumDatabaseStatement:VacuumDatabaseStatement:g
s:\([^A-Za-z0-9_]\)CValueTriple:\1ValueTriple:g
s:^CValueTriple:ValueTriple:g
s:\([^A-Za-z0-9_]\)CValue:\1Value:g
s:^CValue:Value:g
s:\([^A-Za-z0-9_]\)CalculateMMap\([^A-Za-z0-9_]\):\1calculateMMap\2:g
s:\([^A-Za-z0-9_]\)CanDoComparisonOp\([^A-Za-z0-9_]\):\1canDoComparisonOp\2:g
s:\([^A-Za-z0-9_]\)CommitTransaction\([^A-Za-z0-9_]\):\1commitTransaction\2:g
s:\([^A-Za-z0-9_]\)Connect\([^A-Za-z0-9_]\):\1connect\2:g
s:\([^A-Za-z0-9_]\)ConnectionOk\([^A-Za-z0-9_]\):\1connectionOk\2:g
s:\([^A-Za-z0-9_]\)ConvertDBName\([^A-Za-z0-9_]\):\1convertDBName\2:g
s:\([^A-Za-z0-9_]\)CreateConstants\([^A-Za-z0-9_]\):\1createConstants\2:g
s:\([^A-Za-z0-9_]\)CreateDatabase\([^A-Za-z0-9_]\):\1createDatabase\2:g
s:\([^A-Za-z0-9_]\)CreateEnum\([^A-Za-z0-9_]\):\1createEnum\2:g
s:\([^A-Za-z0-9_]\)CreateEnumConstant\([^A-Za-z0-9_]\):\1createEnumConstant\2:g
s:\([^A-Za-z0-9_]\)CreateFeature\([^A-Za-z0-9_]\):\1createFeature\2:g
s:\([^A-Za-z0-9_]\)CreateIndex\([^A-Za-z0-9_]\):\1createIndex\2:g
s:\([^A-Za-z0-9_]\)CreateIndicesOnDatabase\([^A-Za-z0-9_]\):\1createIndicesOnDatabase\2:g
s:\([^A-Za-z0-9_]\)CreateIndicesOnOTGut\([^A-Za-z0-9_]\):\1createIndicesOnOTGut\2:g
s:\([^A-Za-z0-9_]\)CreateIndicesOnOTMonadMs\([^A-Za-z0-9_]\):\1createIndicesOnOTMonadMs\2:g
s:\([^A-Za-z0-9_]\)CreateIndicesOnOTObjects\([^A-Za-z0-9_]\):\1createIndicesOnOTObjects\2:g
s:\([^A-Za-z0-9_]\)CreateIndicesOnObjectType\([^A-Za-z0-9_]\):\1createIndicesOnObjectType\2:g
s:\([^A-Za-z0-9_]\)CreateMonadSet\([^A-Za-z0-9_]\):\1createMonadSet\2:g
s:\([^A-Za-z0-9_]\)CreateObject\([^A-Za-z0-9_]\):\1createObject\2:g
s:\([^A-Za-z0-9_]\)CreateObjectType\([^A-Za-z0-9_]\):\1createObjectType\2:g
s:\([^A-Za-z0-9_]\)CreateObjectTypeOT_gut\([^A-Za-z0-9_]\):\1createObjectTypeOT_gut\2:g
s:\([^A-Za-z0-9_]\)CreateObjectTypeOT_gut_or_objects\([^A-Za-z0-9_]\):\1createObjectTypeOT_gut_or_objects\2:g
s:\([^A-Za-z0-9_]\)CreateObjectTypeOT_objects\([^A-Za-z0-9_]\):\1createObjectTypeOT_objects\2:g
s:\([^A-Za-z0-9_]\)CreateObjects\([^A-Za-z0-9_]\):\1createObjects\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsInBetweenData\([^A-Za-z0-9_]\):\1createObjectsInBetweenData\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_gut\([^A-Za-z0-9_]\):\1createObjectsOT_gut\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_gut_DB\([^A-Za-z0-9_]\):\1createObjectsOT_gut_DB\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_gut_data\([^A-Za-z0-9_]\):\1createObjectsOT_gut_data\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_gut_or_objects\([^A-Za-z0-9_]\):\1createObjectsOT_gut_or_objects\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_gut_or_objects_DB\([^A-Za-z0-9_]\):\1createObjectsOT_gut_or_objects_DB\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_monad_ms\([^A-Za-z0-9_]\):\1createObjectsOT_monad_ms\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_monad_ms_DB\([^A-Za-z0-9_]\):\1createObjectsOT_monad_ms_DB\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_monad_ms_data\([^A-Za-z0-9_]\):\1createObjectsOT_monad_ms_data\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_objects\([^A-Za-z0-9_]\):\1createObjectsOT_objects\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_objects_DB\([^A-Za-z0-9_]\):\1createObjectsOT_objects_DB\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_objects_data\([^A-Za-z0-9_]\):\1createObjectsOT_objects_data\2:g
s:\([^A-Za-z0-9_]\)CreateSchemaVersionTable\([^A-Za-z0-9_]\):\1createSchemaVersionTable\2:g
s:\([^A-Za-z0-9_]\)CreateSegment\([^A-Za-z0-9_]\):\1createSegment\2:g
s:\([^A-Za-z0-9_]\)CreateSequenceTables110\([^A-Za-z0-9_]\):\1createSequenceTables110\2:g
s:\([^A-Za-z0-9_]\)CreateSequenceTables118\([^A-Za-z0-9_]\):\1createSequenceTables118\2:g
s:\([^A-Za-z0-9_]\)Create_min_max_m_table\([^A-Za-z0-9_]\):\1createMin_max_m_table\2:g
s:\([^A-Za-z0-9_]\)DBIsInitialized\([^A-Za-z0-9_]\):\1dbIsInitialized\2:g
s:\([^A-Za-z0-9_]\)DatabaseNameIsOK\([^A-Za-z0-9_]\):\1databaseNameIsOK\2:g
s:\([^A-Za-z0-9_]\)DeleteDatabase\([^A-Za-z0-9_]\):\1deleteDatabase\2:g
s:\([^A-Za-z0-9_]\)DeleteMonads\([^A-Za-z0-9_]\):\1deleteMonads\2:g
s:\([^A-Za-z0-9_]\)DeleteRedundantSequenceInfo\([^A-Za-z0-9_]\):\1deleteRedundantSequenceInfo\2:g
s:\([^A-Za-z0-9_]\)DropDatabase\([^A-Za-z0-9_]\):\1dropDatabase\2:g
s:\([^A-Za-z0-9_]\)DropEnum\([^A-Za-z0-9_]\):\1dropEnum\2:g
s:\([^A-Za-z0-9_]\)DropEnumConst\([^A-Za-z0-9_]\):\1dropEnumConst\2:g
s:\([^A-Za-z0-9_]\)DropFeature\([^A-Za-z0-9_]\):\1dropFeature\2:g
s:\([^A-Za-z0-9_]\)DropFeatureFromOT_gut\([^A-Za-z0-9_]\):\1dropFeatureFromOT_gut\2:g
s:\([^A-Za-z0-9_]\)DropFeatureFromOT_gut_or_objects\([^A-Za-z0-9_]\):\1dropFeatureFromOT_gut_or_objects\2:g
s:\([^A-Za-z0-9_]\)DropFeatureFromOT_objects\([^A-Za-z0-9_]\):\1dropFeatureFromOT_objects\2:g
s:\([^A-Za-z0-9_]\)DropIndex\([^A-Za-z0-9_]\):\1dropIndex\2:g
s:\([^A-Za-z0-9_]\)DropIndicesOnDatabase\([^A-Za-z0-9_]\):\1dropIndicesOnDatabase\2:g
s:\([^A-Za-z0-9_]\)DropIndicesOnOTGut\([^A-Za-z0-9_]\):\1dropIndicesOnOTGut\2:g
s:\([^A-Za-z0-9_]\)DropIndicesOnOTMonadMs\([^A-Za-z0-9_]\):\1dropIndicesOnOTMonadMs\2:g
s:\([^A-Za-z0-9_]\)DropIndicesOnOTObjects\([^A-Za-z0-9_]\):\1dropIndicesOnOTObjects\2:g
s:\([^A-Za-z0-9_]\)DropIndicesOnObjectType\([^A-Za-z0-9_]\):\1dropIndicesOnObjectType\2:g
s:\([^A-Za-z0-9_]\)DropMonadSet\([^A-Za-z0-9_]\):\1dropMonadSet\2:g
s:\([^A-Za-z0-9_]\)DropObject\([^A-Za-z0-9_]\):\1dropObject\2:g
s:\([^A-Za-z0-9_]\)DropObjectType\([^A-Za-z0-9_]\):\1dropObjectType\2:g
s:\([^A-Za-z0-9_]\)DropObjectsInMonads\([^A-Za-z0-9_]\):\1dropObjectsInMonads\2:g
s:\([^A-Za-z0-9_]\)EnumConstExists\([^A-Za-z0-9_]\):\1enumConstExists\2:g
s:\([^A-Za-z0-9_]\)EnumExists\([^A-Za-z0-9_]\):\1enumExists\2:g
s:\([^A-Za-z0-9_]\)ErrorMessage\([^A-Za-z0-9_]\):\1errorMessage\2:g
s:\([^A-Za-z0-9_]\)EscapeStringForSQL\([^A-Za-z0-9_]\):\1escapeStringForSQL\2:g
s:\([^A-Za-z0-9_]\)ExecAdd\([^A-Za-z0-9_]\):\1execAdd\2:g
s:\([^A-Za-z0-9_]\)ExecAddUpdateRemove\([^A-Za-z0-9_]\):\1execAddUpdateRemove\2:g
s:\([^A-Za-z0-9_]\)ExecCOPY\([^A-Za-z0-9_]\):\1execCOPY\2:g
s:\([^A-Za-z0-9_]\)ExecCommand\([^A-Za-z0-9_]\):\1execCommand\2:g
s:\([^A-Za-z0-9_]\)ExecMakeFeatureArray\([^A-Za-z0-9_]\):\1execMakeFeatureArray\2:g
s:\([^A-Za-z0-9_]\)ExecMakeFeatureList\([^A-Za-z0-9_]\):\1execMakeFeatureList\2:g
s:\([^A-Za-z0-9_]\)ExecMakeList\([^A-Za-z0-9_]\):\1execMakeList\2:g
s:\([^A-Za-z0-9_]\)ExecMakeNameList\([^A-Za-z0-9_]\):\1execMakeNameList\2:g
s:\([^A-Za-z0-9_]\)ExecMakeSOM\([^A-Za-z0-9_]\):\1execMakeSOM\2:g
s:\([^A-Za-z0-9_]\)ExecOneType\([^A-Za-z0-9_]\):\1execOneType\2:g
s:\([^A-Za-z0-9_]\)ExecSelect\([^A-Za-z0-9_]\):\1execSelect\2:g
s:\([^A-Za-z0-9_]\)FeatureExists\([^A-Za-z0-9_]\):\1featureExists\2:g
s:\([^A-Za-z0-9_]\)Finalize\([^A-Za-z0-9_]\):\1finalize\2:g
s:\([^A-Za-z0-9_]\)GetComputedFeature\([^A-Za-z0-9_]\):\1getComputedFeature\2:g
s:\([^A-Za-z0-9_]\)GetComputedFeatures\([^A-Za-z0-9_]\):\1getComputedFeatures\2:g
s:\([^A-Za-z0-9_]\)GetCurrentDatabaseVersion\([^A-Za-z0-9_]\):\1getCurrentDatabaseVersion\2:g
s:\([^A-Za-z0-9_]\)GetDefault\([^A-Za-z0-9_]\):\1getDefault\2:g
s:\([^A-Za-z0-9_]\)GetEMdFComparison\([^A-Za-z0-9_]\):\1getEMdFComparison\2:g
s:\([^A-Za-z0-9_]\)GetEMdFFFactor\([^A-Za-z0-9_]\):\1getEMdFFFactor\2:g
s:\([^A-Za-z0-9_]\)GetEMdFFFeatures\([^A-Za-z0-9_]\):\1getEMdFFFeatures\2:g
s:\([^A-Za-z0-9_]\)GetEMdFFTerm\([^A-Za-z0-9_]\):\1getEMdFFTerm\2:g
s:\([^A-Za-z0-9_]\)GetEVkindFromTypeID_D\([^A-Za-z0-9_]\):\1getEVkindFromTypeID_D\2:g
s:\([^A-Za-z0-9_]\)GetEnumConstNameFromValue\([^A-Za-z0-9_]\):\1getEnumConstNameFromValue\2:g
s:\([^A-Za-z0-9_]\)GetEnumConstants\([^A-Za-z0-9_]\):\1getEnumConstants\2:g
s:\([^A-Za-z0-9_]\)GetEnumerations\([^A-Za-z0-9_]\):\1getEnumerations\2:g
s:\([^A-Za-z0-9_]\)GetFeatures\([^A-Za-z0-9_]\):\1getFeatures\2:g
s:\([^A-Za-z0-9_]\)GetFeaturesByQuery\([^A-Za-z0-9_]\):\1getFeaturesByQuery\2:g
s:\([^A-Za-z0-9_]\)GetFeaturesByQueryExec\([^A-Za-z0-9_]\):\1getFeaturesByQueryExec\2:g
s:\([^A-Za-z0-9_]\)GetFeaturesForObjectType\([^A-Za-z0-9_]\):\1getFeaturesForObjectType\2:g
s:\([^A-Za-z0-9_]\)GetInst\([^A-Za-z0-9_]\):\1getInst\2:g
s:\([^A-Za-z0-9_]\)GetLastInsertRowID\([^A-Za-z0-9_]\):\1getLastInsertRowID\2:g
s:\([^A-Za-z0-9_]\)GetMonadsFromID_D\([^A-Za-z0-9_]\):\1getMonadsFromID_D\2:g
s:\([^A-Za-z0-9_]\)GetMonadsFromID_Ds\([^A-Za-z0-9_]\):\1getMonadsFromID_Ds\2:g
s:\([^A-Za-z0-9_]\)GetNextID\([^A-Za-z0-9_]\):\1getNextID\2:g
s:\([^A-Za-z0-9_]\)GetNextObjectID_D\([^A-Za-z0-9_]\):\1getNextObjectID_D\2:g
s:\([^A-Za-z0-9_]\)GetNextOtherID\([^A-Za-z0-9_]\):\1getNextOtherID\2:g
s:\([^A-Za-z0-9_]\)GetNextTuple\([^A-Za-z0-9_]\):\1getNextTuple\2:g
s:\([^A-Za-z0-9_]\)GetOTGutOrObjects\([^A-Za-z0-9_]\):\1getOTGutOrObjects\2:g
s:\([^A-Za-z0-9_]\)GetOTHasSingleRangeObjects\([^A-Za-z0-9_]\):\1getOTHasSingleRangeObjects\2:g
s:\([^A-Za-z0-9_]\)GetObjectTypes\([^A-Za-z0-9_]\):\1getObjectTypes\2:g
s:\([^A-Za-z0-9_]\)GetObjectTypesUsingEnumeration\([^A-Za-z0-9_]\):\1getObjectTypesUsingEnumeration\2:g
s:\([^A-Za-z0-9_]\)GetObjectsAtM\([^A-Za-z0-9_]\):\1getObjectsAtM\2:g
s:\([^A-Za-z0-9_]\)GetObjectsByMonads\([^A-Za-z0-9_]\):\1getObjectsByMonads\2:g
s:\([^A-Za-z0-9_]\)GetObjectsHavingMonadsInMonadSet\([^A-Za-z0-9_]\):\1getObjectsHavingMonadsInMonadSet\2:g
s:\([^A-Za-z0-9_]\)GetObjectsStartingAtSm\([^A-Za-z0-9_]\):\1getObjectsStartingAtSm\2:g
s:\([^A-Za-z0-9_]\)GetObjectsWithinMonads\([^A-Za-z0-9_]\):\1getObjectsWithinMonads\2:g
s:\([^A-Za-z0-9_]\)GetSOMForObject\([^A-Za-z0-9_]\):\1getSOMForObject\2:g
s:\([^A-Za-z0-9_]\)GetSchemaVersion\([^A-Za-z0-9_]\):\1getSchemaVersion\2:g
s:\([^A-Za-z0-9_]\)Get_all_m_1\([^A-Za-z0-9_]\):\1getAll_m_1\2:g
s:\([^A-Za-z0-9_]\)Get_max_m\([^A-Za-z0-9_]\):\1getMax_m\2:g
s:\([^A-Za-z0-9_]\)Get_min_m\([^A-Za-z0-9_]\):\1getMin_m\2:g
s:\([^A-Za-z0-9_]\)HasFirstLast\([^A-Za-z0-9_]\):\1hasFirstLast\2:g
s:\([^A-Za-z0-9_]\)HasRow\([^A-Za-z0-9_]\):\1hasRow\2:g
s:\([^A-Za-z0-9_]\)Hat\([^A-Za-z0-9_]\):\1hat\2:g
s:\([^A-Za-z0-9_]\)InsertMonads\([^A-Za-z0-9_]\):\1insertMonads\2:g
s:\([^A-Za-z0-9_]\)Join\([^A-Za-z0-9_]\):\1join\2:g
s:\([^A-Za-z0-9_]\)JoinTakeOver\([^A-Za-z0-9_]\):\1joinAndTakeOver\2:g
s:\([^A-Za-z0-9_]\)LoadEnumConstantsIntoCache\([^A-Za-z0-9_]\):\1loadEnumConstantsIntoCache\2:g
s:\([^A-Za-z0-9_]\)MakeFeatureSQLType\([^A-Za-z0-9_]\):\1makeFeatureSQLType\2:g
s:\([^A-Za-z0-9_]\)MakeMonadConstraintsFromSOM\([^A-Za-z0-9_]\):\1makeMonadConstraintsFromSOM\2:g
s:\([^A-Za-z0-9_]\)MayCOPY\([^A-Za-z0-9_]\):\1mayCOPY\2:g
s:\([^A-Za-z0-9_]\)MonadSetExists\([^A-Za-z0-9_]\):\1monadSetExists\2:g
s:\([^A-Za-z0-9_]\)Monad_Set_Element:\1MonadSetElement:g
s:\([^A-Za-z0-9_]\)MonadsBuildSet\([^A-Za-z0-9_]\):\1monadsBuildSet\2:g
s:\([^A-Za-z0-9_]\)MoveSequenceValue110\([^A-Za-z0-9_]\):\1moveSequenceValue110\2:g
s:\([^A-Za-z0-9_]\)MoveSequenceValue118\([^A-Za-z0-9_]\):\1moveSequenceValue118\2:g
s:\([^A-Za-z0-9_]\)MyExec\([^A-Za-z0-9_]\):\1myExec\2:g
s:\([^A-Za-z0-9_]\)Exec\([^A-Za-z0-9_]\):\1exec\2:g
s:\([^A-Za-z0-9_]\)MyMonads\([^A-Za-z0-9_]\):\1myMonads\2:g
s:\([^A-Za-z0-9_]\)MySymbol\([^A-Za-z0-9_]\):\1mySymbol\2:g
s:\([^A-Za-z0-9_]\)MyType\([^A-Za-z0-9_]\):\1myType\2:g
s:\([^A-Za-z0-9_]\)MyWeed\([^A-Za-z0-9_]\):\1myWeed\2:g
s:\([^A-Za-z0-9_]\)NoOfFields\([^A-Za-z0-9_]\):\1getNoOfFields\2:g
s:\([^A-Za-z0-9_]\)NoOfResultTuples\([^A-Za-z0-9_]\):\1noOfResultTuples\2:g
s:\([^A-Za-z0-9_]\)NormalizeOTName\([^A-Za-z0-9_]\):\1normalizeOTName\2:g
s:\([^A-Za-z0-9_]\)ObjectID_DExists\([^A-Za-z0-9_]\):\1objectID_DExists\2:g
s:\([^A-Za-z0-9_]\)ObjectID_DExistsInType\([^A-Za-z0-9_]\):\1objectID_DExistsInType\2:g
s:\([^A-Za-z0-9_]\)Print\([^A-Za-z0-9_]\):\1out\2:g
s:\([^A-Za-z0-9_]\)PrintConsole\([^A-Za-z0-9_]\):\1printConsole\2:g
s:\([^A-Za-z0-9_]\)PrintXML\([^A-Za-z0-9_]\):\1printXML\2:g
s:\([^A-Za-z0-9_]\)PrintXML_Header\([^A-Za-z0-9_]\):\1printXMLHeader\2:g
s:\([^A-Za-z0-9_]\)PrintXML_Row\([^A-Za-z0-9_]\):\1printXMLRow\2:g
s:\([^A-Za-z0-9_]\)PrintXML_Rows\([^A-Za-z0-9_]\):\1printXMLRows\2:g
s:\([^A-Za-z0-9_]\)Print_DTD_CMQLResult\([^A-Za-z0-9_]\):\1printDTDMQLResult\2:g
s:\([^A-Za-z0-9_]\)Print_DTD_CSheaf\([^A-Za-z0-9_]\):\1printDTDSheaf\2:g
s:\([^A-Za-z0-9_]\)Print_DTD_CTable\([^A-Za-z0-9_]\):\1printDTDTable\2:g
s:\([^A-Za-z0-9_]\)Print_DTD_end\([^A-Za-z0-9_]\):\1printDTDEnd\2:g
s:\([^A-Za-z0-9_]\)Print_DTD_start\([^A-Za-z0-9_]\):\1printDTDStart\2:g
s:\([^A-Za-z0-9_]\)Print_XMLDecl\([^A-Za-z0-9_]\):\1printXMLDecl\2:g
s:\([^A-Za-z0-9_]\)RemoveMSE\([^A-Za-z0-9_]\):\1removeMSE\2:g
s:\([^A-Za-z0-9_]\)Restrict\([^A-Za-z0-9_]\):\1restrict\2:g
s:\([^A-Za-z0-9_]\)SelectMonadSets\([^A-Za-z0-9_]\):\1selectMonadSets\2:g
s:\([^A-Za-z0-9_]\)SetDefaultEnumConst\([^A-Za-z0-9_]\):\1setDefaultEnumConst\2:g
s:\([^A-Za-z0-9_]\)SetNextObjectID_DIfNotHigher\([^A-Za-z0-9_]\):\1setNextObjectID_DIfNotHigher\2:g
s:\([^A-Za-z0-9_]\)SetSchemaVersion\([^A-Za-z0-9_]\):\1setSchemaVersion\2:g
s:\([^A-Za-z0-9_]\)Set_max_m\([^A-Za-z0-9_]\):\1setMax_m\2:g
s:\([^A-Za-z0-9_]\)Set_min_m\([^A-Za-z0-9_]\):\1setMin_m\2:g
s:\([^A-Za-z0-9_]\)Set_min_max_m_from_object_type\([^A-Za-z0-9_]\):\1setMin_max_m_fromObjectType\2:g
s:\([^A-Za-z0-9_]\)Set_min_max_m_from_object_types\([^A-Za-z0-9_]\):\1setMin_max_m_fromObjectTypes\2:g
s:\([^A-Za-z0-9_]\)ShutdownConnection\([^A-Za-z0-9_]\):\1shutdownConnection\2:g
s:\([^A-Za-z0-9_]\)Symbol\([^A-Za-z0-9_]\):\1symbol\2:g
s:\([^A-Za-z0-9_]\)SymbolAddFeatures\([^A-Za-z0-9_]\):\1symbolAddFeatures\2:g
s:\([^A-Za-z0-9_]\)SymbolAddToObject\([^A-Za-z0-9_]\):\1symbolAddToObject\2:g
s:\([^A-Za-z0-9_]\)SymbolAllAreOfSameType\([^A-Za-z0-9_]\):\1symbolAllAreOfSameType\2:g
s:\([^A-Za-z0-9_]\)SymbolAllFeaturesMustBeAssigned\([^A-Za-z0-9_]\):\1symbolAllFeaturesMustBeAssigned\2:g
s:\([^A-Za-z0-9_]\)SymbolAllFeaturesMustExist\([^A-Za-z0-9_]\):\1symbolAllFeaturesMustExist\2:g
s:\([^A-Za-z0-9_]\)SymbolAssignValues\([^A-Za-z0-9_]\):\1symbolAssignValues\2:g
s:\([^A-Za-z0-9_]\)SymbolAssignValuesPrivate\([^A-Za-z0-9_]\):\1symbolAssignValuesPrivate\2:g
s:\([^A-Za-z0-9_]\)SymbolCheckNoTwoValuesSamePrivate\([^A-Za-z0-9_]\):\1symbolCheckNoTwoValuesSamePrivate\2:g
s:\([^A-Za-z0-9_]\)SymbolConstantExistence\([^A-Za-z0-9_]\):\1symbolExistenceOfConstants\2:g
s:\([^A-Za-z0-9_]\)SymbolDefaultIsRemoved\([^A-Za-z0-9_]\):\1symbolDefaultIsRemoved\2:g
s:\([^A-Za-z0-9_]\)SymbolDoLocalUpdatePrivate\([^A-Za-z0-9_]\):\1symbolDoLocalUpdatePrivate\2:g
s:\([^A-Za-z0-9_]\)SymbolEnumConstantsExist\([^A-Za-z0-9_]\):\1symbolEnumConstantsExist\2:g
s:\([^A-Za-z0-9_]\)SymbolEnumerationExists\([^A-Za-z0-9_]\):\1symbolEnumerationExists\2:g
s:\([^A-Za-z0-9_]\)SymbolEnumerations\([^A-Za-z0-9_]\):\1symbolEnumerations\2:g
s:\([^A-Za-z0-9_]\)SymbolEnumerationsExist\([^A-Za-z0-9_]\):\1symbolEnumerationsExist\2:g
s:\([^A-Za-z0-9_]\)SymbolExistenceOfConstants\([^A-Za-z0-9_]\):\1symbolExistenceOfConstants\2:g
s:\([^A-Za-z0-9_]\)SymbolExistenceOfFeatures\([^A-Za-z0-9_]\):\1symbolExistenceOfFeatures\2:g
s:\([^A-Za-z0-9_]\)SymbolFeaturesExist\([^A-Za-z0-9_]\):\1symbolFeaturesExist\2:g
s:\([^A-Za-z0-9_]\)SymbolFeaturesMustNotExist\([^A-Za-z0-9_]\):\1symbolFeaturesMustNotExist\2:g
s:\([^A-Za-z0-9_]\)SymbolNoFeatureMayBeComputed\([^A-Za-z0-9_]\):\1symbolNoFeatureMayBeComputed\2:g
s:\([^A-Za-z0-9_]\)SymbolNoTwoValuesSame\([^A-Za-z0-9_]\):\1symbolNoTwoValuesSame\2:g
s:\([^A-Za-z0-9_]\)SymbolObjectTypeExists\([^A-Za-z0-9_]\):\1symbolObjectTypeExists\2:g
s:\([^A-Za-z0-9_]\)SymbolObjectsExist\([^A-Za-z0-9_]\):\1symbolObjectsExist\2:g
s:\([^A-Za-z0-9_]\)SymbolObjectsExistInType\([^A-Za-z0-9_]\):\1symbolObjectsExistInType\2:g
s:\([^A-Za-z0-9_]\)SymbolValueMoreThanOnce\([^A-Za-z0-9_]\):\1symbolValueMoreThanOnce\2:g
s:\([^A-Za-z0-9_]\)SymbolValueMoreThanOncePrivate\([^A-Za-z0-9_]\):\1symbolValueMoreThanOncePrivate\2:g
s:\([^A-Za-z0-9_]\)TableExists\([^A-Za-z0-9_]\):\1tableExists\2:g
s:\([^A-Za-z0-9_]\)ToString\([^A-Za-z0-9_]\):\1toString\2:g
s:\([^A-Za-z0-9_]\)TypeAssignTypeID\([^A-Za-z0-9_]\):\1typeAssignTypeID\2:g
s:\([^A-Za-z0-9_]\)TypeAssignTypes\([^A-Za-z0-9_]\):\1typeAssignTypes\2:g
s:\([^A-Za-z0-9_]\)TypeFeatureName\([^A-Za-z0-9_]\):\1typeFeatureName\2:g
s:\([^A-Za-z0-9_]\)Type_id_to_string\([^A-Za-z0-9_]\):\1ypeIdToString\2:g
s:\([^A-Za-z0-9_]\)Type_id_to_TableColumnType\([^A-Za-z0-9_]\):\1typeIdToTableColumnType\2:
s:\([^A-Za-z0-9_]\)TypeTypeCompatibility\([^A-Za-z0-9_]\):\1typeTypeCompatibility\2:g
s:\([^A-Za-z0-9_]\)UpdateEnumConst\([^A-Za-z0-9_]\):\1updateEnumConst\2:g
s:\([^A-Za-z0-9_]\)UpdateObject\([^A-Za-z0-9_]\):\1updateObject\2:g
s:\([^A-Za-z0-9_]\)UpgradeDatabase\([^A-Za-z0-9_]\):\1upgradeDatabase\2:g
s:\([^A-Za-z0-9_]\)UpgradeDatabaseTo110\([^A-Za-z0-9_]\):\1upgradeDatabaseTo110\2:g
s:\([^A-Za-z0-9_]\)UpgradeDatabaseTo115\([^A-Za-z0-9_]\):\1upgradeDatabaseTo115\2:g
s:\([^A-Za-z0-9_]\)UpgradeDatabaseTo118\([^A-Za-z0-9_]\):\1upgradeDatabaseTo118\2:g
s:\([^A-Za-z0-9_]\)UpgradeObjectTypeTo110\([^A-Za-z0-9_]\):\1upgradeObjectTypeTo110\2:g
s:\([^A-Za-z0-9_]\)UseDatabase\([^A-Za-z0-9_]\):\1useDatabase\2:g
s:\([^A-Za-z0-9_]\)Vacuum\([^A-Za-z0-9_]\):\1vacuum\2:g
s:\([^A-Za-z0-9_]\)VacuumObjectType\([^A-Za-z0-9_]\):\1vacuumObjectType\2:g
s:\([^A-Za-z0-9_]\)Weed\([^A-Za-z0-9_]\):\1weed\2:g
s:\([^A-Za-z0-9_]\)WeedDefault\([^A-Za-z0-9_]\):\1weedDefault\2:g
s:\([^A-Za-z0-9_]\)WeedDefaultPrivate\([^A-Za-z0-9_]\):\1weedDefaultPrivate\2:g
s:\([^A-Za-z0-9_]\)WeedFirstLast\([^A-Za-z0-9_]\):\1weedFirstLast\2:g
s:\([^A-Za-z0-9_]\)WeedGET\([^A-Za-z0-9_]\):\1weedGET\2:g
s:\([^A-Za-z0-9_]\)WeedMonotonic\([^A-Za-z0-9_]\):\1weedMonotonic\2:g
s:\([^A-Za-z0-9_]\)WeedNoneIsNIL\([^A-Za-z0-9_]\):\1weedNoneIsNIL\2:g
s:\([^A-Za-z0-9_]\)WeedObjectTypeNameNotSpecial\([^A-Za-z0-9_]\):\1weedObjectTypeNameNotSpecial\2:g
s:\([^A-Za-z0-9_]\)WeedPositive\([^A-Za-z0-9_]\):\1weedPositive\2:g
s:\([^A-Za-z0-9_]\)WeedSelfNotAssigned\([^A-Za-z0-9_]\):\1weedSelfNotAssigned\2:g
s:\([^A-Za-z0-9_]\)WeedSelfNotDeclared\([^A-Za-z0-9_]\):\1weedSelfNotDeclared\2:g
s:\([^A-Za-z0-9_]\)WeedTildeOperator\([^A-Za-z0-9_]\):\1weedTildeOperator\2:g
s:\([^A-Za-z0-9_]\)add_EMdFValue\([^A-Za-z0-9_]\):\1addEMdFValue\2:g
s:\([^A-Za-z0-9_]\)add_eci\([^A-Za-z0-9_]\):\1addEci\2:g
s:\([^A-Za-z0-9_]\)add_enum\([^A-Za-z0-9_]\):\1addEnum\2:g
s:\([^A-Za-z0-9_]\)add_enum_const_to_cache\([^A-Za-z0-9_]\):\1addEnumConstToCache\2:g
s:\([^A-Za-z0-9_]\)add_enum_to_cache\([^A-Za-z0-9_]\):\1addEnumToCache\2:g
s:\([^A-Za-z0-9_]\)add_feature\([^A-Za-z0-9_]\):\1addFeature\2:g
s:\([^A-Za-z0-9_]\)add_feature_to_cache\([^A-Za-z0-9_]\):\1addFeatureToCache\2:g
s:\([^A-Za-z0-9_]\)add_feature_to_cache_if_not_already_there\([^A-Za-z0-9_]\):\1addFeatureToCacheIfNotAlreadyThere\2:g
s:\([^A-Za-z0-9_]\)add_mse\([^A-Za-z0-9_]\):\1addMse\2:g
s:\([^A-Za-z0-9_]\)add_object\([^A-Za-z0-9_]\):\1addObject\2:g
s:\([^A-Za-z0-9_]\)add_object_type_to_cache\([^A-Za-z0-9_]\):\1addObjectTypeToCache\2:g
s:\([^A-Za-z0-9_]\)add_stringlist_nodes\([^A-Za-z0-9_]\):\1addStringListNodes\2:g
s:\([^A-Za-z0-9_]\)add_value\([^A-Za-z0-9_]\):\1addValue\2:g
s:\([^A-Za-z0-9_]\)append_and_subsume\([^A-Za-z0-9_]\):\1appendAndSubsume\2:g
s:\([^A-Za-z0-9_]\)append_header\([^A-Za-z0-9_]\):\1appendHeader\2:g
s:\([^A-Za-z0-9_]\)append_local_error\([^A-Za-z0-9_]\):\1appendLocalError\2:g
s:\([^A-Za-z0-9_]\)big_union\([^A-Za-z0-9_]\):\1bigUnion\2:g
s:\([^A-Za-z0-9_]\)calculate_characteristic_string\([^A-Za-z0-9_]\):\1calculateCharacteristicString\2:g
s:\([^A-Za-z0-9_]\)calculate_pre_query_string\([^A-Za-z0-9_]\):\1calculatePreQueryString\2:g
s:\([^A-Za-z0-9_]\)clear_errors\([^A-Za-z0-9_]\):\1clearErrors\2:g
s:\([^A-Za-z0-9_]\)clear_local_error\([^A-Za-z0-9_]\):\1clearLocalError\2:g
s:\([^A-Za-z0-9_]\)compare_int\([^A-Za-z0-9_]\):\1compareInt\2:g
s:\([^A-Za-z0-9_]\)compare_string\([^A-Za-z0-9_]\):\1compareString\2:g
s:\([^A-Za-z0-9_]\)copy_MO\([^A-Za-z0-9_]\):\1copyMO\2:g
s:\([^A-Za-z0-9_]\)copy_other\([^A-Za-z0-9_]\):\1copyOther\2:g
s:\([^A-Za-z0-9_]\)create_headers\([^A-Za-z0-9_]\):\1createHeaders\2:g
s:\([^A-Za-z0-9_]\)decode_feature_name\([^A-Za-z0-9_]\):\1decodeFeatureName\2:g
s:\([^A-Za-z0-9_]\)decrease_indent\([^A-Za-z0-9_]\):\1decreaseIndent\2:g
s:\([^A-Za-z0-9_]\)delete_contents\([^A-Za-z0-9_]\):\1deleteContents\2:g
s:\([^A-Za-z0-9_]\)delete_mos\([^A-Za-z0-9_]\):\1deleteMos\2:g
s:\([^A-Za-z0-9_]\)delete_object_type_from_cache\([^A-Za-z0-9_]\):\1deleteObjectTypeFromCache\2:g
s:\([^A-Za-z0-9_]\)delete_straws\([^A-Za-z0-9_]\):\1deleteStraws\2:g
s:\([^A-Za-z0-9_]\)dump_results\([^A-Za-z0-9_]\):\1dumpResults\2:g
s:\([^A-Za-z0-9_]\)dump_results_all\([^A-Za-z0-9_]\):\1dumpResultsAll\2:g
s:\([^A-Za-z0-9_]\)emit_attributes\([^A-Za-z0-9_]\):\1emitAttributes\2:g
s:\([^A-Za-z0-9_]\)emit_horizontal_line\([^A-Za-z0-9_]\):\1emitHorizontalLine\2:g
s:\([^A-Za-z0-9_]\)encode_feature_name\([^A-Za-z0-9_]\):\1encodeFeatureName\2:g
s:\([^A-Za-z0-9_]\)encode_feature_name_for_prequery_string\([^A-Za-z0-9_]\):\1encodeFeatureNameForPrequeryString\2:g
s:\([^A-Za-z0-9_]\)encrypt_string\([^A-Za-z0-9_]\):\1encryptString\2:g
s:\([^A-Za-z0-9_]\)end_tag\([^A-Za-z0-9_]\):\1endTag\2:g
s:\([^A-Za-z0-9_]\)enum_const_info:\1EnumConstInfo:g
s:^enum_const_info:EnumConstInfo:g
s:\([^A-Za-z0-9_]\)execute_file\([^A-Za-z0-9_]\):\1executeFile\2:g
s:\([^A-Za-z0-9_]\)execute_stream\([^A-Za-z0-9_]\):\1executeStream\2:g
s:\([^A-Za-z0-9_]\)execute_string\([^A-Za-z0-9_]\):\1executeString\2:g
s:\([^A-Za-z0-9_]\)extend_with_me\([^A-Za-z0-9_]\):\1extendWithMe\2:g
s:\([^A-Za-z0-9_]\)feature_type_id_is_ASCII\([^A-Za-z0-9_]\):\1featureTypeIdIsASCII\2:g
s:\([^A-Za-z0-9_]\)feature_type_id_is_ENUM\([^A-Za-z0-9_]\):\1featureTypeIdIsENUM\2:g
s:\([^A-Za-z0-9_]\)feature_type_id_is_STRING\([^A-Za-z0-9_]\):\1featureTypeIdIsSTRING\2:g
s:\([^A-Za-z0-9_]\)fill_gaps\([^A-Za-z0-9_]\):\1fillGaps\2:g
s:\([^A-Za-z0-9_]\)gap_exists\([^A-Za-z0-9_]\):\1gapExists\2:g
s:\([^A-Za-z0-9_]\)get_DB_error\([^A-Za-z0-9_]\):\1getDBError\2:g
s:\([^A-Za-z0-9_]\)get_EMdFValue\([^A-Za-z0-9_]\):\1getEMdFValue\2:g
s:\([^A-Za-z0-9_]\)get_EMdFValue_index\([^A-Za-z0-9_]\):\1getEMdFValueIndex\2:g
s:\([^A-Za-z0-9_]\)get_Enumeration\([^A-Za-z0-9_]\):\1getEnumeration\2:g
s:\([^A-Za-z0-9_]\)get_Next\([^A-Za-z0-9_]\):\1getNext\2:g
s:\([^A-Za-z0-9_]\)get_as_EMdFValue\([^A-Za-z0-9_]\):\1getAsEMdFValue\2:g
s:\([^A-Za-z0-9_]\)get_as_string\([^A-Za-z0-9_]\):\1getAsString\2:g
s:\([^A-Za-z0-9_]\)get_block\([^A-Za-z0-9_]\):\1getBlock\2:g
s:\([^A-Za-z0-9_]\)get_block_str\([^A-Za-z0-9_]\):\1getBlockStr\2:g
s:\([^A-Za-z0-9_]\)get_block_string\([^A-Za-z0-9_]\):\1getBlockString\2:g
s:\([^A-Za-z0-9_]\)get_characteristic_string\([^A-Za-z0-9_]\):\1getCharacteristicString\2:g
s:\([^A-Za-z0-9_]\)get_column\([^A-Za-z0-9_]\):\1getColumn\2:g
s:\([^A-Za-z0-9_]\)get_comparison_op\([^A-Za-z0-9_]\):\1getComparisonOp\2:g
s:\([^A-Za-z0-9_]\)get_compiler_error\([^A-Za-z0-9_]\):\1getCompilerError\2:g
s:\([^A-Za-z0-9_]\)get_const_reference\([^A-Za-z0-9_]\):\1getConstReference\2:g
s:\([^A-Za-z0-9_]\)get_constraints\([^A-Za-z0-9_]\):\1getConstraints\2:g
s:\([^A-Za-z0-9_]\)get_content\([^A-Za-z0-9_]\):\1getContent\2:g
s:\([^A-Za-z0-9_]\)get_copy_of_mo\([^A-Za-z0-9_]\):\1getCopyOfMo\2:g
s:\([^A-Za-z0-9_]\)get_default\([^A-Za-z0-9_]\):\1getDefault\2:g
s:\([^A-Za-z0-9_]\)get_default_password\([^A-Za-z0-9_]\):\1getDefaultPassword\2:g
s:\([^A-Za-z0-9_]\)get_default_specification\([^A-Za-z0-9_]\):\1getDefaultSpecification\2:g
s:\([^A-Za-z0-9_]\)get_default_value\([^A-Za-z0-9_]\):\1getDefaultValue\2:g
s:\([^A-Za-z0-9_]\)get_ec_initialization\([^A-Za-z0-9_]\):\1getEcInitialization\2:g
s:\([^A-Za-z0-9_]\)get_ec_name\([^A-Za-z0-9_]\):\1getEcName\2:g
s:\([^A-Za-z0-9_]\)get_emdf_value\([^A-Za-z0-9_]\):\1getEMdFValue\2:g
s:\([^A-Za-z0-9_]\)get_enum\([^A-Za-z0-9_]\):\1getEnum\2:g
s:\([^A-Za-z0-9_]\)get_enum_const\([^A-Za-z0-9_]\):\1getEnumConst\2:g
s:\([^A-Za-z0-9_]\)get_enum_id\([^A-Za-z0-9_]\):\1getEnumId\2:g
s:\([^A-Za-z0-9_]\)get_enum_name_from_index\([^A-Za-z0-9_]\):\1getEnumNameFromIndex\2:g
s:\([^A-Za-z0-9_]\)get_enum_value\([^A-Za-z0-9_]\):\1getEnumValue\2:g
s:\([^A-Za-z0-9_]\)get_expression\([^A-Za-z0-9_]\):\1getExpression\2:g
s:\([^A-Za-z0-9_]\)get_feature\([^A-Za-z0-9_]\):\1getFeature\2:g
s:\([^A-Za-z0-9_]\)get_feature_addition\([^A-Za-z0-9_]\):\1getFeatureAddition\2:g
s:\([^A-Za-z0-9_]\)get_feature_assignments\([^A-Za-z0-9_]\):\1getFeatureAssignments\2:g
s:\([^A-Za-z0-9_]\)get_feature_comparison\([^A-Za-z0-9_]\):\1getFeatureComparison\2:g
s:\([^A-Za-z0-9_]\)get_feature_constraints\([^A-Za-z0-9_]\):\1getFeatureConstraints\2:g
s:\([^A-Za-z0-9_]\)get_feature_index\([^A-Za-z0-9_]\):\1getFeatureIndex\2:g
s:\([^A-Za-z0-9_]\)get_feature_index_db\([^A-Za-z0-9_]\):\1getFeatureIndexDB\2:g
s:\([^A-Za-z0-9_]\)get_feature_index_inst\([^A-Za-z0-9_]\):\1getFeatureIndexInst\2:g
s:\([^A-Za-z0-9_]\)get_feature_info\([^A-Za-z0-9_]\):\1getFeatureInfo\2:g
s:\([^A-Za-z0-9_]\)get_feature_infos\([^A-Za-z0-9_]\):\1getFeatureInfos\2:g
s:\([^A-Za-z0-9_]\)get_feature_name\([^A-Za-z0-9_]\):\1getFeatureName\2:g
s:\([^A-Za-z0-9_]\)get_feature_name_from_index\([^A-Za-z0-9_]\):\1getFeatureNameFromIndex\2:g
s:\([^A-Za-z0-9_]\)get_feature_names\([^A-Za-z0-9_]\):\1getFeatureNames\2:g
s:\([^A-Za-z0-9_]\)get_feature_removal\([^A-Za-z0-9_]\):\1getFeatureRemoval\2:g
s:\([^A-Za-z0-9_]\)get_feature_retrieval\([^A-Za-z0-9_]\):\1getFeatureRetrieval\2:g
s:\([^A-Za-z0-9_]\)get_feature_type_id\([^A-Za-z0-9_]\):\1getFeatureTypeId\2:g
s:\([^A-Za-z0-9_]\)get_feature_value\([^A-Za-z0-9_]\):\1getFeatureValue\2:g
s:\([^A-Za-z0-9_]\)get_feature_value_arr_size\([^A-Za-z0-9_]\):\1getFeatureValueArrSize\2:g
s:\([^A-Za-z0-9_]\)get_ffactor\([^A-Za-z0-9_]\):\1getFFactor\2:g
s:\([^A-Za-z0-9_]\)get_ffeatures\([^A-Za-z0-9_]\):\1getFFeatures\2:g
s:\([^A-Za-z0-9_]\)get_first_last\([^A-Za-z0-9_]\):\1getFirstLast\2:g
s:\([^A-Za-z0-9_]\)get_focus\([^A-Za-z0-9_]\):\1getFocus\2:g
s:\([^A-Za-z0-9_]\)get_fterm\([^A-Za-z0-9_]\):\1getFTerm\2:g
s:\([^A-Za-z0-9_]\)get_gap_block\([^A-Za-z0-9_]\):\1getGapBlock\2:g
s:\([^A-Za-z0-9_]\)get_gap_vector\([^A-Za-z0-9_]\):\1getGapVector\2:g
s:\([^A-Za-z0-9_]\)get_has_single_range_objects\([^A-Za-z0-9_]\):\1getHasSingleRangeObjects\2:g
s:\([^A-Za-z0-9_]\)get_id_d\([^A-Za-z0-9_]\):\1getID_D\2:g
s:\([^A-Za-z0-9_]\)get_identifier\([^A-Za-z0-9_]\):\1getIdentifier\2:g
s:\([^A-Za-z0-9_]\)get_index\([^A-Za-z0-9_]\):\1getIndex\2:g
s:\([^A-Za-z0-9_]\)get_index_in_symboltable\([^A-Za-z0-9_]\):\1getIndexInSymboltable\2:g
s:\([^A-Za-z0-9_]\)get_index_in_symboltable_entry\([^A-Za-z0-9_]\):\1getIndexInSymboltableEntry\2:g
s:\([^A-Za-z0-9_]\)get_int\([^A-Za-z0-9_]\):\1getInt\2:g
s:\([^A-Za-z0-9_]\)get_integer\([^A-Za-z0-9_]\):\1getInteger\2:g
s:\([^A-Za-z0-9_]\)get_is_computed\([^A-Za-z0-9_]\):\1getIsComputed\2:g
s:\([^A-Za-z0-9_]\)get_is_default\([^A-Za-z0-9_]\):\1getIsDefault\2:g
s:\([^A-Za-z0-9_]\)get_kind\([^A-Za-z0-9_]\):\1getKind\2:g
s:\([^A-Za-z0-9_]\)get_last\([^A-Za-z0-9_]\):\1getLast\2:g
s:\([^A-Za-z0-9_]\)get_last_compiler_stage\([^A-Za-z0-9_]\):\1getLastCompilerStage\2:g
s:\([^A-Za-z0-9_]\)get_last_kind\([^A-Za-z0-9_]\):\1getLastKind\2:g
s:\([^A-Za-z0-9_]\)get_leftmost_object_block_first\([^A-Za-z0-9_]\):\1getLeftmostObjectBlockFirst\2:g
s:\([^A-Za-z0-9_]\)get_leftmost_object_type_name\([^A-Za-z0-9_]\):\1getLeftmostObjectTypeName\2:g
s:\([^A-Za-z0-9_]\)get_limit\([^A-Za-z0-9_]\):\1getLimit\2:g
s:\([^A-Za-z0-9_]\)get_local_error\([^A-Za-z0-9_]\):\1getLocalError\2:g
s:\([^A-Za-z0-9_]\)get_max_lengths\([^A-Za-z0-9_]\):\1getMaxLengths\2:g
s:\([^A-Za-z0-9_]\)get_max_lengths_all\([^A-Za-z0-9_]\):\1getMaxLengthsAll\2:g
s:\([^A-Za-z0-9_]\)get_monad_m_vector\([^A-Za-z0-9_]\):\1getMonad_mVector\2:g
s:\([^A-Za-z0-9_]\)get_monad_ms_list\([^A-Za-z0-9_]\):\1getMonad_mList\2:g
s:\([^A-Za-z0-9_]\)get_monads\([^A-Za-z0-9_]\):\1getMonads\2:g
s:\([^A-Za-z0-9_]\)get_mse_first\([^A-Za-z0-9_]\):\1getMseFirst\2:g
s:\([^A-Za-z0-9_]\)get_mse_last\([^A-Za-z0-9_]\):\1getMseLast\2:g
s:\([^A-Za-z0-9_]\)get_name\([^A-Za-z0-9_]\):\1getName\2:g
s:\([^A-Za-z0-9_]\)get_nr\([^A-Za-z0-9_]\):\1getNR\2:g
s:\([^A-Za-z0-9_]\)get_object\([^A-Za-z0-9_]\):\1getObject\2:g
s:\([^A-Za-z0-9_]\)get_object_block\([^A-Za-z0-9_]\):\1getObjectBlock\2:g
s:\([^A-Za-z0-9_]\)get_object_block_first\([^A-Za-z0-9_]\):\1getObjectBlockFirst\2:g
s:\([^A-Za-z0-9_]\)get_object_reference\([^A-Za-z0-9_]\):\1getObjectReference\2:g
s:\([^A-Za-z0-9_]\)get_object_reference_index\([^A-Za-z0-9_]\):\1getObjectReferenceIndex\2:g
s:\([^A-Za-z0-9_]\)get_object_reference_usage\([^A-Za-z0-9_]\):\1getObjectReferenceUsage\2:g
s:\([^A-Za-z0-9_]\)get_object_type_id\([^A-Za-z0-9_]\):\1getObjectTypeId\2:g
s:\([^A-Za-z0-9_]\)get_object_type_index\([^A-Za-z0-9_]\):\1getObjectTypeIndex\2:g
s:\([^A-Za-z0-9_]\)get_object_type_name\([^A-Za-z0-9_]\):\1getObjectTypeName\2:g
s:\([^A-Za-z0-9_]\)get_object_type_name_from_index\([^A-Za-z0-9_]\):\1getOTNameFromIndex\2:g
s:\([^A-Za-z0-9_]\)get_operator\([^A-Za-z0-9_]\):\1getSetOperator\2:g
s:\([^A-Za-z0-9_]\)get_opt_blocks\([^A-Za-z0-9_]\):\1getOptBlocks\2:g
s:\([^A-Za-z0-9_]\)get_opt_ec_initialization\([^A-Za-z0-9_]\):\1getOptEcInitialization\2:g
s:\([^A-Za-z0-9_]\)get_opt_gap_block\([^A-Za-z0-9_]\):\1getOptGapBlock\2:g
s:\([^A-Za-z0-9_]\)get_output_kind\([^A-Za-z0-9_]\):\1getOutputKind\2:g
s:\([^A-Za-z0-9_]\)get_power\([^A-Za-z0-9_]\):\1getPower\2:g
s:\([^A-Za-z0-9_]\)get_pre_query_string\([^A-Za-z0-9_]\):\1getPreQueryString\2:g
s:\([^A-Za-z0-9_]\)get_rest_of_block_str\([^A-Za-z0-9_]\):\1getRestOfBlockStr\2:g
s:\([^A-Za-z0-9_]\)get_result\([^A-Za-z0-9_]\):\1getResult\2:g
s:\([^A-Za-z0-9_]\)get_retrieval\([^A-Za-z0-9_]\):\1getRetrieval\2:g
s:\([^A-Za-z0-9_]\)get_set\([^A-Za-z0-9_]\):\1getSet\2:g
s:\([^A-Za-z0-9_]\)get_sheaf\([^A-Za-z0-9_]\):\1getSheaf\2:g
s:\([^A-Za-z0-9_]\)get_string\([^A-Za-z0-9_]\):\1getString\2:g
s:\([^A-Za-z0-9_]\)get_table\([^A-Za-z0-9_]\):\1getTable\2:g
s:\([^A-Za-z0-9_]\)get_type\([^A-Za-z0-9_]\):\1getType\2:g
s:\([^A-Za-z0-9_]\)get_type_id\([^A-Za-z0-9_]\):\1getTypeId\2:g
s:\([^A-Za-z0-9_]\)get_value\([^A-Za-z0-9_]\):\1getValue\2:g
s:\([^A-Za-z0-9_]\)has_EMPTY_mo\([^A-Za-z0-9_]\):\1hasEmpty_mo\2:g
s:\([^A-Za-z0-9_]\)has_NIL_mo\([^A-Za-z0-9_]\):\1hasNil_mo\2:g
s:\([^A-Za-z0-9_]\)has_default\([^A-Za-z0-9_]\):\1hasDefault\2:g
s:\([^A-Za-z0-9_]\)has_enum\([^A-Za-z0-9_]\):\1hasEnum\2:g
s:\([^A-Za-z0-9_]\)has_opt_ec_initialization\([^A-Za-z0-9_]\):\1hasOptEcInitialization\2:g
s:\([^A-Za-z0-9_]\)increase_indent\([^A-Za-z0-9_]\):\1increaseIndent\2:g
s:\([^A-Za-z0-9_]\)insert_after\([^A-Za-z0-9_]\):\1insertAfter\2:g
s:\([^A-Za-z0-9_]\)insert_before\([^A-Za-z0-9_]\):\1insertBefore\2:g
s:\([^A-Za-z0-9_]\)is_EMPTY_mo\([^A-Za-z0-9_]\):\1isEmpty_mo\2:g
s:\([^A-Za-z0-9_]\)is_NIL_mo\([^A-Za-z0-9_]\):\1isNil_mo\2:g
s:\([^A-Za-z0-9_]\)is_NOT\([^A-Za-z0-9_]\):\1isNOT\2:g
s:\([^A-Za-z0-9_]\)is_aggregate\([^A-Za-z0-9_]\):\1isAggregate\2:g
s:\([^A-Za-z0-9_]\)is_block\([^A-Za-z0-9_]\):\1isBlock\2:g
s:\([^A-Za-z0-9_]\)is_block_str\([^A-Za-z0-9_]\):\1isBlockStr\2:g
s:\([^A-Za-z0-9_]\)is_empty\([^A-Za-z0-9_]\):\1isEmpty\2:g
s:\([^A-Za-z0-9_]\)is_fail\([^A-Za-z0-9_]\):\1isFail\2:g
s:\([^A-Za-z0-9_]\)is_feature_comparison\([^A-Za-z0-9_]\):\1isFeatureComparison\2:g
s:\([^A-Za-z0-9_]\)is_ffactor\([^A-Za-z0-9_]\):\1isFFactor\2:g
s:\([^A-Za-z0-9_]\)is_fterm\([^A-Za-z0-9_]\):\1isFTerm\2:g
s:\([^A-Za-z0-9_]\)is_gap_or_opt_gap_block\([^A-Za-z0-9_]\):\1isGapOrOptGapBlock\2:g
s:\([^A-Za-z0-9_]\)is_member_of\([^A-Za-z0-9_]\):\1isMemberOf\2:g
s:\([^A-Za-z0-9_]\)is_object_block_first\([^A-Za-z0-9_]\):\1isObjectBlockFirst\2:g
s:\([^A-Za-z0-9_]\)is_parenthesis\([^A-Za-z0-9_]\):\1isParenthesis\2:g
s:\([^A-Za-z0-9_]\)kDB:\1kDb:g
s:\([^A-Za-z0-9_]\)kIN:\1kIn:g
s:\([^A-Za-z0-9_]\)list_has_feature\([^A-Za-z0-9_]\):\1listHasFeature\2:g
s:\([^A-Za-z0-9_]\)log_write\([^A-Za-z0-9_]\):\1logWrite\2:g
s:\([^A-Za-z0-9_]\)log_write_time\([^A-Za-z0-9_]\):\1logWriteTime\2:g
s:\([^A-Za-z0-9_]\)make_constraints\([^A-Za-z0-9_]\):\1makeConstraints\2:g
s:\([^A-Za-z0-9_]\)make_empty\([^A-Za-z0-9_]\):\1makeEmpty\2:g
s:\([^A-Za-z0-9_]\)make_inst\([^A-Za-z0-9_]\):\1makeInst\2:g
s:\([^A-Za-z0-9_]\)mql_append_error\([^A-Za-z0-9_]\):\1appendError\2:g
s:\([^A-Za-z0-9_]\)mql_clear_error\([^A-Za-z0-9_]\):\1clearError\2:g
s:\([^A-Za-z0-9_]\)mql_execute_file\([^A-Za-z0-9_]\):\1mqlExecuteFile\2:g
s:\([^A-Za-z0-9_]\)mql_execute_stream\([^A-Za-z0-9_]\):\1mqlExecuteStream\2:g
s:\([^A-Za-z0-9_]\)mql_execute_string\([^A-Za-z0-9_]\):\1mqlExecuteString\2:g
s:\([^A-Za-z0-9_]\)mql_get_error\([^A-Za-z0-9_]\):\1getError\2:g
s:\([^A-Za-z0-9_]\)mql_prepend_error\([^A-Za-z0-9_]\):\1prependError\2:g
s:\([^A-Za-z0-9_]\)mql_set_error\([^A-Za-z0-9_]\):\1setError\2:g
s:\([^A-Za-z0-9_]\)object_type_info:\1ObjectTypeInfo:g
s:^object_type_info:ObjectTypeInfo:g
s:\([^A-Za-z0-9_]\)objects_at_Sm\([^A-Za-z0-9_]\):\1objectsAtSm\2:g
s:\([^A-Za-z0-9_]\)out_char_data\([^A-Za-z0-9_]\):\1outCharData\2:g
s:\([^A-Za-z0-9_]\)prepend_and_take_over\([^A-Za-z0-9_]\):\1prependAndTakeOver\2:g
s:\([^A-Za-z0-9_]\)prepend_with_me\([^A-Za-z0-9_]\):\1prependWithMe\2:g
s:\([^A-Za-z0-9_]\)print_DTD\([^A-Za-z0-9_]\):\1printDTD\2:g
s:\([^A-Za-z0-9_]\)print_DTD_end\([^A-Za-z0-9_]\):\1printDTDend\2:g
s:\([^A-Za-z0-9_]\)print_DTD_start\([^A-Za-z0-9_]\):\1printDTDstart\2:g
s:\([^A-Za-z0-9_]\)print_XMLDecl\([^A-Za-z0-9_]\):\1printXMLDecl\2:g
s:\([^A-Za-z0-9_]\)put_Console\([^A-Za-z0-9_]\):\1printConsole\2:g
s:\([^A-Za-z0-9_]\)put_XML\([^A-Za-z0-9_]\):\1printXML\2:g
s:\([^A-Za-z0-9_]\)remove_mo\([^A-Za-z0-9_]\):\1removeMo\2:g
s:\([^A-Za-z0-9_]\)retrieve_feature_values\([^A-Za-z0-9_]\):\1retrieveFeatureValues\2:g
s:\([^A-Za-z0-9_]\)set_Next\([^A-Za-z0-9_]\):\1setNext\2:g
s:\([^A-Za-z0-9_]\)set_content\([^A-Za-z0-9_]\):\1setContent\2:g
s:\([^A-Za-z0-9_]\)set_delete_result\([^A-Za-z0-9_]\):\1setDeleteResult\2:g
s:\([^A-Za-z0-9_]\)set_feature\([^A-Za-z0-9_]\):\1setFeature\2:g
s:\([^A-Za-z0-9_]\)set_features\([^A-Za-z0-9_]\):\1setFeatures\2:g
s:\([^A-Za-z0-9_]\)set_id_d\([^A-Za-z0-9_]\):\1setID_D\2:g
s:\([^A-Za-z0-9_]\)set_is_aggregate\([^A-Za-z0-9_]\):\1setIsAggregate\2:g
s:\([^A-Za-z0-9_]\)set_is_computed\([^A-Za-z0-9_]\):\1setIsComputed\2:g
s:\([^A-Za-z0-9_]\)set_is_default\([^A-Za-z0-9_]\):\1setIsDefault\2:g
s:\([^A-Za-z0-9_]\)set_new_default\([^A-Za-z0-9_]\):\1setNewDefault\2:g
s:\([^A-Za-z0-9_]\)set_object_reference_index\([^A-Za-z0-9_]\):\1setObjectReferenceIndex\2:g
s:\([^A-Za-z0-9_]\)set_success\([^A-Za-z0-9_]\):\1setSuccess\2:g
s:\([^A-Za-z0-9_]\)set_value\([^A-Za-z0-9_]\):\1setValue\2:g
s:\([^A-Za-z0-9_]\)sheaf_is_empty\([^A-Za-z0-9_]\):\1sheafIsEmpty\2:g
s:\([^A-Za-z0-9_]\)start_new_row\([^A-Za-z0-9_]\):\1startNewRow\2:g
s:\([^A-Za-z0-9_]\)start_single_tag\([^A-Za-z0-9_]\):\1startSingleTag\2:g
s:\([^A-Za-z0-9_]\)start_tag\([^A-Za-z0-9_]\):\1startTag\2:g
s:\([^A-Za-z0-9_]\)unencrypt_string\([^A-Za-z0-9_]\):\1unencryptString\2:g
s:\([^A-Za-z0-9_]\)union_with\([^A-Za-z0-9_]\):\1unionWith\2:g
s:\([^A-Za-z0-9_]\)update_last\([^A-Za-z0-9_]\):\1updateLast\2:g
s:\([^A-Za-z0-9_]\)update_row\([^A-Za-z0-9_]\):\1updateRow\2:g
s:\([^A-Za-z0-9_]\)update_value\([^A-Za-z0-9_]\):\1updateValue\2:g
s:\([^A-Za-z0-9_]\)zero_fill_string\([^A-Za-z0-9_]\):\1zeroFillString\2:g
s:\([^A-Za-z0-9_]\)feature_info:\1FeatureInfo:g
s:^feature_info:FeatureInfo:g
s:\([^A-Za-z0-9_]\)Type\([^A-Za-z0-9_]\):\1type\2:g
s:\([^A-Za-z0-9_]\)CType:\1MQLType:g
s:^CType:MQLType:g
s:\([^A-Za-z0-9_]\)Next\([^A-Za-z0-9_]\):\1getNext\2:g
s:\([^A-Za-z0-9_]\)Monads\([^A-Za-z0-9_]\):\1monads\2:g
s:\([^A-Za-z0-9_]\)ObjectTypeExists\([^A-Za-z0-9_]\):\1objectTypeExists\2:g
	
	  The two codebases were then compared, and they diff'ed equal
	  except for cosmetic differences and code differences in between.
	
	* Redid emdros.spec.in, emdros.spec2.in, and build.sh.in so as to
	  build cleanly again.

2004-07-28  Ulrik Petersen

	* Fixed bug in EMdFDB::featureExists(): It failed to call
	  getFeaturesForObjectType() before calling
	  addFeatureToCacheIfNotAlreadyThere.  It now calls
	  getFeaturesForObjectType, and doesn't call
	  addFeatureToFeatureCacheIfNotAlreadyThere.

2004-07-17  Ulrik Petersen

	* I did a major renaming of almost all classes and methods.  This
	  was as per Chris Wilson's suggestion, and as per agreement with
	  a lot of my users who had responded to my RFC in the Emdros
	  "Open Discussion" forum.

	  This was done as follows:

for f in `find . -type f | grep -v "/sqlite/" | grep -v "/pcre/" | grep -v "NEWS" | grep -v "configure" | grep -v "\.sh" | grep -v "ChangeLog"| grep -v Makefile | grep -v libtool | grep -v ".awk" | grep -v ".sed" | grep -v ".mak"`; do ./apply.sh $f | tee -a out.txt ; done

	  apply.sh:

#!/bin/bash
sed -f name2.sed $1 > /tmp/tmp.txt
DIFF=`diff $1 /tmp/tmp.txt`
if test -z "$DIFF"; then
  echo "$1: No differences"
else
  cat /tmp/tmp.txt | awk -f today.awk > /tmp/tmp2.txt 
  echo "$1: Differences."
  mv /tmp/tmp2.txt $1
fi

	  today.awk:

/Last update:/ {
  gsub("[0-9]+/[0-9]+-[0-4]+", "7/17-2004");
  print;
  next;
}
/Copyright/ {
  if (index($0, "2004") == 0) {
    if (match($0, "[0-9]+-[0-9]+") == 0) {
      gsub("[0-9]+", "&-2004");
    } else {
      gsub("-[0-9]+", "-2004");
    }
  }
  print;
  next;
}
// { print; }

	  name2.sed:

s:\([^A-Za-z0-9_]\)AbortTransaction\([(\" ]\):\1abortTransaction\2:g
s:\([^A-Za-z0-9_]\)AccessTuple\([(\" ]\):\1accessTuple\2:g
s:\([^A-Za-z0-9_]\)AddEMdFValue\([(\" ]\):\1addEMdFValue\2:g
s:\([^A-Za-z0-9_]\)AddFeature\([(\" ]\):\1addFeature\2:g
s:\([^A-Za-z0-9_]\)AddFeatureToOT_gut\([(\" ]\):\1addFeatureToOT_gut\2:g
s:\([^A-Za-z0-9_]\)AddFeatureToOT_gut_or_objects\([(\" ]\):\1addFeatureToOT_gut_or_objects\2:g
s:\([^A-Za-z0-9_]\)AddFeatureToOT_objects\([(\" ]\):\1addFeatureToOT_objects\2:g
s:\([^A-Za-z0-9_]\)AddMSE\([(\" ]\):\1addMSE\2:g
s:\([^A-Za-z0-9_]\)AddOid\([(\" ]\):\1addOid\2:g
s:\([^A-Za-z0-9_]\)AggregateQuery\([(\" ]\):\1aggregateQuery\2:g
s:\([^A-Za-z0-9_]\)BackendName\([(\" ]\):\1getBackendName\2:g
s:\([^A-Za-z0-9_]\)BeginTransaction\([(\" ]\):\1beginTransaction\2:g
s:\([^A-Za-z0-9_]\)CAbortTransactionStatement:\1AbortTransactionStatement:g
s:^CAbortTransactionStatement:AbortTransactionStatement:g
s:\([^A-Za-z0-9_]\)CArena:\1Arena:g
s:^CArena:Arena:g
s:\([^A-Za-z0-9_]\)CBeginTransactionStatement:\1BeginTransactionStatement:g
s:^CBeginTransactionStatement:BeginTransactionStatement:g
s:\([^A-Za-z0-9_]\)CBlock_string:\1BlockString:g
s:^CBlock_string:BlockString:g
s:\([^A-Za-z0-9_]\)CBlock_str:\1BlockStr:g
s:^CBlock_str:BlockStr:g
s:\([^A-Za-z0-9_]\)CBlocks:\1Blocks:g
s:^CBlocks:Blocks:g
s:\([^A-Za-z0-9_]\)CBlock:\1Block:g
s:^CBlock:Block:g
s:\([^A-Za-z0-9_]\)CByMonads:\1ByMonads:g
s:^CByMonads:ByMonads:g
s:\([^A-Za-z0-9_]\)CChunk:\1Chunk:g
s:^CChunk:Chunk:g
s:\([^A-Za-z0-9_]\)CCommitTransactionStatement:\1CommitTransactionStatement:g
s:^CCommitTransactionStatement:CommitTransactionStatement:g
s:\([^A-Za-z0-9_]\)CCreateDatabaseStatement:\1CreateDatabaseStatement:g
s:^CCreateDatabaseStatement:CreateDatabaseStatement:g
s:\([^A-Za-z0-9_]\)CCreateEnumerationStatement:\1CreateEnumerationStatement:g
s:^CCreateEnumerationStatement:CreateEnumerationStatement:g
s:\([^A-Za-z0-9_]\)CCreateIndexesStatement:\1CreateIndexesStatement:g
s:^CCreateIndexesStatement:CreateIndexesStatement:g
s:\([^A-Za-z0-9_]\)CCreateMonadSetStatement:\1CreateMonadSetStatement:g
s:^CCreateMonadSetStatement:CreateMonadSetStatement:g
s:\([^A-Za-z0-9_]\)CCreateObjectFromID_DsStatement:\1CreateObjectFromID_DsStatement:g
s:^CCreateObjectFromID_DsStatement:CreateObjectFromID_DsStatement:g
s:\([^A-Za-z0-9_]\)CCreateObjectFromMonadsStatement:\1CreateObjectFromMonadsStatement:g
s:^CCreateObjectFromMonadsStatement:CreateObjectFromMonadsStatement:g
s:\([^A-Za-z0-9_]\)CCreateObjectFromQueryStatement:\1CreateObjectFromQueryStatement:g
s:^CCreateObjectFromQueryStatement:CreateObjectFromQueryStatement:g
s:\([^A-Za-z0-9_]\)CCreateObjectStatement:\1CreateObjectStatement:g
s:^CCreateObjectStatement:CreateObjectStatement:g
s:\([^A-Za-z0-9_]\)CCreateObjectTypeStatement:\1CreateObjectTypeStatement:g
s:^CCreateObjectTypeStatement:CreateObjectTypeStatement:g
s:\([^A-Za-z0-9_]\)CCreateObjectsStatement:\1CreateObjectsStatement:g
s:^CCreateObjectsStatement:CreateObjectsStatement:g
s:\([^A-Za-z0-9_]\)CCreateOrUpdateMonadSetStatement:\1CreateOrUpdateMonadSetStatement:g
s:^CCreateOrUpdateMonadSetStatement:CreateOrUpdateMonadSetStatement:g
s:\([^A-Za-z0-9_]\)CCreateSegmentStatement:\1CreateSegmentStatement:g
s:^CCreateSegmentStatement:CreateSegmentStatement:g
s:\([^A-Za-z0-9_]\)CDatabaseStatement:\1DatabaseStatement:g
s:^CDatabaseStatement:DatabaseStatement:g
s:\([^A-Za-z0-9_]\)CDeleteMonadsStatement:\1DeleteMonadsStatement:g
s:^CDeleteMonadsStatement:DeleteMonadsStatement:g
s:\([^A-Za-z0-9_]\)CDeleteObjectsByID_DsStatement:\1DeleteObjectsByID_DsStatement:g
s:^CDeleteObjectsByID_DsStatement:DeleteObjectsByID_DsStatement:g
s:\([^A-Za-z0-9_]\)CDeleteObjectsByMonadsStatement:\1DeleteObjectsByMonadsStatement:g
s:^CDeleteObjectsByMonadsStatement:DeleteObjectsByMonadsStatement:g
s:\([^A-Za-z0-9_]\)CDeleteObjectsByQueryStatement:\1DeleteObjectsByQueryStatement:g
s:^CDeleteObjectsByQueryStatement:DeleteObjectsByQueryStatement:g
s:\([^A-Za-z0-9_]\)CDeleteObjectsStatement:\1DeleteObjectsStatement:g
s:^CDeleteObjectsStatement:DeleteObjectsStatement:g
s:\([^A-Za-z0-9_]\)CDropDatabaseStatement:\1DropDatabaseStatement:g
s:^CDropDatabaseStatement:DropDatabaseStatement:g
s:\([^A-Za-z0-9_]\)CDropEnumerationStatement:\1DropEnumerationStatement:g
s:^CDropEnumerationStatement:DropEnumerationStatement:g
s:\([^A-Za-z0-9_]\)CDropIndexesStatement:\1DropIndexesStatement:g
s:^CDropIndexesStatement:DropIndexesStatement:g
s:\([^A-Za-z0-9_]\)CDropMonadSetStatement:\1DropMonadSetStatement:g
s:^CDropMonadSetStatement:DropMonadSetStatement:g
s:\([^A-Za-z0-9_]\)CDropObjectTypeStatement:\1DropObjectTypeStatement:g
s:^CDropObjectTypeStatement:DropObjectTypeStatement:g
s:\([^A-Za-z0-9_]\)CECDeclaration:\1ECDeclaration:g
s:^CECDeclaration:ECDeclaration:g
s:\([^A-Za-z0-9_]\)CECUpdate:\1ECUpdate:g
s:^CECUpdate:ECUpdate:g
s:\([^A-Za-z0-9_]\)CEMdFComparison:\1EMdFComparison:g
s:^CEMdFComparison:EMdFComparison:g
s:\([^A-Za-z0-9_]\)CEMdFDBDBError:\1EMdFDBDBError:g
s:^CEMdFDBDBError:EMdFDBDBError:g
s:\([^A-Za-z0-9_]\)CEMdFDBException:\1EMdFDBException:g
s:^CEMdFDBException:EMdFDBException:g
s:\([^A-Za-z0-9_]\)CEMdFFFactor:\1EMdFFFactor:g
s:^CEMdFFFactor:EMdFFFactor:g
s:\([^A-Za-z0-9_]\)CEMdFFFeatures:\1EMdFFFeatures:g
s:^CEMdFFFeatures:EMdFFFeatures:g
s:\([^A-Za-z0-9_]\)CEMdFFTerm:\1EMdFFTerm:g
s:^CEMdFFTerm:EMdFFTerm:g
s:\([^A-Za-z0-9_]\)CEMdFOutputException:\1EMdFOutputException:g
s:^CEMdFOutputException:EMdFOutputException:g
s:\([^A-Za-z0-9_]\)CEMdFOutput:\1EMdFOutput:g
s:^CEMdFOutput:EMdFOutput:g
s:\([^A-Za-z0-9_]\)CEMdFOutputWrongCharactersetException:\1EMdFOutputWrongCharactersetException:g
s:^CEMdFOutputWrongCharactersetException:EMdFOutputWrongCharactersetException:g
s:\([^A-Za-z0-9_]\)CEMdFValue:\1EMdFValue:g
s:^CEMdFValue:EMdFValue:g
s:\([^A-Za-z0-9_]\)CEmdrosEnv:\1EmdrosEnv:g
s:^CEmdrosEnv:EmdrosEnv:g
s:\([^A-Za-z0-9_]\)CEnumConstCache:\1EnumConstCache:g
s:^CEnumConstCache:EnumConstCache:g
s:\([^A-Za-z0-9_]\)CEnumerationStatement:\1EnumerationStatement:g
s:^CEnumerationStatement:EnumerationStatement:g
s:\([^A-Za-z0-9_]\)CExpression:\1Expression:g
s:^CExpression:Expression:g
s:\([^A-Za-z0-9_]\)CFFactor:\1FFactor:g
s:^CFFactor:FFactor:g
s:\([^A-Za-z0-9_]\)CFFeatures:\1FFeatures:g
s:^CFFeatures:FFeatures:g
s:\([^A-Za-z0-9_]\)CFTerm:\1FTerm:g
s:^CFTerm:FTerm:g
s:\([^A-Za-z0-9_]\)CFeatureAssignment:\1FeatureAssignment:g
s:^CFeatureAssignment:FeatureAssignment:g
s:\([^A-Za-z0-9_]\)CFeatureDeclaration:\1FeatureDeclaration:g
s:^CFeatureDeclaration:FeatureDeclaration:g
s:\([^A-Za-z0-9_]\)CFeatureUpdate:\1FeatureUpdate:g
s:^CFeatureUpdate:FeatureUpdate:g
s:\([^A-Za-z0-9_]\)CFeature_comparison:\1FeatureComparison:g
s:^CFeature_comparison:FeatureComparison:g
s:\([^A-Za-z0-9_]\)CFeature:\1Feature:g
s:^CFeature:Feature:g
s:\([^A-Za-z0-9_]\)CGap_block:\1GapBlock:g
s:^CGap_block:GapBlock:g
s:\([^A-Za-z0-9_]\)CGetFeaturesStatement:\1GetFeaturesStatement:g
s:^CGetFeaturesStatement:GetFeaturesStatement:g
s:\([^A-Za-z0-9_]\)CGetMonadSetsStatement:\1GetMonadSetsStatement:g
s:^CGetMonadSetsStatement:GetMonadSetsStatement:g
s:\([^A-Za-z0-9_]\)CGetMonadsStatement:\1GetMonadsStatement:g
s:^CGetMonadsStatement:GetMonadsStatement:g
s:\([^A-Za-z0-9_]\)CID_D:\1ID_D:g
s:^CID_D:ID_D:g
s:\([^A-Za-z0-9_]\)CInsertMonadsStatement:\1InsertMonadsStatement:g
s:^CInsertMonadsStatement:InsertMonadsStatement:g
s:\([^A-Za-z0-9_]\)CInstContents:\1InstContents:g
s:^CInstContents:InstContents:g
s:\([^A-Za-z0-9_]\)CInstObject:\1InstObject:g
s:^CInstObject:InstObject:g
s:\([^A-Za-z0-9_]\)CInst:\1Inst:g
s:^CInst:Inst:g
s:\([^A-Za-z0-9_]\)CList_of_mo_nr:\1ListOfMoNr:g
s:^CList_of_mo_nr:ListOfMoNr:g
s:\([^A-Za-z0-9_]\)CList_of_straws:\1ListOfStraws:g
s:^CList_of_straws:ListOfStraws:g
s:\([^A-Za-z0-9_]\)CMOEMPTY_mo:\1Empty_mo:g
s:^CMOEMPTY_mo:Empty_mo:g
s:\([^A-Za-z0-9_]\)CMOID_D:\1Id_d_mo:g
s:^CMOID_D:Id_d_mo:g
s:\([^A-Za-z0-9_]\)CMOID_M:\1Id_m_mo:g
s:^CMOID_M:Id_m_mo:g
s:\([^A-Za-z0-9_]\)CMONIL_mo:\1Nil_mo:g
s:^CMONIL_mo:Nil_mo:g
s:\([^A-Za-z0-9_]\)CMQLError:\1MQLError:g
s:^CMQLError:MQLError:g
s:\([^A-Za-z0-9_]\)CMQLObject:\1MQLObject:g
s:^CMQLObject:MQLObject:g
s:\([^A-Za-z0-9_]\)CMQLResult:\1MQLResult:g
s:^CMQLResult:MQLResult:g
s:\([^A-Za-z0-9_]\)CMQLSymbolTableEntry:\1MQLSymbolTableEntry:g
s:^CMQLSymbolTableEntry:MQLSymbolTableEntry:g
s:\([^A-Za-z0-9_]\)CMQLSymbolTableEntryException:\1MQLSymbolTableEntryException:g
s:^CMQLSymbolTableEntryException:MQLSymbolTableEntryException:g
s:\([^A-Za-z0-9_]\)CMQLSymbolTableException:\1MQLSymbolTableException:g
s:^CMQLSymbolTableException:MQLSymbolTableException:g
s:\([^A-Za-z0-9_]\)CMQLSymbolTable:\1MQLSymbolTable:g
s:^CMQLSymbolTable:MQLSymbolTable:g
s:\([^A-Za-z0-9_]\)CMQL_execution_environment:\1MQLExecEnv:g
s:^CMQL_execution_environment:MQLExecEnv:g
s:\([^A-Za-z0-9_]\)CMatched_object:\1MatchedObject:g
s:^CMatched_object:MatchedObject:g
s:\([^A-Za-z0-9_]\)CMo_nr:\1MoNR:g
s:^CMo_nr:MoNR:g
s:\([^A-Za-z0-9_]\)CMonadSetCalculationStatement:\1MonadSetCalculationStatement:g
s:^CMonadSetCalculationStatement:MonadSetCalculationStatement:g
s:\([^A-Za-z0-9_]\)CMonadSetChainElement:\1MonadSetChainElement:g
s:^CMonadSetChainElement:MonadSetChainElement:g
s:\([^A-Za-z0-9_]\)CMonadSetElement:\1MQLMonadSetElement:g
s:^CMonadSetElement:MQLMonadSetElement:g
s:\([^A-Za-z0-9_]\)CMonadSetStatement:\1MonadSetStatement:g
s:^CMonadSetStatement:MonadSetStatement:g
s:\([^A-Za-z0-9_]\)CMonadsStatement:\1MonadsStatement:g
s:^CMonadsStatement:MonadsStatement:g
s:\([^A-Za-z0-9_]\)CObjectSpecBase:\1ObjectSpecBase:g
s:^CObjectSpecBase:ObjectSpecBase:g
s:\([^A-Za-z0-9_]\)CObjectSpecNoOT:\1ObjectSpecNoOT:g
s:^CObjectSpecNoOT:ObjectSpecNoOT:g
s:\([^A-Za-z0-9_]\)CObjectSpec:\1ObjectSpec:g
s:^CObjectSpec:ObjectSpec:g
s:\([^A-Za-z0-9_]\)CObjectTypeStatement:\1ObjectTypeStatement:g
s:^CObjectTypeStatement:ObjectTypeStatement:g
s:\([^A-Za-z0-9_]\)CObjectTypesStatement:\1ObjectTypesStatement:g
s:^CObjectTypesStatement:ObjectTypesStatement:g
s:\([^A-Za-z0-9_]\)CObject_block_common:\1ObjectBlockCommon:g
s:^CObject_block_common:ObjectBlockCommon:g
s:\([^A-Za-z0-9_]\)CObject_block_first:\1ObjectBlockFirst:g
s:^CObject_block_first:ObjectBlockFirst:g
s:\([^A-Za-z0-9_]\)CObject_block:\1ObjectBlock:g
s:^CObject_block:ObjectBlock:g
s:\([^A-Za-z0-9_]\)CObject_reference_usage:\1ObjectReferenceUsage:g
s:^CObject_reference_usage:ObjectReferenceUsage:g
s:\([^A-Za-z0-9_]\)COpt_gap_block:\1OptGapBlock:g
s:^COpt_gap_block:OptGapBlock:g
s:\([^A-Za-z0-9_]\)CPower:\1Power:g
s:^CPower:Power:g
s:\([^A-Za-z0-9_]\)CQueryBase:\1QueryBase:g
s:^CQueryBase:QueryBase:g
s:\([^A-Za-z0-9_]\)CQuitStatement:\1QuitStatement:g
s:^CQuitStatement:QuitStatement:g
s:\([^A-Za-z0-9_]\)CRest_of_block_str:\1RestOfBlockStr:g
s:^CRest_of_block_str:RestOfBlockStr:g
s:\([^A-Za-z0-9_]\)CSegmentStatement:\1SegmentStatement:g
s:^CSegmentStatement:SegmentStatement:g
s:\([^A-Za-z0-9_]\)CSelectEnumerationConstantsStatement:\1SelectEnumerationConstantsStatement:g
s:^CSelectEnumerationConstantsStatement:SelectEnumerationConstantsStatement:g
s:\([^A-Za-z0-9_]\)CSelectEnumerationsStatement:\1SelectEnumerationsStatement:g
s:^CSelectEnumerationsStatement:SelectEnumerationsStatement:g
s:\([^A-Za-z0-9_]\)CSelectFeaturesStatement:\1SelectFeaturesStatement:g
s:^CSelectFeaturesStatement:SelectFeaturesStatement:g
s:\([^A-Za-z0-9_]\)CSelectMaxMStatement:\1SelectMaxMStatement:g
s:^CSelectMaxMStatement:SelectMaxMStatement:g
s:\([^A-Za-z0-9_]\)CSelectMinMStatement:\1SelectMinMStatement:g
s:^CSelectMinMStatement:SelectMinMStatement:g
s:\([^A-Za-z0-9_]\)CSelectMonadSetsStatement:\1SelectMonadSetsStatement:g
s:^CSelectMonadSetsStatement:SelectMonadSetsStatement:g
s:\([^A-Za-z0-9_]\)CSelectObjectTypesStatement:\1SelectObjectTypesStatement:g
s:^CSelectObjectTypesStatement:SelectObjectTypesStatement:g
s:\([^A-Za-z0-9_]\)CSelectObjectTypesUsingEnumerationStatement:\1SelectObjectTypesUsingEnumerationStatement:g
s:^CSelectObjectTypesUsingEnumerationStatement:SelectObjectTypesUsingEnumerationStatement:g
s:\([^A-Za-z0-9_]\)CSelectObjectsAtStatement:\1SelectObjectsAtStatement:g
s:^CSelectObjectsAtStatement:SelectObjectsAtStatement:g
s:\([^A-Za-z0-9_]\)CSelectObjectsHavingMonadsInStatement:\1SelectObjectsHavingMonadsInStatement:g
s:^CSelectObjectsHavingMonadsInStatement:SelectObjectsHavingMonadsInStatement:g
s:\([^A-Za-z0-9_]\)CSelectStatement:\1SelectStatement:g
s:^CSelectStatement:SelectStatement:g
s:\([^A-Za-z0-9_]\)CSet_of_monad_ms:\1SetOfMonads:g
s:^CSet_of_monad_ms:SetOfMonads:g
s:\([^A-Za-z0-9_]\)CSheaf:\1Sheaf:g
s:^CSheaf:Sheaf:g
s:\([^A-Za-z0-9_]\)CSkipListConstIterator:\1SkipListConstIterator:g
s:^CSkipListConstIterator:SkipListConstIterator:g
s:\([^A-Za-z0-9_]\)CSkipListNode:\1SkipListNode:g
s:^CSkipListNode:SkipListNode:g
s:\([^A-Za-z0-9_]\)CSkipList:\1SkipList:g
s:^CSkipList:SkipList:g
s:\([^A-Za-z0-9_]\)CSmartVector:\1SmartVector:g
s:^CSmartVector:SmartVector:g
s:\([^A-Za-z0-9_]\)CStatement:\1Statement:g
s:^CStatement:Statement:g
s:\([^A-Za-z0-9_]\)CStraw:\1Straw:g
s:^CStraw:Straw:g
s:\([^A-Za-z0-9_]\)CStringListNode:\1StringListNode:g
s:^CStringListNode:StringListNode:g
s:\([^A-Za-z0-9_]\)CStringList:\1StringList:g
s:^CStringList:StringList:g
s:\([^A-Za-z0-9_]\)CTable:\1Table:g
s:^CTable:Table:g
s:\([^A-Za-z0-9_]\)CTopograph:\1Topograph:g
s:^CTopograph:Topograph:g
s:\([^A-Za-z0-9_]\)CUpdateEnumerationStatement:\1UpdateEnumerationStatement:g
s:^CUpdateEnumerationStatement:UpdateEnumerationStatement:g
s:\([^A-Za-z0-9_]\)CUpdateMonadSetStatement:\1UpdateMonadSetStatement:g
s:^CUpdateMonadSetStatement:UpdateMonadSetStatement:g
s:\([^A-Za-z0-9_]\)CUpdateObjectTypeStatement:\1UpdateObjectTypeStatement:g
s:^CUpdateObjectTypeStatement:UpdateObjectTypeStatement:g
s:\([^A-Za-z0-9_]\)CUpdateObjectsByID_DsStatement:\1UpdateObjectsByID_DsStatement:g
s:^CUpdateObjectsByID_DsStatement:UpdateObjectsByID_DsStatement:g
s:\([^A-Za-z0-9_]\)CUpdateObjectsByMonadsStatement:\1UpdateObjectsByMonadsStatement:g
s:^CUpdateObjectsByMonadsStatement:UpdateObjectsByMonadsStatement:g
s:\([^A-Za-z0-9_]\)CUpdateObjectsByQueryStatement:\1UpdateObjectsByQueryStatement:g
s:^CUpdateObjectsByQueryStatement:UpdateObjectsByQueryStatement:g
s:\([^A-Za-z0-9_]\)CUpdateObjectsStatement:\1UpdateObjectsStatement:g
s:^CUpdateObjectsStatement:UpdateObjectsStatement:g
s:\([^A-Za-z0-9_]\)CUseStatement:\1UseStatement:g
s:^CUseStatement:UseStatement:g
s:\([^A-Za-z0-9_]\)CVacuumDatabaseStatement:\1VacuumDatabaseStatement:g
s:^CVacuumDatabaseStatement:VacuumDatabaseStatement:g
s:\([^A-Za-z0-9_]\)CValueTriple:\1ValueTriple:g
s:^CValueTriple:ValueTriple:g
s:\([^A-Za-z0-9_]\)CValue:\1Value:g
s:^CValue:Value:g
s:\([^A-Za-z0-9_]\)CalculateMMap\([(\" ]\):\1calculateMMap\2:g
s:\([^A-Za-z0-9_]\)CanDoComparisonOp\([(\" ]\):\1canDoComparisonOp\2:g
s:\([^A-Za-z0-9_]\)CommitTransaction\([(\" ]\):\1commitTransaction\2:g
s:\([^A-Za-z0-9_]\)Connect\([(\" ]\):\1connect\2:g
s:\([^A-Za-z0-9_]\)ConnectionOk\([(\" ]\):\1connectionOk\2:g
s:\([^A-Za-z0-9_]\)ConvertDBName\([(\" ]\):\1convertDBName\2:g
s:\([^A-Za-z0-9_]\)CreateConstants\([(\" ]\):\1createConstants\2:g
s:\([^A-Za-z0-9_]\)CreateDatabase\([(\" ]\):\1createDatabase\2:g
s:\([^A-Za-z0-9_]\)CreateEnum\([(\" ]\):\1createEnum\2:g
s:\([^A-Za-z0-9_]\)CreateEnumConstant\([(\" ]\):\1createEnumConstant\2:g
s:\([^A-Za-z0-9_]\)CreateFeature\([(\" ]\):\1createFeature\2:g
s:\([^A-Za-z0-9_]\)CreateIndex\([(\" ]\):\1createIndex\2:g
s:\([^A-Za-z0-9_]\)CreateIndicesOnDatabase\([(\" ]\):\1createIndicesOnDatabase\2:g
s:\([^A-Za-z0-9_]\)CreateIndicesOnOTGut\([(\" ]\):\1createIndicesOnOTGut\2:g
s:\([^A-Za-z0-9_]\)CreateIndicesOnOTMonadMs\([(\" ]\):\1createIndicesOnOTMonadMs\2:g
s:\([^A-Za-z0-9_]\)CreateIndicesOnOTObjects\([(\" ]\):\1createIndicesOnOTObjects\2:g
s:\([^A-Za-z0-9_]\)CreateIndicesOnObjectType\([(\" ]\):\1createIndicesOnObjectType\2:g
s:\([^A-Za-z0-9_]\)CreateMonadSet\([(\" ]\):\1createMonadSet\2:g
s:\([^A-Za-z0-9_]\)CreateObject\([(\" ]\):\1createObject\2:g
s:\([^A-Za-z0-9_]\)CreateObjectType\([(\" ]\):\1createObjectType\2:g
s:\([^A-Za-z0-9_]\)CreateObjectTypeOT_gut\([(\" ]\):\1createObjectTypeOT_gut\2:g
s:\([^A-Za-z0-9_]\)CreateObjectTypeOT_gut_or_objects\([(\" ]\):\1createObjectTypeOT_gut_or_objects\2:g
s:\([^A-Za-z0-9_]\)CreateObjectTypeOT_objects\([(\" ]\):\1createObjectTypeOT_objects\2:g
s:\([^A-Za-z0-9_]\)CreateObjects\([(\" ]\):\1createObjects\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsInBetweenData\([(\" ]\):\1createObjectsInBetweenData\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_gut\([(\" ]\):\1createObjectsOT_gut\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_gut_DB\([(\" ]\):\1createObjectsOT_gut_DB\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_gut_data\([(\" ]\):\1createObjectsOT_gut_data\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_gut_or_objects\([(\" ]\):\1createObjectsOT_gut_or_objects\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_gut_or_objects_DB\([(\" ]\):\1createObjectsOT_gut_or_objects_DB\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_monad_ms\([(\" ]\):\1createObjectsOT_monad_ms\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_monad_ms_DB\([(\" ]\):\1createObjectsOT_monad_ms_DB\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_monad_ms_data\([(\" ]\):\1createObjectsOT_monad_ms_data\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_objects\([(\" ]\):\1createObjectsOT_objects\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_objects_DB\([(\" ]\):\1createObjectsOT_objects_DB\2:g
s:\([^A-Za-z0-9_]\)CreateObjectsOT_objects_data\([(\" ]\):\1createObjectsOT_objects_data\2:g
s:\([^A-Za-z0-9_]\)CreateSchemaVersionTable\([(\" ]\):\1createSchemaVersionTable\2:g
s:\([^A-Za-z0-9_]\)CreateSegment\([(\" ]\):\1createSegment\2:g
s:\([^A-Za-z0-9_]\)CreateSequenceTables110\([(\" ]\):\1createSequenceTables110\2:g
s:\([^A-Za-z0-9_]\)CreateSequenceTables118\([(\" ]\):\1createSequenceTables118\2:g
s:\([^A-Za-z0-9_]\)Create_min_max_m_table\([(\" ]\):\1createMin_max_m_table\2:g
s:\([^A-Za-z0-9_]\)DBIsInitialized\([(\" ]\):\1dbIsInitialized\2:g
s:\([^A-Za-z0-9_]\)DatabaseNameIsOK\([(\" ]\):\1databaseNameIsOK\2:g
s:\([^A-Za-z0-9_]\)DeleteDatabase\([(\" ]\):\1deleteDatabase\2:g
s:\([^A-Za-z0-9_]\)DeleteMonads\([(\" ]\):\1deleteMonads\2:g
s:\([^A-Za-z0-9_]\)DeleteRedundantSequenceInfo\([(\" ]\):\1deleteRedundantSequenceInfo\2:g
s:\([^A-Za-z0-9_]\)DropDatabase\([(\" ]\):\1dropDatabase\2:g
s:\([^A-Za-z0-9_]\)DropEnum\([(\" ]\):\1dropEnum\2:g
s:\([^A-Za-z0-9_]\)DropEnumConst\([(\" ]\):\1dropEnumConst\2:g
s:\([^A-Za-z0-9_]\)DropFeature\([(\" ]\):\1dropFeature\2:g
s:\([^A-Za-z0-9_]\)DropFeatureFromOT_gut\([(\" ]\):\1dropFeatureFromOT_gut\2:g
s:\([^A-Za-z0-9_]\)DropFeatureFromOT_gut_or_objects\([(\" ]\):\1dropFeatureFromOT_gut_or_objects\2:g
s:\([^A-Za-z0-9_]\)DropFeatureFromOT_objects\([(\" ]\):\1dropFeatureFromOT_objects\2:g
s:\([^A-Za-z0-9_]\)DropIndex\([(\" ]\):\1dropIndex\2:g
s:\([^A-Za-z0-9_]\)DropIndicesOnDatabase\([(\" ]\):\1dropIndicesOnDatabase\2:g
s:\([^A-Za-z0-9_]\)DropIndicesOnOTGut\([(\" ]\):\1dropIndicesOnOTGut\2:g
s:\([^A-Za-z0-9_]\)DropIndicesOnOTMonadMs\([(\" ]\):\1dropIndicesOnOTMonadMs\2:g
s:\([^A-Za-z0-9_]\)DropIndicesOnOTObjects\([(\" ]\):\1dropIndicesOnOTObjects\2:g
s:\([^A-Za-z0-9_]\)DropIndicesOnObjectType\([(\" ]\):\1dropIndicesOnObjectType\2:g
s:\([^A-Za-z0-9_]\)DropMonadSet\([(\" ]\):\1dropMonadSet\2:g
s:\([^A-Za-z0-9_]\)DropObject\([(\" ]\):\1dropObject\2:g
s:\([^A-Za-z0-9_]\)DropObjectType\([(\" ]\):\1dropObjectType\2:g
s:\([^A-Za-z0-9_]\)DropObjectsInMonads\([(\" ]\):\1dropObjectsInMonads\2:g
s:\([^A-Za-z0-9_]\)EnumConstExists\([(\" ]\):\1enumConstExists\2:g
s:\([^A-Za-z0-9_]\)EnumExists\([(\" ]\):\1enumExists\2:g
s:\([^A-Za-z0-9_]\)ErrorMessage\([(\" ]\):\1errorMessage\2:g
s:\([^A-Za-z0-9_]\)EscapeStringForSQL\([(\" ]\):\1escapeStringForSQL\2:g
s:\([^A-Za-z0-9_]\)ExecAdd\([(\" ]\):\1execAdd\2:g
s:\([^A-Za-z0-9_]\)ExecAddUpdateRemove\([(\" ]\):\1execAddUpdateRemove\2:g
s:\([^A-Za-z0-9_]\)ExecCOPY\([(\" ]\):\1execCOPY\2:g
s:\([^A-Za-z0-9_]\)ExecCommand\([(\" ]\):\1execCommand\2:g
s:\([^A-Za-z0-9_]\)ExecMakeFeatureArray\([(\" ]\):\1execMakeFeatureArray\2:g
s:\([^A-Za-z0-9_]\)ExecMakeFeatureList\([(\" ]\):\1execMakeFeatureList\2:g
s:\([^A-Za-z0-9_]\)ExecMakeList\([(\" ]\):\1execMakeList\2:g
s:\([^A-Za-z0-9_]\)ExecMakeNameList\([(\" ]\):\1execMakeNameList\2:g
s:\([^A-Za-z0-9_]\)ExecMakeSOM\([(\" ]\):\1execMakeSOM\2:g
s:\([^A-Za-z0-9_]\)ExecOneType\([(\" ]\):\1execOneType\2:g
s:\([^A-Za-z0-9_]\)ExecSelect\([(\" ]\):\1execSelect\2:g
s:\([^A-Za-z0-9_]\)FeatureExists\([(\" ]\):\1featureExists\2:g
s:\([^A-Za-z0-9_]\)Finalize\([(\" ]\):\1finalize\2:g
s:\([^A-Za-z0-9_]\)GetComputedFeature\([(\" ]\):\1getComputedFeature\2:g
s:\([^A-Za-z0-9_]\)GetComputedFeatures\([(\" ]\):\1getComputedFeatures\2:g
s:\([^A-Za-z0-9_]\)GetCurrentDatabaseVersion\([(\" ]\):\1getCurrentDatabaseVersion\2:g
s:\([^A-Za-z0-9_]\)GetDefault\([(\" ]\):\1getDefault\2:g
s:\([^A-Za-z0-9_]\)GetEMdFComparison\([(\" ]\):\1getEMdFComparison\2:g
s:\([^A-Za-z0-9_]\)GetEMdFFFactor\([(\" ]\):\1getEMdFFFactor\2:g
s:\([^A-Za-z0-9_]\)GetEMdFFFeatures\([(\" ]\):\1getEMdFFFeatures\2:g
s:\([^A-Za-z0-9_]\)GetEMdFFTerm\([(\" ]\):\1getEMdFFTerm\2:g
s:\([^A-Za-z0-9_]\)GetEVkindFromTypeID_D\([(\" ]\):\1getEVkindFromTypeID_D\2:g
s:\([^A-Za-z0-9_]\)GetEnumConstNameFromValue\([(\" ]\):\1getEnumConstNameFromValue\2:g
s:\([^A-Za-z0-9_]\)GetEnumConstants\([(\" ]\):\1getEnumConstants\2:g
s:\([^A-Za-z0-9_]\)GetEnumerations\([(\" ]\):\1getEnumerations\2:g
s:\([^A-Za-z0-9_]\)GetFeatures\([(\" ]\):\1getFeatures\2:g
s:\([^A-Za-z0-9_]\)GetFeaturesByQuery\([(\" ]\):\1getFeaturesByQuery\2:g
s:\([^A-Za-z0-9_]\)GetFeaturesByQueryExec\([(\" ]\):\1getFeaturesByQueryExec\2:g
s:\([^A-Za-z0-9_]\)GetFeaturesForObjectType\([(\" ]\):\1getFeaturesForObjectType\2:g
s:\([^A-Za-z0-9_]\)GetInst\([(\" ]\):\1getInst\2:g
s:\([^A-Za-z0-9_]\)GetLastInsertRowID\([(\" ]\):\1getLastInsertRowID\2:g
s:\([^A-Za-z0-9_]\)GetMonadsFromID_D\([(\" ]\):\1getMonadsFromID_D\2:g
s:\([^A-Za-z0-9_]\)GetMonadsFromID_Ds\([(\" ]\):\1getMonadsFromID_Ds\2:g
s:\([^A-Za-z0-9_]\)GetNextID\([(\" ]\):\1getNextID\2:g
s:\([^A-Za-z0-9_]\)GetNextObjectID_D\([(\" ]\):\1getNextObjectID_D\2:g
s:\([^A-Za-z0-9_]\)GetNextOtherID\([(\" ]\):\1getNextOtherID\2:g
s:\([^A-Za-z0-9_]\)GetNextTuple\([(\" ]\):\1getNextTuple\2:g
s:\([^A-Za-z0-9_]\)GetOTGutOrObjects\([(\" ]\):\1getOTGutOrObjects\2:g
s:\([^A-Za-z0-9_]\)GetOTHasSingleRangeObjects\([(\" ]\):\1getOTHasSingleRangeObjects\2:g
s:\([^A-Za-z0-9_]\)GetObjectTypes\([(\" ]\):\1getObjectTypes\2:g
s:\([^A-Za-z0-9_]\)GetObjectTypesUsingEnumeration\([(\" ]\):\1getObjectTypesUsingEnumeration\2:g
s:\([^A-Za-z0-9_]\)GetObjectsAtM\([(\" ]\):\1getObjectsAtM\2:g
s:\([^A-Za-z0-9_]\)GetObjectsByMonads\([(\" ]\):\1getObjectsByMonads\2:g
s:\([^A-Za-z0-9_]\)GetObjectsHavingMonadsInMonadSet\([(\" ]\):\1getObjectsHavingMonadsInMonadSet\2:g
s:\([^A-Za-z0-9_]\)GetObjectsStartingAtSm\([(\" ]\):\1getObjectsStartingAtSm\2:g
s:\([^A-Za-z0-9_]\)GetObjectsWithinMonads\([(\" ]\):\1getObjectsWithinMonads\2:g
s:\([^A-Za-z0-9_]\)GetSOMForObject\([(\" ]\):\1getSOMForObject\2:g
s:\([^A-Za-z0-9_]\)GetSchemaVersion\([(\" ]\):\1getSchemaVersion\2:g
s:\([^A-Za-z0-9_]\)Get_all_m_1\([(\" ]\):\1getAll_m_1\2:g
s:\([^A-Za-z0-9_]\)Get_max_m\([(\" ]\):\1getMax_m\2:g
s:\([^A-Za-z0-9_]\)Get_min_m\([(\" ]\):\1getMin_m\2:g
s:\([^A-Za-z0-9_]\)HasFirstLast\([(\" ]\):\1hasFirstLast\2:g
s:\([^A-Za-z0-9_]\)HasRow\([(\" ]\):\1hasRow\2:g
s:\([^A-Za-z0-9_]\)Hat\([(\" ]\):\1hat\2:g
s:\([^A-Za-z0-9_]\)InsertMonads\([(\" ]\):\1insertMonads\2:g
s:\([^A-Za-z0-9_]\)Join\([(\" ]\):\1join\2:g
s:\([^A-Za-z0-9_]\)JoinTakeOver\([(\" ]\):\1joinAndTakeOver\2:g
s:\([^A-Za-z0-9_]\)LoadEnumConstantsIntoCache\([(\" ]\):\1loadEnumConstantsIntoCache\2:g
s:\([^A-Za-z0-9_]\)MakeFeatureSQLType\([(\" ]\):\1makeFeatureSQLType\2:g
s:\([^A-Za-z0-9_]\)MakeMonadConstraintsFromSOM\([(\" ]\):\1makeMonadConstraintsFromSOM\2:g
s:\([^A-Za-z0-9_]\)MayCOPY\([(\" ]\):\1mayCOPY\2:g
s:\([^A-Za-z0-9_]\)MonadSetExists\([(\" ]\):\1monadSetExists\2:g
s:\([^A-Za-z0-9_]\)Monad_Set_Element:\1MonadSetElement:g
s:\([^A-Za-z0-9_]\)MonadsBuildSet\([(\" ]\):\1monadsBuildSet\2:g
s:\([^A-Za-z0-9_]\)MoveSequenceValue110\([(\" ]\):\1moveSequenceValue110\2:g
s:\([^A-Za-z0-9_]\)MoveSequenceValue118\([(\" ]\):\1moveSequenceValue118\2:g
s:\([^A-Za-z0-9_]\)MyExec\([(\" ]\):\1myExec\2:g
s:\([^A-Za-z0-9_]\)Exec\([(\" ]\):\1exec\2:g
s:\([^A-Za-z0-9_]\)MyMonads\([(\" ]\):\1myMonads\2:g
s:\([^A-Za-z0-9_]\)MySymbol\([(\" ]\):\1mySymbol\2:g
s:\([^A-Za-z0-9_]\)MyType\([(\" ]\):\1myType\2:g
s:\([^A-Za-z0-9_]\)MyWeed\([(\" ]\):\1myWeed\2:g
s:\([^A-Za-z0-9_]\)NoOfFields\([(\" ]\):\1getNoOfFields\2:g
s:\([^A-Za-z0-9_]\)NoOfResultTuples\([(\" ]\):\1noOfResultTuples\2:g
s:\([^A-Za-z0-9_]\)NormalizeOTName\([(\" ]\):\1normalizeOTName\2:g
s:\([^A-Za-z0-9_]\)ObjectID_DExists\([(\" ]\):\1objectID_DExists\2:g
s:\([^A-Za-z0-9_]\)ObjectID_DExistsInType\([(\" ]\):\1objectID_DExistsInType\2:g
s:\([^A-Za-z0-9_]\)Print\([(\" ]\):\1out\2:g
s:\([^A-Za-z0-9_]\)PrintConsole\([(\" ]\):\1printConsole\2:g
s:\([^A-Za-z0-9_]\)PrintXML\([(\" ]\):\1printXML\2:g
s:\([^A-Za-z0-9_]\)PrintXML_Header\([(\" ]\):\1printXMLHeader\2:g
s:\([^A-Za-z0-9_]\)PrintXML_Row\([(\" ]\):\1printXMLRow\2:g
s:\([^A-Za-z0-9_]\)PrintXML_Rows\([(\" ]\):\1printXMLRows\2:g
s:\([^A-Za-z0-9_]\)Print_DTD_CMQLResult\([(\" ]\):\1printDTDMQLResult\2:g
s:\([^A-Za-z0-9_]\)Print_DTD_CSheaf\([(\" ]\):\1printDTDSheaf\2:g
s:\([^A-Za-z0-9_]\)Print_DTD_CTable\([(\" ]\):\1printDTDTable\2:g
s:\([^A-Za-z0-9_]\)Print_DTD_end\([(\" ]\):\1printDTDEnd\2:g
s:\([^A-Za-z0-9_]\)Print_DTD_start\([(\" ]\):\1printDTDStart\2:g
s:\([^A-Za-z0-9_]\)Print_XMLDecl\([(\" ]\):\1printXMLDecl\2:g
s:\([^A-Za-z0-9_]\)RemoveMSE\([(\" ]\):\1removeMSE\2:g
s:\([^A-Za-z0-9_]\)Restrict\([(\" ]\):\1restrict\2:g
s:\([^A-Za-z0-9_]\)SelectMonadSets\([(\" ]\):\1selectMonadSets\2:g
s:\([^A-Za-z0-9_]\)SetDefaultEnumConst\([(\" ]\):\1setDefaultEnumConst\2:g
s:\([^A-Za-z0-9_]\)SetNextObjectID_DIfNotHigher\([(\" ]\):\1setNextObjectID_DIfNotHigher\2:g
s:\([^A-Za-z0-9_]\)SetSchemaVersion\([(\" ]\):\1setSchemaVersion\2:g
s:\([^A-Za-z0-9_]\)Set_max_m\([(\" ]\):\1setMax_m\2:g
s:\([^A-Za-z0-9_]\)Set_min_m\([(\" ]\):\1setMin_m\2:g
s:\([^A-Za-z0-9_]\)Set_min_max_m_from_object_type\([(\" ]\):\1setMin_max_m_fromObjectType\2:g
s:\([^A-Za-z0-9_]\)Set_min_max_m_from_object_types\([(\" ]\):\1setMin_max_m_fromObjectTypes\2:g
s:\([^A-Za-z0-9_]\)ShutdownConnection\([(\" ]\):\1shutdownConnection\2:g
s:\([^A-Za-z0-9_]\)Symbol\([(\" ]\):\1symbol\2:g
s:\([^A-Za-z0-9_]\)SymbolAddFeatures\([(\" ]\):\1symbolAddFeatures\2:g
s:\([^A-Za-z0-9_]\)SymbolAddToObject\([(\" ]\):\1symbolAddToObject\2:g
s:\([^A-Za-z0-9_]\)SymbolAllAreOfSameType\([(\" ]\):\1symbolAllAreOfSameType\2:g
s:\([^A-Za-z0-9_]\)SymbolAllFeaturesMustBeAssigned\([(\" ]\):\1symbolAllFeaturesMustBeAssigned\2:g
s:\([^A-Za-z0-9_]\)SymbolAllFeaturesMustExist\([(\" ]\):\1symbolAllFeaturesMustExist\2:g
s:\([^A-Za-z0-9_]\)SymbolAssignValues\([(\" ]\):\1symbolAssignValues\2:g
s:\([^A-Za-z0-9_]\)SymbolAssignValuesPrivate\([(\" ]\):\1symbolAssignValuesPrivate\2:g
s:\([^A-Za-z0-9_]\)SymbolCheckNoTwoValuesSamePrivate\([(\" ]\):\1symbolCheckNoTwoValuesSamePrivate\2:g
s:\([^A-Za-z0-9_]\)SymbolConstantExistence\([(\" ]\):\1symbolExistenceOfConstants\2:g
s:\([^A-Za-z0-9_]\)SymbolDefaultIsRemoved\([(\" ]\):\1symbolDefaultIsRemoved\2:g
s:\([^A-Za-z0-9_]\)SymbolDoLocalUpdatePrivate\([(\" ]\):\1symbolDoLocalUpdatePrivate\2:g
s:\([^A-Za-z0-9_]\)SymbolEnumConstantsExist\([(\" ]\):\1symbolEnumConstantsExist\2:g
s:\([^A-Za-z0-9_]\)SymbolEnumerationExists\([(\" ]\):\1symbolEnumerationExists\2:g
s:\([^A-Za-z0-9_]\)SymbolEnumerations\([(\" ]\):\1symbolEnumerations\2:g
s:\([^A-Za-z0-9_]\)SymbolEnumerationsExist\([(\" ]\):\1symbolEnumerationsExist\2:g
s:\([^A-Za-z0-9_]\)SymbolExistenceOfConstants\([(\" ]\):\1symbolExistenceOfConstants\2:g
s:\([^A-Za-z0-9_]\)SymbolExistenceOfFeatures\([(\" ]\):\1symbolExistenceOfFeatures\2:g
s:\([^A-Za-z0-9_]\)SymbolFeaturesExist\([(\" ]\):\1symbolFeaturesExist\2:g
s:\([^A-Za-z0-9_]\)SymbolFeaturesMustNotExist\([(\" ]\):\1symbolFeaturesMustNotExist\2:g
s:\([^A-Za-z0-9_]\)SymbolNoFeatureMayBeComputed\([(\" ]\):\1symbolNoFeatureMayBeComputed\2:g
s:\([^A-Za-z0-9_]\)SymbolNoTwoValuesSame\([(\" ]\):\1symbolNoTwoValuesSame\2:g
s:\([^A-Za-z0-9_]\)SymbolObjectTypeExists\([(\" ]\):\1symbolObjectTypeExists\2:g
s:\([^A-Za-z0-9_]\)SymbolObjectsExist\([(\" ]\):\1symbolObjectsExist\2:g
s:\([^A-Za-z0-9_]\)SymbolObjectsExistInType\([(\" ]\):\1symbolObjectsExistInType\2:g
s:\([^A-Za-z0-9_]\)SymbolValueMoreThanOnce\([(\" ]\):\1symbolValueMoreThanOnce\2:g
s:\([^A-Za-z0-9_]\)SymbolValueMoreThanOncePrivate\([(\" ]\):\1symbolValueMoreThanOncePrivate\2:g
s:\([^A-Za-z0-9_]\)TableExists\([(\" ]\):\1tableExists\2:g
s:\([^A-Za-z0-9_]\)ToString\([(\" ]\):\1toString\2:g
s:\([^A-Za-z0-9_]\)TypeAssignTypeID\([(\" ]\):\1typeAssignTypeID\2:g
s:\([^A-Za-z0-9_]\)TypeAssignTypes\([(\" ]\):\1typeAssignTypes\2:g
s:\([^A-Za-z0-9_]\)TypeFeatureName\([(\" ]\):\1typeFeatureName\2:g
s:\([^A-Za-z0-9_]\)Type_id_to_string\([(\" ]\):\1ypeIdToString\2:g
s:\([^A-Za-z0-9_]\)Type_id_to_TableColumnType\([(\" ]\):\1typeIdToTableColumnType\2:
s:\([^A-Za-z0-9_]\)TypeTypeCompatibility\([(\" ]\):\1typeTypeCompatibility\2:g
s:\([^A-Za-z0-9_]\)UpdateEnumConst\([(\" ]\):\1updateEnumConst\2:g
s:\([^A-Za-z0-9_]\)UpdateObject\([(\" ]\):\1updateObject\2:g
s:\([^A-Za-z0-9_]\)UpgradeDatabase\([(\" ]\):\1upgradeDatabase\2:g
s:\([^A-Za-z0-9_]\)UpgradeDatabaseTo110\([(\" ]\):\1upgradeDatabaseTo110\2:g
s:\([^A-Za-z0-9_]\)UpgradeDatabaseTo115\([(\" ]\):\1upgradeDatabaseTo115\2:g
s:\([^A-Za-z0-9_]\)UpgradeDatabaseTo118\([(\" ]\):\1upgradeDatabaseTo118\2:g
s:\([^A-Za-z0-9_]\)UpgradeObjectTypeTo110\([(\" ]\):\1upgradeObjectTypeTo110\2:g
s:\([^A-Za-z0-9_]\)UseDatabase\([(\" ]\):\1useDatabase\2:g
s:\([^A-Za-z0-9_]\)Vacuum\([(\" ]\):\1vacuum\2:g
s:\([^A-Za-z0-9_]\)VacuumObjectType\([(\" ]\):\1vacuumObjectType\2:g
s:\([^A-Za-z0-9_]\)Weed\([(\" ]\):\1weed\2:g
s:\([^A-Za-z0-9_]\)WeedDefault\([(\" ]\):\1weedDefault\2:g
s:\([^A-Za-z0-9_]\)WeedDefaultPrivate\([(\" ]\):\1weedDefaultPrivate\2:g
s:\([^A-Za-z0-9_]\)WeedFirstLast\([(\" ]\):\1weedFirstLast\2:g
s:\([^A-Za-z0-9_]\)WeedGET\([(\" ]\):\1weedGET\2:g
s:\([^A-Za-z0-9_]\)WeedMonotonic\([(\" ]\):\1weedMonotonic\2:g
s:\([^A-Za-z0-9_]\)WeedNoneIsNIL\([(\" ]\):\1weedNoneIsNIL\2:g
s:\([^A-Za-z0-9_]\)WeedObjectTypeNameNotSpecial\([(\" ]\):\1weedObjectTypeNameNotSpecial\2:g
s:\([^A-Za-z0-9_]\)WeedPositive\([(\" ]\):\1weedPositive\2:g
s:\([^A-Za-z0-9_]\)WeedSelfNotAssigned\([(\" ]\):\1weedSelfNotAssigned\2:g
s:\([^A-Za-z0-9_]\)WeedSelfNotDeclared\([(\" ]\):\1weedSelfNotDeclared\2:g
s:\([^A-Za-z0-9_]\)WeedTildeOperator\([(\" ]\):\1weedTildeOperator\2:g
s:\([^A-Za-z0-9_]\)add_EMdFValue\([(\" ]\):\1addEMdFValue\2:g
s:\([^A-Za-z0-9_]\)add_eci\([(\" ]\):\1addEci\2:g
s:\([^A-Za-z0-9_]\)add_enum\([(\" ]\):\1addEnum\2:g
s:\([^A-Za-z0-9_]\)add_enum_const_to_cache\([(\" ]\):\1addEnumConstToCache\2:g
s:\([^A-Za-z0-9_]\)add_enum_to_cache\([(\" ]\):\1addEnumToCache\2:g
s:\([^A-Za-z0-9_]\)add_feature\([(\" ]\):\1addFeature\2:g
s:\([^A-Za-z0-9_]\)add_feature_to_cache\([(\" ]\):\1addFeatureToCache\2:g
s:\([^A-Za-z0-9_]\)add_feature_to_cache_if_not_already_there\([(\" ]\):\1addFeatureToCacheIfNotAlreadyThere\2:g
s:\([^A-Za-z0-9_]\)add_mse\([(\" ]\):\1addMse\2:g
s:\([^A-Za-z0-9_]\)add_object\([(\" ]\):\1addObject\2:g
s:\([^A-Za-z0-9_]\)add_object_type_to_cache\([(\" ]\):\1addObjectTypeToCache\2:g
s:\([^A-Za-z0-9_]\)add_stringlist_nodes\([(\" ]\):\1addStringListNodes\2:g
s:\([^A-Za-z0-9_]\)add_value\([(\" ]\):\1addValue\2:g
s:\([^A-Za-z0-9_]\)append_and_subsume\([(\" ]\):\1appendAndSubsume\2:g
s:\([^A-Za-z0-9_]\)append_header\([(\" ]\):\1appendHeader\2:g
s:\([^A-Za-z0-9_]\)append_local_error\([(\" ]\):\1appendLocalError\2:g
s:\([^A-Za-z0-9_]\)big_union\([(\" ]\):\1bigUnion\2:g
s:\([^A-Za-z0-9_]\)calculate_characteristic_string\([(\" ]\):\1calculateCharacteristicString\2:g
s:\([^A-Za-z0-9_]\)calculate_pre_query_string\([(\" ]\):\1calculatePreQueryString\2:g
s:\([^A-Za-z0-9_]\)clear_errors\([(\" ]\):\1clearErrors\2:g
s:\([^A-Za-z0-9_]\)clear_local_error\([(\" ]\):\1clearLocalError\2:g
s:\([^A-Za-z0-9_]\)compare_int\([(\" ]\):\1compareInt\2:g
s:\([^A-Za-z0-9_]\)compare_string\([(\" ]\):\1compareString\2:g
s:\([^A-Za-z0-9_]\)copy_MO\([(\" ]\):\1copyMO\2:g
s:\([^A-Za-z0-9_]\)copy_other\([(\" ]\):\1copyOther\2:g
s:\([^A-Za-z0-9_]\)create_headers\([(\" ]\):\1createHeaders\2:g
s:\([^A-Za-z0-9_]\)decode_feature_name\([(\" ]\):\1decodeFeatureName\2:g
s:\([^A-Za-z0-9_]\)decrease_indent\([(\" ]\):\1decreaseIndent\2:g
s:\([^A-Za-z0-9_]\)delete_contents\([(\" ]\):\1deleteContents\2:g
s:\([^A-Za-z0-9_]\)delete_mos\([(\" ]\):\1deleteMos\2:g
s:\([^A-Za-z0-9_]\)delete_object_type_from_cache\([(\" ]\):\1deleteObjectTypeFromCache\2:g
s:\([^A-Za-z0-9_]\)delete_straws\([(\" ]\):\1deleteStraws\2:g
s:\([^A-Za-z0-9_]\)dump_results\([(\" ]\):\1dumpResults\2:g
s:\([^A-Za-z0-9_]\)dump_results_all\([(\" ]\):\1dumpResultsAll\2:g
s:\([^A-Za-z0-9_]\)emit_attributes\([(\" ]\):\1emitAttributes\2:g
s:\([^A-Za-z0-9_]\)emit_horizontal_line\([(\" ]\):\1emitHorizontalLine\2:g
s:\([^A-Za-z0-9_]\)encode_feature_name\([(\" ]\):\1encodeFeatureName\2:g
s:\([^A-Za-z0-9_]\)encode_feature_name_for_prequery_string\([(\" ]\):\1encodeFeatureNameForPrequeryString\2:g
s:\([^A-Za-z0-9_]\)encrypt_string\([(\" ]\):\1encryptString\2:g
s:\([^A-Za-z0-9_]\)end_tag\([(\" ]\):\1endTag\2:g
s:\([^A-Za-z0-9_]\)enum_const_info:\1EnumConstInfo:g
s:^enum_const_info:EnumConstInfo:g
s:\([^A-Za-z0-9_]\)execute_file\([(\" ]\):\1executeFile\2:g
s:\([^A-Za-z0-9_]\)execute_stream\([(\" ]\):\1executeStream\2:g
s:\([^A-Za-z0-9_]\)execute_string\([(\" ]\):\1executeString\2:g
s:\([^A-Za-z0-9_]\)extend_with_me\([(\" ]\):\1extendWithMe\2:g
s:\([^A-Za-z0-9_]\)feature_type_id_is_ASCII\([(\" ]\):\1featureTypeIdIsASCII\2:g
s:\([^A-Za-z0-9_]\)feature_type_id_is_ENUM\([(\" ]\):\1featureTypeIdIsENUM\2:g
s:\([^A-Za-z0-9_]\)feature_type_id_is_STRING\([(\" ]\):\1featureTypeIdIsSTRING\2:g
s:\([^A-Za-z0-9_]\)fill_gaps\([(\" ]\):\1fillGaps\2:g
s:\([^A-Za-z0-9_]\)gap_exists\([(\" ]\):\1gapExists\2:g
s:\([^A-Za-z0-9_]\)get_DB_error\([(\" ]\):\1getDBError\2:g
s:\([^A-Za-z0-9_]\)get_EMdFValue\([(\" ]\):\1getEMdFValue\2:g
s:\([^A-Za-z0-9_]\)get_EMdFValue_index\([(\" ]\):\1getEMdFValueIndex\2:g
s:\([^A-Za-z0-9_]\)get_Enumeration\([(\" ]\):\1getEnumeration\2:g
s:\([^A-Za-z0-9_]\)get_Next\([(\" ]\):\1getNext\2:g
s:\([^A-Za-z0-9_]\)get_as_EMdFValue\([(\" ]\):\1getAsEMdFValue\2:g
s:\([^A-Za-z0-9_]\)get_as_string\([(\" ]\):\1getAsString\2:g
s:\([^A-Za-z0-9_]\)get_block\([(\" ]\):\1getBlock\2:g
s:\([^A-Za-z0-9_]\)get_block_str\([(\" ]\):\1getBlockStr\2:g
s:\([^A-Za-z0-9_]\)get_block_string\([(\" ]\):\1getBlockString\2:g
s:\([^A-Za-z0-9_]\)get_characteristic_string\([(\" ]\):\1getCharacteristicString\2:g
s:\([^A-Za-z0-9_]\)get_column\([(\" ]\):\1getColumn\2:g
s:\([^A-Za-z0-9_]\)get_comparison_op\([(\" ]\):\1getComparisonOp\2:g
s:\([^A-Za-z0-9_]\)get_compiler_error\([(\" ]\):\1getCompilerError\2:g
s:\([^A-Za-z0-9_]\)get_const_reference\([(\" ]\):\1getConstReference\2:g
s:\([^A-Za-z0-9_]\)get_constraints\([(\" ]\):\1getConstraints\2:g
s:\([^A-Za-z0-9_]\)get_content\([(\" ]\):\1getContent\2:g
s:\([^A-Za-z0-9_]\)get_copy_of_mo\([(\" ]\):\1getCopyOfMo\2:g
s:\([^A-Za-z0-9_]\)get_default\([(\" ]\):\1getDefault\2:g
s:\([^A-Za-z0-9_]\)get_default_password\([(\" ]\):\1getDefaultPassword\2:g
s:\([^A-Za-z0-9_]\)get_default_specification\([(\" ]\):\1getDefaultSpecification\2:g
s:\([^A-Za-z0-9_]\)get_default_value\([(\" ]\):\1getDefaultValue\2:g
s:\([^A-Za-z0-9_]\)get_ec_initialization\([(\" ]\):\1getEcInitialization\2:g
s:\([^A-Za-z0-9_]\)get_ec_name\([(\" ]\):\1getEcName\2:g
s:\([^A-Za-z0-9_]\)get_emdf_value\([(\" ]\):\1getEMdFValue\2:g
s:\([^A-Za-z0-9_]\)get_enum\([(\" ]\):\1getEnum\2:g
s:\([^A-Za-z0-9_]\)get_enum_const\([(\" ]\):\1getEnumConst\2:g
s:\([^A-Za-z0-9_]\)get_enum_id\([(\" ]\):\1getEnumId\2:g
s:\([^A-Za-z0-9_]\)get_enum_name_from_index\([(\" ]\):\1getEnumNameFromIndex\2:g
s:\([^A-Za-z0-9_]\)get_enum_value\([(\" ]\):\1getEnumValue\2:g
s:\([^A-Za-z0-9_]\)get_expression\([(\" ]\):\1getExpression\2:g
s:\([^A-Za-z0-9_]\)get_feature\([(\" ]\):\1getFeature\2:g
s:\([^A-Za-z0-9_]\)get_feature_addition\([(\" ]\):\1getFeatureAddition\2:g
s:\([^A-Za-z0-9_]\)get_feature_assignments\([(\" ]\):\1getFeatureAssignments\2:g
s:\([^A-Za-z0-9_]\)get_feature_comparison\([(\" ]\):\1getFeatureComparison\2:g
s:\([^A-Za-z0-9_]\)get_feature_constraints\([(\" ]\):\1getFeatureConstraints\2:g
s:\([^A-Za-z0-9_]\)get_feature_index\([(\" ]\):\1getFeatureIndex\2:g
s:\([^A-Za-z0-9_]\)get_feature_index_db\([(\" ]\):\1getFeatureIndexDB\2:g
s:\([^A-Za-z0-9_]\)get_feature_index_inst\([(\" ]\):\1getFeatureIndexInst\2:g
s:\([^A-Za-z0-9_]\)get_feature_info\([(\" ]\):\1getFeatureInfo\2:g
s:\([^A-Za-z0-9_]\)get_feature_infos\([(\" ]\):\1getFeatureInfos\2:g
s:\([^A-Za-z0-9_]\)get_feature_name\([(\" ]\):\1getFeatureName\2:g
s:\([^A-Za-z0-9_]\)get_feature_name_from_index\([(\" ]\):\1getFeatureNameFromIndex\2:g
s:\([^A-Za-z0-9_]\)get_feature_names\([(\" ]\):\1getFeatureNames\2:g
s:\([^A-Za-z0-9_]\)get_feature_removal\([(\" ]\):\1getFeatureRemoval\2:g
s:\([^A-Za-z0-9_]\)get_feature_retrieval\([(\" ]\):\1getFeatureRetrieval\2:g
s:\([^A-Za-z0-9_]\)get_feature_type_id\([(\" ]\):\1getFeatureTypeId\2:g
s:\([^A-Za-z0-9_]\)get_feature_value\([(\" ]\):\1getFeatureValue\2:g
s:\([^A-Za-z0-9_]\)get_feature_value_arr_size\([(\" ]\):\1getFeatureValueArrSize\2:g
s:\([^A-Za-z0-9_]\)get_ffactor\([(\" ]\):\1getFFactor\2:g
s:\([^A-Za-z0-9_]\)get_ffeatures\([(\" ]\):\1getFFeatures\2:g
s:\([^A-Za-z0-9_]\)get_first_last\([(\" ]\):\1getFirstLast\2:g
s:\([^A-Za-z0-9_]\)get_focus\([(\" ]\):\1getFocus\2:g
s:\([^A-Za-z0-9_]\)get_fterm\([(\" ]\):\1getFTerm\2:g
s:\([^A-Za-z0-9_]\)get_gap_block\([(\" ]\):\1getGapBlock\2:g
s:\([^A-Za-z0-9_]\)get_gap_vector\([(\" ]\):\1getGapVector\2:g
s:\([^A-Za-z0-9_]\)get_has_single_range_objects\([(\" ]\):\1getHasSingleRangeObjects\2:g
s:\([^A-Za-z0-9_]\)get_id_d\([(\" ]\):\1getId_d\2:g
s:\([^A-Za-z0-9_]\)get_identifier\([(\" ]\):\1getIdentifier\2:g
s:\([^A-Za-z0-9_]\)get_index\([(\" ]\):\1getIndex\2:g
s:\([^A-Za-z0-9_]\)get_index_in_symboltable\([(\" ]\):\1getIndexInSymboltable\2:g
s:\([^A-Za-z0-9_]\)get_index_in_symboltable_entry\([(\" ]\):\1getIndexInSymboltableEntry\2:g
s:\([^A-Za-z0-9_]\)get_int\([(\" ]\):\1getInt\2:g
s:\([^A-Za-z0-9_]\)get_integer\([(\" ]\):\1getInteger\2:g
s:\([^A-Za-z0-9_]\)get_is_computed\([(\" ]\):\1getIsComputed\2:g
s:\([^A-Za-z0-9_]\)get_is_default\([(\" ]\):\1getIsDefault\2:g
s:\([^A-Za-z0-9_]\)get_kind\([(\" ]\):\1getKind\2:g
s:\([^A-Za-z0-9_]\)get_last\([(\" ]\):\1getLast\2:g
s:\([^A-Za-z0-9_]\)get_last_compiler_stage\([(\" ]\):\1getLastCompilerStage\2:g
s:\([^A-Za-z0-9_]\)get_last_kind\([(\" ]\):\1getLastKind\2:g
s:\([^A-Za-z0-9_]\)get_leftmost_object_block_first\([(\" ]\):\1getLeftmostObjectBlockFirst\2:g
s:\([^A-Za-z0-9_]\)get_leftmost_object_type_name\([(\" ]\):\1getLeftmostObjectTypeName\2:g
s:\([^A-Za-z0-9_]\)get_limit\([(\" ]\):\1getLimit\2:g
s:\([^A-Za-z0-9_]\)get_local_error\([(\" ]\):\1getLocalError\2:g
s:\([^A-Za-z0-9_]\)get_max_lengths\([(\" ]\):\1getMaxLengths\2:g
s:\([^A-Za-z0-9_]\)get_max_lengths_all\([(\" ]\):\1getMaxLengthsAll\2:g
s:\([^A-Za-z0-9_]\)get_monad_m_vector\([(\" ]\):\1getMonad_mVector\2:g
s:\([^A-Za-z0-9_]\)get_monad_ms_list\([(\" ]\):\1getMonad_msList\2:g
s:\([^A-Za-z0-9_]\)get_monads\([(\" ]\):\1getMonads\2:g
s:\([^A-Za-z0-9_]\)get_mse_first\([(\" ]\):\1getMseFirst\2:g
s:\([^A-Za-z0-9_]\)get_mse_last\([(\" ]\):\1getMseLast\2:g
s:\([^A-Za-z0-9_]\)get_name\([(\" ]\):\1getName\2:g
s:\([^A-Za-z0-9_]\)get_nr\([(\" ]\):\1getNr\2:g
s:\([^A-Za-z0-9_]\)get_object\([(\" ]\):\1getObject\2:g
s:\([^A-Za-z0-9_]\)get_object_block\([(\" ]\):\1getObjectBlock\2:g
s:\([^A-Za-z0-9_]\)get_object_block_first\([(\" ]\):\1getObjectBlockFirst\2:g
s:\([^A-Za-z0-9_]\)get_object_reference\([(\" ]\):\1getObjectReference\2:g
s:\([^A-Za-z0-9_]\)get_object_reference_index\([(\" ]\):\1getObjectReferenceIndex\2:g
s:\([^A-Za-z0-9_]\)get_object_reference_usage\([(\" ]\):\1getObjectReferenceUsage\2:g
s:\([^A-Za-z0-9_]\)get_object_type_id\([(\" ]\):\1getObjectTypeId\2:g
s:\([^A-Za-z0-9_]\)get_object_type_index\([(\" ]\):\1getOTIndex\2:g
s:\([^A-Za-z0-9_]\)get_object_type_name\([(\" ]\):\1getObjectTypeName\2:g
s:\([^A-Za-z0-9_]\)get_object_type_name_from_index\([(\" ]\):\1getOTNameFromIndex\2:g
s:\([^A-Za-z0-9_]\)get_operator\([(\" ]\):\1get_operator\2:g
s:\([^A-Za-z0-9_]\)get_opt_blocks\([(\" ]\):\1getOptBlocks\2:g
s:\([^A-Za-z0-9_]\)get_opt_ec_initialization\([(\" ]\):\1getOptEcInitialization\2:g
s:\([^A-Za-z0-9_]\)get_opt_gap_block\([(\" ]\):\1getOptGapBlock\2:g
s:\([^A-Za-z0-9_]\)get_output_kind\([(\" ]\):\1getOutputKind\2:g
s:\([^A-Za-z0-9_]\)get_power\([(\" ]\):\1getPower\2:g
s:\([^A-Za-z0-9_]\)get_pre_query_string\([(\" ]\):\1getPreQueryString\2:g
s:\([^A-Za-z0-9_]\)get_rest_of_block_str\([(\" ]\):\1getRestOfBlockStr\2:g
s:\([^A-Za-z0-9_]\)get_result\([(\" ]\):\1getResult\2:g
s:\([^A-Za-z0-9_]\)get_retrieval\([(\" ]\):\1getRetrieval\2:g
s:\([^A-Za-z0-9_]\)get_set\([(\" ]\):\1getSet\2:g
s:\([^A-Za-z0-9_]\)get_sheaf\([(\" ]\):\1getSheaf\2:g
s:\([^A-Za-z0-9_]\)get_string\([(\" ]\):\1getString\2:g
s:\([^A-Za-z0-9_]\)get_table\([(\" ]\):\1getTable\2:g
s:\([^A-Za-z0-9_]\)get_type\([(\" ]\):\1getType\2:g
s:\([^A-Za-z0-9_]\)get_type_id\([(\" ]\):\1getTypeId\2:g
s:\([^A-Za-z0-9_]\)get_value\([(\" ]\):\1getValue\2:g
s:\([^A-Za-z0-9_]\)has_EMPTY_mo\([(\" ]\):\1hasEmpty_mo\2:g
s:\([^A-Za-z0-9_]\)has_NIL_mo\([(\" ]\):\1hasNil_mo\2:g
s:\([^A-Za-z0-9_]\)has_default\([(\" ]\):\1hasDefault\2:g
s:\([^A-Za-z0-9_]\)has_enum\([(\" ]\):\1hasEnum\2:g
s:\([^A-Za-z0-9_]\)has_opt_ec_initialization\([(\" ]\):\1hasOptEcInitialization\2:g
s:\([^A-Za-z0-9_]\)increase_indent\([(\" ]\):\1increaseIndent\2:g
s:\([^A-Za-z0-9_]\)insert_after\([(\" ]\):\1insertAfter\2:g
s:\([^A-Za-z0-9_]\)insert_before\([(\" ]\):\1insertBefore\2:g
s:\([^A-Za-z0-9_]\)is_EMPTY_mo\([(\" ]\):\1isEmpty_mo\2:g
s:\([^A-Za-z0-9_]\)is_NIL_mo\([(\" ]\):\1isNil_mo\2:g
s:\([^A-Za-z0-9_]\)is_NOT\([(\" ]\):\1isNOT\2:g
s:\([^A-Za-z0-9_]\)is_aggregate\([(\" ]\):\1isAggregate\2:g
s:\([^A-Za-z0-9_]\)is_block\([(\" ]\):\1isBlock\2:g
s:\([^A-Za-z0-9_]\)is_block_str\([(\" ]\):\1isBlockStr\2:g
s:\([^A-Za-z0-9_]\)is_empty\([(\" ]\):\1isEmpty\2:g
s:\([^A-Za-z0-9_]\)is_fail\([(\" ]\):\1isFail\2:g
s:\([^A-Za-z0-9_]\)is_feature_comparison\([(\" ]\):\1isFeatureComparison\2:g
s:\([^A-Za-z0-9_]\)is_ffactor\([(\" ]\):\1isFFactor\2:g
s:\([^A-Za-z0-9_]\)is_fterm\([(\" ]\):\1isFTerm\2:g
s:\([^A-Za-z0-9_]\)is_gap_or_opt_gap_block\([(\" ]\):\1isGapOrOptGapBlock\2:g
s:\([^A-Za-z0-9_]\)is_member_of\([(\" ]\):\1isMemberOf\2:g
s:\([^A-Za-z0-9_]\)is_object_block_first\([(\" ]\):\1isObjectBlockFirst\2:g
s:\([^A-Za-z0-9_]\)is_parenthesis\([(\" ]\):\1isParenthesis\2:g
s:\([^A-Za-z0-9_]\)kDB:\1kDb:g
s:\([^A-Za-z0-9_]\)kIN:\1kIn:g
s:\([^A-Za-z0-9_]\)list_has_feature\([(\" ]\):\1listHasFeature\2:g
s:\([^A-Za-z0-9_]\)log_write\([(\" ]\):\1logWrite\2:g
s:\([^A-Za-z0-9_]\)log_write_time\([(\" ]\):\1logWriteTime\2:g
s:\([^A-Za-z0-9_]\)make_constraints\([(\" ]\):\1makeConstraints\2:g
s:\([^A-Za-z0-9_]\)make_empty\([(\" ]\):\1makeEmpty\2:g
s:\([^A-Za-z0-9_]\)make_inst\([(\" ]\):\1makeInst\2:g
s:\([^A-Za-z0-9_]\)mql_append_error\([(\" ]\):\1appendError\2:g
s:\([^A-Za-z0-9_]\)mql_clear_error\([(\" ]\):\1clearError\2:g
s:\([^A-Za-z0-9_]\)mql_execute_file\([(\" ]\):\1mqlExecuteFile\2:g
s:\([^A-Za-z0-9_]\)mql_execute_stream\([(\" ]\):\1mqlExecuteStream\2:g
s:\([^A-Za-z0-9_]\)mql_execute_string\([(\" ]\):\1mqlExecuteString\2:g
s:\([^A-Za-z0-9_]\)mql_get_error\([(\" ]\):\1getError\2:g
s:\([^A-Za-z0-9_]\)mql_prepend_error\([(\" ]\):\1prependError\2:g
s:\([^A-Za-z0-9_]\)mql_set_error\([(\" ]\):\1setError\2:g
s:\([^A-Za-z0-9_]\)object_type_info:\1ObjectTypeInfo:g
s:^object_type_info:ObjectTypeInfo:g
s:\([^A-Za-z0-9_]\)objects_at_Sm\([(\" ]\):\1objectsAtSm\2:g
s:\([^A-Za-z0-9_]\)out_char_data\([(\" ]\):\1outCharData\2:g
s:\([^A-Za-z0-9_]\)prepend_and_take_over\([(\" ]\):\1prependAndTakeOver\2:g
s:\([^A-Za-z0-9_]\)prepend_with_me\([(\" ]\):\1prependWithMe\2:g
s:\([^A-Za-z0-9_]\)print_DTD\([(\" ]\):\1printDTD\2:g
s:\([^A-Za-z0-9_]\)print_DTD_end\([(\" ]\):\1printDTDend\2:g
s:\([^A-Za-z0-9_]\)print_DTD_start\([(\" ]\):\1printDTDstart\2:g
s:\([^A-Za-z0-9_]\)print_XMLDecl\([(\" ]\):\1printXMLDecl\2:g
s:\([^A-Za-z0-9_]\)put_Console\([(\" ]\):\1printConsole\2:g
s:\([^A-Za-z0-9_]\)put_XML\([(\" ]\):\1printXML\2:g
s:\([^A-Za-z0-9_]\)remove_mo\([(\" ]\):\1removeMo\2:g
s:\([^A-Za-z0-9_]\)retrieve_feature_values\([(\" ]\):\1retrieveFeatureValues\2:g
s:\([^A-Za-z0-9_]\)set_Next\([(\" ]\):\1setNext\2:g
s:\([^A-Za-z0-9_]\)set_content\([(\" ]\):\1setContent\2:g
s:\([^A-Za-z0-9_]\)set_delete_result\([(\" ]\):\1setDeleteResult\2:g
s:\([^A-Za-z0-9_]\)set_feature\([(\" ]\):\1setFeature\2:g
s:\([^A-Za-z0-9_]\)set_features\([(\" ]\):\1setFeatures\2:g
s:\([^A-Za-z0-9_]\)set_id_d\([(\" ]\):\1setId_d\2:g
s:\([^A-Za-z0-9_]\)set_is_aggregate\([(\" ]\):\1setIsAggregate\2:g
s:\([^A-Za-z0-9_]\)set_is_computed\([(\" ]\):\1setIsComputed\2:g
s:\([^A-Za-z0-9_]\)set_is_default\([(\" ]\):\1setIsDefault\2:g
s:\([^A-Za-z0-9_]\)set_new_default\([(\" ]\):\1setNewDefault\2:g
s:\([^A-Za-z0-9_]\)set_object_reference_index\([(\" ]\):\1setObjectReferenceIndex\2:g
s:\([^A-Za-z0-9_]\)set_success\([(\" ]\):\1setSuccess\2:g
s:\([^A-Za-z0-9_]\)set_value\([(\" ]\):\1setValue\2:g
s:\([^A-Za-z0-9_]\)sheaf_is_empty\([(\" ]\):\1sheafIsEmpty\2:g
s:\([^A-Za-z0-9_]\)start_new_row\([(\" ]\):\1startNewRow\2:g
s:\([^A-Za-z0-9_]\)start_single_tag\([(\" ]\):\1startSingleTag\2:g
s:\([^A-Za-z0-9_]\)start_tag\([(\" ]\):\1startTag\2:g
s:\([^A-Za-z0-9_]\)unencrypt_string\([(\" ]\):\1unencryptString\2:g
s:\([^A-Za-z0-9_]\)union_with\([(\" ]\):\1unionWith\2:g
s:\([^A-Za-z0-9_]\)update_last\([(\" ]\):\1updateLast\2:g
s:\([^A-Za-z0-9_]\)update_row\([(\" ]\):\1updateRow\2:g
s:\([^A-Za-z0-9_]\)update_value\([(\" ]\):\1updateValue\2:g
s:\([^A-Za-z0-9_]\)zero_fill_string\([(\" ]\):\1zeroFillString\2:g
s:\([^A-Za-z0-9_]\)feature_info:\1FeatureInfo:g
s:^feature_info:FeatureInfo:g
s:\([^A-Za-z0-9_]\)Type\([(\" ]\):\1type\2:g
s:\([^A-Za-z0-9_]\)CType:\1MQLType:g
s:^CType:MQLType:g
s:\([^A-Za-z0-9_]\)Next\([(\" ]\):\1getNext\2:g
s:\([^A-Za-z0-9_]\)Monads\([(\" ]\):\1monads\2:g
s:\([^A-Za-z0-9_]\)ObjectTypeExists\([(\" ]\):\1objectTypeExists\2:g


	
2004-07-16  Ulrik Petersen
	
	* Updated algorithm in configure.in to find path to SUNWspro on
	  Solaris. Now uses type instead of which.

============ 1.2.0.pre77 ============

2004-07-15  Ulrik Petersen

	* Upgraded PCRE to version 4.5.

============ 1.2.0.pre76 ============

2004-07-15  Ulrik Petersen

	* Updated algorithm in configure.in to find path to SUNWspro on
	  Solaris.

	* Removed <T,P> after ~CSmartVector in include/smart_vector.h.
	  This was to remove a warning message on Solaris's C++ compiler.

============ 1.2.0.pre75 ============

2004-07-12  Ulrik Petersen

	* djgpp.mak's now don't add -I../sqlite/src to the CXXFLAGS.

	* include/djgpp.mak now copies ..\sqlite\src\sqlite.h to include.

	* MySQLEMdFConnection::Connect() now prints the output of
	  mysql_error(pConn) on error.  Thanks to Chris Wilson for
	  suggesting this change.

============ 1.2.0.pre74 ============

2004-07-11  Ulrik Petersen

	* Added mqlpars.h and mqlflexr.h to rmfiles.sh.

	* Moved mql_parser.cpp.h to mqlpars.h.

	* Moved MQLFlexLexer.h to mqlflexr.h.

	* The header file emdros_version.h was changed to version_emdros.h
	  in include/Makefile.am, include/Makefile.inc, and
	  include/emdf.h.  This was done so as to satisfy DJGPP's 8+3
	  requirements, since there were several files beginning with
	  emdros~*.

	* The header file emdros_environment.h had its contents moved to a
	  new header file, environment_emdros.h.  However, the
	  emdros_environment.h file still works, since it now just
	  #include's environment_emdros.  This was done so as to satisfy
	  DJGPP's requirements for 8+3 names.

	* Lots of header files and .cpp files (and even .template files
	  and .c files) were changed to #ifdef __DJGPP__ or #ifdef DJGPP
	  to take care of including the right stuff on DJGPP.

	* Added support for DJGPP.  The djgpp/ directory was added, and
	  djgpp.mak files were placed in pcre/ include/ sqlite/
	  sqlite/tool sqlite/src EMdF/ MQL/ src/ and tests/.

============ 1.2.0.pre73 ============

2004-07-09  Ulrik Petersen

	* Removed all of Chris Wilson's stuff from the SWIG Perl
	  interface.  See SWIG/perl/test.pl.in for how to use the new
	  interface.  In particular, CStraw_to_array, the typemap to
	  convert a straw to an array, CTable_to_array, and
	  CTable_get_row_col have been removed.  Also, emdros_types.i has
	  been merged into plemdros.i.

	* Added full SWIG Perl support for CTable and its iterators.

	* Added full SWIG Perl support for sheaf.  All the access
	  functions on CMatched_object, CStraw, CList_of_straw, CSheaf,
	  StrawConstIterator, and SheafConstIterator which access sheaf
	  datastructures now return blessed objects of the right kind.

============ 1.2.0.pre72 ============

2004-07-09  Ulrik Petersen

	* Updated SWIG/perl/test.pl.in to reflect modern times.

	* Added code to SWIG/perl/libmqlperl.i to make SheafConstIterator
	  and StrawConstIterator values returned from the various
	  const_iterator() members into blessed values.

============ 1.2.0.pre71 ============

2004-07-09  Ulrik Petersen

	* (Hopefully) made SWIG Perl bindings work again w.r.t. the
	  CList_of_straws-to-Perl-array function.

2004-07-05  Ulrik Petersen

	* Moved to new implementation of CInstObject which can get m_first
	  without calculation.

	* Optimized R_object_block_first, R_object_block_DB and
	  R_object_block_inst.

	* Moved CInst::is_aggregate into an inline function.

============ 1.2.0.pre70 ============

2004-06-29  Ulrik Petersen

	* Inserted extra SELECT FEATURES FROM OBJECT TYPE [Phalanges]
	  after UPDATE OBJECT TYPE in mqltry.cpp.

	* Bugfix: mqltry.cpp now _really_ does check that the correct
	  default value was added after UPDATE OBJECT TYPE.

	* Bugfix: SQLite UPDATE OBJECT TYPE set default value wrongly when
	  type was STRING and ENUM.  In particular, it did not encode the
	  string with db2string when STRING, nor did it insert the enum
	  const _value_, but rather the enum const _name_ when ENUM.

	* CFeatureUpdate::SymbolExistenceOfFeatures() now reports error
	  messages on error.

	* I had been overly zealous in deleting stuff in
	  CFeatureDeclaration::TypeTypeCompatibility() in case of error.

	* EMdFDB::AddFeatureToOT_gut_or_objects returned true when it
	  should have returned false.  Also removed an obsolete comment.

	* mqltry.cpp now does a more complete job of testing that code to
	  add default value to features (UPDATE OBJECT TYPE) works for all
	  types.

2004-06-28  Ulrik Petersen

	* Expanded EMdFDB::AddFeatureToOT_gut_or_objects() to handle
	  enums.  Also does not add default to ALTER TABLE when it is
	  ASCII or STRING, since MySQL can't handle this.
	
	* mqltry.cpp now tests new code to add default value to features
	  when doing UPDATE OBJECT TYPE.
	
	* mqltry.cpp now tests, for UPDATE OBJECT TYPE, updating with all
	  five kinds of types (ASCII, STRING, ENUM, INTEGER, ID_D).

	* Removed #include <iostream> from mql_helper_classes.cpp.

	* Bugfix: Memory leak fixed in
	  CFeatureDeclaration::TypeTypeCompatibility().  This only
	  occurred in the case of an error in the MQL, but it was a
	  potential security hazard because it could lead to a denial of
	  service attack, by issuing enough MQL queries that were wrong.

	* CFeatureDeclaration::TypeTypeCompatibility() now gives error
	  messages upon failure.

	* Added exec_string_get_string to mqltry.cpp.
	
	* Added test to mqltry.cpp to test for new setting of default
	  value after UPDATE OBJECT TYPE.
	
	* Removed AddFeatureToOT_gut_or_objects from MySQLEMdFDB; it is
	  now in EMdFDB.

2004-06-27  Ulrik Petersen

	* Bugfix: Added code to EMdFDB::AddFeatureToOTgut_or_objects() to
	  give the default value.

	* Bugfix: Added MySQLEMdF::AddFeatureToOTgut_or_objects().  This
	  was because MySQL didn't set the default value even though it
	  was added to ALTER TABLE.  In particular, it inserted NULL for
	  strings, which of course causes problems, since no feature is
	  supposed to be NULL.

============ 1.2.0.pre69 ============

2004-06-26  Ulrik Petersen

	* Changedpage size of SQLite from 16384 to 4096 in
	  sqlite/src/pager.h.

============ 1.2.0.pre68 ============

2004-06-26  Ulrik Petersen

	* Changed page size of SQLite from 4096 to 16384 in
	  sqlite/src/pager.h.

============ 1.2.0.pre67 ============

2004-06-26  Ulrik Petersen

	* Added a new case to AddMSE: If mse to be added is adjacent to
	  the last one, we subsume it at the back.

	* Removed debugging printing to stderr from
	  CSet_of_monad_ms::AddMSE.

============ 1.2.0.pre66 ============

2004-06-25  Ulrik Petersen

	* Changed page size of SQLite from 1024 to 4096.  WARNING!
	  WARNING!  This makes Emdros on SQLite incompatible with previous
	  versions!  If you have any SQLite databases which you wish to
	  preserve, you can use mqldump from a previous version to dump
	  the database and then import it with a version later than
	  1.2.0.pre66.  Or alternatively, change the page size back to
	  1024 in sqlite/src/pager.h.

============ 1.2.0.pre65 ============

2004-06-25  Ulrik Petersen

	* New method of doing sequences on SQLite.  It is probably a good
	  idea (performance-wise; correctness _should_ not be affacted) to
	  issue a VACUUM DATABAZE ANALYSE GO" on each SQLite database you
	  have.

	* Fixed bug in EMdFDB::GetMonadsFromID_Ds: A "_" was missing
	  between OTN and gut_or_monad_ms.

	* Removed all vestiges of std::wstring, HAVE_WSTRING, and
	  HAVE_OSTREAM_OUT_WSTRING.

============ 1.2.0.pre64 ============

2004-06-22  Ulrik Petersen

	* Updates to SWIG/java/win32.mak and SWIG/java/Makefile.inc.

	* Bugfix: CEMdFComparison::make_constraints() now returns the
	  value even in the IN-case.

	* mql_sheap.cpp:copy_MO() now uses static_cast rather than
	  dynamic_cast.  On Windows, we are not compiling with RTTI, and
	  we know what it is anyway, so we might as well use static_cast.

	* The assert(false)-dummy-methods in CMatched_object now return a
	  value to keep Microsoft's Visual C++ compiler happy.

	* Removed a suspicious line in src/win32.mak.

============ 1.2.0.pre63 ============

2004-06-20  Ulrik Petersen

	* Added %include "llist.h" to libemdf* under SWIG/*.

	* Made CSet_of_monad_ms::hasOnlyOneMSE() an inline method.

	* CSet_of_monad_ms::hasOnlyOneMSE() now calls LVlist::lengthIs1().

	* CSet_of_monad_ms now uses SOMIterator instead of
	  MSEList::iterator, and SOMConstIterator instead of
	  MSEList::const_iterator.

	* Added CSet_of_monad_ms::copy_other and used it in
	  copy-constructor and operator=.

	* Used CSet_of_monad_ms::hasOnlyOneMSE() in mql_sheaf.cpp,
	  mql_object_statements.cpp, and mql_helper_classes.cpp instead of
	  (size() ==/!= 1).

	* Added private dummy copy-constructor to LVlist and Llist.

	* Added SOMIterator, but this is not SWIG-exposed.

	* Added erase, insert_before, insert_after, front, and back to
	  value-based linked list, and used them in CSet_of_monad_ms.

	* Made lots of bugfixes to value-based linked list.

	* Replaced SOMConstIterator with value-based linked list's const
	  iterator.  This means that previous() is removed from
	  SOMConstIterator!.

	* Now uses value-based linked list as basis for CSet_of_monad_ms.

============ 1.2.0.pre62 ============

2004-06-20  Ulrik Petersen

	* Added value-based (vs. pointer-based) linked list templates to
	  llist.h.  Right now I don't use them for anything, but hey -- I
	  might.  Also dos2unix'd llist.h.

	* Bugfix: CMOID_M's copy-constructor didn't copy
	  m_object_type_index_focus.

	* Bugfix: Yesterday's bout of coding unexpectedly fixed a bug, now
	  tested for in mqltry.cpp.  The issue is, if you have an object
	  that is discontiguous (i.e., has two monad-ranges), within an
	  outer object, and do this:

	  SELECT ALL OBJECTS WHERE
	  [Outer
	    [Inner]
	    ..
	    [Inner]
	  ]

	  then this is going to give a hit, with two instances of the same
	  Inner object in the sheaf.

	  This has been filed as bug 976070.

2004-06-19  Ulrik Petersen

	* Added Llist::extend_with_me and Llist::prepend_with_me, and used
	  them in CList_of_straws::append_and_subsume and
	  CStraw::prepend_and_take_over.

	* Llist::isEmpty() was renamed to empty().

	* Llist::m_bDeleteContentsAtDestruct was removed, and clear(true)
	  called in the destructor of all classes that have an Llist.

	* Llist::length() was removed, and Llist::lengthIs1() was added.

	* Llist's iterators now take care of the case where the mother
	  list is 0.

	* mql_R.cpp now uses new Llist-based iterators.

	* CMo_nr_list is now based on llist.h.

	* Added CList_of_straws::JoinTakeOver(),
	  CStraw::prepend_take_over().

	* Split CMatched_object into four subclasses: CMOEMPTY_mo,
	  CMONIL_mo, CMOID_M, CMOID_D.  Also added mql_sheaf.h:copy_MO.
	  mql_R.cpp now directly creates one of these subclasses.

	* Made CSheaf a class with no virtual functions.

	* Removed flat sheaf from mql_sheaf.{h,cpp}.

============ 1.2.0.pre61 ============

2004-06-19  Ulrik Petersen

	* Added llist.h to include/Makefile.inc.

	* Added llist.h to %include's in SWIG-libmql*.i.

	* Used llist.h in mql_sheaf.{cpp,h}.

	* Added include/llist.h, which contains some templates for linked
	  lists.

============ 1.2.0.pre60 ============

2004-06-18  Ulrik Petersen

	* Added feature_name IN (enum_const1, enum_const2, ... ,
	  enum_constn) to the ways one can do feature-comparisons in
	  topographic queries.  The underlying SQL is an IN (x,y,z), which
	  is faster than fn = x OR fn = y OR fn = z.

	* Implemented support for IN in CFeature_comparison.

	* Added m_in_enum_list, m_in_enum_const_info_list, and
	  m_in_enum_const_cache to CFeature_comparison.

	* Added kIN to EMdFDB::CanDoComparisonOp().

	* Added new GetEMdFComparison to EMdFDB which returns the new
	  CEMdFComparison with the in_enum_list.

	* Added IN to EMdFDB::eComparisonOp2BackendComparisonOp().

	* Added new constructor to CEMdFComparison which takes a list of
	  enum_const_info's. This is for the new IN construct.

	* Added comments to string_list.h.

	* Moved headers around in mql_R.{cpp,h} and mql_query.{cpp,h} by
	  adding forward declarations.

	* Added kIn to eComparisonOp in emdf_enums.h.

	* Moved eInstOrDB from mql_object.h to mql_enums.h.

2004-06-16  Ulrik Petersen

	* Fixed bug #973797 in
	  mql_select_statements.cpp:CQueryBase::MyExec(): Now returns
	  failed sheaf instead of throwing BadMonadsException when
	  substrate is empty.

============ 1.2.0.pre59 ============

2004-06-10  Ulrik Petersen

	* win32/config.mak.in: Changed drive letter of PGTOP to H: from
	  G:.  This is because my drive letters have changed.

	* PgEMdFConnection::ExecCOPY now doesn't allocate a needless
	  "ExecStatusType status;".

	* CreateObjectsOT_objects_data and CreateObjectsOT_gut_data on
	  MySQLEMdFDB and PgEMdFDB now don't attempt to return a value.
	  They are both void functions.

	* Changed TableRow::size() to return unsigned int.  This was to
	  keep 'CXXFLAGS="-Wall -pedantic"' happy.

	* Removed MySQLEMdFConnection::FetchNextRow().

	* Did a cast in CMatched_object::get_EMdFValue to keep
	  'CXXFLAGS="-Wall -pedantic"' happy.

	* Removed an extraneous ";" in mqltry.cpp which caused a test not
	  to include all that it should.

	* MySQLEMdFDB::SetNextObjectID_DIfNotHigher got a %ld instead of a
	  %d to keep 'CXXFLAGS="-Wall -pedantic"' happy.

	* Made destructor of CSheaf and CFlatSheaf virtual, since both had
	  virtual functions.

	* Fixed bug in EMdFDB::TableExists: It didn't call Finalize.
	  Neither did it retrieve the row if there was one.

	* Updated upgrade.cpp to use the new signature, and also updated
	  the messages.

	* Updated EMdFDB::GetCurrentDatabaseVersion()
	  to have two new parameters:
	  - int& /* out */ nVersionWhichWeCanUpgradeTo
	  - std::string& /* out */ strVersionWhichWeCanUpgradeTo

	  Also changed the logic slightly.
	
	* emdf.h: Changed the #define EMDROS_VERSION_1_1_8_TO_1_1_12 to
	  EMDROS_VERSION_1_1_8_TO_1_1_20.

2004-06-05  Ulrik Petersen

	* Changed the indexes on OT_gut for SQLite.

2004-06-03  Ulrik Petersen

	* MQL grammar now accepts WITH MULTIPLE RANGE OBJECTS in
	  paradigmatic relationship with WITH SINGLE RANGE OBJECTS.  MQL
	  lexer now recognizes "multiple" as well as "single".

	* mqltry now tests that CREATE OBJECT(S) complain on single range
	  objects object type, but monad set not single range.

	* CREATE OBJECTS, CREATE OBJECT FROM MONADS, and CREATE OBJECT
	  FROM ID_Ds now all check whether the object type in question has
	  been declared WITH SINGLE RANGE OBJECTS.  If it has, and the
	  monad set is not a single range, they all complain with a
	  compiler error.

	* Fixed bug 965816 in PgEMdFDB::SetNextObjectID_DIfNotHigher().
	  The problem was that currval('sequence_118_0') was called even
	  though nextval had not been called.  This causes CREATE
	  OBJECT(S) WITH ID_D to fail.

	* Updated emdftry to use the new signatures of methods in EMdFDB
	  which now need a bHasSingleRangeObjects boolean.

	* Added machinery in the MQL library to test for the WITH SINGLE
	  RANGE OBJECTS flag on the object types.

	* Changed the CREATE OBJECT TYPE statement so that it now accepts
	  a "WITH SINGLE RANGE OBJECTS" modifier.  This sets the
	  OT_FLAG_WITH_SINGLE_RANGE_OBJECTS flag when creating the object
	  type.

	* Added to SQLiteEMdFDB:

	  - AddFeatureToOT_gut_or_objects()
	  - DropFeatureFromOT_gut_or_objects()
	  - CreateObjectsOT_gut()
	  - CreateObjectsOT_gut_or_objects()

	* Added to PgEMdFDB and MySQLEMdFDB:

	  - CreateObjectsOT_gut_data()
	  - CreateObjectsOT_gut_or_objects_data()
	  - CreateObjectsOT_gut_DB()
	  - CreateObjectsOT_gut_or_objects_DB()
	
	* Added to EMdFDB:

	  - GetOTHasSingleRangeObjects()
	  - GetOTGutOrObjects()
	  - CreateObjectTypeOT_gut()
	  - CreateObjectTypeOT_gut_or_objects()
	  - AddFeatureToOT_gut()
	  - AddFeatureToOT_gut_or_objects()
	  - DropFeatureFromOT_gut()
	  - DropFeatureFromOT_gut_or_objects()
	  - CreateObjectsOT_gut_data()
	  - CreateObjectsOT_gut_DB()
	  - CreateIndicesOnOTGut()
	  - DropIndicesOnOTGut()
	
	* Added machinery to create and use two versions of the object and
	  monad data: One table, OT_gut, for when
	  OT_FLAG_WITH_SINGLE_RANGE_OBJECTS is set, and the other, the old
	  OT_objects/OT_monad_ms.  This was done throughout EMdFDB and its
	  descendants, wherever either OT_objects or OT_monad_ms were
	  mentioned.

	* Added a column to object_types table: object_type_flags.  At the
	  moment, the only flag is emdf.h:
	  OT_FLAG_WITH_SINGLE_RANGE_OBJECTS.  This flag says that the
	  object type only has objects with a single monad range (e.g.,
	  {1}, {2}, {1-3}, {6-8}, etc.).

	* Emdftry now checks whether EMdFDB::GetSchemaVersion returns a
	  reasonable value.

	* Uses EMdFDB::CreateSchemaVersionTable() in
	  EMdFDB::CreateDatabase().

	* Added to EMdFDB: GetSchemaVersion(), SetSchemaVersion(), and
	  CreateSchemaVersionTable().

	* Added to emdf.h:EMDROS_VERSION_1_2_0_PRE_59 and
	  EMDROS_VERSION_CURRENT.

	* Renamed emdf.h: EMDROS_VERSION_1_2_0 to
	  EMDROS_VERSION_1_2_0_PRE_01_TO_1_2_0_PRE_58.

	* EMdFDB::UpgradeDatabase now checks for the new table,
	  schema_version.

	* Added a table, schema_version, to the schema.

	* Changed base class of CGetMonadsStatement to
	  CObjectTypeStatement, and gave it a Symbol method.

	* Used the new object_type_info in CObjectTypesStatement, and in
	  CDeleteObjectsStatement::ExecOneType(),
	  CDeleteObjectsByMonadsStatement::ExecOneType(),
	  CDropIndexesStatement::ExecOneType(),
	  CCreateIndexesStatement::ExecOneType(), and
	  CSelectObjectsHavingMonadsInStatement::ExecOneType().
	
	* Added EMdF/infos.cpp: object_type_info.

	* Changed EMdFDB::UpgradeObjectType to UpgradeObjectType110.

============ 1.2.0.pre58 ============

2004-05-19  Ulrik Petersen

	* mqltry now tests that CREATE OBJECTS WITH ID_D sets sequence 0
	  correctly.

	* Bugfix: CREATE OBJECTS now sets sequence 0 correctly when using
	  WITH ID_D.  The change was in
	  {EMdFDB,SQLiteEMdFDB}::CreateObjects().  This fixes bug 956770.

	* mqltry now tests that CREATE OBJECT WITH ID_D sets sequence 0
	  correctly.

	* Bugfix: CREATE OBJECT FROM MONADS/ID_Ds now make sure that
	  sequence 0 is set properly when using WITH ID_D.  Both
	  statements now call the new SetNextObjectID_DIfNotHigher
	  whenever the WITH ID_D clause is not absent and does not say say
	  NIL.  This fixes bug 945821.

	* Added
	  {EMdFDB,PgEMdFDB,MySQLEMdFDB,SQLiteEMdFDB}::
	  SetNextObjectID_DIfNotHigher(next_id_d).  The methods update
	  sequence_118_0 so that the next id_d drawn is at least
	  next_id_d.  If the current value is greater than or equal to
	  than next_id_d, then the sequence is not touched.

============ 1.2.0.pre57 ============

2004-05-12  Ulrik Petersen

	* Fixed bugs in mql_sheaf.cpp:CSheaf::print_DTD(): type
	  declaration of element "feature" was not (#PCDATA), as it should
	  have been.  There was an extraneous ">" in the ATTLIST for
	  "feature".

	* Fixed bug in mql_sheaf.cpp:CValueTriple::PrintXML(): When
	  printing the feature, out_char_data should be used, not out.
	  This is because the data is #PCDATA, and as such should have
	  some characters escaped.

============ 1.2.0.pre56 ============

2004-05-01  Ulrik Petersen

	* mqldump now has the following options: --batch-create-objects,
	  --batch-size, --start, --end.  The corresponding functionality
	  has also been implemented.

	* Bugfix: CEMdFValue::ToString() now uses id_d2number_string for
	  ID_Ds.  This is because emdf_ffeatures.cpp uses this function
	  for creating SQL.

	* Bugfix: The CreateObjects machinery now use id_d2number_string
	  rather than id_d2string.  This is because feature-values may be
	  NIL, which we don't want to show up in the SQL as "nil".

	* Added string_func.cpp:id_d2number_string().

============ 1.2.0.pre55 ============

2004-04-24  Ulrik Petersen

	* Reprogrammed PgEMdFConnection::ExecCOPY so that it uses the old,
	  in PostgreSQL 7.4 deprecated, functions for sending
	  copy-information.  This is because I wish to support PostgreSQL
	  7.3.

	* Fixed bug in EMdFDB::add_feature_to_cache_if_not_already_there:
	  It didn't actually add it when it was supposed to, but only in
	  when it was there already.

	* Fixed bug: On PostgreSQL, EMdFDB::Set_min_max_m_from_object_type
	  would set min_m to 0 if an object type had no objects. This was
	  a problem, e.g., when calling DELETE OBJECTS BY MONADS.

2004-04-23  Ulrik Petersen

	* Added string_func.h:char2octal().

	* Added CCreateObjectsStatement.

	* Added CObjectSpecBase, and moved CObjectSpec down as a subclass
	  of it.

	* Added CObjectSpecNoOT.

	* Added EMdFDB::CreateObjects().

	* Added CInstObject constructor which takes a CSet_of_monad_ms*.

	* Added CType::m_enum_value and CType::get_enum_value().

	* Added tests/mqltry.cpp:exec_string_get_long().

	* Added statement CREATE OBJECTS WITH OBJECT TYPE.

2004-04-21  Ulrik Petersen

	* Removed EMdFDB::MakeMonadConstraintsFromSOMmse_first since it
	  has been obsoleted by the bugfix in EMdFDB::DropObjectsInMonads.

        * Fixed bug in EMdFDB::DropObjectsInMonads: Up until now, data
          corruption could occur in the sense that an object's monads
          could be partially deleted, even if the object itself was not
          deleted.  This happened if an object had an MSE outside of the
          MSEs in the monad set to be deleted, as well as an MSE inside
          the MSEs in the monad set.  Now the monads are only deleted iff
          the whole object is to be deleted.

	  Note that this bug was also fixed in the 1.1.19-release, with a
	  ChangeLog entry the same day as this.
 
	* Removed EMdFDB::MakeMonadConstraintsFromSOMMonad_m since it was
	  obsoleted.

	* Removed EMdFDB::GetObjectsInUniverse since it was obsoleted.

2004-04-20  Ulrik Petersen

	* Added MQL/parser1.sed and MQL/Makefile.am support for it.  This
	  is for modifying the mql_parser.cpp that Bison outputs.  For
	  now, parser1.sed only adds a dummy initialization to "YYSTYPE
	  yylval".  This was done because dbx on Solaris complained of a
	  read of an uninitialized memory location upon reading the first
	  keyword in a query.

============ 1.2.0.pre54 ============

2004-04-17  Ulrik Petersen

	* Restored support for Win32, by adding code to MQL/lexer1.sed to
	  take care of a compile problem on Win32.

============ 1.2.0.pre53 ============

2004-04-10  Ulrik Petersen

	* Updated configure.in, src/Makefile.am and tests/Makefile.am to
	  better use EMDFLDADD.

	* Reverted to flex-2.5.4a.  This was because 2.5.31, the default
	  on Debian-sid, had too many problems, as evidenced by its list
	  of open bugs on SourceForge.  In particular, it had a nasty
	  memory leak which caused at least 4 bytes to be leaked every
	  time the scanner had run.
	

2004-04-08  Ulrik Petersen

	* Changed OS.object_id_d to MMS.object_id_d in emdfdb.cpp:GetInst.
	

============ 1.2.0.pre52 ============
	
2004-04-07  Ulrik Petersen

	* The "emdf" database now no longer needs to be created. Instead,
	  both MySQL and PostgreSQL resort to tricks when asked to connect
	  to the emdf database.  

 	  For MySQL, the tricks involve (re-)connecting with the database 
	  name set to NULL. This means there is no database associated with
	  the connection.

	  For PostgreSQL, when asked to connect to the "emdf" database, it
	  now connects to the "template1" database, which every PostgreSQL
	  database installation has.

	  SQLite has never needed an "emdf" database.

	* MySQLConnection now has two new private members: Connect() and
	  ShutdownConnection().

	* MySQLConnection::CommitTransaction now no longer prints a
	  warning on stderr.

	* mqltry now explicitly tests connecting to the emdf "database".

	* mql.cpp, manage_indices.cpp, upgrade_db.cpp, emdftry.cpp, and
	  mqltry.cpp have a new message for when connection is not OK.
	  This points users to http://emdros.org/whattodo2.html, and is
	  simpler than the previous message.

============ 1.2.0.pre51 ============

2004-04-07  Ulrik Petersen

	* Changed initial DB in manage_indices and upgrade_db away from
	  "emdf" to the database that is going to be managed or upgraded.

============ 1.2.0.pre50 ============

2004-04-05  Ulrik Petersen

	* Upgraded to SQLite version 2.8.13.

============ Version 1.2.0.pre01 to 1.2.0.pre49 ===========
	
	*** Bugfixes ***

	- The hexadecimal and octal conversions in the MQL lexer (in
	  "double quoted strings, like \xa0 and \377") did not work.  This
	  has been fixed.

	-
	  MQL/mql_object_type_statements:CUpdateObjectTypeStatement::Exec()
	  didn't commit the transaction it had started.  It does now.

	- EMdFDB::UpdateEnumConst() still believed that an enumeration
	  constant was unique among all enumerations.  This is no longer
	  the case, so the part that updates the cache has been fixed.

	- All backends now correctly handle escaping of ASCII strings. To
	  that end, a virtual function was added to all EMdFDB classes:
	  EscapeStringForSQL(), which either uses the backend's escape
	  function (in the case of PgSQL and MySQL) or a custom-written
	  function (in the case of SQLite).

	- mysqlemdfdb.cpp:EscapeStringForSQL now uses regular cast to
	  MySQLEMdFConnection instead of dynamic cast. This caused an
	  exception on Visual C++.

	- emdfdb.cpp:EscapeStringForSQL now returns something, even if
	  this is only to fool the compiler.

	- CMatched_object::copy_other now also copies the EMdF values if
	  they are present.

	- string_func.cpp:is_other_than_whitespace() was buggy: If the
	  string started with whitespace, it would return false, even if
	  the rest of the string was not white-space.  This resulted in
	  the following: If a query started with whitespace and had no GO
	  at the end, the query would not execute.

	- Removed $(DESTDIR)/ from mylibdir in sqlite/src so that one can
	  actually use Automake's DESTDIR machinery.

	- SheafConstIterator and SheafIterator both segfaulted if taken
	  from a failed sheaf. This has been fixed.
	
	
	*** Enhancements ***

	- Added BEGIN TRANSACTION, ABORT TRANSACTION, and COMMIT
	  TRANSACTION statements.

	- src/mqldump.cpp now issues BEGIN TRANSACTION and COMMIT
	  TRANSACTION statements every 1000 objects, unless the
	  --no-create-transactions switch is used.

	- Added DROP INDEXES and CREATE INDEXES statements.  

	- src/mqldump now issues DROP INDEX and CREATE INDEX statements
	  before and after dumping the object data of an object type.

	- Emdros on MySQL can now do a VACUUM DATABASE statement.

 	- Speed and memory improvement: Now the features which are checked
 	  already in the backend in the pre_query_string are not
 	  put into the Inst, unless they need to be checked again.

	- Speed improvement for GET FEATURES: The Symbol stage no longer
	  checks whether the ID_Ds exist in the object type.

	- Speed improvement: GET FEATURES is now quicker when there are
	  many consecutive ID_Ds in the list:

	  - Added CID_D::ExecMakeSOM()

	  - Added EMdFDB::GetFeatures/GetFeaturesByQuery which take a set
	    of "monads" (i.e., object id_ds) in addition to a list of
	    object id_ds.

	  - Split the execution of the query in GetFeaturesByQuery into
	    GetFeaturesByQueryExec, since it was shared between the old
	    (non-som) GetFeaturesByQuery and the new one.  The original
	    rationale for this was later voided, since the old (non-som)
	    GetFeaturesByQuery was removed.  However, it is still good to
	    split them up, since the functions are rather long already.

	  - Changed EMdFDB::GetComputedFeatures so that it takes a set of
	    id_ds ("monad set") rather than a list of id_ds.
	
	- Speed improvement: GET MONADS is now faster when there are lots
	  of consecutive id_ds.  This is using the same technique as with
	  GET FEATURES of using a set of "monads" (i.e., object id_ds).
	
	- Added ability to get features into sheaf by means of the GET
	  clause.

	- Speed improvement: monad_ms_id has been taken out of OT_objects
	  and OT_monad_ms.  This causes a speed improvement.  monad_ms_id
	  was useless anyway, since it was never used.  Moreover, the
	  object_id_d in OT_monad_ms could do the job of monad_ms_id
	  equally well.

	- Speed improvement on SQLite: SELECT OBJECTS HAVING MONADS IN is
	  now faster if there is only one monad-range.  This was
	  accomplished by adding CSet_of_monad_ms::hasOnlyOneMSE() and
	  simplifying the WHERE clause in
	  EMdFDB::GetObjectsHavingMonadsInMonadSet().

	- Speed improvement: SELECT OBJECTS HAVING MONADS IN is now faster
	  if there are more than 100 monad-ranges.  This was accomplished
	  by upping the break-down rate from 100 MSEs per SQL query to
	  200.

	- Speed improvement: Many topographic queries are now faster
	  because of a simple technique in EMdFDB::GetInst: If the
	  boundaries of the substrate are within 20% of the all_m-1
	  boundaries, then we don't produce any WHERE conditions on the
	  monads.  See the comments in the sources for why this is a good
	  idea.

	- Speed improvement: mql_utility.cpp:Restrict now uses the new
	  CSet_of_monad_ms:RemoveMSE(monad_m, monad_m).

	- Speed and memory improvement: Skip lists were implemented for
	  CInst, in place of the std::multimap that was used.  In
	  addition, an arena memory allocator was implemented.  This led
	  to a quite substantial reduction in memory consumption, and an
	  increase in topographic query speed of 5-10%.
	
	- Dropping a feature using UPDATE OBJECT TYPE now drops the column
	  from the OT_objects table.

	- mqltry now tests REMOVE feature_name in UPDATE OBJECT TYPE.

	- Removed size-restrictions on strings (STRING and ASCII) by
	  introducing emdf.h:#define SQL_TEXT_TYPE.

	  - removed emdfdb.h:encode_feature_type_id
	  - removed emdfdb.h:decode_feature_type_id
	  - removed length parameter from CType
	  - removed CType::(type, string_length)
	  - removed CType::WeedStringLength
	  - removed CFeatureDeclaration::WeedStringLength
	  - removed emdf.h:#define MAX_STRING_LENGTH

	- The MQL grammar now uses left-recursion rather than
	  right-recursion for the AND production in the ffeatures
	  hierarchy.  This means no more stack overflows from this source.
	  In addition, mql_execute.cpp now checks for the "stack overflow"
	  return value from the bison parser, and issues an error if it
	  detects stack overflow.

	- GET FEATURES now returns the label rather than the value for
	  enumeration features.

	- Added set_value and set_is_default to enum_const_info.

	- CREATE/USE/DROP DATABASE can now take a T_STRING in addition to
	  a T_IDENTIFIER for its database name.  On PostgreSQL and MySQL,
	  it must still be an identifier, but on SQLite, this means you
	  can give the full path, and non-identifier database filenames.

	- Speed and memory usage improvement:

	  - CInstObject and CSet_of_monad_ms now directly store the set of
	    monads if it only consists of one monad stretch (including
	    only one monad).  This saves a lot of memory (up to around 26%
	    in some test queries), and therefore speeds things up.

	  - CInstObject now has first() and last() methods.

	  - CMatched_object::get_monads and CInstObject::get_monads now
	    return a full set of monads instead of just a const reference
	    to a set of monads.

	  - CInstContents and CInst now have a bool m_is_frozen, which is
	    set by fillingIsDone(), which is called from
	    EMdFDB::GetInst().

	  - CInstContents now store the end of the m_map_by_monad_m
	    locally, rather than calling m_map_by_monad_m::end() all the
	    time.  CInst call CInstContents::end() rather than accessing
	    m_map_by_monad_m directly.

	  - CSet_of_monad_ms::size() has been added, allowing us to see
	    how many stretches there are.

	  - CInst::add_object now takes a first/last monad.

	  - CList_of_straws::delete_straws and CStraw::delete_mo now check
	    for emptiness before deleting.

	- Two new switches added to configure: --disable-mo-oid and
	  --disable-mo-values.  The default is --enable-..., which doesn't
	  change the behavior from what has previously been available.

	  - --disable-mo-oid disables the object id_d in a matched object.
	    This saves RAM if you aren't really interested in what ID_D
	    was there.

	  - --disable-mo-values disables the list of EMdF values in the
	    matched object which you could have filled with feature-values
	    if you had used GET in a topographic query.  If you choose
	    --disable-mo-values, the weeder will tell you if you use GET
	    in a topographic query.

	  The relevant entries in emdros-lconfig.h are
	  DISABLE_MATCHED_OBJECT_ID_D and DISABLE_MATCHED_OBJECT_VALUES.
	  You can set them to 1 yourself if compiling on Win32.  In that
	  case, use the relevant lconfig file in win32/.

	- As of 1.2.0.pre31, SQLite has a new way of creating (and
	  dropping) indexes on OT_monad_ms.  In particular, OT_mm_mf_i and
	  OT_mm_ml_i have been replaced by the double index
	  OT_mm_monads_i, which indexes both mse_first and mse_last.  This
	  leads to speedups on SELECT OBJECTS HAVING MONADS IN.

	  If you have any SQLite databases created with Emdros before
	  1.2.0.pre31, you should do "manage_indices --drop" on the
	  database using a version older than 1.2.0.pre31, and then
	  "manage_indices --create" on the database with the current
	  version.

	- As of 1.2.0.pre46, regexes are non-anchored.

	- As of 1.2.0.pre48, two CSheaf::getSOM() methods have been added,
	  which let you obtain the monads of a sheaf.
	
	*** Misc changes ***

	- AccessTuple has been simplified in the various DB connections.
	
	- The Java SWIG files are now in a package called jemdros.  This
	  was necessary because sometimes, Java packages cannot use code
	  that is not also in another package.

	- Moved EMdFDB::GetNextID and EMdFDB::CreateSequenceTables118()
	  into the respective subclasses.
	
	- The following are now virtual:

	  - EMdFDB::Vacuum()
	  - EMdFDB::BeginTransaction();
	  - EMdFDB::CommitTransaction();
	  - EMdFDB::AbortTransaction();

	- Added EMdFDB::CreateObjectTypeOT_objects().
	
	- Added EMdF/string_list.cpp and include/string_list.h.  Used it
	  in various places in the MQL grammar.

	- (July 8, 2003) Removed CBBFList and CObjectTypeName, along with
	  their grammar rules (i.e., all the buildable_from/covered_by
	  machinery.)

	- Removed support in EMdFDB for covered_by and buildable_from.
	
	- Removed covered_by/buildable_from from mqltry.cpp and
	  emdftry.cpp.

	- Added sheaf_return_type_pair.

	- CMQL_exeuction_environment's m_object_type_names and pEmptySheaf
	  have become static members.  Therefore, a number of member
	  functions no longer needed a CMQL_execution_environment as a
	  parameter.  These include:

	  - All of the put_XML/put_Console members of the sheaf family of
	    classes.
	  - CMatched_object::getObjectTypeName()
	  - CMQLResult::Print()

	- Added MQL/mql_object_type_statements.cpp:CObjectTypesStatement.
	  This is now used for the base class of CDeleteObjectsStatement
	  and CSelectObjectsHavingMonadsIn.  Accordingly, the classes
	  which derive from CDeleteObjectsStatement have been refactored.

	- Added include/emdf_ffeatures.h and EMdF/emdf_ffeatures.cpp.
	
	- Moved emdf_value.cpp:eComparisonOp2SQLString() to
	  EMdFDB::eComparisonOp2BackendComparisonOp().

	- Added EMdFDB::CanDoComparisonOp().

	- Added EMdFDB::GetEVkindFromTypeID_D().

	- Added the following to EMdFDB:

	  - GetEMdFComparison().
	  - GetEMdFFFactor(*).
	  - GetEMdFFTerm()
	  - GetEMdFFFeatures()

	- mql_query.cpp now uses emdf_ffeatures.cpp.

 	- mql_object.cpp now is split into an Inst and a DB part.
	
	- Added SymbolAddToObject() and AddEMdFValue() to CFeature.

	- Added EMdFDB.cpp:feature_type_id_is_ENUM().

	- Added static members m_enum_names and m_feature_names to
	  CMQL_execution_environment, along with getting and
	  adding-members.

	- src/upgrade_db.cpp now gives hints for how to upgrade if
	  upgrade_db can't do the job.

	- Cleanups have been done in how some headers are (not!) included
	  anymore.

	- Added include/emdf_enums.h.

	- Added include/mql_enums.h.

	- Removed segment support.  Segments were a broken concept all
	  along.  I have replaced it with arbitrary monad sets.

	  - USING SEGMENT clauses have been removed from statements which
	    query topographically.

	  - SELECT SEGMENTS and DROP SEGMENT are gone.

	  - CREATE OBJECT doesn't check segment boundaries

	  - mqldump can't dump segments.

	  - mqldump can dump arbitrary monad sets

  	  The following has been retained for backwards compatibility:

	    - CREATE SEGMENT

	  This is because CREATE SEGMENT is likely to occur in MQL dumps
	  from previous database versions.  It has been implemented as a
	  call to CREATE MONAD SET.

	- Implemented CSelectMonadSets, CGetMonadSets, CCreateMonadSet,
	  CUpdateMonadSet, CDropMonadSet.

	- SELECT (ALL|FOCUS) OBJECTS now accepts a new IN clause, which
	  specifies an arbitray monad set as an identifier.
	
	- Removed the following functions:

	  - EMdFDB::DatabaseExists()

	  - CCreateObjectStatement::Monads()

	  - CCreateSegmentStatement::Symbol()

	- Moved CMonadSetElement::WeedPositive() and
	  CMonadSetElement::WeedMonotonice() into a
	  CMonadSetElement::Weed() method, and made both private.

	- Moved pConn->Finalize() into DEBUG_ACCESS_TUPLE_FAILED and
	  DEBUG_NULL_VALUE_EXCEPTION.

	- Differentiated DEBUG_QUERY_FAILED into DEBUG_SELECT_QUERY_FAILED
	  and DEBUG_COMMAND_QUERY_FAILED.  Added pConn->Finalize() to
	  DEBUG_SELECT_QUERY_FAILED.

	- Removed a number of EMdFDB interface methods which were no
	  longer in use.

	  - EMdFDB::GetFeatures(...id_d, list-of-strings)
	  - EMdFDB::GetFeatures(...list-of-id_ds, list_of_strings)
	  - EMdFDB::GetFeaturesByQuery(...list-of-id_ds, list-of-string)

	- Added copy-constructor to enum_const_info.

	- Changed interface of EMdFDB::CreateEnumConst to also have the
	  enumeration name.

	- Changed interface of
	  CEnumerationStatement::SymbolEnumerationExists to take a boolean
	  to say whether to report the error.

	- mqltry now checks that you cannot CREATE ENUMERATION with two
	  identically valued labels.

	- mqltry now checks that you cannot update an enumeration so that
	  two labels have the same value afterwards.

	- Added EMDFDB::LoadEnumConstantsIntoCache().

	- Added is_identifier to EMdF/string_func.cpp, tested it in
	  tests/emdftry.cpp.

	- Added CDatabaseStatement::Symbol(), which checks whether the
	  database name is OK. It must be an identifier on PostgreSQL and
	  MySQL.  Also added EMdFDB::DatabaseNameIsOK(), and its
	  SQLiteEMdFDatabase equivalent.

	- Added CTable::equals() and TableRow::equals().

	- mqltry tests that escaping of strings works correctly.

	- Added comment to conn.h about not chasing rabbit trails by
	  trying to be clever and return the values from AccessTuple
	  rather than passing them as parameters.

	- win32/win32.mak now adds config.mak to the doc directory in the
	  distribution.

	- mql_get_query.lxx now eats up comments.

	- Added support for gcc 2.95 (e.g., Debian Woody).  This was done
	  by checking for istream and ostream in configure.in, and then
	  conditionally including {i,o}stream/{i,o}stream.h where needed.

	- SWIG must now be version 1.3.21.  This was done by checking for
	  this version in configure.in, and by adding
	  jemdrosConstants.java to SWIG/java/Makefile.inc.

	- build.sh.in: Added support for Mandrake.

	- Added SWIG_EXE to win32\config.mak.in, using it in
	  SWIG\java\win32.mak and SWIG\python\win32.mak.

- *** Version 1.1.15 ***
	
2004-03-06    <upet01>

	* Bugfix: Changed MQL/mql_query.cpp:CFTerm::make_constraints and
	CFFeatures::make_constraints: In a positive context, A AND B is
	allowed to have only one if either is not prequeriable.  In a
	positive context, A OR B would not be prequeried at all if either
	one was not prequeriable.  In a negative context, the roles of AND
	and OR are reversed.


	
	

- *** Version 1.1.14 ***

	*** Bugfixes ***

	- If a query started with whitespace and had no GO at the end, the
	  query would not be executed.  This was due to a buggy
	  EMdF/string_func.cpp:is_other_than_whitespace().  This has been
	  fixed.

	- The hexadecimal and octal conversions in the MQL lexer (in
	  "double quoted strings, like \xa0 and \377") did not work.  This
	  has been fixed.

	- mql_object_type_statements:CUpdateObjectTypeStatement::Exec()
	  didn't commit the transaction it had started.  It does now.

	- mql_get_query.lxx did not remove comments.

	
	*** Enhancements ***
	
	- Speed improvement for GET FEATURES: The Symbol stage no longer
	  checks whether the ID_Ds exist in the object type.

	- Speed improvement: SELECT OBJECTS HAVING MONADS IN is now faster
	  if there are more than 100 monad-ranges.  This was accomplished
	  by upping the break-down rate from 100 MSEs per SQL query to
	  200.

	
	
	
- *** Version 1.1.13 ***

	*** Bugfixes ***

	- You couldn't search for STRING features with any of the
	  following operators: =, <, >, <=, >=, <>.  ASCII features worked
	  fine, and so did the regular expression operators.


- *** Version 1.1.12 ***

	*** Bugfixes ***

	- UPDATE ENUMERATION CONSTANT would fail or malfunction for
	  removing and updating constants which had the same
	  case-insensitive constant name as another constant in the same
	  enumeration, at least on MySQL.  For example, if the following
	  had been done:

	  CREATE ENUMERATION sploinks_t {
	    WXQt = 132, 
	    WxQt = 142,
            WXYq = 131,
            WxYq = 141,
  	  } GO

	  and the the following would have been done:

	  UPDATE ENUMERATION sploinks_t {
            remove WxQt
	  } GO

	  then both WxQt and WXQt would have been removed (at least on
	  MySQL).  Similarly, if the following would have been done:

	  UPDATE ENUMERATION sploinks_t {
            update WxYq = -2
	  } GO

	  then the function would have failed with an index error due to
	  the restriction (on MySQL) that enumerations which are
	  case-insensitively equivalent in their constant names must have
	  different values.

	  Both of these problems have been solved by updating
	  EMdFDB::DropEnumConst and EMdFDB::UpdateEnumConst to also take
	  the current value as a parameter.

	  This is part of the effort in this release to make enumeration
	  constants case-sensitive.

	- src/mqldump.cpp had the wrong --help messages for all the
	  "--no-create-*" options: The helps said "Do" when they meant
	  "Don't."  This has been fixed.

	- EMdF/emdfdb.cpp:GetInst now doesn't allocate an empty
	  pFeature_values array of CEMdFValue's when no_of_features_to_get
	  == 0.

	
	*** Enhancements ***

	- Can now compile SWIG support for Java and Python on Win32.
	
	- Less memory consumption due to new CEMdFValue layout (with a
	  union), and a new CInstObject vector of CEMdFValue (rather than
	  std::vector<CEMdFValue*>).

	- Enumeration constants are now case-sensitive.  At the same time,
	  CTable::find() (both kinds) now have an extra parameter:
	  bCompareCaseInsensitively, which tells the find procedure
	  whether to compare with our without case.  At the same time,
	  EMdF/string_func.cpp has a new function: strcmp_case().
	
	- Enabled feature_retrieval clause in object_block(_first).  Now
	  one can GET feature_list from within an object_block(_first) and
	  get them into the sheaf.  (Well almost; the parser-machinery is
	  in place; the rest will follow...).

	- Speed improvement: Since we recently learned that the size() on
	  a list is O(n), we have changed a number of places where
	  SomeList.size() == 0 and SomeList.size() > 0 to use empty(),
	  which is O(1).

	- Speed improvement: EMdF/emdf_output.cpp:CEMdFOutput::newline()
	  now uses "<< '\n'" rather than "<< std::endl", since the latter
	  flushes the output buffer as well as writing a newline.  This
	  caused slow performance with tables and XML output.  Sheaves
	  weren't affected that much, since they used '\n' themselves
	  rather than CEMdFOutput::newline().  Also, mqldump(1) has been
	  updated accordingly, which gives a noticeable performance
	  improvement.

	- Speed improvement: std::ios::sync_with_stdio(false) is now
	  called in the CEMdFOutput constructor.  This causes the C++
	  library (at least on Linux) not to interleave C and C++ output,
	  which causes a performance increase (at least on Linux).  See
	  B. Stroustrup, "The C++ Programming language", 3rd edition,
	  p. 651.

	- Speed improvement: EMdFDB::Type_id_to_string() and
	  EMdFDB::Type_id_to_TableColumnType now use EMdFDB::EnumExists
	  rather than querying the database directly.  This means that the
	  enum cache is used if filled.  This is especially noticeable
	  with mqldump(1).

	
	*** Miscellaneous changes ***

	- emdftry and mqltry have been updated because of the move towards
	  case-sensitive enumeration constants.

	- Since CEMdFOutput::newline() no longer flushes the buffer, we
	  have inserted pEE->pOut->flush() calls at appropriate places in
	  MQL/mql_execute.cpp.

	- EMdF/monads.cpp:Print_MSE and Print_SOM have been removed.

	- Cleanups have been done in the way C headers are (not) imported
	  (any longer).

	- Cleanups have been done in the way <iostream> is included.

	- EMdF/Makefile.am no longer compiles and distributes
	  smart_vector.cpp, since it was just an empty .cpp file that
	  #include'd <smart_vector.h>.

	- win32/win32.mak now has a "dist" target which produces an Emdros
	  distribution ZIP file.

	- Added include/emdros-version.h.in.

	- Renamed CEMdFValue::get_as_string to CEMdFValue::ToString,
	  giving it a new signature.
	
	
- *** Version 1.1.11 ***

	*** Bugfixes ***

	- MQL/mql_sheaf.cpp:CMatched_object::get_monads() used to assert
	  if kind was kMOKID_D.  This has been fixed.

	- EMdF/emdfdb.cpp:feature_type_id_is_STRING() did not return
	  correct results if the feature was an enum.  This has been
	  fixed.

	  This was a problem if the enum queried was the first thing that
	  had been created in the database.  It resulted in obscure errors
	  with, among other MQL statements, GET FEATURES.

	- EMdF/emdfdb.cpp:EMdFDB::GetFeatures() for a single object id_d
	  and CEMdFValue's had a bug whereby its SQL queries were
	  malformed with respect to commas.  This has been fixed.

	- MQL/mql_symboltable.cpp: CMQLSymbolTableEntry::set_features()
	  incremented index twice in each loop.  This has been fixed.

	- MQL/mql_object.cpp:CMQLObject::get_feature_names() used to sort
	  the string-vector.  This caused problems when object blocks
	  returned the same features, but in different orders.

	- MQL/mql_query.cpp:get_characteristic_string() now doesn't sort
	  feature-names (i.e., make them into a set before adding).  This
	  caused problems when object blocks returned the same features,
	  but in different orders.

	- libpcre_emdros.a was not installed.  It now is.

	- libpcre_emdros is now available as a shared library as well as a
	  static library.  This was because libtool complained that
	  linking a library against a static library was not portable.

	- The following files are now packaged in the SWIG RPMs:

	  - EmdrosPerl.la
	  - EmdrosPy.la
	  - EmdrosRuby.la

	  They weren't before.

	- Memory leak: CSmartVector::add_value now has a bool& bWasAdded
	  parameter, making it possible for callers to distinguish between
	  situations where the value was added or not.  This led to
	  possible memory-leaks before.  This has been taken advantage of
	  in the following files, for deleting the string if not used:

	  - MQL/mql_query.cpp
	  - MQL/mql_symboltable.cpp
	  - MQL/mql_execution_environment.cpp

	- Memory leak: CMQLSymbolTable::m_vec_object_block used to be
	  initialized with a (false) parameter in CMQLSymbolTable's
	  constructor.  This caused memory leaks, since the StrCOBCPair's
	  were not deleted.

	- Memory leak: CMQLObject::retrieve_feature_values(/* CInstObject
	  */) did not delete the previous value.  This caused memory
	  leaks.

	- Memory leak: MQL/mql_query.cpp:CValue's destructor failed to
	  delete m_emdf_value.  This has been fixed.

	- Memory leak: MQL/mql_object.cpp:CMQLObject destructor failed to
	  delete the CEMdFValue objects in m_feature_value_vec.  This has
	  been fixed.
	
	- CInstObject's constructor has a reference to
	  std::vector<CEMdFValue*>, which was passed to the
	  copy-constructor of CInstObject::m_feature_values.  This caused
	  memory leaks.  Now, CInstObject's constructor copies the
	  parameter's contents to m_feature_values "by hand".
	
	- EMdF/mysqlconn.cpp: MySQLConn::ConnectionOk() used to use
	  mysql_errno instead of mysql_ping.  This caused ConnectionOk()
	  to return false if the last SQL statement had failed, which is
	  not the intended semantics of ConnectionOk().

	- MQL/mql.yxx has been fixed so that opt_string_length returns
	  MAX_STRING_LENGTH rather than 255 when empty.  Since 255 >
	  MAX_STRING_LENGTH on MySQL, this was a problem when doing
	  something like the following on MySQL:

  	  CREATE OBJECT TYPE
	  [Word
              surface : ASCII; // this used to generate an error
	      lemma : STRING; // and this did, too
	  ]

	- JAVAC was not set with the full path in configure.in if javac
	  could be found in the path.  This caused problems for people
	  with multiple java installations.

	- EMdF/emdfdb.cpp:EMdFDB::CreateSequenceTables118() failed to
	  commit transaction if started.  This has been fixed.

	- src/mql.cpp would return 7 upon success when executing cin.  It
	  should return 0.  This has been fixed.

	- EMdF/mysqlconn.cpp:MySQLEMdFConnection constructor now uses
	  ConvertDBName() on the db parameter.  Otherwise, the db
	  parameter had to be normalized before being used, or the backend
	  would not connect.

	- MQL/mql_get_query.cpp now obeys escaped characters within
	  "double-quote strings", so for example, "\"Processes" no longer
	  causes an error.

	- EMdF/emdfdb.cpp:EMdFDB::UseDatabase is now called from the
	  derived classes' UseDatabase, and now cleans out the tables and
	  maps inside EMdFDB.

	- EMdF/emdfdb.cpp:EMdFDB::Set_min_max_m_from_object_type() would
	  fail if an object type was empty (i.e., had no objects).  This
	  was because the SELECT MIN(mse_first), MAX(mse_last) SQL
	  statement would return NULL values for empty object types, and
	  the EMdFDB machinery was not prepared for NULL values.
	  Accordingly, a new exception was added:
	  include/conn.h:EMdFNULLValueException.  This was used in
	  include/pgconn.h and include/mysqlconn.h in all of the
	  AccessTuple methods.  At the same time, the fall-back
	  AccessTuple methods in EMdF/conn.cpp were removed, and the
	  methods made virtual in include/conn.h.  All of the methods in
	  EMdF/emdfdb.cpp which used the AccessTuple machinery were
	  protected with try...catch blocks.
	
	
	*** Enhancements ***

	- CEmdrosEnv class added.

	- Speed improvement: The AccessTuple machinery for
	  PgEMdFConnection and MySQLEMdFConnection has been updated.  This
	  causes speed improvements on both platforms, about 30% on
	  PostgreSQL and about 50% on MySQL.  At the same time, pgconn.h
	  and mysqlconn.h are no longer installed, since they are strictly
	  not necessary for compiling your own programs.

	- Speed improvement:: EMdFDB::GetFeatures(/* single id_d */) now
	  uses a new method for accessing the results, which results in
	  speed improvements on some topographic queries.

	- Speed improvement: object reference usages are now able to take
	  advantage of the insts, rather than always querying the backend.
	  This causes speedups on some queries.

	  In order to do this, the following changes were made:

	  - MQL/mql_R.cpp:R_object_reference_declaration() was split into
	    R_object_reference_declaration_DB() and
	    R_object_reference_declaration_inst().

	  - MQL/mql_symboltable.cpp:CMQLSymbolTable now stores the object
	    block along with the symbol table entry, at the same index.

	  - MQL/mql_query.cpp:CObject_block_common::Symbol now causes its
	    own this pointer to be stored in the symboltable.

	  - MQL/mql_query.cpp:CObject_reference_usage::Symbol now adds its
	    feature-name to the CMQLObject in the object block in which
	    the object reference was declared.

	- Speed improvement: EMdFDB::GetObjectsHavingMonadsInMonadSet now
	  adds an extra WHERE condition on the first and last monads in
	  the monad set to look for.  This speeds up querying by at least
	  a factor of 33 for queries with 500 monad set elements in the
	  set of monads (433 seconds before, now 13 seconds).

	- Speed improvement: EMdFDB::GetObjectsHavingMonadsInMonadSet has
	  been split up into two member functions, in order to split up
	  the set of monads into several sets of monads.  This speeds up
	  querying quite a bit.  The aforementions query with 500 monad
	  set elements now takes 3 seconds rather than 13.  Overall gain:
	  430 seconds out of 433.
	
	- CTable now has a new interface for iterators.  In particular:

	  - The following classes were created:
	    - TableIterator
	    - TableRow
	    - TableRowIterator

	    The iterators are Java-style iterators.
	
	  - Use CTable::iterator() to get a TableIterator pointing to the
	    first row.

	  - CTable::get_no_of_rows() has been renamed to CTable::size().

	  - The former typedef CTable::iterator has been removed.

	  - The following have been removed:

	    - const_iterator CTable::begin
	    - const_iterator CTable::end
	    - iterator CTable::begin
	    - iterator CTable::end

	  - A number of methods now use TableIterator rather than the old
	    CTable::iterator typedef for one of its inputs.

	- CMQLResult has a new interface.  In particular, the following
	  methods were added:

	  - bool isSheaf() const;
	  - bool isTable() const;
	  - CTable* get_table();

	- The classes in MQL/mql_sheaf.cpp have new Java-style iterators.
	  In particular, the following classes have been added:

	  - StrawConstIterator
	  - SheafIterator
	  - SheafConstIterator

	  The latter two are iterators on CList_of_straws.

	  In addition, CStraw, CList_of_straw, and CSheaf all have
	  iterator() methods which return the appropriate iterator.
	  CList_of_straw and CSheaf have, in addition, a const_iterator
	  method.

	  This means that the begin()/end() methods of CStraw and
	  CList_of_straw have been removed.

	- CSet_of_monad_ms has a new interface for dealing with iterators.
	  In particular:

	  - SOMConstIterator class was added to include/monads.h and
	    EMdF/monads.cpp.
	  - CSet_of_monad_ms::begin() was removed
	  - CSet_of_monad_ms::end() was removed
	  - CSet_of_monad_ms::const_iterator() was added

	  In doing this transition, the following files were touched:

	  - include/monads.h
	  - EMDF/monads.cpp
	  - EMdF/emdfdb.cpp
	  - MQL/mql_monads_statements.cpp
	
	- Monad_Set_Element has had the following methods added:

	  - Monad_Set_Element::equals()
	  - Monad_Set_Element::isBefore()
	
	- The Makefiles.am's have been cleaned up a bit as regards
	  dependencies of libraries.  In order to do this, the following
	  files were changed:

	  - pcre/Makefile.am
	  - EMdF/Makefile.am
	  - MQL/Makefile.am
          - src/Makefile.am
          - tests/Makefile.am
          - SWIG/java/Makefile.am
          - SWIG/perl/Makefile.am
          - SWIG/python/Makefile.am
          - SWIG/ruby/Makefile.am

	- post-increment (identifier++) has been changed to pre-increment
	  (++identifier) wholesale.  This gives slight speedups as
	  described in B. Stroustrup, "The C++ Programming Language", 3rd
	  edition, p. 565.

	  The following files were visited:

	  - EMdF/emdf_output.cpp
          - EMdF/emdf_wstring.cpp
          - EMdF/emdfdb.cpp
          - EMdF/inst.cpp
          - EMdF/monads.cpp
          - EMdF/string_func.cpp
          - EMdF/table.cpp
          - EMdF/utils.cpp
          - MQL/mql_R.cpp
          - MQL/mql_features_statements.cpp
          - MQL/mql_helper_classes.cpp
          - MQL/mql_monads_statements.cpp
          - MQL/mql_object_statements.cpp
          - MQL/mql_select_statements.cpp
          - MQL/mql_sheaf.cpp
          - MQL/mql_symboltable.cpp
          - include/create_encryption.cpp
          - src/manage_indices.cpp
          - src/mql.cpp
          - src/upgrade_db.cpp
          - tests/emdftry.cpp
          - tests/mqltry.cpp

	- When a matched_object contains a sheaf that is empty (because
	  the corresponding object block/gap block did not have any inner
	  blocks), the inner sheaf is no longer present.  Instead
	  CMatched_object::get_sheaf return a nil pointer (0).  In order
	  to be able to tell this situation in advance,
	  MQL/mql_sheaf.cpp:CMatched_object has a new method: bool
	  sheaf_is_empty(void) const;.  At the same time, CSheaf::CSheaf()
	  was taken away and a new constructor put in its place:
	  CSheaf::CSheaf(bool is_fail).  Also,
	  include/mql_execution_environment.h:CMQL_execution_environment
	  has a new member: pEmptySheaf, which is initialized by the
	  constructor of CMQL_execution_environment and deleted by its
	  destructor, and which is used for printing CMatched_objects
	  whose sheaf_is_empty method returns true.  Also, MQL/mql_R.cpp
	  now uses this opportunity for not creating those empty inner
	  sheaves.

	  The following files were touched:

	  - include/mql_sheaf.h
	  - MQL/mql_sheaf.cpp
	  - MQL/mql_R.cpp
	  - include/mql_execution_environment.h
	  - MQL/mql_execution_environment.cpp

	- EMdFDB has a new static member: std::string BackendName().

	- All programs now have a (-V|--version) option which shows the
	  Emdros version as well as the back-end used.

	- MQL/mql_sheaf.cpp:CMatched_object has a new method: std::string
	  getObjectTypeName().

	- MQL/mql_execution_environment.cpp:CMQL_execution_enviroment has
	  a new method: addObjectTypeName().

	- MQL/mql_execution_environment.cpp:CMQL_execution_enviroment has
	  a new method:

	  - fillOTNs(), which is called by the constructor and which
	  populates m_object_type_names with the object types of the
	  database, if possible to connect.

	  At the same time,
	  MQL/mql_object_type_statements.cpp:CCreateObjectType::Exec calls
	  m_pEE->addObjectTypeName() after creating successfully.  Also,
	  MQL/mql_database_statements.cpp:CUseDatabaseStatement::Exec
	  calls m_pEE->fillOTNs().

	- New method: EMdFDB::DBIsInitialized(bool& bIsInitialized), which
	  sets bIsInitialized to true if the current database has an
	  object_types table.  This method is used in the new
	  CMQL_execution_environment::fillOTNs().

	- MQL/mql_enumeration_statements:
	  CEnumerationStatement::SymbolEnumerationExists() now gives an
	  MQL error message if it isn't there.

	- SWIG/java/libjemdros.in, SWIG/python/pyemdros.i
	  SWIG/ruby/rbemdros.i now %apply some type-maps to (const)
	  std::string& so that std::string& is considered an input
	  parameter.  This means that some parameters which could have
	  been a nasty SWIGTYPE representing a pointer to std::string have
	  been replaced with normal strings.  Note that, unfortunately,
	  the strings are pass-by-value rather than pass-by-reference.

	- EMdFDB::GetEnumConstNameFromValue() has been added.  This may
	  be used to get a string from an enum const value.  If more than
	  one enum const has the same value, it is undefined which of them
	  is returned.

	  In order to do this, the following changes were made:

	  - EMdFDB::add_enum_const_to_cache now returns bool, and it also
	    adds the enumeration name.

	  - EMdFDB::GetEnumConstNameFromValue() was added.
	
	  - CEmdrosEnv::GetEnumConstNameFromValue() was added.

	  - tests/emdftry.cpp tests EMdFDB::GetEnumConstNameFromValue().

	- EMdFDB::EnumConstExists now exists in a version for getting the
	  enum_const_name from the value.  Also, tests/emdftry.cpp tests
	  EMdFDB::EnumConstExists().

	- tests/emdftry.cpp tests basic EMdF/string_func.cpp
	  functionality.

	- include/mql_sheaf.h:CMatched_object now has a getter function,
	  get_object_type_index().  In addition,
	  include/mql_execution_environment.h has a getter function,
	  get_object_type_name_from_index().

	- mql(1) now has a new switch: (-n|--nop), which directs the
	  program not to show the output results.  This is useful when
	  benchmarking the query-subsystem, since printing the results can
	  take a long time, and the usual use of MQL does not include
	  printing the results, since they will typically be accessed
	  in-memory.

	- Added examples/hebrew.
	
	*** Miscellaneous changes ***

	- plemdros module renamed to EmdrosPerl.

	- rbemdros module renamed to EmdrosRuby

	- pyemdros module renamed to EmdrosPy

	- configure.in now doesn't need gawk, but can use nawk, since
	  strtonum is no longer used.

	- include/emdf.h now #defines EMDROS_VERSION.

	- src/mql.cpp now uses CEmdrosEnv.

	- tests/mqltry.cpp now uses CEmdrosEnv.

	- SWIG/java/Test.java.in has been renamed to
	  SWIG/java/TestEmdros.java.in
	
	- %prep-section in emdros.spec.in now tests for presence of
	  various files in /usr/local/lib/emdros/, and refuses to build if
	  they are there.

	- A new makefile has been added: include/Makefile.inc.  Currently,
	  it holds the header-files to be included in the package.  This
	  is now referenced from ./Makefile.am and include/Makefile.am for
	  inclusion in Linux/Unix and win32 packages.  This makes it
	  easier for the maintainer.

	- CStatement::set_Next() and m_next have been removed, since the
	  statements are no longer chained in the MQL parser.  This has
	  been the case for a long time.

	- CSet_of_monad_ms has a new method: CSet_of_monad_ms::equals(),
	  which is a proxy for the == operator, and is SWIG-wrapped.

	- The RPM .spec files are no longer created just by running make.
	  Instead, you have to run "make spec".

	- The RPM spec files now don't say "rh80".
	
	- A new target has been created in the top-level Makefile.am:
	  spec2.  It creates, from emdros.spec2.in, two spec files which
	  create RPMs with the SWIG machinery.  At the same time,
	  emdros.spec.in now reverts to not creating SWIG RPMs.

	- All SWIG RPMs now no longer install the static versions of the
	  Emdros SWIG libraries.

	- All programs now refer to http://emdros.org/whattodo.html if a
	  connection could not be established, and the message has been
	  slightly altered (for emdftry and mqltry), and expanded (for
	  mql, manage_indices, and upgrade_db).

	- Upgraded to recent versions of the autotools
	  (automake/autoconf/libtool).  CVS versions were pulled for
	  autoconf and libtool on April 25, 2003.  Automake version is
	  1.7.4.  At the same time, got rid of old, ugly hack in
	  configure.in to change libtool behavior to not move files
	  around.  This had caused problems on the Solaris Sun Forte C++
	  compiler.  With the new autotools, this problem went away.

	- Added a std::endl before each OR in the whereclause of
	  EMdFDB::GetFeaturesByQuery.

	- Added EMdF/emdfdb.cpp:feature_type_id_is_ASCII() function.

	- Added EMdF/string_func.cpp:encodeSTRINGstring() function.

	- MQL/Makefile.am now lets the built sources be included in the
	  distribution rather than being cleaned and built from scratch.
	  This removes many of the dependencies in the former gnuwin32.zip
	  package, as well as dependencies on bison, flex, and FLEXLEXER
	  for users who compile from a distribution preview or release.
	  configure.in was also updated.  You may wish to edit
	  MQL/Makefile.am if you need to change where it finds bison,
	  flex, and FlexLexer.h.

	- configure.in now implements a hack on SunOS using the Sun Forte
	  CC compiler.  The hack make symbolic links in the .libs/
	  directories to ../SunWS_cache.  This was the cause of some
	  linking problems on Solaris, as documented in an e-mail thread
	  between Constantijn and me, where the mail with Constantijn's
	  solution appeared on May 16, 2003.

	
- *** Version 1.1.10.fix1 ***

	*** Bugfixes ***

 	- libpcre_emdros.a was not installed.  It now is.

 	- EMdF/emdfdb.cpp:feature_type_id_is_STRING() did not return
 	correct results if the feature was an enum.  This has been fixed.
 
 	This was a problem if the enum queried was the first thing that
 	had been created in the database.  It resulted in obscure errors
 	with, among other MQL statements, GET FEATURES.
 
 	- EMdF/emdfdb.cpp:EMdFDB::GetFeatures() for a single object id_d
 	and CEMdFValue's had a bug whereby its SQL queries were malformed
 	with respect to commas.  This has been fixed.
	
 	- MQL/mql_object.cpp:CMQLObject::get_feature_names() used to sort
 	the string-vector.  This caused problems when object blocks
 	returned the same features, but in different orders.

 	- MQL/mql_query.cpp:get_characteristic_string() now doesn't sort
 	feature-names (i.e., make them into a set before adding).  This
 	caused problems when object blocks returned the same features, but
 	in different orders.

	- CSet_of_monad_ms::ToString() has a new signature, so that it
	  returns a std::string rather than accepting one as a parameter.

	- CSet_of_monad_ms::get_as_string() was removed.  This was because
	  it was redundant, with the new ToString signature.

	- CSet_of_monad_ms::Difference() renamed to
	  CSet_of_monad_ms::difference().
	
- *** Version 1.1.10 ***

	*** Security enhancements ***

	- All programs now allow the specification of a database user on
	the command-line.  The emdf user is no longer necessary, although
	it is used as a default if no user is specified.  This allows
	fine-grained control over user permissions, as fine-grained as the
	database backend allows it.
	
	- The default password is now disabled by default.  Use
	--enable-default-password on ./configure to enable it.  Or, if
	compiling on Win32, change win32/lconfig.h.win32.{pgsql,mysql}.
	That also means you will probably have to use the -p option on the
	Emdros programs if you use them.
	
	- An encryption interface for strings has been added in include/,
	called encryption.h.  The encryption is simple, and it's only an
	obfuscation, so no real security.  It is used for encrypting the
	default password, and for encrypting the password stored in the
	PgEMdFDB object.

	- The default password is now stored in
	include/create_encryption.cpp.  This is where you should change
	it.  For better security, you should change the
	NO_OF_EOR_STRING_CHARS number as well.

	- The programs in src/ and tests now zero-fill the password after
	it has been used.
	
	- EMdF/pgemdfdb.cpp now encrypts the password it holds in a
	member.
	
	- EMdF/mysqlconn.cpp now doesn't store the password in itself.
	
	*** Bugfixes ***

	- EMdF/Makefile.am has been fixed so it uses BACKENDLDADD where it
	needs to rather than LIBEMDFLDADD or nothing.  At the same time,
	BACKENDLDADD and PROGRAMLDADD have been added to configure.in.

	- EMdF/emdfdb.cpp:GetInst now does string-conversion on 8-bit
	strings, which means that retrieving 8-bit strings for comparison
	in topographic queries now actually works (!).

	- CFeature_comparison::compare used to compare on string-values,
	which meant that, e.g., 200 < 30 for enumerations.  That was
	clearly not the intention!  This has been fixed.
	
	*** Enhancements ***

	- Speed improvement: When using self as the basis for finding
	objects in a SELECT (ALL|FOCOS) OBJECTS query, the self feature
	was not previously checked by the SQL engine, but rather only
	checked later by the MQL engine.  This led to poor performance
	when doing things like:

        SELECT ALL OBJECTS WHERE [Verse self = 1061745 [Word]] GO

	- Speed improvement: EMdF/emdfdb.cpp:EMdFDB::GetInst has been
	updated so that it only issues one query.  This gives good a
	overall performance increase on topographical queries.
	
	- Speed improvement: EMdF/emdfdb.cpp:CreateIndicesOnOTMonadMs now
	adds index on mse_last, which gives slight performance
	improvements on MySQL.  Correspondingly,
	EMdF/emdfdb.cpp:DropIndicesOnOTMonadMs drops the created index.

	- Speed improvement: EMdF/emdfdb.cpp:EMdFDB::GetInst now doesn't
	issue monad-constraints in the where-clause if the first/last
	monad is min_m and max_m respectively.  Also, it doesn't use a
	join on OT_objects and OT_monad_ms when not necessary.
	
	- Speed improvement:
	EMdF/emdfdb.cpp:EMdFDB::GetObjectsHavingMonadsInMonadSet now uses
	a different formula for restricting the monads.  This leads to
	better performance on the SELECT OBJECTS HAVING MONADS IN
	statement.  Thanks to Chris Wilson for this patch.

	- Speed improvement: MQL/mql_query.cpp:* now calculate Insts such
	that object blocks that are at the same level of nesting (and so
	have the same characteristic set) and which have the same object
	type and the same feature-constraints and the same features to
	get, will have the same CInst.

	- Speed improvement: EMdF/emdfdb.cpp:EMdFDB::GetInst() now uses
	STRAIGHT_JOIN on MySQL.  This gives greater performance, since the
	index on OT_monad_ms.object_id_d is now used.

	- Removed dependency on libpq++.  This is because PostgreSQL
	version 7.3.x removes libpq++ from the source distribution, moving
	it to gborg.postgresql.org.  But since we can no longer count on
	it being present, we have removed the need for it.  This was done
	by updating EMdF/pgconn.cpp and include/pgconn.h.  

	- At the same time, we also removed the need to #include any
	PostgreSQL-specific files when simply using the Emdros libraries.
	You will need the PostgreSQL development files (#include-files,
	etc), usually packaged as postgresql-devel on RedHat systems, for
	compiling Emdros, but you no longer need it for simply using
	Emdros from pre-built binaries.

	- The win32 binaries now include all libraries and header-files
	necessary for development on Win32.  This means that there is no
	need to compile Emdros on Win32 if you wish to use Emdros
	libraries rather than the mql program.  You will still need the
	MySQL libraries, but the PostgreSQL libraries have been included.

	- Memory improvement: The EMdFConnection (and its PostgreSQL/MySQL
	descendants) now has a member function for releasing the result it
	is carrying along.  EMdFDB takes advantage of that, meaning that
	Emdros now uses less memory amortized over the total runtime of a
	query.

	- Speed improvement: CSet_of_monads::is_empty is now used
	ubiquitously in CSet_of_monads to test emptiness.  It has been
	inlined, and uses a different algorithm than before.  Emptiness is
	checked for often, and the method used before took 1.50% of the
	time of one query (q8.txt).

	- Speed improvement: ~CSet_of_monads needlessly called clear().
	It doesn't anymore.

	- Speed improvement: CMatched_object::CMatched_object(const
	CMatched_object& other) now has another implementation, and avoids
	the CSet_of_monad_ms::operator=, while taking advantage of the new
	CSet_of_monad_ms::CSet_of_monad_ms(const CSet_of_monad_ms& other)
	copy-constructor.

	- Speed improvement: All member functions in Monad_Set_Element
	have been inlined, and some have had their algorithm changed
	slightly.

	- Speed improvement: CSet_of_monad_ms now stores and maintains
	m_first and m_last.

	- Speed improvement: CInstContents now doesn't maintain a map of
	id_d to CInstObject*'s.  CInstContents::add_object (which was
	CInst::add_object) has a new algorithm as a result.

	- Speed improvement: EMdFDB::GetInst now only adds the current
	object if it is new (i.e., not seen before in the query-results).
	This is at the expense of sorting the query-results first with an
	ORDER BY.

	- Speed improvement: CSet_of_monad_ms::AddMSE now applies a
	short-cut if the mse given is after the last monad in the set.

	- Speed improvement: EMdFDB now stores a cache of object type
	names by object type id_d.  This gives a performance increase,
	especially when printing the results.

	- Speed improvement: The following now make extensive use of the
	technique of not calling the end() iterator-getter all the time in
	iterator-loops, but getting it once at the beginning:
	  - EMdF/emdfdb.cpp
	  - EMdF/emdf_output.cpp
	  - EMdF/emdf_wstring.cpp
	  - EMdF/inst.cpp
	  - EMdF/monads.cpp
	  - EMdF/string_func.cpp
	  - EMdF/table.cpp
	  - EMdF/utils.cpp
	  - MQL/mql_features_statements.cpp
	  - MQL/mql_helper_classes.cpp
	  - MQL/mql_monads_statements.cpp
	  - MQL/mql_mo_nr.cpp
	  - MQL/mql_object.cpp
	  - MQL/mql_object_statements.cpp
	  - MQL/mql_query.cpp
	  - MQL/mql_R.cpp
	  - MQL/mql_select_statements.cpp
	  - MQL/mql_sheaf.cpp
	  - MQL/mql_symboltable.cpp

	- Speed improvement:
	CSet_of_monad_ms::CSet_of_monad_ms(first,last) has been written,
	and it is used in MQL/mql_R.cpp in lieu of Hat().

	- Speed improvement: MQL/mql_utility.cpp:Restrict has been
	optimized.

	- Speed improvement: EMdF/inst_object.cpp's constructor now takes
	the last monad of the object as well, which saves us a call to
	CInstObject::add_mse in EMdFDB::GetInst.

	- Speed improvement: EMdF/monads.cpp:CSet_of_monad_ms has a new
	technique for comparing first/last of monad set elements on some
	of the functions (A_first_m/B_first_m, A_last_m/B_last_m).
	Specifically, part_of(), RemoveMSE(), and intersect().

	- Speed improvement: MQL/mql_sheaf.cpp:* have had their begin/end
	accessors inlined.  Also, CList_of_straws::is_empty has been
	inlined and now references m_list directly.

	- Speed improvement: MQL/mql_sheaf.cpp:CList_of_straws now has
	m_success as public member, and MQL/mql_R.cpp references it
	directly rather than via CList_of_straws::get_success().

	- Speed improvement: MQL/mql_query.cpp:CObject_block_common now
	has m_inst as a public member, and MQL/mql_R.cpp:* have been
	updated not to use CObject_block_common::get_inst().

	- Speed improvement: MQL/mql_R.cpp:R_inst_opt_blocks now returns
	nil (0) if opt_blocks is not a blocks.  At the same time, all
	"CInst& inst" parameters have been changed to "CInst *pInst".

	- Speed improvement: MQL/mql_symboltable.cpp has been rewritten to
	use the new CEMdFValue and CSmartVector class and template.  Also,
	CFeature_comparison::compare now uses the CEMdFValue::compare
	function.

	- Speed improvement: CMQL_execution_environment now carries a
	CSmartVector of object type names used in a topographic query.
	This smart-vector is filled while compiling the query.  It is used
	by CMatched_object to get the object type names required for
	printing its contents.

	- All SWIG ruby-files are now in SWIG/ruby/ instead of in EMdF/.

	- A SWIG Java interface has been added.

	- A SWIG Python interface has been added.
	
	
	*** Miscellaneous changes ***

	- Now doesn't delete the CEMdFOutput in the
	CMQL_execution_environment destructor.  So src/mql.cpp does it
	explicitly, as does tests/mqltry.cpp.

	- RPM binaries now don't contain debug information.
	
	- RPM spec file now obeys $RPM_OPT_FLAGS as well as $CFLAGS and
	$CXXFLAGS.

	- tests/Makefile.am now doesn't include CXXFLAGS in AM_CXXFLAGS
	(this was redundant).

	- EMdFDB::GetObjectsHavingMonadsInMonadSet now identifies itself
	correctly in any error messages.

	- src/Makefile.am has been fixed so manage_indices and upgrade_db
	don't depend on the mql library.

	- tests/mqltry.cpp has been updated so it doesn't emit two
	expected error-messages at the beginning.

	- EMdFDB::GetInst now logs the start-time of the query.

	- tests/emdftry.cpp has been updated so it doesn't emit the local
	error message twice.

	- tests/mqltry.cpp has been updated so it will display a DB error
	if it can't connect.

	- CSet_of_monad_ms::ToString was added, and used in
	MQL/mql_sheaf.cpp:CMatched_object::put_Console.

	- ./Makefile.am now has a new target: static-spec.  It produces
	RPM .spec files which have --disable-shared on the command-line
	when configuring the software.  Useful for testing, since the
	software compiles much faster when not compiling the shared
	libraries.

	- The ruby SWIG bindings now depend on the regular Emdros
	libraries instead of including their object files.

	- The CMQLError::mql_get_error() member function has a new
	signature.

	- The EMdFDB::ErrorMessage() member function has a new signature.
	The returned string will be empty if there are no errors.  Thus
	checking for length > 0 of the returned string will be the same as
	checking for the boolean returned up until this release.  See
	tests/emdfdb.cpp for an example.

	- The libpcre.lib library on Windows has been renamed to
	libpcre_emdros.lib for uniformity with Unix, and also to avoid
	problems with other installations of PCRE on the build machine.

	- EMdFDB::GetCurrentDatabaseVersion() now returns a bool
	bCanUpgrade, and src/upgrade_db.cpp now obeys it.  For the moment,
	Emdros can always upgrade databases, but if future structural
	changes prevent this, we now have the interface to say so.

	
- *** Version 1.1.10pre1 ***

	*** Bugfixes ***

	- EMdF/Makefile.am has been changed so that it does not link to
	PostgreSQL binaries even when doing a MySQL compile.

	
	*** Miscellaneous changes ***

	- A superfluous szQuery has been removed from
	EMdFDB::CreateObjectType.
	
	
- *** Version 1.1.9 ***

	*** Enhancements ***

	- Fixed potential buffer-overflow in EMdF/pgconn.cpp's
	constructor.

	- Fixed potential buffer-overflows in EMdF/emdfdb.cpp.

	- Added examples/ directory and greek and morph_old examples.
	
	*** Bugfixes ***

	- When some inst in the aggregate-querying tree was empty, its
	big-union operation would throw a BadMonadsException.  This is
	fixed; it now just returns an empty monad-set.  To do this,
	inst.cpp:CInst::big_union was modified.

	- But then, if an inst is empty, its object block has no chance of
	returning anything, much less its inner blocks.  So
	CObject_block_common::AggregateQuery was modifed so that it does
	not recurs through its inner blocks if the object block's inst is
	empty.

	- The PCRE library license requires that altered versions be
	marked clearly as such.  Since I remove or replace some of the
	PCRE files in the version I distribute, I ought to notify users of
	this fact.  In compliance with the PCRE license, I have added a
	pcre/ALTERATIONS file that documents the changes.

	*** Miscellaneous changes ***

	- Emdros is now licensed under the GNU GPL.
	
	- Some lines logging a number of things when
	include/emdf.h:EMDROS_LOGGING was set to non-zero were commented
	out.

	- MQL/mql_select_statements:CQueryBase::MyExec() now logs start-
	and stop-times for R_topograph if logging is turned on.

	- MQL/mql_execute.cpp:mql_execute_stream now logs start- and
	stop-times for printing of results when logging is turned on.

	- EMdF/pgconn.cpp:PgEMdFConnection::Exec now writes the query to
	the log if logging is turned on.

	- EMdF/mysqlconn.cpp:MySQLEMdFConnection::Exec now writes the
	query to the log if logging is turned on.

	- EMdF/mysqlconn.cpp's constructor now only writes an error
	message to stderr if EMDF_DEBUG is #define'd.

	- EMdF/emdfdb.cpp:EMdFDB::GetCurrentDatabaseVersion() now reports
	"1.1.8 or later" for current database version instead of just
	"1.1.8".

	
- *** Version 1.1.8 ***

	*** Enhancements ***

	- The CEMdFDB::GetInst functions have been changed.  This gives
	performance increases, time-wise, with most classes of queries.

	One query, which took 2 hours 29 minutes to run without this
	feature, now takes 1 minutes 30 seconds to run, reproducibly.

	That's on a 432,000 monad corpus, on RedHat Linux 8.0 using
	PostgreSQL 7.2.2 on a 700MHz PIII using UltraATA66 for disk
	transfer.

	The CInst::big_union function has also been changed.  Part of the
	speed-increase stems from this.
	
	- All Emdros libraries are now built in two versions by default:
	Shared and static.  Before, only static libraries were supported.

	- Emdros is now truly a concurrent system.  Before 1.1.8, Emdros
	was alsmost a concurrent system, being able to handle many
	connections at once.  However, if one tried to issue two
	concurrent CREATE OBJECT statements, the system was likely to
	fail. 

	In 1.1.8, the mechanism for creating object id_ds and other ids
	has been changed, so that concurrent access is now possible.

	  - The following member functions were deleted:

	    - EMdFDB::SetNextObjectID_DIfLarger

	  - The following member functions were renamed:

	    - EMdFDB::CreateSequenceTables() --> CreateSequenceTables110().

	    - EMdFDB::MoveSequenceValue() --> MoveSequenceValue110()

	  - The following functions were created:

	    - EMdFDB::UpgradeDatabaseTo118()
	    - EMdFDB::CreateSequenceTables118()
	    - EMdFDB::MoveSequenceValue118()

	  - The following functions were changed:
'
	    - EMdFDB::GetNextID()
	    - EMdFDB::CreateDatabase()
	
	- New MQL statement: VACUUM DATABASE.  See the docs for details,
	especially the MQL User's Guide and the PostgreSQL documentation.

	- A system for building RPMS has been added.  It has only been
	tested on RedHat Linux 8.0.  The files involved are:
	emdros.spec.in, postgresql.subst.sed, and mysql.subst.sed.  The
	top-level Makefile produces two spec files:
	emdros-postgresql-@VERSION@ and emdros-mysql-@VERSION@.

	- A bunch of ISO-8859-X encodings have been added to
	include/emdf_output.h:eCharsets and EMdF/emdf_output.cpp.  This
	means that you will now be able to use your favorite ISO-8859
	encoding simply by calling new CEMdFOutput() with the right
	parameter.
	
	- There is preliminary support for SWIGification of the Emdros API
	for Ruby.  Currently, this only works with SWIG 1.3.16 or later,
	and only when using gcc and the accompanying C++ standard
	libraries, and only on i386 Linux.  If anyone modifies the
	makefiles/configure.in to support other platforms, please
	contribute the changes.  See <http://www.swig.org/> for more
	information on SWIG.

	- The UPDATE OBJECTS BY MONADS statement and the DELETE OBJECTS BY
	MONADS statement now use the logic for SELECT OBJECTS HAVING
	MONADS IN for finding which objects should be updated/deleted.
	This will in some cases give speedups.  In order to do this,
	changed MQL/mql_helper_classes:CByMonads::GetObjectsByMonads().

	- The error-message when creating an object type with a feature
	whose enumeration does not exist is now more intelligible.

	- tests/emdftry now emits a more helpful error message if it could
	not connect to the back-end, and tests/mqltry now emits the same
	error message.

	- The two programs emdftry and mqltry, located in the tests/
	directory, are now installed along with the other programs.

	- The Makefiles now only include -I../include once when compiling.

	- Some of the include files needlessly #included <emdfdb.h>.  This
	has been fixed.

	- Emdros now supports a crude logging mechanism, turned on or off
	in emdf.h.  This has only been used so far for
	optimization-purposes.
	
	*** Bugfixes ***

	- Fixed bug in EMdF/emdf_output.cpp:CEMdFOutput::out_char_data, so
	that "<" outputs "&lt;" and "&" outputs "&amp;", not the other way
	around.
	
	- Changed inst.cpp:CInst::add_object so that it only inserts if
	object is not already in the Inst.  There was a potential problem
	with EMdFDB::GetInst in that it split up the monad set into
	sections which may or may not coincide with object boundaries.  If
	the breaks did not coincide with object boundaries, but an object
	had monads in two (or more) sections of the monad set, then the
	same object could be found more than once.  The change to inst.cpp
	prevents this from causing an assertion.

	- Changed library-checking machinery in configure.in so that
	"-lpq++ -lpq" is only added to EMDFLDADD, not to LIBS.  This was
	because compiling pcre with the C compiler on Solaris (cc) gave an
	error when these libraries were present on the command line.

	- Changed include/Makefile.am so that mql_error.h, mql_execute.h,
	mql_types.h, mql_extern.h, and mql_execution_environment.h are
	installed.  Also excluded pcre.h from being distributed in the
	include/ directory.

	- The files include/utils.h and include/emdf_wstring.h are now not
	installed.  They are not necessary to install, as they are only
	used internally to Emdros, and have little utility outside of
	Emdros.

	- The config.h file is now called emdros-config.h.  The lconfig.h
	file is now called emdros-lconfig.h.	
	
	- The files emdros-lconfig.h and emdros-config.h, both created by
	the ./configure script, now reside in include/, and are installed
	along with all other installable headers.  This involves the files
	emdros-lconfig.h.in and emdros-config.h.in.

	- Changed EMdF/emdf_output.cpp:CEMdFOutput::~CEMdFOutput so that
	it flushes the stream before destroying itself.

	- Fixed a bug in EMdF/emdfdb.cpp::GetObjectsAtM().  It used to be
	based on OT_monad_ms, but this might return an id_d more than
	once.  Now it is based on OT_objects, which only returns each
	object id_d once.

	- The class-declarations for the various MQL statements are now
	split into separate header-files.  This gives (slightly) faster
	compile-times.

	- The classes CByMonads and CQueryBase have had their
	compiler-stage member functions renamed to MyWeed, MyMonads,
	MySymbol, etc. in order to avoid obscure warnings on Sun Forte.

	
- *** Version 1.1.7 ***

	*** Enhancements ***

	- Major speed improvements on certain classes of queries.  One
	query that before took 96.45 minutes to run, now takes 3.70
	minutes to run.  The query was:

	select all objects 
	where
	[clause_atom
	   clause_atom_type = ct_WayX
	      [phrase focus
	          function = Subj
	      ]
	]
	go

	In order to do this:
	
	  - Changed EMdF::GetInst() (both functions) in EMdF/emdfdb.cpp
	  and include/emdfdb.h to issue fewer queries.

	
	- Each enumeration is now a namespace in its own right.  That is,
	enumeration constants can have the same name in different
	enumerations.  Within an enumeration, however, constant names must
	still be unique.

	  - Changed EMdF/emdfdb.cpp:EnumConstExists(),
	  include/emdfdb.h:EnumConstExists(), MQL/mql_query.cpp,
	  MQL/mql_helper_classes.cpp, MQL/mql_enumeration_statements,
	  include/mql_types.h, include/mql_query.h.

	- Very minor speed enhancement in
	MQL/mql_R.cpp:R_object_block_first() due to local variables
	containing first/last monads of Su and som.
	
	*** Bugfixes ***

	- Made it explicit in the AUTHORS file that Philip Hazel is the
	author of the PCRE library.

	- Fixed a bug in
	MQL/mql_object.cpp:retrieve_feature_values(CInstObject *pOther)
	which used to cause non-commutativity of AND and OR in feature
	constraints in SELECT (ALL|FOCUS) OBJECTS queries.  More
	precisely, only when feature names were mentioned in alphabetical
	order did the feature constraints work.  Thanks to Hendrik Jan
	Bosman (hjb at th dot vu dot nl) for finding this bug.
	
	- Fixed a bug in MQL/mql_utility.cpp:Restrict: This function used
	to take away the monad with which it was called, which was not the
	intention.  

	- Fixed a bug in MQL/mql_R.cpp:R_object_block_first() that caused
	limits on .. not to be obeyed.
	
	[Clause as c]            // Clause-1
	..
	[Clause mother = c.self] // Clause-2

	to begin looking for Clause-2, not at Clause-1.last()+1, but at
	Clause-1.last()+2.
	
	- Did some memory cleanup using valgrind.

	  - CMQL_execution_environment destructor did not delete pOut,
	  pStatement, pSymbolTable, and pLexer. Fixed.

	  - MQL/mql_sheaf.cpp:CList_of_straws::append_and_subsume failed
	  to "subsume" argument.  Fixed.
	  
	  - MQL/mql_R.cpp:R_block_str and
	  MQL/mql_R.cpp:R_rest_of_block_str. failed to delete the straw
	  they had just Join'ed onto a CList_of_straws.  Fixed.

	  - Fixed a bug in
	  MQL/mql_query.cpp:CFeature_comparison::make_constraints() which
	  caused a memory leak by adding three strings together.

	  - Fixed a bug in MQL/mql_R.cpp:R_block_string where its usage of
	  Restrict led to a memory leak.  Also changed MQL/mql_utility.cpp
	  and include/mql_utility.h in order to change the prototype of
	  Restrict.

	  - Rewrote MQL/mql_utility.cpp:Hat() along similar lines to
	  Restrict, and took advantage of it in MQL/mql_R.cpp.

	  - Made all tables in EMdFDB pointers to tables.  Made all lists
	  in CTable pointers to lists.  This in an effort to track down
	  some obscure memory leaks relating to the STL on Linux.

	  - Changed EMdF/emdf_output.cpp:s_charset_names to be of type
	  const char* rather than std::string.

	  - Changed src/mql.cpp:main() so that the default string values
	  are initialized here rather than in
	  src/mql.cpp:parse_arguments().

	  - Changed EMdF/inst.cpp:~CInst so that it erases all members of
	  m_map_by_monads.

	  - Added EMdF/monads.cpp:CSet_of_monad_ms::clear() and used it in
	  EMdF/monads.cpp:CSet_of_monad_ms::~CSet_of_monad_ms().

	  - Rewrote EMdF/monads.cpp:CSet_of_monad_ms::operator=.

	  - Rewrote EMdF/conn.cpp:AccessTuple(..., long&) so that it uses
	  istringstream rather than strtol.
	
	- Lexer now discards ASCII character 13 on all platforms, meaning
	you can send DOS/Windows-type linebreaks through the mql compiler
	without it complaining.

	- Fixed a %d --> %ld sprintf-bug in
	EMdF/emdfdb.cpp:EMdFDB::MoveSequenceValue().

	- Fixed an ordering-problem with the member-initialization list of
	EMdF/emdf_output.cpp:CEMdFOutput::CEMdFOutput().

	- Fixed a problem in src/Makefile.am and tests/Makefile.am that
	they included @LIBS@ in the ldadd variables, so libraries would
	appear twice.


- *** Version 1.1.6 ***

	*** Enhancements ***

	- Added a new statement, SELECT OBJECTS HAVING MONADS IN.

	  - Changed MQL/mql.yxx, MQL/mql_select_statements.cpp,
	  include/mql_types.h, tests/mqltry.cpp.

	- Weeding of CByMonads now tells you which mse went wrong.
	Changed MQL/mql_helper_classes.cpp.

	
- *** Version 1.1.5 ***

	*** Enhancements ***

	- Added ability to get feature-name "self" in EMdFDB::GetInst.  In
	order to do this:
	
	  - Added include/mql_object.h:CMQLObject::get_feature_infos().

	  - Changed MQL/mql_R.cpp:R_inst() so that it passes a
	    std::list<feature_info> to EMdFDB::GetInst.

	  - Changed EMdF/emdfdb.cpp:EMdFDB::GetInst() (both versions) so
	    that they accept a std::list<feature_info> rather than a
	    std::vector<std::string> for features_to_get.

	- Added min_m and max_m support to the database.  This means that
	all queries are now done within the confines of the smallest monad
	and the largest monad present in the database.

	  - Added EMdF/emdfdb.cpp:{GetCurrentDatabaseVersion(),
	  UpgradeDatabaseTo110() (which is just the old
	  UpgradeDatabase()), UpgradeDatabaseTo115(),
	  Create_min_max_m_table(), Set_min_max_m_from_object_types(),
	  Set_min_max_m_from_object_type(), Set_max_m(), Get_max_m(),
	  Set_min_m(), Get_min_m(), Get_all_m_1(), TableExists()}

	  - Changed EMdF/emdfdb.cpp:{UpgradeDatabase(), CreateDatabase(),
	  DropObject(), DropObjectsInMonads()}

	- Added two new statements: SELECT MIN_M and SELECT MAX_M.

	- Updated tests/emdftry.cpp so that it now stops at first error.

	- Updated tests/mqltry.cpp so that it now tests SELECT MIN_M and
	SELECT MAX_M.

	
	*** Bugfixes ***

	- Fixed a bug in MQL/mql_query.cpp:CBlock::WeedFirstLast where the
	kObjectBlock case would have its bResult be true no matter what.

	- Fixed a bug in
	MQL/mql_query.cpp:CObject_block_common::AggregateQuery where
	make_inst's return value was ignored.

	- SELECT (FOCUS|ALL) OBJECTS now actually obeys restriction of Su
	with the USING SEGMENT clause.

	- SELECT (FOCUS|ALL) OBJECTS now actually works within the
	confines of all_m-1, as advertised in the User's Guide.

- *** Version 1.1.4 ***

	*** Bugfixes ***
	
	- Changed configure.in so that CFLAGS and CXXFLAGS are set to
	empty unless the user has set them.  This is in order to fix a bug
	with gcc3 which hangs on emdftry.cpp with the previously-default
	-O2 switch.
	
	- Fixed a bug in MQL/mql_R.cpp:R_object_block_first which caused
	"first" and "last" restrictors not to be obeyed.

	- Changed EMdF/Makefile.am and MQL/Makefile.am to use xxx_AR
	instead of the previous method of specifying how to build the
	libraries.  This was necessary after a move to Automake 1.5.
	
	- Made MQL/mql_R.cpp:{R_object_block_DB,R_object_block_inst} work
	with Su instead of U for checking the "last" constraint.

	*** Feature-enhancements ***
	
	- Added handling of comments to MQL/mql.lxx and MQL/mql_g_q.lxx.

	- Completed framework for compiling with Visual C++.

	- Added conditional inclusion of <windows.h> to
	EMdF/mysqlemdfdb.cpp and EMdF/mysqlconn.cpp.  This in order to
	compile with Visual C++.

	- Added --password option to mql(1), upgrade_db(1), 
	manage_indices(1), emdftry(1), and mqltry(1).

	- Added --host option to upgrade_db(1), manage_indices(1),
	emdftry(1), and mqltry(1).

	- Added MONAD SET CALCULATION statement.

	- Added a lot of keywords to mql.yxx and mql.lxx.

- *** Version 1.1.3 ***

	- Added --enable-debug | --disable-debug flags to configure
	script.

	- Changed the Makefile.am's so that they honor any user-set CFLAGS
	or CXXFLAGS environment variable.

 	- Changed MQL/mql_execute.cpp so that it tested bSuccess instead
	of bResult in mql_execute_stream just before emitting the results.

 	- Changed include/mql_types.h so that CByMonads has a virtual
	destructor.  This gets rid of a compiler warning (as well as being
	more correct C++).

	- Fixed a few bugs in MQL/mql_query.cpp relating to
	symbol-checking.  Specifically, the MQL query "[Word as w1][Word
	number = w2.number]" now doesn't compile, which it shouldn't,
	since w2 is not declared.
	
- *** Version 1.1.2 ***

	- Changed the warning for kFirstAndLast in
	CObject_block_common::WeedFirstLast (MQL/mql_query.cpp) to read
	"...in their blocks" instead of "...in their block".

	- Added syntax "<= limit" to restrictor in the MQL grammar.
	
	- Fixed a bug in the logic for computing when the limit in a power
	block is reached, so that it actually obeys what is documented in
	the MQL User's Guide, and so that it is more in line with
	intuition. That is, changed

	    if ((((limit != 0) && (som.first() > (Su.first() + limit)))
	to
	    if ((((limit != 0) && (som.first() >= (Su.first() + limit)))
	in mql_R.cpp.

	- Upgraded to PCRE 3.9.
	
	- Fixed some bugs in a number of makefiles (Makefile.am's), so
	that they will run with the latest versions of autoconf and
	automake.  Specifically, added variables EMDFLDADD and EMDFDEPS to
	configure.in, and used these in src/Makefile.am and
	tests/Makefile.am instead of conditional definition according to
	which backend is being used.

	- Fixed a bug in EMdF/Makefile.am so that make install now
	actually works.  It used to complain about installing headers.
	
	- Fixed a bug in EMdFDB::AddFeature and EMdFDB::UpgradeObjectType
	to make it work with PostgreSQL 7.2.1: This version of PostgreSQL
	complains if one gives a NOT NULL or a DEFAULT constraint on an
	"ALTER TABLE ... ADD COLUMN" command.

	- Added a parameter, bool add_not_null to
	EMdFDB::MakeFeatureSQLType in order to accomodate the above
	limitation in PostgreSQL.

	- Fixed bug in tests/emdftry.cpp: Updated various length-constants
	so that the string-features being made could actually hold the
	default strings.

	- Fixed two bugs in MQL/mql.yxx: The rules
	opt_feature_declaration_list and opt_list_of_feature_assignments
	were missing their trailing `;'.

	- Updated MQL/Makefile.am to include behavior for bison version
	1.35, which doesn't produce a parser.cpp.h file, but a parser.hpp
	file.

	- Fixed bug in pcre/Makefile.am: chartables.c is not a dependency
	of maketables.c, but of pcre.c.

	- Removed special rule in pcre/Makefile.am for making the dftables
	program: automake makes a rule all by itself.

	- Added virtual keyword to all Weed, Symbol, Type, Monads, and
	Exec methods in include/mql_types.h.
	
- *** Version 1.1.1 ***
	- Added EMdFDB::Vacuum(), EMdFConnection::Vacuum(), and
	PgEMdFConnection::Vacuum().  These functions clean up the database
	(on PostgreSQL only), by issuing a VACUUM command, optionally with
	the keyword ANALYZE.  See the PostgreSQL user's guide for details.
	The function returns true on success and false on failure (on
	PostgreSQL), or unconditionally true (on all other platforms).

	- Added GET MONADS statement (CGetMonadsStatement) in
	mql_monads_statements.cpp, and EMdFDB::GetMonadsFromID_Ds in
	emdfdb.cpp.

	- Added include/emdf_wstring.h and EMdF/emdf_wstring.cpp, which
	take care of defining std::wstring if it is not defined, and of
	defining std::ostream& operator<<(std::ostream&, std::wstring&) if
	it is not defined.  Also added various things to the configure.in
	script, among other things to check for << on std::wstring.

	- Added the following options to src/mql.cpp: -h , --host
	hostname; -d , --dbname dbname, --help.
	
- *** Version 1.1.0 ***
	*** Changes to database layout ***
	
 	- Changed the implementation of EMdFDB so that it no longer needs
	the OT_monad_ds tables.  Also added a new column to the
	OT_monad_ms tables.  This means that you must *upgrade* your old
	databases with the src/upgrade_db utility, or else start from
	scratch.

	- Changed implementation of certain functions in EMdF/emdfdb.cpp
	that used the objects table to not use the objects table.  The
	objects table is now no longer needed.  Especially
	ObjectID_DExists was changed.

	- Added the column 'value' to the PRIMARY KEY of
	enumeration_constants if using MySQL.  This only occurs when
	creating a new database.  The reason is that otherwise, MySQL
	3.23.36 fails to insert enumeration constants that are identical
	except for case.  It says that the key is duplicate.

	- The OT_monad_ms tables now only have "monad_ms_id" and
	"mse_first" in their primary key when creating new object types.
	The mse_last was redundant, but harmless (except for
	performance-hits).  We do need the mse_first, however, as
	monad_ms_id is not a unique id by itself: Several tuples may share
	any given monad_ms_id, e.g., the monad-set "{ 1-2, 8-9 }" consists
	of two tuples, each with the same monad_ms_id.
	
	- The 'sequences' table has been split into two tables,
	'sequence_0' and 'sequence_1'.  The src/upgrade_db program takes
	care of migrating old data from the 'sequences' table into these
	two tables.

	
	*** Program-internal structural changes ***
	
	- Added the CEMdFOutput class (include/emdf_output.h and
	EMdF/emdf_output.cpp) plus associated exception classes.

	- Added ./lconfig.h.in.
	
	- Changed the way USE_POSTGRESQL and USE_MYSQL are defined (they
	are now in lconfig.h)

	- Changed the interface of PgEMdFDB::PgEMdFDB to now have four
	std::string's; host, user, password, and database.

	- Added the src/upgrade_db.cpp and src/manage_indices.cpp
	programs, as well as a doc/manage_indices.1 man-page.

	- Changed signature of the version of EMdFConnnection::AccessTuple
	which is overridden in derived classes so that the std::string&
	result comes first.  This is so as to be rid of certain warnings
	on Sun systems.

	
	*** Major feature enhancements ***

	- Now supports XML output. See the
	MQL/mql_execution_environment.cpp constructor as well as the
	mql(1) manpage for how to use this.

	- Rudimentary support for using the mql(1) program as a daemon if
	started by xinetd or inetd.  This includes a new statement, QUIT,
	which can be used to close the connection after all commands have
	been executed.  The keyword "GO" is not necessary after this
	statement.  Also, when executing a statement, and the XML output
	is turned on, there will be a <mql_progress>...</mql_progress>
	element which is filled with dots (".") at irregular intervals.
	Note that the intervals are irregular, it means there is no
	guarantee of any response-time before the next dot, thus this
	cannot be used as a timeout measurement.
	
	*** Speed-improvement changes ***
	
	- Changed implementation of EMdF/string_func.cpp:strcmp_nocase.
	This is a big improvement in speed, since the strcmp_nocase
	function gets used a lot.

	- Changed the interface of EMdFDB and various other objects to
	have const std::string& instead of const char*.  This will
	hopefully bring a slight speed increase.

	- Changed implementation of the functions in EMdF/emdfdb.cpp that
	have to do with features so that they all use the feature cache.
	This should bring a slight speed-increase.

	- Added a function EMdFDB::ObjectID_DExistsInType to
	EMdF/emdfdb.cpp.
	
	- Added a function CID_D::SymbolObjectsExistInType which takes
	advantage of EMdFDB::ObjectID_DExistsInType.  

	- Used the CID_D::SymbolObjectsExistInType function in
	CGetFeaturesStatement::Symbol,
	CUpdateObjectsByID_DsStatement::Symbol, and
	CDeleteObjectsByID_DsStatement::Symbol.

	- Changed implementation of MySQLEMdFConnection::AccessTuple so
	that it now only uses mysql_data_seek if we are not just getting
	the next row.  This should be a performance increase on fetching
	those the results of queries that return large results.

	
	*** Bugfixes
	
	- Debugged UPDATE ENUMERATION so that it now actually works.

	- DELETE OBJECTS BY MONADS now actually returns a value as
	documented in the MQL User's Guide.

	- DELETE OBJECTS BY ... now return tables that are really tables.
	There was a bug whereby some rows had two "columns", i.e., two
	object id_ds.  This was just due to not starting a new row at the
	proper time.

	
	*** General improvements ***
	
	- Changed infrastructure of tests/mqltry.cpp so that it now has
	some more safeguarding against errors.

	- Added error message to mql_query.cpp:
	CObject_block_common::SymbolObjectTypeExists.

	- Changed CTable's headers so that they contain type-information
	on each header.  

	- Changed the output from various MQL commands so that booleans
	are no longer reported as '0' or '1', but as 'false' and 'true'
	respectively.

	- Added a few things to ./configure.in so that it compiles more
	easily on Sun Solaris (at least on the Sun machine I have access
	to...!).

	- Changed the Makefiles so that you can now compile even after a
	"make clean" without copying pcre/pcre.h to include/.

	- EMdFDB::ErrorMessage now returns both the local error message
	and the remote error message.
	
	
- *** 14 October 2001 ***
	Version 1.0.4

	- Added possibility of opt_blocks in gap_block and opt_gap_block.
	

