This repository has been archived on 2020-12-30. You can view files and clone it, but cannot push or open issues or pull requests.
NetworkPacketComposer/doc/model.md

1.8 KiB

NPC core



class RepositoryFactory
class Repository {
  +addStructure()
  +removeStructure()
  +getStructure()
}


class StackModelFactory


class StackModel {
  +getBinary():byte[]
  +getStructures():Structure[]
  +addStructure()
  +removeStructure()
}


class StructureFactory

class Structure {
  -name
  -description
  -fields
  -data
  +putData(Field, data)
  +validateData(Field, data)
  +updateData()
}


class FieldFactory{
+ createField()
+ createFieldBinaryInformation()
+ createFieldLogicalInformation()
+ createFieldVisualInformation()
+ createFieldRepresentation()
}

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