File: molecule_tautomer_matcher.h

package info (click to toggle)
indigo 1.1.12-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 26,788 kB
  • ctags: 43,825
  • sloc: ansic: 309,179; cpp: 112,400; cs: 8,446; asm: 8,011; java: 6,652; sql: 6,647; xml: 3,397; python: 3,339; sh: 207; makefile: 158; php: 48
file content (76 lines) | stat: -rw-r--r-- 2,056 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/****************************************************************************
 * Copyright (C) 2009-2013 GGA Software Services LLC
 * 
 * This file is part of Indigo toolkit.
 * 
 * This file may be distributed and/or modified under the terms of the
 * GNU General Public License version 3 as published by the Free Software
 * Foundation and appearing in the file LICENSE.GPL included in the
 * packaging of this file.
 * 
 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 ***************************************************************************/

#ifndef __molecule_tautomer_matcher__
#define __molecule_tautomer_matcher__

#include "graph/embedding_enumerator.h"
#include "molecule/molecule_tautomer.h"
#include "base_cpp/auto_ptr.h"

namespace indigo {

class Molecule;
class AromaticityMatcher;

class MoleculeTautomerMatcher
{
public:
   DECL_ERROR;

   bool highlight;

   AromaticityOptions arom_options;

   MoleculeTautomerMatcher (Molecule &target, bool substructure);

   void setQuery (BaseMolecule &query);

   void setRulesList (const PtrArray<TautomerRule> *rules_list);
   void setRules (int rules_set, bool force_hydrogens, bool ring_chain);

   bool find ();

   const int * getQueryMapping ();

   static void parseConditions (const char *tautomer_text, int &rules, bool &force_hydrogens, bool &ring_chain);

   static int countNonHydrogens (BaseMolecule &molecule);

protected:

   bool _find (bool substructure);

   static bool _checkRules (TautomerSearchContext &context, int first1, int first2, int last1, int last2);

   bool _substructure;
   bool _force_hydrogens;
   bool _ring_chain;
   int  _rules;

   const PtrArray<TautomerRule> *_rules_list;
   AutoPtr<TautomerSearchContext> _context;
   Molecule &_target_src;
   AutoPtr<BaseMolecule> _query;

   Obj<TautomerSuperStructure> _target;
   BaseMolecule *_supermol;

   Obj<GraphDecomposer> _query_decomposer;
   Obj<GraphDecomposer> _target_decomposer;
};

}

#endif