
version 3.5.4

100304 Martin Mann
	* bin/ReactionTransitionState
	  * COMPILE BUGFIX : was using protected member Rule.LeftSide directly 
	    instead via access member function (thanks to Christoph Flamm)
	* *_grammar
	  + switch for deprecated headers with version >= 103900

100216 Daniel Hgerl
	* ggl/chem/MoleculeOB
	  + use ForceField for energy calculation
	  
100216 Daniel Hgerl
	* ggl/chem/MoleculeOB
	  + fixed compile error and added method to get molecule formation energy

100212 Martin Mann
	+ ggl/chem/MoleculeOB : a wrapper class around an OpenBabel::OBMol object
	  created from a SMILES string or an ggl::Molecule
	  + getMolWeight : accesses OBMol::getMolWt()

version 3.5.3

100114 Martin Mann
	* tests : updated according to latest changes since last version

100113 Martin Mann
	+ RRC_TState : dummy reaction rate calculator that enforces the generation
	  of the imaginary transition state (ITS) of the reaction but returns
	  always "nan" as reaction rate
	* toyChem : no rate calculation will nevertheless create the ITS using the
	  RRC_TState class
	* MR_Reaction, ReactionTransitionState :
	  - autoMultiCopy : renamed to "addEachComponent"
	  + addEachComponennt : formerly "autoMultiCopy"
	  * default for addEachComponent now "false"
	  * MR_Reaction::reportHit : BUGFIX : was not utilizing the addEachComponent 
	    information, i.e. the metabolite list could have been too long in some 
	    cases  
	* MR_ApplyRule : 
	  * BUGFIX : reportHit : new version was not completely correct
	* ReactionTransitionState :
	  * BUGFIX : graph generation was not completely correct
	  + additional check if all left-side-nodes are mapped onto separate
	    target-graph-nodes; if not rule application for the given match is 
	    aborted

100112 Martin Mann
	* vflib/ArgEdit::InsertEdge : more verbose error reporting
	* MR_ApplyRule :
	  + additional asserts to check for duplicated edge insertions
	  + checks now if nodes to delete (via rule) have no edges left; otherwise
	    the rule application is aborted
	  + additional check if all left-side-nodes are mapped onto separate
	    target-graph-nodes; if not rule application for the given match is 
	    aborted

100111 Martin Mann
	* MR_ApplyRule :
	  - autoMultiCopy : renamed to "addEachComponent"
	  + addEachComponennt : formerly "autoMultiCopy" 
	  * reportHit : generic Graph_Interface target graph handling enabled. 
	    till now the class was restricted to sgm::Graph_boost* classes.
	  - minMatchedTargetGraphs : obsolete member/parameter, all done via
	    "addEachComponent"
	* MR_Reaction :
	  - minMatchedTargetGraphs (see MR_ApplyRule)
	* all MR_ApplyRule and MR_Reaction using classes/methods

100109 Martin Mann
	* RateCalculation
	  - now no template class anymore: the rule was not needed nor available
	+ RRC_QuantumMechanics : calculates a reaction rate based on a call to the 
	  server of Sebastian Sauer via MOPAC or JAGGUAR.
	  Original source by Daniel Hgerl.
	  + test for the availablity of the server added
	* toyChem :
	  + new param "rate" enables the setup of a rate calculation mode
	  + new param "noRuleCheck" to disable the initial chemrule checks
	* chem::ChemRule : 
	  + electron change check reenabled

version 3.5.2

100108 Martin Mann
	+ ReactionTransitionState : full imaginary transition state of a reaction
	* MR_Reaction : feeds now the ReactionTransitionState into the reaction
	  instead of the ChemRule encoded core TransitionState
	* Reaction :
	  * outstream operator : 
	    + prints the transition state if present
        * output is now one whole smiles string that encodes the reaction

100107 Martin Mann
	* configure :
	  - warnings for deprecated headers are ignored now, to enable debug mode
	    compilation with boost library that partially still uses deprecated
	    headers. This caused the boost header check to fail even when the 
	    boost header files were available.

100105 Martin Mann
	* chem::ChemRule : 
	  - electron change check currently disabled, since we do not explicitely 
		represent H-atoms and therefore we have only incomplete electron 
		information 
	    # TODO renable check as soon as H-atom filling is available
	* toyChem :
	  * BUGFIX : was using MR_ApplyRule instead of MR_ApplyRuleT<ChemRule>

091216 Martin Mann
	* member documentation updated

091026 Martin Mann
	* BUGFIX : ChemRule.icc : wrong assert check (thanks to Daniel Hgerl)

091008 Martin Mann
	* chem::MoleculeUtil :
	  + now all atoms with atom number 1-20 supported, remaining to come ..
	+ ggl::chem::LeftSidePattern : LeftSidePattern of ggl::chem::ChemRule
	+ ggl::chem::RightSidePattern : RightSidePattern of ggl::chem::ChemRule
	* toyChem / toyChemUtil : utilize ggl::chem::*SidePattern
	* MR_Reactions :
	  + reports each matched molecule only once (important for intramolecular
	    matches of multicomponent rules)
	  + creates no reaction if no product was created (MR_ApplyRule produced no
	    valid graph) --> should only happen for intramolecular matches that are
	    currently not working chemically correct ...
	+ RRC_Fixed : reaction rate calculator that returns a fixed (given) reaction
	  rate indepently from the reaction given

090828 Martin Mann
	* TransitionState : now part (internal class) of the ChemRule definition
	* ChemRule :
	  + getTransitionState() : access to the minimal transition state of a rule
	    --> calculated on demand but only once per object
	  - constants : now part of the ChemRule_Constants superclass
	+ ChemRule_Constants : contains all template independent ChemRule constants 

090826 Martin Mann
	* MoleculeUtil : 
	  + checkBondLabelT() : checks if all bond label of a molecule are ok
	  * isConsistent(mol) : 
	    + utilizes checkBondLabelT
	* ReactionRateCalculation : 
	  + needTransitionState() : announces if the transition state is explicitly
	    needed for the rate calculation (has to be precalculated and will be
	    stored within Reaction object)
	  * getRate() : reduced to one parameter : Reaction object
	* Reaction :
	  + transState : the SMILES of the transition state

version 3.5.0

090817 Martin Mann
	* MoleculeUtil :
	  + getAtomData(label) : direct access to atom data for a (complex) label 
	  + getCharge(label) : direct access to charge info for a (complex) label 
	  + getProtons(label) : direct access to proton info for a (complex) label 
	  + getClass(label) : direct access to class info for a (complex) label
	  + BondLabelData : container class that stores bond associated information
	  + getBondData() : access to all BondLabelData entries
	  + getBondData(label) : access to the BondLabelData for a (complex) label 
	  + compressHnodes : formerly part of SMILESwriter
	* SMILESwriter : 
	  * utilizes now extended parsing interface of MoleculeUtil
	  * generic bond handling according to bond data from MoleculeUtil
	  - compressHnodes : now part of MoleculeUtil
	* ChemRule :
	  + checkBondLabel : checks if all bond label are SMILES conform
	  + checkElectronChange : checks if the electron change via atom and bond
	    label changes is balanced
	* Rule_GML_grammar :
	  * removal of rule ID string quotes if present
	* toyChem : 
	  + checks for ChemRule consistency and reports according error output
	* toyChemUtil :
	  * parseSMILES : generates a new canonical SMILES string with utilizing the
	    SMILESwriter for storing instead of using the user given one

090816 Martin Mann
	* SMILESwriter :
	  * compressHatoms : H-H connections are not compressed anymore
	  - getLabelData() and labelData member : now part of MoleculeUtil
	+ MoleculeUtil : utility class that stores atom and molecule related 
	  information
	  + isValidAtomLabel : checks if a given atom label is SMILES conform and
	    can be handled, e.g. by the SMILESwriter
	  + isConsistent(Molecule) : checks if a molecule is SMILES conform and 
	    consistent : TODO -> testing not done yet
	* ChemRule : 
	  * isConsistent : additional check for label consistency and allows now for
	    label changes

090815 Martin Mann
	* ALL TEMPLATES : for each a *_TEMPLATE and *_TYPE define is introduced in
	  the header to avoid code blowup of repeated template information
	* SMILESwriter : 
	  * compressHatoms : BUGFIX : H information was not inserted directly after
	    the atom label

090814 Martin Mann
	* bin/toyChemUtil : 
	  * rule parsing handles now multiple rules in one input line
	* SMILESwriter :
	  * build_dfs : BUGFIX : support for other bond labels than "-" and "="
	+ TransitionState : calculates the transition state graph from a given Rule
	  * utilizes ChemRule::isConsistent() member within assertion to ensure that
	    the chemical rule is valid
	+ ggl/chem/ChemRule : subclass of RuleT that will enable additional checks
	  and information needed for chemical reactions encoded in graph grammar
	  rules
	  + isConsistent() : consistency checks for chemical rule object with the
	    return of according error codes
	* bin/toyChem* : utilizes now ggl::chem::ChemRule instead of ggl::Rule

090813 Martin Mann
	* RuleContext : enum elements renamed to RULE_* for better identification
	* Rule_GML_grammar : "ruleID" now part of the GML description and parsed
	* bin/toyChemUtil : 
	  * rule parsing utilizes "rule" keyword instead of comment line information
	    for rule separation

090812 Martin Mann
	* GS_SMILES_MOLp :
	  + additional constant SMILES-to-Molecule maps for existence checks
	* GS_SMILES_MOL* : BUGFIX : for multi-component matches 
	    : was not storing the resulting graph components but the whole graph
	* MR_Reaction :
	  * uses now containers of GS_SMILES_MOLp superclass
	* SMILESwriter :
	  * compressHatoms : only H-atoms with degree == 1 are removed/compressed
	+ ReactionRateCalculation : super class for different kinds of rate 
	  calculations for a given Reaction
	* MR_Reaction :
	  * if a ReactionRateCalculation is given, a rate is requested for each
	    new Reaction derived
	* Reaction :
	  * initializes the rate with NaN 
	  * operator < : compares rates only if both are set (i.e. != NaN)
	* bin/toyChem :
	  + new parameter "-showNew" : prints all really new molecules per iteration
	* tests updated

090811 Martin Mann
	* SMILESwriter : 
	  + compressHatoms : moves all H-nodes into the adjacent node label and 
	    removes all H-nodes
	* GS_SMILES :
	  * utilizes compressHatoms to produce only smiles without explicite H-nodes
	    --> all H-atoms are incorporated into the adjacent node labels before
	        the SMILES string is created (better human readable)
	* Graph_Interface :
	  + ostream operator added (prints the adjacency information including 
	    labels)
	* bin/toyChemUtil.cc :
	  * utilizes compressHatoms to create initial SMILES when reading from 
	    molecule graphs
	
090801 Martin Mann / Alexander Ullrich
	* SMILESwriter :
	  * allows for an almost complete list of atom labels
	  + utilizes 'H' information in complex atom labels

090706 Martin Mann
	* configure.ac : internal structure updated and obsolete handling of CP
	  module erased
	* tests/Makefile.am : now POSIX conform
	* toyChem : ouput of GML example finally ready
	
090629 Martin Mann
	* toyChem : molecule graph example added

090626 Christoph Flamm
	* SMILES, Rule-GML grammars : added missing header <iostream> to
	  make sources g++ (GCC) 4.4.0 20090506 (Red Hat 4.4.0-4) FC11
	  complient.
	  
090625 Christoph Flamm
	* SMILES parser : added functions and semantic actions to handle
	  explicit hydrogen atoms of complex atoms. Explicit hydrogens are
	  now add to the constructed molecular graph. Modified SMILES
	  parser test.
	
090623 Christoph Flamm
	* SMILES parser : added warnings to ignored complex atom fields;
	  only charged complex atoms keep their square brackets; in all other
	  cases the ignored fields and the square brackets are removed during
	  parsing. Fixed BUG of strange handling of [nH] elements.
	
090622 Martin Mann
	* toychem : ruleExample : visualization differed from rule definition
	  (thanks to Daniel Hoegerl) 

090607 Martin Mann
	* configure.ac : old and obsolete macros replaced

version 3.4.6

090518 Martin Mann

BUG : SMILES_grammar : strange handling of [nH] elements in current version 
 --> leads to test failure and successively to test failure of SMILESwriter
     and GS_SMILES

090518 Martin Mann
	* MR_Reaction : BUGFIX : debug assertions (were not compiling in debug mode)
	* ggl::chem::SMILESwriter : 
	  * signed-unsigned comparison removed
	  * BUGFIX : was not working for boost::filtered_graph instances due to the
	    assumption that nodes are successively indexed starting from 0 and such
	    the last node index is (num_of_vertices(g)-1). This is not true for 
	    filtered_graphs where only a subset of nodes is displayed.
	* configure : 
	  + check for Windows system (cygwin, mingw, ..) to enable the auto-import
	    flag of the gnu ld linker
	* toychem :
	  + new parameter "-XTOF" for temporary debug use until the SMILESwriter
	    problems are solved ...

version 3.4.5

090428 Martin Mann
	* toyChem :
	  + support for molecule input in GML format
	  + support for a list of files as value for all rule/molecule input sources

090427 Christoph Flamm
	* ggl::chem::SMILES_grammar :
	  * fixed complex_symbol rule, atoms with charge are parsable now and 
	    produce the atom label [atomSymbol-|+digit]; isotope, chirality, 
	    hcount name are still ignored and do not go into the atom label
	    
090424 Martin Mann
	* configure
	  * slightly changed OpenBabel and dependency checks
	* ggl/Makefile.am
	  * OpenBabel header variable was wrong within the lib_gglchem list ... 
	    led to omission of these headers in the distribution
	* ggl::chem::SMILESwriterOB
	  * include and define handling updated to be more general, still a hack...

version 3.4.4

090424 Martin Mann
	* tests/Makefile : 
	  * updated to work with new configure internals
	  + avoid deprecated header warnings (got them by boost internal includes)
	* sgm/HashMap.hh : 
	  - test for boost::unordered_map removed
	  - hash or map includes removed (now only defines are set)
	* HashMap depending files
	  - usage of boost::unordered_map removed
	  + explicit hash or map include
	  * better hash/map handling via defines from sgm/HashMap.hh

version 3.4.3

090423 Martin Mann
	* configure :
	  + full pkg-config support and pgk-config based dependency path setup
	  + replace CXXFLAGS and LDFLAGS setup with AM_CXXFLAGS and AM_LDFLAGS
	  + more verbose dependency failure output
	  + more verbose output on modules that will compiled
	  + boost path support added
	* ggl.pc : full information (cflags,libs) for standard pkg-config based
	  path setup for GGL depending stuff

version 3.4.2

090404 Martin Mann
	* toyChem : new routine for more efficient recursive rule application (uses
	  information what molecules are new from last iteration)
	  --> currently for "outMode=R" only

version 3.4.1

090403 Martin Mann
	* toyChem : general toyChem stuff outsourced to toyChemUtil.*

version 3.4.0

090402 Martin Mann
	+ sgm::GA_OrderCheck : Graph_Automorphism that checks for a graphs 
	  symmetries based on a list of order checks
	  + includes static faculty member function to generate such an object for
	    a given Graph_Interface implementation based on sgm::GM_vf2
	* ggl::LeftSidePattern
	  + new member symmBreakList : GA_OrderCheck data that is lazily calculated
	    and used for accessing the Graph_Automorphism of a Rule when matching
	    the left side pattern

version 3.3.0

090331 Martin Mann
	* ggl::Rule : + new member ID to store a string identifier or description
	+ Reaction : storage class for chemical reaction information
	+ MR_Reactions : Match_Reporter that utilizes a MR_ApplyRule to generate
	  Reaction information for all successful Rule matches
	* toyChem : new mode : (R)eaction that prints the collected Reactions from 
	  the last iteration to output stream

090330 Martin Mann
	* ggl::chem::SMILESwriter : bugfix : primes function fixed

090327 Martin Mann
	+ OpenBabel modul added
	  + configure flags and checks added for OpenBabel library
	  + ggl::chem::SMILESwriterOB : OpenBabel based canonical SMILES writer
	    NOTE : currently buggy and beta only! generation seems not to be unique
	  + ggl::chem::GS_SMILES_OB : GS_SMILES pendant using SMILESwriterOB
	* SMILESwriter : bugfix : first 1000 primes were no primes.. replaced now

090326 Martin Mann
	* ggl::GS_STL* : template paramter order changed for better default params
	  and public typedefs added
	+ ggl::GS_STL_pushAllP : for STL containers including graph pointer
	+ ggl::GS_STL_pushUniqueP : for STL containers including graph pointer
	* ggl::chem::SMILESwriter : added static array of first 500 prime numbers 
	  to avoid direct calculation for each request

version 3.2.0

090325 Martin Mann
	* sgm::Graph_Automorphism : check function member now const
	* sgm::MM_SymmBreak : utilizes now a const sgm::Graph_Automorphism
	* time measurement and hit/stored output now via define "FULL_DEBUG"

090221 Martin Mann
	* *.hh : added the namespaces to the header defines to be more unique
	* sgm::Graph_Interface : "==" and "!=" operators added for graph comparisons
	* toyChem : recursive generation of all lists of molecules with one for each 
	  pattern component which was first checked if the component is present
	  --> this reduces search space for the SGM and speeds up enormously
	* support for Graph_Automorphism definitions of the LeftSidePattern added
	  --> currently their automatic generation or user input is missing !

090220 Martin Mann
	* .. : replaced the usage of std::map with available hash_map
	
090219 Martin Mann
	+ sgm::Graph_Automorphism : defines symmetries of a graph and allows to 
	  test a Match_Reporter::Match if it is symmetric to another match to come
	+ sgm::MR_SymmBreak : wraps a Graph_Automorphism and another Match_Reporter
	  to check each Match for symmetries. If it is a non-symmetric match it is
	  forwarded to the wrapped reporter.

090218 Martin Mann
	+ tests added
	+ MR_Storing : adds matches to a storage container
	* LeftSidePattern : provides access to its component labeling and the first
	  index for each component --> enables component checking in MR_ApplyRule
	* MR_ApplyRule : if LeftSidePattern component size equals the number of
	  different target graphs to match, a copy of each graph is included in 
	  the result graph. (e.g. 2 components of leftside match to same target 
	  graph --> target graph is represented in result graph two times) 
	+ SubGraph : wrapper for Graph_Interface to represent only a subgraph.
	  A subgraph is defined by a subset of nodes and all edges between these
	  nodes present in the original graph.
	* configure : checks for unordered_map added
	- ggl::HashMap : now in sgm namespace
	+ smg::HashMap : determines what hash map implementation is available and
	  includes the corresponding header. furthermore a description string of
	  the found map is provided.
	* ggl::chem::SMILESwriter : back to original source because new
	  version was not generating canonical SMILES. Will be replaced later as
	  soon as this bug is fixed.

090213 Martin Mann
	* source updated for g++ 4.3.*
	* ggl::chem::SMILESwriter : new internal source
	+ base for constraint based subgraph matching algorithms build
	
081205 Martin Mann
	* configure: 
	  + check for GNU hash_map and hash_set
	* toyChem:
	  + support for boost unordered set if present
	  + output of running times in verbose mode
	  + output of match numbers in verbose mode
	+ ggl::HashMap : header include depending of presence of GNU hash_map
	* ggl::chem::GS_SMILES : runtime add
	* ggl::chem::SMILESwriter : runtime check added and usage of different hash maps

version 3.1.2

081203 Martin Mann
	* toyChem/ggrIt : speedup of 4times for the application of 2-components
	  rules
	  --> should increase speed for multi-component rules as well

version 3.1.1

081121 Martin Mann
	* tests/Makefile.am : configure DEFINES enabled

version 3.1.0

081117 Martin Mann
	+ ggl::Graph_GML_writer : function wrapper to write a ggl::Graph in GML
	  format to stream
	+ ggl::Graph_GML_grammar : GML graph string representation parser grammar
	  including functionality for direct string2graph parsing
	* bin/ggrIt :
	  + GML result graph output support
	  + GML source graph input support
	  + version information added
	* bin/toyChem : 
	  + version information added
	* ggl::Rule_GML_grammar : white spaces at the end of the parsed string are
	  ignored now

081114 Christoph Flamm
	* configure.ac : additional remarks for the user
	+ autogen.sh : runs autotools after checkout from repository

081114 Martin Mann
	+ sgm::GraphMatching : abstract interface of graph-isomorphism algorithms
	+ sgm::GM_vf2 : sgm::GraphMatching implementation using the VF2 algorithm
	+ sgm::MR_Counting : sgm::MatchReporter that only counts the number of 
	  reported matches
	+ ggl::GS_STL_pushAll : a ggl::GraphStorage that adds all reported graphs
	  to an STL container using its "push_back" method
	+ ggl::GS_STL_pushUnique : a ggl::GraphStorage that adds each reported graph
	  only once to an STL container using its "push_back" method. The uniqueness
	  is guaranteed by comparing each reported graph against all already stored
	  graphs using a provided sgm::GraphMatching instance. NOTE: This is not
	  efficient when the storage becomes very large!
	+ bin/ggrIt : general graph grammar rule application iteration similar to
	  toyChem functionality but on general graphs
	  NOTE: currently input via SMILES strings due to missing GML parser !!!

081111 Martin Mann
	* BUGFIX : ggl::chem::GS_SMILES : empty SMILES are now ignored
	* vf2-lib : internal indexing changed from 'unsigned short'
	  to 'unsigned long int' 
	  NOTE : hope it works ! ;)

081107 Martin Mann
	* sgm::SubGraphMatching 
	  + matchin routines for matching a vector of patterns using one match 
	    reporter only
	* sgm::SGM_vf2 : extended interface due to sgm::SubGraphMatching
	* ggl::MR_ApplyRule
	  + new parameter minMatchedTargetGraphs : allows for the filtering of
	    matches: each match against an sgm::Graph_boostV* wrapper will only be
	    handled if the minimal number of wrapped subgraphs is reached. this 
	    enables that the matching of Rules with k connected components in the 
	    LeftSidePattern involves k different subgraphs
	* bin/toyChem
	  + new parameter "allowAllIntra" : enables that all rules can be applied
	    to a single molecule. Otherwise, rules with k connected components in
	    the LeftSidePattern have to be matched to k independent molecules

081106 Martin Mann
	+ sgm::Graph_boostV_p : representation of a vector of BGL graph POINTERS
	  in one single Graph_Interface, i.e. as an unconnected graph
	* sgm::Graph_Interface
	  + connectedComponents : static member to calculate connected component
	    labeling of a given Graph_Interface implementation
	* BUGFIX : sgm::Graph_*, ggl::*SidePatternT : getNextEdge expected that
	  the last generated EdgeDescriptor is present : update was missing if not
	* bin/toyChem : 
	  + rules are now grouped by the number of connected components (c) in their
	    leftsidepattern. to match the group with c components, c copies are
	    of each molecule are represented in the target graph to allow for the
	    application of the rule on one type of molecules only

version 3.0.0

081105 Martin Mann
	+ Doxygen source code API generation enabled
	+ pkg_config support
	* headers updated for correct API generation

081104 Martin Mann
	* bin/toyChem : 
	  + rule example output added for user help
	* ggl::chem::SMILESwriter :
	  + support for boost::filtered_graph where node indices are not guaranteed
	    to start with 0 and increase successively
	* ggl::chem::GS_SMILES :
	  + support for resulting molecule graphs that contain several connected
	    components and thus represent a set of molecules instead only one.
	    These are splitted and a SMILES string is generated for each of them. 

081031 Martin Mann
	+ bin/toyChem : tool that reads a set of chemical rules R and a list of 
	  molecules M in SMILES notation. Afterwards it performs an iteration of
	  rule application. In each iteration all rules in R are applied to M 
	  resulting in new molecules M'. The molecules of the next iteration are
	  then M union M', thus the union of the initial and resulting molecules 
	  of the last iteration, and so forth.
	* BUGFIX : ggl::Rule_GML_grammar : quote characters "" and '' were not
	  removed from labels
	* BUGFIX : ggl::Rule_GML_grammar : label change case was not correctly 
	  handled
	* BUGFIX : ggl::chem::SMILES_grammar : initial reset of internal data 
	  structures in contructor was missing
	* BUGFIX : ggl::Rule_GML_grammar : initial reset of internal data 
	  structures in contructor was missing

081030 Martin Mann
	* ggl::chem::SMILESwriter : 
	  * uses now Daylight's SMILES bond labels
	  * getSMILES : takes now a constant MOLECULE object
	* tests : file rename : namespace now lower case
	* ggl::Graph_Storage : now template class for the BOOST_GRAPH type
	  --> MR_ApplyRule and GS_stream adapted
	+ ggl::chem::GS_SMILES : a Graph_Storage for MR_ApplyRule that rewrites 
	  each generated graph into a SMILES string and inserts it into a STL 
	  container via an stl::input_iterator

081029 Martin Mann
	* ggl::chem::SMILES_grammar : return value of parseSMILES method corrected
	+ Rule_GML_grammar : a boost::spirit rules definition of GML BNF grammar
	  to parse a Rule object from GML string encoding
	  (original source code by Christoph Flamm)
	  --> the class allows for a direct parsing of GML to Rules via its
	      static "parseRule(..)" function
	+ ggl::chem::SMILESwriter : class to calculate a canonical SMILES string from a 
	  Molecule graph.
	  NOTE: this implementation is INCOMPLETE, i.e. it handles only a few types
	  of atoms and bonds!!!
	  (original source code by Alexander Ullrich)

080808 Martin Mann
	+ ggl::chem namespace contains classes for graph representations of 
	  molecules
	+ ggl::chem::Molecule : definition of a molecule graph
	+ ggl::chem::SMILES_grammar : a boost::spirit rules definition of 
	  Daylight's (tm) SMILES BNF grammar 
	  (original source code by Christoph Flamm)
	  --> the class allows for a direct parsing of SMILES to graphs via its
	      static "parseSMILES(..)" function
	+ tests : ggl::chem::SMILES_grammar

080806 Martin Mann
	* ggl::MR_ApplyRule : 
	  + support for ggl::Graph_boostV target graphs
	* tests : ggl::MR_ApplyRule cases extended
	- sgm::mergeGraph : obsolete due to boost::copy_graph
	- tests : mergeGraph
	
080805 Martin Mann
	+ sgm::mergeGraph to merge two boost::graphs into one including all labels
	+ tests : mergeGraph

080804 Martin Mann
	* sgm::MR_stream : new method "resetHits()" to reset hit counter
	+ tests : sgm::MR_stream
	+ tests : sgm::SGM_vf2

080802 Martin Mann
	* tests : ggl::MR_ApplyRule cases extended
	+ tests : sgm::Graph_boost
	+ tests : sgm::Graph_boostV
	+ header sgm/Match_Reporter.hh : definition of Match_Reporter class removed 
	  from sgm/SubGraphMatching.hh

080801 Martin Mann
	* ggl::RuleT : extended list of template parameters to contain all 
	  properties that are necessary to describe the rule
	* ggl::LeftSidePattern : template parameter list shrinked to RULE
	  --> all properties now available via RuleT
	* ggl::RightSidePattern : template parameter list shrinked to RULE
	  --> all properties now available via RuleT
	* RENAME : ggl::MR_ApplyRule --> template class ggl::MR_ApplyRuleT
	+ ggl::MR_ApplyRule : wrapper class around default template arguments of 
	  ggl::MR_ApplyRuleT

version 2.3.0

080714 Martin Mann
	+ tests for GGL classes added
	+ ggl::Graph_Storage : abstract interface class to store ggl::Graph objects
	  e.g. used by MR_ApplyRule
	+ ggl::GS_stream : Graph_Storage implementation that writes each added graph
	  in text-form to stream (wrappes around template implementation GS_streamT)
	+ ggl::MR_ApplyRule : sgm::Match_Reporter implementation that applies a rule
	  that left side was matched to a ggl::Graph object and reports the 
	  resulting graph to a specified ggl::Graph_Storage object

080713 Martin Mann
	* RENAME : GrammarRule --> RuleContext
	* RENAME : RuleCoreGraph boost graph properties to Prop***
	* BUGFIX : sgm::SGM_vf2 : now performs subgraph-monomorphism instead of 
	  isomorphism. (since now it compared the induced graph with the pattern to
	  verify a match. now only the corresponding edges are checked.)
	+ new RuleContext::LABEL_CHANGE : used to specify if a rule element is part
	  of both rule sides but the label is changing
	+ new boost property: Prop****RightLabel : contains the label of the right
	  rule side if a the graph element has RuleContext LABEL_CHANGE
	* RENAME : sgm::Graph_boost --> sgm::Graph_boostV 
	+ sgm::Graph_boost : Graph_Interface implementation to wrap around ONE boost
	  graph object 
	* sgm::Graph_boost and sgm::Graph_boostV : default template parameter for 
	  the boost properties
	+ sgm::MatchReporter : extended parameter set of report function to pattern
	  and target access of the reported hit
	+ ggl : wrapper typedefs around the template classes for an easier usage
	+ ggl::Graph : boost graph that represents a graph that contains all 
	  properties neccessary to apply a graph grammar rule
	+ ggl::GraphTarget and ggl::GraphTargetVector : sgm::Graph_boost typedefs
	  to allow for the usage of ggl::Graph objects as target for the 
	  sgm::SubGraphMatching algorithms

080711 Martin Mann
	+ ggl namespace : graph grammar library
	+ RuleCoreGraph : boost graph that contains all properties neccessary to 
	  encode a graph grammar rule
	+ Rule : wrapper class around a RuleCoreGraph that is able to distinguish
	  between left/right side and context of the rule
	+ LeftSidePattern : sgm::Graph_Interface implementation for the subgraph
	  matching of the left side of a given rule with other sgm graphs

version 2.2.0

080711 Martin Mann
	* SubgraphMatching / SGM_vf2 :
	  + support for the matching of many patterns against one target to allow
	    for more efficient internal handling of data structures
	* Graph_boost :
	  + const access to the internal graphs
	+ VF-2 library has now own vf2 namespace

version 2.1.0

080709 Martin Mann
	+ sgm namespace : contains all sources of the SGM CORE library
	+ two new libraries libsgm and libsgm_vf2
	+ Graph_Interface : abstract interface for sub-graph matching
	+ Graph_boost : boost graph based Graph_Interface implementation
	+ SubGraphMatching : abstracct interface of sub-graph matching algorithms
	+ SGM_vf2 : implementation of SubGraphMatching that wraps around vf2-library
	+ Match_Reporter : abstract interface to handle a match
	+ MR_stream : implementation of Match_Reporter that writes the match to 
	  stream
	+ MR_boostProp : implementation of Match_Reporter that stores the match in
	  the property map of a boost graph
	- BIU-dependency removed

version 2.0.0

080702 Martin Mann
	* DEPENDENCY change : Gecode 2.*.*
	* simpleGM : DDS enabled

version 1.0.0

080702 Martin Mann
	+ vflib now part of the package
	+ vf2All : vflib frontend matching tool
	* simpleGM : small interface and output changes

