2017-10-26 21:37:44 +02:00
|
|
|
# NPC core
|
|
|
|
|
|
|
|
```plantuml
|
2018-02-13 15:31:13 +01:00
|
|
|
|
|
|
|
|
2017-10-26 21:37:44 +02:00
|
|
|
class RepositoryFactory
|
|
|
|
class Repository {
|
|
|
|
+addStructure()
|
|
|
|
+removeStructure()
|
|
|
|
+getStructure()
|
|
|
|
}
|
|
|
|
|
2018-02-13 15:31:13 +01:00
|
|
|
|
2017-10-26 21:37:44 +02:00
|
|
|
class StackModelFactory
|
|
|
|
|
2018-02-13 15:31:13 +01:00
|
|
|
|
2017-10-26 21:37:44 +02:00
|
|
|
class StackModel {
|
|
|
|
+getBinary():byte[]
|
|
|
|
+getStructures():Structure[]
|
|
|
|
+addStructure()
|
|
|
|
+removeStructure()
|
|
|
|
}
|
|
|
|
|
2018-02-13 15:31:13 +01:00
|
|
|
|
2017-10-26 21:37:44 +02:00
|
|
|
class StructureFactory
|
2018-02-13 15:31:13 +01:00
|
|
|
|
2017-10-26 21:37:44 +02:00
|
|
|
class Structure {
|
|
|
|
-name
|
|
|
|
-description
|
|
|
|
-fields
|
|
|
|
-data
|
|
|
|
+putData(Field, data)
|
|
|
|
+validateData(Field, data)
|
|
|
|
+updateData()
|
|
|
|
}
|
|
|
|
|
2018-02-13 15:31:13 +01:00
|
|
|
|
|
|
|
class FieldFactory{
|
2017-10-26 21:37:44 +02:00
|
|
|
+ createField()
|
|
|
|
+ createFieldBinaryInformation()
|
|
|
|
+ createFieldLogicalInformation()
|
|
|
|
+ createFieldVisualInformation()
|
|
|
|
+ createFieldRepresentation()
|
|
|
|
}
|
2018-02-13 15:31:13 +01:00
|
|
|
|
2017-10-26 21:37:44 +02:00
|
|
|
class Field {
|
|
|
|
- owningStructure
|
|
|
|
- binary
|
|
|
|
- logical
|
|
|
|
- visual
|
|
|
|
- representation
|
|
|
|
}
|
|
|
|
|
|
|
|
class 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()
|
|
|
|
}
|
|
|
|
|
|
|
|
RepositoryFactory --> Repository : creates >
|
|
|
|
|
|
|
|
StackModelFactory --> StackModel: creates >
|
|
|
|
|
|
|
|
StructureFactory --> Structure : creates >
|
|
|
|
StackModel *-- Structure
|
|
|
|
Repository *-- Structure
|
|
|
|
|
|
|
|
FieldFactory --> Field : creates >
|
|
|
|
|
|
|
|
Structure *-- Field
|
|
|
|
|
|
|
|
StackModel *-- "1" RandomAccessBinary
|
|
|
|
|
|
|
|
```
|