Field - owningStructure - binary - logical - visual - representation Binary Logical Visual Representation Structure - name - description - fields - data + putData(Field*, data) + validateData(Field*, data) + updateData() + ... AFieldFactory + createField() + createFieldBinaryInformation() + createFieldLogicalInformation() + createFieldVisualInformation() + createFieldRepresentation() AStructureFactory + createStructure() StructureFactory FieldFactory RandomAccessBinary - binaryData + setBytes(uint position, std::vector<uint8_t> data) + setByte(uint position, uint8_t data) + setBit(uint64_t position, bool value) + setBit(uint bytePosition, uint bitPosition, bool value) + setBits(uint64_t position, uint bits, uint value) + setBits(uint bytePosition, uint bitPosition, uint bits, uint value) + getByte(uint position) + getBytes(uint position, uint bytes) + getBit(uint64_t position) + getBit(uint bytePosition, uint bitPosition) + getBits(uint64_t position, uint bits) + getBits(uint bytePosition, uint bitPosition, uint bits) + get_uint32(uint position) + get_uint16(uint position) + get_uint64(uint position) + get_float(uint position) + get_double(uint position) + get_string(uint position, uint length) + get_hex_string(uint position, uint length) + get_hex_string() Model +getBinary():byte[] +getStructures():Structure[] +addStructure() +remStructure() AModelFactory + createModel() ModelFactory Repository +addStructure() +remStructure() +getStructures() Contains the known structures. AModel AStructure AField ARepository RepositoryFactory ARepositoryFactory