20#ifndef HURRICANE_DATA_BASE
21#define HURRICANE_DATA_BASE
25#include "hurricane/DBo.h"
26#include "hurricane/DbU.h"
40class DataBase :
public DBo {
43 static FastRTTI _fastRTTI;
45 static inline const FastRTTI& fastRTTI ();
46 virtual const FastRTTI& vfastRTTI ()
const;
51 public:
typedef DBo Inherit;
52 public:
enum Flags { NoFlags = 0
54 , WarnCreateLib=(1<<2) };
59 private:
static DataBase* _db;
67 protected: DataBase();
72 protected:
virtual void _postCreate();
74 protected:
virtual void _preDestroy();
76 public:
virtual void _toJson(JsonWriter*)
const;
77 public:
virtual string _getTypeName()
const {
return _TName(
"DataBase");};
78 public:
virtual string _getString()
const;
79 public:
virtual Record* _getRecord()
const;
81 public:
void _setTechnology(
Technology* technology) {_technology = technology;};
82 public:
void _setRootLibrary(
Library* rootLibrary) {_rootLibrary = rootLibrary;};
83 public:
void _setCellLoader(function<
Hurricane::Cell*(
string)> loader) { _cellLoader=loader; };
92 public:
Library* getLibrary(
string,
unsigned int flags);
93 public:
Cell* getCell(
string,
unsigned int flags);
94 public:
Cell* getCell(
string);
96 public:
static DataBase*
getDB();
101 inline const FastRTTI& DataBase::fastRTTI () {
return _fastRTTI; }
109class JsonDataBase :
public JsonDBo {
112 public:
static void initialize();
113 public: JsonDataBase(
unsigned long flags);
115 public:
virtual JsonDataBase* clone(
unsigned long)
const;
116 public:
virtual void toData(JsonStack&);
The model (API).
Definition Cell.h:64
The whole DataBase (API).
Definition DataBase.h:40
Technology * getTechnology() const
Definition DataBase.h:90
static DataBase * getDB()
Library * getRootLibrary() const
Definition DataBase.h:91
static DataBase * create()
virtual std::string getTypeName() const =0
Library description (API).
Definition Library.h:38
Technological rules description (API).
Definition Technology.h:62
Contains Almost Everything.
Definition BasicLayer.h:39