59 std::map<std::string, int> schemaEntriesMap;
60 std::vector<schemaEntry_t> schemaEntries;
65 mutable int warningCount{10};
67 std::string schemaName;
70 int getTypeSize(
int id);
71 int getTypeByString(std::string &typeName);
76 schema(){ groupid = 0; itemid = 0; rowLength = 0;}
77 schema(
const char *name,
int __group,
int __item){
78 schemaName = name; groupid = __group; itemid = __item;
81 schemaName = s.schemaName;
82 schemaEntries = s.schemaEntries;
83 schemaEntriesMap = s.schemaEntriesMap;
90 void parse(
const std::string& schString);
91 std::string
getName()
const {
return schemaName;}
97 const auto nentries = schemaEntries.size()-1;
98 const auto &sch=schemaEntries[nentries];
99 return sch.offset + sch.typeSize;
105 if(schemaEntriesMap.count(name))
return true;
110 const auto &sch=schemaEntries[item];
111 return rows*sch.offset + order*sch.typeSize;
114 int getOffset(
const char *name,
int order,
int rows)
const {
115 int item = schemaEntriesMap.at(name);
120 return schemaEntries[item].typeId;
125 return schemaEntries[item].typeId;
130 std::string
getEntryName(
int item)
const noexcept {
return schemaEntries[item].name;}
131 int getEntries() const noexcept {
return schemaEntries.size();}
138 schemaName = D.schemaName;
141 schemaEntries = D.schemaEntries;
142 schemaEntriesMap = D.schemaEntriesMap;
148 return schemaEntriesMap.at(name);
150 if(warningCount>0 ) { warningCount--; std::cout<<
"Warning , hipo::schema getEntryOrder(const char *name) item :" <<name<<
" not found, for bank "<<schemaName<<
" data for this item is not valid "<<std::endl;
159 std::map<std::string,schema> factory;
166 bool hasSchema(
const char *name) {
return (factory.count(name)!=0);}
168 if(factory.count(name)==0){
169 throw hipo::schema_error(std::string(
"hipo::dictionary: schema '") + name +
"' does not exist");
171 return factory[name];
173 bool parse(
const char *schemaString);
Collection of schema definitions, typically read from a HIPO file header.
Definition dictionary.h:157
bool parse(const char *schemaString)
Definition dictionary.cpp:126
void addSchema(schema sc)
Definition dictionary.h:165
schema & getSchema(const char *name)
Definition dictionary.h:167
std::vector< std::string > getSchemaList()
Definition dictionary.cpp:117
virtual ~dictionary()=default
bool hasSchema(const char *name)
Definition dictionary.h:166
void show()
Definition dictionary.cpp:139
Definition hipoexceptions.h:26
Schema definition for a HIPO bank.
Definition dictionary.h:56
void parse(const std::string &schString)
Definition dictionary.cpp:13
void operator=(const schema &D)
Definition dictionary.h:137
schema()
Definition dictionary.h:76
std::string getName() const
Definition dictionary.h:91
std::string getSchemaString()
Definition dictionary.cpp:82
virtual ~schema()=default
bool exists(const char *name) const
Definition dictionary.h:104
int getEntryOrder(const char *name) const
Definition dictionary.h:146
std::string getEntryName(int item) const noexcept
Definition dictionary.h:130
schema(const char *name, int __group, int __item)
Definition dictionary.h:77
int getSizeForRows(int rows)
Definition dictionary.cpp:76
int getOffset(int item, int order, int rows) const
Definition dictionary.h:109
void show()
Definition dictionary.cpp:63
int getEntryType(const char *name) const noexcept
Definition dictionary.h:122
int getRowLength() const noexcept
Definition dictionary.h:96
int getItem()
Definition dictionary.h:93
int getEntries() const noexcept
Definition dictionary.h:131
int getGroup()
Definition dictionary.h:92
std::string getSchemaStringJson()
Definition dictionary.cpp:96
int getOffset(const char *name, int order, int rows) const
Definition dictionary.h:114
int getEntryType(int item) const noexcept
Definition dictionary.h:119
schema(const schema &s)
Definition dictionary.h:80
HIPO namespace is used for the classes that read/write files and records.
Definition bank.cpp:45
Type
Definition dictionary.h:35
@ kLong
Definition dictionary.h:41
@ kInt
Definition dictionary.h:38
@ kFloat
Definition dictionary.h:39
@ kShort
Definition dictionary.h:37
@ kByte
Definition dictionary.h:36
@ kDouble
Definition dictionary.h:40
Definition dictionary.h:27
int typeId
Definition dictionary.h:30
int offset
Definition dictionary.h:32
std::string type
Definition dictionary.h:29
std::string name
Definition dictionary.h:28
int typeSize
Definition dictionary.h:31