UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
db_container.H
1 /* db_container.H */
2 /*
3  Унификация обращения к базе данных */ /* $Id: db_container.H,v 2.5 2000/06/26 17:10:32 hoh Exp $ */ #ifndef __db_container_H #define __db_container_H #include <ldb/dbtools.h> #include <mix/General.h> #include <mix/ObjectsAr.H> #include <mix/geometry.H> class model_db_container; class any_model; class db_container; class db_results_manager; class db_containers; // Класс, хранящий идентификатор (номер) некоторого объекта в model_db_container class StorageID{ protected: int value; StorageID(int i){value=i;}; public: ~StorageID(); int operator =(const StorageID& c){value=c.value; return 1;}; int operator ==(const StorageID& c)const; StorageID(const StorageID& i){value=i.value;}; friend class db_containers; }; // Переходник между model_db_container и db_container, чтобы можно было удалять // из списка без его ведома, этот список не разрушая class chain{ protected: db_container* dbcStorage; chain(db_container* dbc,const StorageID&c):id(c){ dbcStorage=dbc; }; ~chain(){}; StorageID id; public: void unlink(){dbcStorage=NULL;}; friend class db_containers; friend class ObjectsAr<chain*>; }; typedef chain* p_chain; typedef ObjectsAr<p_chain> chains_dynar; // Класс, умеющий храниться в model_db_container и вызывать чтение-запись данных // из/в БД class db_container{ private: chain* pLink; protected: db_results_manager&dbm; char sProject[PROJECT_LEN+1]; int iModelId; void (*idle_func)(); void remind() const; public: db_container(db_results_manager&dbM,const char* sProject, int id); ~db_container(); virtual int store() const; virtual int load(); void set_idle_process(void(*f)()); friend class db_containers; }; typedef db_container* p_db_container; typedef ObjectsAr<p_db_container> db_container_dynar; class db_containers:private chains_dynar{ int id2int(const StorageID&)const; StorageID new_id(); int iMax; public: db_containers(); p_db_container& operator [](const StorageID&s){return fetch(s);}; p_db_container& operator ()(const StorageID&s) const{return get(s);}; p_db_container& fetch(const StorageID&); p_db_container& get(const StorageID&) const; StorageID cont2id(p_db_container)const; StorageID addh(p_db_container); }; class model_db_container{ protected: db_containers dbStorage; public: void store(const StorageID&) const; void load(const StorageID&); StorageID publish(db_container&); StorageID cont2id(db_container&)const; }; #endif /* db_container.H */ /* Melnikov George Yu. 30-Mar-1999 */ /* ... */ /* Melnikov George Yu. 30-Nov-1999 */
4  */
5 /* $Id: db_container.H,v 2.5 2000/06/26 17:10:32 hoh Exp $ */
6 #ifndef __db_container_H
7 #define __db_container_H
8 
9 #include <ldb/dbtools.h>
10 #include <mix/General.h>
11 
12 #include <mix/ObjectsAr.H>
13 #include <mix/geometry.H>
14 
15 
16 class model_db_container;
17 class any_model;
18 class db_container;
19 class db_results_manager;
20 class db_containers;
21 
22 
23 // Класс, хранящий идентификатор (номер) некоторого объекта в model_db_container
24 class StorageID{
25 protected:
26  int value;
27  StorageID(int i){value=i;};
28 public:
29  ~StorageID();
30  int operator =(const StorageID& c){value=c.value; return 1;};
31  int operator ==(const StorageID& c)const;
32  StorageID(const StorageID& i){value=i.value;};
33 
34  friend class db_containers;
35 };
36 
37 
38 // Переходник между model_db_container и db_container, чтобы можно было удалять// из списка без его ведома, этот список не разрушая class chain{ protected: db_container* dbcStorage; chain(db_container* dbc,const StorageID&c):id(c){ dbcStorage=dbc; }; ~chain(){}; StorageID id; public: void unlink(){dbcStorage=NULL;}; friend class db_containers; friend class ObjectsAr<chain*>; }; typedef chain* p_chain; typedef ObjectsAr<p_chain> chains_dynar; // Класс, умеющий храниться в model_db_container и вызывать чтение-запись данных // из/в БД class db_container{ private: chain* pLink; protected: db_results_manager&dbm; char sProject[PROJECT_LEN+1]; int iModelId; void (*idle_func)(); void remind() const; public: db_container(db_results_manager&dbM,const char* sProject, int id); ~db_container(); virtual int store() const; virtual int load(); void set_idle_process(void(*f)()); friend class db_containers; }; typedef db_container* p_db_container; typedef ObjectsAr<p_db_container> db_container_dynar; class db_containers:private chains_dynar{ int id2int(const StorageID&)const; StorageID new_id(); int iMax; public: db_containers(); p_db_container& operator [](const StorageID&s){return fetch(s);}; p_db_container& operator ()(const StorageID&s) const{return get(s);}; p_db_container& fetch(const StorageID&); p_db_container& get(const StorageID&) const; StorageID cont2id(p_db_container)const; StorageID addh(p_db_container); }; class model_db_container{ protected: db_containers dbStorage; public: void store(const StorageID&) const; void load(const StorageID&); StorageID publish(db_container&); StorageID cont2id(db_container&)const; }; #endif /* db_container.H */ /* Melnikov George Yu. 30-Mar-1999 */ /* ... */ /* Melnikov George Yu. 30-Nov-1999 */
39 // из списка без его ведома, этот список не разрушая
40 class chain{
41 protected:
42  db_container* dbcStorage;
43  chain(db_container* dbc,const StorageID&c):id(c){
44  dbcStorage=dbc;
45  };
46  ~chain(){};
47  StorageID id;
48 public:
49  void unlink(){dbcStorage=NULL;};
50 
51 friend class db_containers;
52 friend class ObjectsAr<chain*>;
53 };
54 typedef chain* p_chain;
56 
57 // Класс, умеющий храниться в model_db_container и вызывать чтение-запись данных// из/в БД class db_container{ private: chain* pLink; protected: db_results_manager&dbm; char sProject[PROJECT_LEN+1]; int iModelId; void (*idle_func)(); void remind() const; public: db_container(db_results_manager&dbM,const char* sProject, int id); ~db_container(); virtual int store() const; virtual int load(); void set_idle_process(void(*f)()); friend class db_containers; }; typedef db_container* p_db_container; typedef ObjectsAr<p_db_container> db_container_dynar; class db_containers:private chains_dynar{ int id2int(const StorageID&)const; StorageID new_id(); int iMax; public: db_containers(); p_db_container& operator [](const StorageID&s){return fetch(s);}; p_db_container& operator ()(const StorageID&s) const{return get(s);}; p_db_container& fetch(const StorageID&); p_db_container& get(const StorageID&) const; StorageID cont2id(p_db_container)const; StorageID addh(p_db_container); }; class model_db_container{ protected: db_containers dbStorage; public: void store(const StorageID&) const; void load(const StorageID&); StorageID publish(db_container&); StorageID cont2id(db_container&)const; }; #endif /* db_container.H */ /* Melnikov George Yu. 30-Mar-1999 */ /* ... */ /* Melnikov George Yu. 30-Nov-1999 */
58 // из/в БД
60 private:
61  chain* pLink;
62 protected:
64  char sProject[PROJECT_LEN+1];
65  int iModelId;
66  void (*idle_func)();
67 
68  void remind() const;
69 public:
70  db_container(db_results_manager&dbM,const char* sProject, int id);
71  ~db_container();
72  virtual int store() const;
73  virtual int load();
74  void set_idle_process(void(*f)());
75 
76 friend class db_containers;
77 };
80 
82  int id2int(const StorageID&)const;
83  StorageID new_id();
84  int iMax;
85 public:
86  db_containers();
87  p_db_container& operator [](const StorageID&s){return fetch(s);};
88  p_db_container& operator ()(const StorageID&s) const{return get(s);};
89  p_db_container& fetch(const StorageID&);
90  p_db_container& get(const StorageID&) const;
91  StorageID cont2id(p_db_container)const;
93 };
94 
96 protected:
97  db_containers dbStorage;
98 public:
99  void store(const StorageID&) const;
100  void load(const StorageID&);
101  StorageID publish(db_container&);
102  StorageID cont2id(db_container&)const;
103 };
104 
105 #endif /* db_container.H */
106 
107 /* Melnikov George Yu. 30-Mar-1999 */
108 /* ... */
109 /* Melnikov George Yu. 30-Nov-1999 */
Definition: any_model.H:30
Definition: db_container.H:81
Definition: db_container.H:40
Definition: db_managers.H:75
Definition: db_container.H:95
Definition: db_container.H:59
Definition: ObjectsAr.H:21
Definition: db_container.H:24