00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef BITFACTORY_H
00020 #define BITFACTORY_H
00021
00022 #include <bit/fieldbase.h>
00023 #include <bit/fieldtype.h>
00024 #include <bit/field.h>
00025 #include <bit/fieldvector.h>
00026 #include <bit/record.h>
00027 #include <bit/recordvector.h>
00028
00029 namespace bit {
00030
00031 extern std::vector<std::string> xml_file_load_path;
00032
00033 void initialize_xml_file_load_path();
00034
00035 RecordBase::pointer xml_load_file(const std::string& filename);
00036 RecordBase::pointer xml_load_memory(const std::string& string);
00037 RecordBase::pointer xml_load_memory_raw(const unsigned char *contents, size_t bytes_count);
00038 RecordBase::pointer xml_load_stream(std::istream &in);
00039
00040 RecordBase::pointer xml_read_record(xmlpp::Element& xml_element, int& last_position, size_t length_units=BITS, size_t offset_units=BITS, const FieldType& default_type=FieldType());
00041
00042 Field::pointer xml_read_field(xmlpp::Element& xml_element, int& last_position, size_t length_units=BITS, size_t offset_units=BITS, const FieldType& default_type=FieldType());
00043
00044 FieldType xml_read_type(xmlpp::Element& xml_element);
00045
00046 void xml_read_skip(xmlpp::Element& xml_element, int& last_position, size_t length_units=BITS, size_t offset_units=BITS);
00047
00048 size_t get_units(std::string s);
00049
00050 std::string get_xml_file_as_string(const std::string& filename);
00051 }
00052
00053 #endif