source: CMT/v1r10p20011126/src/cmt_database.cxx @ 1

Last change on this file since 1 was 1, checked in by arnault, 19 years ago

Import all tags

File size: 4.1 KB
Line 
1
2#include "cmt_database.h"
3#include "cmt_vector.h"
4
5template <class T> 
6class dumper
7{
8public :
9  void dump_vector (const cmt_vector<T>& vector, 
10                    const cmt_string& title)
11      {
12        int i;
13       
14        {
15            //const cmt_vector<T>::frame_ptr frame = vector.get_frame ();
16          T** frame = vector.get_frame ();
17         
18          cout << title << " frame=" << frame << " size=" << vector.size () << endl;
19         
20          int element = 0;
21         
22          for (i = 0; i < vector.get_frame_number (); i++)
23            {
24                //cmt_vector<T>::element_ptr ptr = frame[i];
25              T* ptr = frame[i];
26              for (int j = 0; j < vector.get_frame_size (); j++)
27                {
28                  element++;
29                  if (element >= vector.size ()) break;
30                 
31                  cout << "   frame[" << i << "][" << j << "]=" << &ptr[j] << endl;
32                }
33             
34              if (element >= vector.size ()) break;
35            }
36        }
37      }
38};
39
40Database& Database::instance ()
41{
42  static Database db;
43
44  return (db);
45}
46
47void Database::dump (const cmt_string& title,
48                     keys key_set)
49{
50  static Database& db = instance ();
51  static dumper<Branch> branch_dumper;
52  static dumper<Constituent> constituent_dumper;
53  static dumper<Fragment> fragment_dumper;
54  static dumper<Group> group_dumper;
55  static dumper<Language> language_dumper;
56  static dumper<Pattern> pattern_dumper;
57  static dumper<Tag> tag_dumper;
58  static dumper<Use> use_dumper;
59  static dumper<Symbol> symbol_dumper;
60
61  cout << "Database>-------------" << title << endl;
62
63  if ((key_set & key_branch) != 0) branch_dumper.dump_vector (db.m_branches, "Branches");
64  if ((key_set & key_constituent) != 0) constituent_dumper.dump_vector (db.m_constituents, "Constituents");
65  if ((key_set & key_fragment) != 0) fragment_dumper.dump_vector (db.m_fragments, "Fragments");
66  if ((key_set & key_group) != 0) group_dumper.dump_vector (db.m_groups, "Groups");
67  if ((key_set & key_language) != 0) language_dumper.dump_vector (db.m_languages, "Languages");
68  if ((key_set & key_pattern) != 0) pattern_dumper.dump_vector (db.m_patterns, "Patterns");
69  if ((key_set & key_tag) != 0) tag_dumper.dump_vector (db.m_all_tags, "AllTags");
70  if ((key_set & key_use) != 0) use_dumper.dump_vector (db.m_all_uses, "Uses");
71  if ((key_set & key_symbol) != 0) symbol_dumper.dump_vector (db.m_symbols, "Symbols");
72
73  cout << "Database>-------------" << endl;
74}
75
76void Database::clear ()
77{
78  Branch::clear_all ();
79  Constituent::clear_all ();
80  Fragment::clear_all ();
81  Group::clear_all ();
82  Language::clear_all ();
83  Pattern::clear_all ();
84  Tag::clear_all ();
85  Use::clear_all ();
86  Symbol::clear_all ();
87}
88
89Branch::BranchVector& Database::branches ()
90{
91  static Database& db = instance ();
92
93  return (db.m_branches);
94}
95
96Constituent::ConstituentVector& Database::constituents ()
97{
98  static Database& db = instance ();
99
100  return (db.m_constituents);
101}
102
103Fragment::FragmentVector& Database::fragments ()
104{
105  static Database& db = instance ();
106
107  return (db.m_fragments);
108}
109
110Group::GroupVector& Database::groups ()
111{
112  static Database& db = instance ();
113
114  return (db.m_groups);
115}
116
117Language::LanguageVector& Database::languages ()
118{
119  static Database& db = instance ();
120
121  return (db.m_languages);
122}
123
124Pattern::PatternVector& Database::patterns ()
125{
126  static Database& db = instance ();
127
128  return (db.m_patterns);
129}
130
131Tag::TagVector& Database::all_tags ()
132{
133  static Database& db = instance ();
134
135  return (db.m_all_tags);
136}
137
138Tag::TagPtrVector& Database::tags ()
139{
140  static Database& db = instance ();
141
142  return (db.m_tags);
143}
144
145Use::UseVector& Database::all_uses ()
146{
147  static Database& db = instance ();
148
149  return (db.m_all_uses);
150}
151
152Use::UsePtrVector& Database::uses ()
153{
154  static Database& db = instance ();
155
156  return (db.m_uses);
157}
158
159Symbol::SymbolVector& Database::symbols ()
160{
161  static Database& db = instance ();
162
163  return (db.m_symbols);
164}
165
166Database::Database ()
167{
168}
169
Note: See TracBrowser for help on using the repository browser.