Compare commits
3 Commits
master
...
unknown_st
Author | SHA1 | Date |
---|---|---|
Marcel M. Otte | 8785596ba2 | |
Marcel M. Otte | 0ccbee1438 | |
Marcel M. Otte | 9b5ce8b7a1 |
|
@ -3,5 +3,3 @@
|
|||
build
|
||||
*.user*
|
||||
doxygen
|
||||
venv
|
||||
compile_commands.json
|
||||
|
|
|
@ -1,15 +1,13 @@
|
|||
cmake_minimum_required(VERSION 2.8.12)
|
||||
project(network_packet_composer)
|
||||
# set(CMAKE_CXX_COMPILER clazy)
|
||||
set(CMAKE_CXX_FLAGS "-std=c++14 -g -Wall")
|
||||
|
||||
set(CMAKE_CXX_FLAGS "--std=c++14 -g -Wall")
|
||||
|
||||
# Find includes in corresponding build directories
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
# Instruct CMake to run moc automatically when needed.
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
|
||||
set( CMAKE_EXPORT_COMPILE_COMMANDS ON )
|
||||
|
||||
# Find the QtWidgets library
|
||||
find_package(Qt5Widgets)
|
||||
|
||||
|
|
43
Readme.md
43
Readme.md
|
@ -1,43 +0,0 @@
|
|||
# Network Packet Composer
|
||||
|
||||
Is a software to create network packets from scratch for testing purposes.
|
||||
|
||||
# Minimal functionality in first alpha version
|
||||
|
||||
Be able to:
|
||||
|
||||
- Show a row of fields where one field has
|
||||
- A name
|
||||
- A description
|
||||
- A size in bit (values greater are just cut off)
|
||||
- A value (input in hex)
|
||||
- Convert this row of fields to a binary array through RAB (RandomAccessBinary)
|
||||
- Show the created binary array in hex
|
||||
|
||||
# Second alpha version
|
||||
|
||||
Be able to:
|
||||
|
||||
- Use integer as value input, not hex
|
||||
- Restrict field input with regular expressions
|
||||
- Write the binary to file (through proper interfaces which may be replaced by sending through the network!)
|
||||
- Highlight current field inside the shown binary in hex
|
||||
|
||||
# Third alpha version
|
||||
|
||||
- Allow also text as value input for data payload
|
||||
- Means also having a special marked field for payload data (checkbox?)
|
||||
- Write and read field structure in YAML to disk
|
||||
|
||||
# Fourth alpha version
|
||||
|
||||
- Create multiple structures, meaning protocol stacks
|
||||
- Write network send logic
|
||||
|
||||
# Fifth alpha version
|
||||
|
||||
- Optimize
|
||||
- Think about next additional features
|
||||
- Release beta
|
||||
|
||||
# First beta - TODO
|
|
@ -1,9 +0,0 @@
|
|||
[requires]
|
||||
Qt/5.8.0@osechet/stable
|
||||
gtest/1.8.0@bincrafters/stable
|
||||
|
||||
[options]
|
||||
Qt:shared=True
|
||||
|
||||
[generators]
|
||||
cmake
|
|
@ -0,0 +1,170 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
|
||||
<!--Created by yEd 3.16.2.1-->
|
||||
<key attr.name="Beschreibung" attr.type="string" for="graph" id="d0"/>
|
||||
<key for="port" id="d1" yfiles.type="portgraphics"/>
|
||||
<key for="port" id="d2" yfiles.type="portgeometry"/>
|
||||
<key for="port" id="d3" yfiles.type="portuserdata"/>
|
||||
<key attr.name="url" attr.type="string" for="node" id="d4"/>
|
||||
<key attr.name="description" attr.type="string" for="node" id="d5"/>
|
||||
<key for="node" id="d6" yfiles.type="nodegraphics"/>
|
||||
<key for="graphml" id="d7" yfiles.type="resources"/>
|
||||
<key attr.name="url" attr.type="string" for="edge" id="d8"/>
|
||||
<key attr.name="description" attr.type="string" for="edge" id="d9"/>
|
||||
<key for="edge" id="d10" yfiles.type="edgegraphics"/>
|
||||
<graph edgedefault="directed" id="G">
|
||||
<data key="d0"/>
|
||||
<node id="n0">
|
||||
<data key="d4"/>
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="215.0" x="373.0" y="162.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="192.2333984375" x="11.38330078125" y="3.0">ABinaryUtilisationFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n1">
|
||||
<data key="d4"/>
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="215.0" x="373.0" y="246.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="182.17236328125" x="16.413818359375" y="3.0">BinaryUtilisationFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n2">
|
||||
<data key="d4"/>
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="102.0" width="215.0" x="373.0" y="369.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="136.84375" x="39.078125" y="3.0">ABinaryUtilisation<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel>+utilse(byte[])
|
||||
+getOptions():string (yaml?)
|
||||
+setOptions(string)
|
||||
</y:MethodLabel>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n3">
|
||||
<data key="d4"/>
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="215.0" x="373.0" y="575.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="188.69140625" x="13.154296875" y="3.0">NetworkBinaryUtilisation<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n4">
|
||||
<data key="d4"/>
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="215.0" x="627.0" y="575.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="188.818359375" x="13.0908203125" y="3.0">SaveFileBinaryUtilisation<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<edge id="e0" source="n1" target="n0">
|
||||
<data key="d8"/>
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e1" source="n3" target="n2">
|
||||
<data key="d8"/>
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e2" source="n4" target="n2">
|
||||
<data key="d8"/>
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
</graph>
|
||||
<data key="d7">
|
||||
<y:Resources/>
|
||||
</data>
|
||||
</graphml>
|
|
@ -0,0 +1,422 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
|
||||
<!--Created by yEd 3.15.0.2-->
|
||||
<key for="graphml" id="d0" yfiles.type="resources"/>
|
||||
<key for="port" id="d1" yfiles.type="portgraphics"/>
|
||||
<key for="port" id="d2" yfiles.type="portgeometry"/>
|
||||
<key for="port" id="d3" yfiles.type="portuserdata"/>
|
||||
<key attr.name="url" attr.type="string" for="node" id="d4"/>
|
||||
<key attr.name="description" attr.type="string" for="node" id="d5"/>
|
||||
<key for="node" id="d6" yfiles.type="nodegraphics"/>
|
||||
<key attr.name="Beschreibung" attr.type="string" for="graph" id="d7"/>
|
||||
<key attr.name="url" attr.type="string" for="edge" id="d8"/>
|
||||
<key attr.name="description" attr.type="string" for="edge" id="d9"/>
|
||||
<key for="edge" id="d10" yfiles.type="edgegraphics"/>
|
||||
<graph edgedefault="directed" id="G">
|
||||
<data key="d7"/>
|
||||
<node id="n0">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="153.0" width="141.0" x="664.9031141868512" y="-723.559688581315"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" modelName="custom" textColor="#000000" visible="true" width="48.19873046875" x="46.400634765625" y="3.0">Editor<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel>- List of Elements
|
||||
- EditorPane</y:AttributeLabel>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n1">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="194.2067474048443" width="169.7024221453288" x="377.2975778546712" y="-681.0717993079584"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" modelName="custom" textColor="#000000" visible="true" width="63.9853515625" x="52.8585352914144" y="3.0">Element<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel>- Layer
|
||||
- Input
|
||||
- Name
|
||||
- Hint
|
||||
- SyntaxHint</y:AttributeLabel>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n2">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="100.0" x="575.9031141868512" y="-410.55968858131496"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" modelName="custom" textColor="#000000" visible="true" width="44.75830078125" x="27.620849609375" y="3.0">Layer<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n3">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="140.0" width="321.0" x="590.25" y="291.5"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" modelName="custom" textColor="#000000" visible="true" width="122.0791015625" x="99.46044921875" y="3.0">IProtocolReader<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel>+ getProtocolList() : std::list<string>
|
||||
+ getProtocol(identifier : string) : ProtocolModel
|
||||
|
||||
+ setSearchPath(path : string) : void
|
||||
+ refresh()</y:MethodLabel>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n4">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="178.0" x="791.5" y="495.5"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" modelName="custom" textColor="#000000" visible="true" width="153.43017578125" x="12.284912109375" y="3.0">YamlProtocolReader<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n5">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="178.0" x="532.0" y="495.5"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" modelName="custom" textColor="#000000" visible="true" width="148.4853515625" x="14.75732421875" y="3.0">XMLProtocolReader<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n6">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="178.0" x="661.75" y="553.5"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" modelName="custom" textColor="#000000" visible="true" width="153.373046875" x="12.3134765625" y="3.0">JSONProtocolReader<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n7">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="59.0" width="231.0" x="285.0" y="523.5"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" modelName="custom" textColor="#000000" visible="true" width="109.55517578125" x="60.722412109375" y="3.0">ProtocolModel<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel>- elements : list<ProtocolElement></y:AttributeLabel>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n8">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="78.14549968739891" width="230.99999999999994" x="285.0" y="412.3545003126011"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" modelName="custom" textColor="#000000" visible="true" width="89.1474609375" x="70.92626953124997" y="3.0">StackModel<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel>- stack : list<ProtocolModel></y:AttributeLabel>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n9">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="169.0" width="155.0" x="323.0" y="612.5"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" modelName="custom" textColor="#000000" visible="true" width="125.09423828125" x="14.952880859375" y="3.0">ProtocolElement<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel>- sizeInBit : int
|
||||
- name : string
|
||||
- description : string
|
||||
- regex : string
|
||||
- nextLayer : bool</y:AttributeLabel>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n10">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="245.80709342560556" width="293.0" x="254.0" y="126.69290657439444"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" modelName="custom" textColor="#000000" visible="true" width="108.97119140625" x="92.014404296875" y="3.0">StackManager<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel>+ getAvailableProtocolNames() : list<name>
|
||||
+ addProtocolToStack(name) : bool
|
||||
+ getProtocolModel(name) : ProtocolModel
|
||||
+ loadProtocols()
|
||||
+ </y:MethodLabel>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n11">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="95.0" width="293.0" x="-82.25" y="311.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" modelName="custom" textColor="#000000" visible="true" width="110.16455078125" x="91.417724609375" y="3.0">StackCompiler<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel>+ compile(model : StackModel) : byte[]
|
||||
+ compile(pmodel : ProtocolModel) : byte[]</y:MethodLabel>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n12">
|
||||
<data key="d4"/>
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="261.11245674740485" width="282.4870242214533" x="254.0" y="-369.3529411764706"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" modelName="custom" textColor="#000000" visible="true" width="108.431640625" x="87.02769179822664" y="3.0">ElementModel<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel>- title
|
||||
- regex
|
||||
- userinput
|
||||
- group
|
||||
- group-Color
|
||||
- tooltip/hints?
|
||||
- additionalInfo
|
||||
- </y:AttributeLabel>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n13">
|
||||
<data key="d4"/>
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="273.06833910034607" x="-147.31689734717258" y="-530.4749134948088"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" modelName="custom" textColor="#000000" visible="true" width="92.64501953125" x="90.21165978454803" y="3.0">EditorModel<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<edge id="e0" source="n4" target="n3">
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e1" source="n6" target="n3">
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e2" source="n5" target="n3">
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e3" source="n8" target="n7">
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="white_diamond" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e4" source="n7" target="n9">
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="white_diamond" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e5" source="n10" target="n3">
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="white_diamond" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e6" source="n10" target="n8">
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="white_diamond" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e7" source="n10" target="n11">
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
</graph>
|
||||
<data key="d0">
|
||||
<y:Resources/>
|
||||
</data>
|
||||
</graphml>
|
|
@ -0,0 +1,683 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
|
||||
<!--Created by yEd 3.16.2.1-->
|
||||
<key attr.name="Beschreibung" attr.type="string" for="graph" id="d0"/>
|
||||
<key for="port" id="d1" yfiles.type="portgraphics"/>
|
||||
<key for="port" id="d2" yfiles.type="portgeometry"/>
|
||||
<key for="port" id="d3" yfiles.type="portuserdata"/>
|
||||
<key attr.name="url" attr.type="string" for="node" id="d4"/>
|
||||
<key attr.name="description" attr.type="string" for="node" id="d5"/>
|
||||
<key for="node" id="d6" yfiles.type="nodegraphics"/>
|
||||
<key for="graphml" id="d7" yfiles.type="resources"/>
|
||||
<key attr.name="url" attr.type="string" for="edge" id="d8"/>
|
||||
<key attr.name="description" attr.type="string" for="edge" id="d9"/>
|
||||
<key for="edge" id="d10" yfiles.type="edgegraphics"/>
|
||||
<graph edgedefault="directed" id="G">
|
||||
<data key="d0"/>
|
||||
<node id="n0">
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="960.8218631178765" width="465.9535858976694" x="289.39019539785147" y="62.45209125474912"/>
|
||||
<y:Fill color="#99CCFF" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="32.9921875" x="4.0" y="4.0">libuv<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="-0.5" labelRatioY="-0.5" nodeRatioX="-0.5" nodeRatioY="-0.5" offsetX="4.0" offsetY="4.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n1">
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="310.0" width="940.5396941005099" x="842.6666666666666" y="713.2739543726254"/>
|
||||
<y:Fill color="#99CCFF" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="468.26984705025484" y="153.0">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n2">
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="310.0" width="940.5396941005099" x="842.6666666666666" y="387.8630228136873"/>
|
||||
<y:Fill color="#99CCFF" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="468.26984705025484" y="153.0">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n3">
|
||||
<data key="d6">
|
||||
<y:ShapeNode>
|
||||
<y:Geometry height="310.0" width="940.5396941005099" x="842.6666666666666" y="62.45209125474912"/>
|
||||
<y:Fill color="#99CCFF" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="468.26984705025484" y="153.0">
|
||||
<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:Shape type="rectangle"/>
|
||||
</y:ShapeNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n4">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="126.0" x="776.0" y="207.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="108.19677734375" x="8.901611328125" y="3.0">IUtiliserPlugin<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n5">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="126.0" x="776.0" y="528.8630228136873"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="99.53857421875" x="13.230712890625" y="3.0">IModelPlugin<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n6">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="215.0" x="922.6562187044791" y="149.6302281368728"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="192.2333984375" x="11.38330078125" y="3.0">ABinaryUtilisationFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n7">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="102.0" width="215.0" x="922.6562187044791" y="207.6302281368728"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="136.84375" x="39.078125" y="3.0">ABinaryUtilisation<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel>+utilse(byte[])
|
||||
+getOptions():string (yaml?)
|
||||
+setOptions(string)
|
||||
</y:MethodLabel>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n8">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="217.0" width="217.0" x="1543.1562187044788" y="402.4520912547491"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="105.36572265625" x="55.817138671875" y="3.0">AFieldFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel>+ createField()
|
||||
+ createFieldBinaryInformation()
|
||||
+ createFieldLogicalInformation()
|
||||
+ createFieldVisualInformation()
|
||||
+ createFieldRepresentation()</y:MethodLabel>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n9">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="64.0" width="146.0" x="1372.8228853711457" y="402.4520912547491"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="139.09716796875" x="3.451416015625" y="3.0">AStructureFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel>+ createStructure()</y:MethodLabel>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n10">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="64.0" width="146.0" x="1147.7395520378122" y="402.4520912547491"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="113.89697265625" x="16.051513671875" y="3.0">AModelFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel>+ createModel()</y:MethodLabel>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n11">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="100.0" x="1170.7395520378122" y="649.4520912547491"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="58.50732421875" x="20.746337890625" y="3.0">AModel<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n12">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="100.0" x="1395.8228853711457" y="649.4520912547491"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="83.70751953125" x="8.146240234375" y="3.0">AStructure<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n13">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="100.0" x="1601.6562187044788" y="649.4520912547491"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="49.97607421875" x="25.011962890625" y="3.0">AField<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n14">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="100.0" x="945.6562187044791" y="655.2739543726254"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="93.349609375" x="3.3251953125" y="3.0">ARepository<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n15">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="146.0" x="922.6562187044791" y="402.4520912547491"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="148.7392578125" x="-1.36962890625" y="3.0">ARepositoryFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n16">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="126.0" x="776.0" y="854.2739543726254"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="128.439453125" x="-1.2197265625" y="3.0">ISchemaIOPlugin<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n17">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="179.0" x="939.0" y="901.8630228136873"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="135.8408203125" x="21.57958984375" y="3.0">AStructureReader<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n18">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="208.0" x="932.0" y="785.8630228136873"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="191.23046875" x="8.384765625" y="3.0">AStructureReaderFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n19">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="179.0" x="1184.5" y="901.8630228136873"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="130.3564453125" x="24.32177734375" y="3.0">AStructureWriter<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n20">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="208.0" x="1170.0" y="785.8630228136873"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="185.74609375" x="11.126953125" y="3.0">AStructureWriterFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="false" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n21">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="59.25" width="161.25" x="324.25" y="191.375"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="124.58642578125" x="18.331787109375" y="25.96875">APluginManager<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="abstract" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n22">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="179.0" x="557.25" y="207.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="167.6298828125" x="5.68505859375" y="3.0">UtiliserPluginManager<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n23">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="179.0" x="557.25" y="528.8630228136873"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="158.9716796875" x="10.01416015625" y="3.0">ModelPluginManager<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n24">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="208.0" x="528.25" y="854.2739543726254"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="187.87255859375" x="10.063720703125" y="3.0">SchemaIOPluginManager<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n25">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="59.25" width="276.25" x="-23.75" y="191.375"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="174.1806640625" x="51.03466796875" y="25.96875">BinaryPacketComposer<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="(main class)" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n26">
|
||||
<data key="d4"/>
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="100.0" x="64.375" y="303.80553532410784"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="36.91259765625" x="31.543701171875" y="3.0">Tree<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n27">
|
||||
<data key="d4"/>
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="100.0" x="64.375" y="378.45010924981796"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="74.84619140625" x="12.576904296875" y="3.0">TreeNode<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<edge id="e0" source="n22" target="n21">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e1" source="n23" target="n21">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e2" source="n24" target="n21">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e3" source="n23" target="n5">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="dashed" width="1.0"/>
|
||||
<y:Arrows source="none" target="plain"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e4" source="n22" target="n4">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="dashed" width="1.0"/>
|
||||
<y:Arrows source="none" target="plain"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e5" source="n24" target="n16">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="dashed" width="1.0"/>
|
||||
<y:Arrows source="none" target="plain"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e6" source="n26" target="n27">
|
||||
<data key="d8"/>
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="dashed" width="1.0"/>
|
||||
<y:Arrows source="none" target="plain"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
</graph>
|
||||
<data key="d7">
|
||||
<y:Resources/>
|
||||
</data>
|
||||
</graphml>
|
99
doc/core.md
99
doc/core.md
|
@ -1,99 +0,0 @@
|
|||
# core
|
||||
|
||||
```plantuml
|
||||
|
||||
set namespaceSeparator ::
|
||||
|
||||
namespace core {
|
||||
class BinaryPacketComposer
|
||||
class RandomAccessBinary
|
||||
class Tree
|
||||
class TreeNode
|
||||
interface YAMLSerializer {
|
||||
+ string toYAML()
|
||||
+ void fromYAML(string yaml)
|
||||
}
|
||||
interface JSONSerializer {
|
||||
+ string toJSON()
|
||||
+ void fromJSON(string json)
|
||||
}
|
||||
|
||||
namespace control {
|
||||
class ModelController{
|
||||
- Model[] currentModels
|
||||
}
|
||||
class RepositoryController
|
||||
class DataController
|
||||
class FieldFactory
|
||||
class ModelFactory
|
||||
class StructureFactory
|
||||
}
|
||||
namespace model {
|
||||
class Model {
|
||||
- Structure[] structures
|
||||
- Tree<Field> combinedFields
|
||||
- RandomAccessBinary data
|
||||
}
|
||||
class Generator
|
||||
class Repository {
|
||||
- Structure[] availableStructures
|
||||
}
|
||||
class Structure{
|
||||
- String name
|
||||
- String description
|
||||
- Tree<Field> fields
|
||||
}
|
||||
class Field {
|
||||
- String name
|
||||
- String description
|
||||
}
|
||||
class ValueField {
|
||||
- String hexvalue
|
||||
- uint bitsize
|
||||
}
|
||||
class CombinationField {
|
||||
// - list<Field> otherFields
|
||||
}
|
||||
class ValidateableValueField {
|
||||
- Validator validator
|
||||
}
|
||||
class RegexValueField {
|
||||
- String regex
|
||||
}
|
||||
class GeneratedField {
|
||||
- Generator gen
|
||||
}
|
||||
class LayerTransitionField {
|
||||
// placeholder for nesting
|
||||
// structures inside structures
|
||||
}
|
||||
class Validator {
|
||||
|
||||
}
|
||||
class RegexValidator {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
core::Tree *-- core::TreeNode
|
||||
core::model::Field <|-- core::model::ValueField
|
||||
core::model::ValueField <|-- core::model::ValidateableValueField
|
||||
core::model::Field <|-- core::model::CombinationField
|
||||
core::model::ValidateableValueField <|-- core::model::RegexValueField
|
||||
core::model::ValidateableValueField <|-- core::model::GeneratedField
|
||||
core::model::RegexValueField *-- core::model::RegexValidator
|
||||
core::model::Validator <|-- core::model::RegexValidator
|
||||
core::model::GeneratedField *-- core::model::Generator
|
||||
core::model::Field <|-- core::model::LayerTransitionField
|
||||
core::model::Repository o-- core::model::Structure
|
||||
core::model::Model o-- core::model::Structure
|
||||
core::model::Model o-up- core::RandomAccessBinary
|
||||
core::model::Model <-- core::control::ModelController : controls
|
||||
core::model::Repository <-- core::control::RepositoryController : controls
|
||||
core::control::ModelFactory --> core::model::Model : creates
|
||||
core::control::FieldFactory --> core::model::Field : creates all Variants
|
||||
core::control::StructureFactory --> core::model::Structure : creates
|
||||
core::YAMLSerializer <|--- core::model : all classes implement
|
||||
core::JSONSerializer <|--- core::model : all classes implement
|
||||
}
|
||||
```
|
|
@ -1,61 +0,0 @@
|
|||
# Editor View
|
||||
|
||||
```plantuml
|
||||
@startuml
|
||||
|
||||
set namespaceSeparator ::
|
||||
|
||||
namespace core::model {
|
||||
class Field {
|
||||
- String name
|
||||
- String description
|
||||
}
|
||||
|
||||
class ValueField {
|
||||
- String value
|
||||
- uint bitsize
|
||||
}
|
||||
Field <|-- ValueField
|
||||
|
||||
class ValidateableValueField {
|
||||
- Validator validator
|
||||
}
|
||||
ValueField <|-- ValidateableValueField
|
||||
|
||||
class RegexValueField {
|
||||
- String regex
|
||||
}
|
||||
ValidateableValueField <|-- RegexValueField
|
||||
|
||||
class FunctionField {
|
||||
- Function fnc
|
||||
}
|
||||
ValidateableValueField <|-- FunctionField
|
||||
|
||||
class LayerTransitionField {
|
||||
- Layer nextLayer
|
||||
}
|
||||
Field <|-- LayerTransitionField
|
||||
}
|
||||
namespace editorview {
|
||||
class Layer {
|
||||
- int level
|
||||
}
|
||||
|
||||
class FieldView {
|
||||
- Layer layer
|
||||
- Field field
|
||||
}
|
||||
core::model::Field --* FieldView
|
||||
|
||||
core::model::ValueField --* ValueFieldView
|
||||
FieldView <|-- ValueFieldView
|
||||
core::model::ValidateableValueField --* ValidateableValueFieldView
|
||||
ValueFieldView <|-- ValidateableValueFieldView
|
||||
core::model::ValidateableValueField --* RegexValueFiledView
|
||||
ValidateableValueFieldView <|-- RegexValueFiledView
|
||||
core::model::FunctionField --* FunctionFieldView
|
||||
ValidateableValueFieldView <|-- FunctionFieldView
|
||||
}
|
||||
@enduml
|
||||
```
|
|
@ -1,53 +0,0 @@
|
|||
# Editor
|
||||
|
||||
```plantuml
|
||||
|
||||
set namespaceSeparator ::
|
||||
|
||||
class NPC_core::RandomAccessBinary
|
||||
|
||||
namespace NPC_editor {
|
||||
class EditorView {
|
||||
}
|
||||
class StructureField {
|
||||
}
|
||||
class HexView
|
||||
EditorView "1" *-- "*" StructureField : contains
|
||||
HexView ..> NPC_core::RandomAccessBinary : shows data of >
|
||||
}
|
||||
|
||||
namespace NPC_core::control {
|
||||
class DataController
|
||||
class ModelController
|
||||
class FromScratchModelController
|
||||
ModelController <|-- FromScratchModelController
|
||||
}
|
||||
|
||||
namespace NPC_core::model {
|
||||
class Model
|
||||
class Structure
|
||||
|
||||
class Field
|
||||
class DataField
|
||||
|
||||
class Repository
|
||||
|
||||
Model "1" *-- "*" Structure
|
||||
DataField ..> Field : represents the data of >
|
||||
Repository "1" *-- "ALL" Structure
|
||||
Structure "1" *- "*" Field
|
||||
}
|
||||
|
||||
NPC_core::control::DataController "1" *-up- "*" NPC_core::RandomAccessBinary
|
||||
|
||||
NPC_core::model::Field <.. NPC_editor::StructureField : shows <
|
||||
NPC_core::control::DataController --> NPC_core::model::DataField : controls >
|
||||
|
||||
|
||||
NPC_core::control::ModelController --> NPC_core::model::Model : controls >
|
||||
|
||||
NPC_editor::StructureField .> NPC_core::control::DataController : > manipulates data through
|
||||
|
||||
|
||||
|
||||
```
|
|
@ -0,0 +1,768 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
|
||||
<!--Created by yEd 3.16.2.1-->
|
||||
<key attr.name="Beschreibung" attr.type="string" for="graph" id="d0"/>
|
||||
<key for="port" id="d1" yfiles.type="portgraphics"/>
|
||||
<key for="port" id="d2" yfiles.type="portgeometry"/>
|
||||
<key for="port" id="d3" yfiles.type="portuserdata"/>
|
||||
<key attr.name="url" attr.type="string" for="node" id="d4"/>
|
||||
<key attr.name="description" attr.type="string" for="node" id="d5"/>
|
||||
<key for="node" id="d6" yfiles.type="nodegraphics"/>
|
||||
<key for="graphml" id="d7" yfiles.type="resources"/>
|
||||
<key attr.name="url" attr.type="string" for="edge" id="d8"/>
|
||||
<key attr.name="description" attr.type="string" for="edge" id="d9"/>
|
||||
<key for="edge" id="d10" yfiles.type="edgegraphics"/>
|
||||
<graph edgedefault="directed" id="G">
|
||||
<data key="d0"/>
|
||||
<node id="n0">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="217.0" width="146.0" x="486.5" y="560.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="39.9150390625" x="53.04248046875" y="3.0">Field<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel>- owningStructure
|
||||
- binary
|
||||
- logical
|
||||
- visual
|
||||
- representation</y:AttributeLabel>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n1">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="100.0" x="692.3333333333333" y="390.5"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="51.27734375" x="24.361328125" y="3.0">Binary<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n2">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="100.0" x="692.3333333333333" y="560.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="55.9111328125" x="22.04443359375" y="3.0">Logical<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n3">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="100.0" x="692.3333333333333" y="729.5"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="48.73828125" x="25.630859375" y="3.0">Visual<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n4">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="134.0" x="675.3333333333333" y="899.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="117.013671875" x="8.4931640625" y="3.0">Representation<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n5">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="217.0" width="184.5" x="261.41666666666674" y="560.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="73.646484375" x="55.4267578125" y="3.0">Structure<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel>- name
|
||||
- description
|
||||
- fields
|
||||
- data</y:AttributeLabel>
|
||||
<y:MethodLabel>+ putData(Field*, data)
|
||||
+ validateData(Field*, data)
|
||||
+ updateData()
|
||||
+ ...
|
||||
</y:MethodLabel>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n6">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="217.0" width="217.0" x="451.0" y="89.45209125474913"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="105.36572265625" x="55.817138671875" y="3.0">AFieldFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel>+ createField()
|
||||
+ createFieldBinaryInformation()
|
||||
+ createFieldLogicalInformation()
|
||||
+ createFieldVisualInformation()
|
||||
+ createFieldRepresentation()</y:MethodLabel>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n7">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="64.0" width="146.0" x="280.66666666666674" y="89.45209125474913"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="139.09716796875" x="3.451416015625" y="3.0">AStructureFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel>+ createStructure()</y:MethodLabel>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n8">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="146.0" x="280.66666666666674" y="379.4520912547491"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="129.0361328125" x="8.48193359375" y="3.0">StructureFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n9">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="115.0" x="502.0" y="379.4520912547491"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="95.3046875" x="9.84765625" y="3.0">FieldFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n10">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="497.79677113010416" width="387.7255460588794" x="269.16666666666674" y="842.7739543726256"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="160.86328125" x="113.4311324044397" y="3.0">RandomAccessBinary<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel>- binaryData</y:AttributeLabel>
|
||||
<y:MethodLabel>+ 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()</y:MethodLabel>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n11">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="217.0" width="184.5" x="36.333333333333485" y="560.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="48.4462890625" x="68.02685546875" y="3.0">Model<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel>+getBinary():byte[]
|
||||
+getStructures():Structure[]
|
||||
+addStructure()
|
||||
+remStructure()</y:MethodLabel>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n12">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="64.0" width="146.0" x="55.583333333333485" y="89.45209125474913"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="113.89697265625" x="16.051513671875" y="3.0">AModelFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel>+ createModel()</y:MethodLabel>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n13">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="123.0" x="67.08333333333348" y="379.4520912547491"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="103.8359375" x="9.58203125" y="3.0">ModelFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n14">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="217.0" width="184.5" x="36.333333333333485" y="839.2739543726256"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="83.28857421875" x="50.605712890625" y="3.0">Repository<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel>+addStructure()
|
||||
+remStructure()
|
||||
+getStructures()
|
||||
</y:MethodLabel>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n15">
|
||||
<data key="d4"/>
|
||||
<data key="d5"><![CDATA[Contains the known structures.]]></data>
|
||||
<data key="d6">
|
||||
<y:UMLNoteNode>
|
||||
<y:Geometry height="28.0" width="231.7005405405405" x="12.733063063063241" y="1086.2739543726254"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="191.81640625" x="19.942067145270244" y="5.015625">Contains the known structures.<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
</y:UMLNoteNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n16">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="100.0" x="78.5833333333336" y="469.72604562737456"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="58.50732421875" x="20.746337890625" y="3.0">AModel<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n17">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="100.0" x="303.66666666666686" y="476.059885931559"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="83.70751953125" x="8.146240234375" y="3.0">AStructure<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n18">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="100.0" x="509.4999999999999" y="476.059885931559"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="49.97607421875" x="25.011962890625" y="3.0">AField<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n19">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="100.0" x="-93.66666666666652" y="839.2739543726254"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="93.349609375" x="3.3251953125" y="3.0">ARepository<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n20">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="146.0" x="-269.6666666666665" y="839.2739543726254"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="138.67822265625" x="3.660888671875" y="3.0">RepositoryFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n21">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="146.0" x="-269.6666666666665" y="773.9573550380246"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="148.7392578125" x="-1.36962890625" y="3.0">ARepositoryFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<edge id="e0" source="n1" target="n0">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e1" source="n3" target="n0">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e2" source="n4" target="n0">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e3" source="n5" target="n0">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="diamond" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e4" source="n2" target="n0">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e5" source="n9" target="n6">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e6" source="n8" target="n7">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e7" source="n5" target="n10">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="diamond" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e8" source="n11" target="n5">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="diamond" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e9" source="n13" target="n12">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e10" source="n11" target="n14">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="dashed" width="1.0"/>
|
||||
<y:Arrows source="none" target="plain"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e11" source="n14" target="n15">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="standard" target="none"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e12" source="n5" target="n14">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="diamond"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e13" source="n0" target="n18">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e14" source="n5" target="n17">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e15" source="n11" target="n16">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e16" source="n16" target="n13">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="dashed" width="1.0"/>
|
||||
<y:Arrows source="none" target="plain"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e17" source="n17" target="n8">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="dashed" width="1.0"/>
|
||||
<y:Arrows source="none" target="plain"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e18" source="n18" target="n9">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="dashed" width="1.0"/>
|
||||
<y:Arrows source="none" target="plain"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e19" source="n14" target="n19">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e20" source="n19" target="n20">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="dashed" width="1.0"/>
|
||||
<y:Arrows source="none" target="plain"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e21" source="n20" target="n21">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
</graph>
|
||||
<data key="d7">
|
||||
<y:Resources/>
|
||||
</data>
|
||||
</graphml>
|
159
doc/model.md
159
doc/model.md
|
@ -1,98 +1,115 @@
|
|||
# NPC core
|
||||
# NPC
|
||||
|
||||
```plantuml
|
||||
|
||||
package Core {
|
||||
|
||||
class RepositoryFactory
|
||||
class Repository {
|
||||
+addStructure()
|
||||
+removeStructure()
|
||||
+getStructure()
|
||||
package Control {
|
||||
class RepositoryFactory
|
||||
class ModelFactory
|
||||
class StructureFactory
|
||||
class FieldFactory{
|
||||
+ createField()
|
||||
}
|
||||
}
|
||||
|
||||
package Model as PKGmodel {
|
||||
class Repository {
|
||||
+addStructure()
|
||||
+removeStructure()
|
||||
+getStructure()
|
||||
}
|
||||
class Model {
|
||||
+getBinary():byte[]
|
||||
+getStructures():Structure[]
|
||||
+addStructure()
|
||||
+removeStructure()
|
||||
}
|
||||
class Structure {
|
||||
-name
|
||||
-description
|
||||
-fields
|
||||
-data
|
||||
+putData(Field, data)
|
||||
+validateData(Field, data)
|
||||
+updateData()
|
||||
}
|
||||
class Field {
|
||||
- owningStructure
|
||||
- binary
|
||||
- logical
|
||||
- visual
|
||||
- representation
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
package Editor {
|
||||
class MainWindow
|
||||
class DockWidget_Tools
|
||||
class DockWidget_Helpers
|
||||
class StackContainer
|
||||
class Syntax
|
||||
class Name
|
||||
class Input
|
||||
class Representation
|
||||
class StructureField
|
||||
|
||||
StructureField *-- Syntax
|
||||
StructureField *-- Name
|
||||
StructureField *-- Input
|
||||
StructureField *-- Representation
|
||||
|
||||
MainWindow *- StackContainer: as centralWidget
|
||||
}
|
||||
|
||||
|
||||
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)
|
||||
+ 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)
|
||||
+ 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)
|
||||
+ 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)
|
||||
+ 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_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_string(uint position, uint length)
|
||||
|
||||
+ get_hex_string(uint position, uint length)
|
||||
+ get_hex_string()
|
||||
+ get_hex_string(uint position, uint length)
|
||||
+ get_hex_string()
|
||||
}
|
||||
|
||||
RepositoryFactory --> Repository : creates >
|
||||
|
||||
StackModelFactory --> StackModel: creates >
|
||||
ModelFactory -> Model: creates >
|
||||
|
||||
StructureFactory --> Structure : creates >
|
||||
StackModel *-- Structure
|
||||
Repository *-- Structure
|
||||
StructureFactory -> Structure : creates >
|
||||
Model *- Structure
|
||||
Repository *- Structure
|
||||
|
||||
FieldFactory --> Field : creates >
|
||||
FieldFactory -> Field : creates >
|
||||
|
||||
Structure *-- Field
|
||||
Structure *- Field
|
||||
|
||||
StackModel *-- "1" RandomAccessBinary
|
||||
Model *-- "1" RandomAccessBinary
|
||||
|
||||
StructureField *-- Field
|
||||
StackContainer *-- StructureField
|
||||
|
||||
```
|
||||
|
|
22
doc/mvc.md
22
doc/mvc.md
|
@ -1,22 +0,0 @@
|
|||
```plantuml
|
||||
@startuml
|
||||
|
||||
package Model {
|
||||
class StackModel
|
||||
}
|
||||
|
||||
package View {
|
||||
class Editor
|
||||
}
|
||||
|
||||
package "Controller" as pkg_controller {
|
||||
class Controller
|
||||
}
|
||||
|
||||
pkg_controller -> Model: controls
|
||||
View --> pkg_controller: uses
|
||||
View --> Model: shows
|
||||
|
||||
@enduml
|
||||
|
||||
```
|
|
@ -0,0 +1,484 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
|
||||
<!--Created by yEd 3.16.2.1-->
|
||||
<key attr.name="Beschreibung" attr.type="string" for="graph" id="d0"/>
|
||||
<key for="port" id="d1" yfiles.type="portgraphics"/>
|
||||
<key for="port" id="d2" yfiles.type="portgeometry"/>
|
||||
<key for="port" id="d3" yfiles.type="portuserdata"/>
|
||||
<key attr.name="url" attr.type="string" for="node" id="d4"/>
|
||||
<key attr.name="description" attr.type="string" for="node" id="d5"/>
|
||||
<key for="node" id="d6" yfiles.type="nodegraphics"/>
|
||||
<key for="graphml" id="d7" yfiles.type="resources"/>
|
||||
<key attr.name="url" attr.type="string" for="edge" id="d8"/>
|
||||
<key attr.name="description" attr.type="string" for="edge" id="d9"/>
|
||||
<key for="edge" id="d10" yfiles.type="edgegraphics"/>
|
||||
<graph edgedefault="directed" id="G">
|
||||
<data key="d0"/>
|
||||
<node id="n0">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="40.0634765625" x="447.96826171875" y="163.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="30.0634765625" x="5.0" y="3.0">GUI<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n1">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="58.4462890625" x="438.77685546875" y="288.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="48.4462890625" x="5.0" y="3.0">Model<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n2">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="126.88037109375" x="404.559814453125" y="413.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="116.88037109375" x="5.0" y="3.0">ByteDispatcher<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n3">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="150.55712890625" x="689.221435546875" y="288.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="140.55712890625" x="5.0" y="3.0">DefinitionManager<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n4">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="155.1337890625" x="686.93310546875" y="413.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="145.1337890625" x="5.0" y="3.0">ProtocolDefinitions<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n5">
|
||||
<data key="d4"/>
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:UMLNoteNode>
|
||||
<y:Geometry height="265.0" width="1030.8046875" x="173.09765625" y="-134.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="59.8046875" x="947.0" y="11.015625">Workflow<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.5" labelRatioY="-0.5" nodeRatioX="0.47671721879902684" nodeRatioY="-0.4584316037735849" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
</y:UMLNoteNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n6">
|
||||
<data key="d4"/>
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="150.55712890625" x="375.0" y="-15.5"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="118.53076171875" x="16.01318359375" y="3.0">load definitions<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n7">
|
||||
<data key="d4"/>
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="126.88037109375" x="618.559814453125" y="-15.5"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="101.93798828125" x="12.47119140625" y="3.0">create binary<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n8">
|
||||
<data key="d4"/>
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="100.0" x="838.44287109375" y="-15.5"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="77.66455078125" x="11.167724609375" y="3.0">save/send<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n9">
|
||||
<data key="d4"/>
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="150.55712890625" x="223.0" y="-108.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="126.0654296875" x="12.245849609375" y="3.0">create definition<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n10">
|
||||
<data key="d4"/>
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="150.55712890625" x="470.0" y="-108.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="113.12890625" x="18.714111328125" y="3.0">save definition<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n11">
|
||||
<data key="d4"/>
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="126.88037109375" x="618.559814453125" y="51.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="88.50634765625" x="19.18701171875" y="3.0">read binary<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n12">
|
||||
<data key="d4"/>
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="100.0" x="838.44287109375" y="51.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="56.5078125" x="21.74609375" y="3.0">display<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n13">
|
||||
<data key="d4"/>
|
||||
<data key="d5"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="126.88037109375" x="825.002685546875" y="-108.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="123.52001953125" x="1.68017578125" y="3.0">code generation<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<edge id="e0" source="n4" target="n3">
|
||||
<data key="d10">
|
||||
<y:BezierEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="standard" target="standard"/>
|
||||
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="83.458984375" x="20.2705078125" y="-58.476806640625">Reads/Writes<y:LabelModel>
|
||||
<y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartEdgeLabelModelParameter angle="6.283185307179586" distance="62.0" distanceToCenter="true" position="right" ratio="0.5144861928474422" segment="-1"/>
|
||||
</y:ModelParameter>
|
||||
<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
|
||||
</y:EdgeLabel>
|
||||
</y:BezierEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e1" source="n3" target="n1">
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="standard" target="standard"/>
|
||||
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="125.306640625" x="-158.68402099609375" y="-38.984375">Generates/Produces<y:LabelModel>
|
||||
<y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartEdgeLabelModelParameter angle="0.0" distance="30.0" distanceToCenter="true" position="right" ratio="0.5" segment="0"/>
|
||||
</y:ModelParameter>
|
||||
<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
|
||||
</y:EdgeLabel>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e2" source="n2" target="n1">
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="71.0" y="-4.122128335962259">
|
||||
<y:LabelModel>
|
||||
<y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartEdgeLabelModelParameter angle="6.283185307179586" distance="73.0" distanceToCenter="true" position="right" ratio="0.02195563603440471" segment="-1"/>
|
||||
</y:ModelParameter>
|
||||
<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
|
||||
</y:EdgeLabel>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e3" source="n1" target="n0">
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="standard" target="none"/>
|
||||
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="54.484375" x="2.7578125" y="-57.476806640625">Displays<y:LabelModel>
|
||||
<y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartEdgeLabelModelParameter angle="0.0" distance="30.0" distanceToCenter="true" position="right" ratio="0.5" segment="0"/>
|
||||
</y:ModelParameter>
|
||||
<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
|
||||
</y:EdgeLabel>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e4" source="n6" target="n7">
|
||||
<data key="d8"/>
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e5" source="n7" target="n8">
|
||||
<data key="d8"/>
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e6" source="n9" target="n10">
|
||||
<data key="d8"/>
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e7" source="n10" target="n6">
|
||||
<data key="d8"/>
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="dashed" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e8" source="n6" target="n11">
|
||||
<data key="d8"/>
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e9" source="n11" target="n12">
|
||||
<data key="d8"/>
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e10" source="n10" target="n13">
|
||||
<data key="d8"/>
|
||||
<data key="d9"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="dashed" width="1.0"/>
|
||||
<y:Arrows source="none" target="standard"/>
|
||||
<y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.96875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="10.369140625" x="97.04010009765625" y="-38.984375">?<y:LabelModel>
|
||||
<y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartEdgeLabelModelParameter angle="0.0" distance="30.0" distanceToCenter="true" position="left" ratio="0.5" segment="0"/>
|
||||
</y:ModelParameter>
|
||||
<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
|
||||
</y:EdgeLabel>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
</graph>
|
||||
<data key="d7">
|
||||
<y:Resources/>
|
||||
</data>
|
||||
</graphml>
|
|
@ -0,0 +1,383 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
|
||||
<!--Created by yEd 3.16.2.1-->
|
||||
<key attr.name="Beschreibung" attr.type="string" for="graph" id="d0"/>
|
||||
<key for="port" id="d1" yfiles.type="portgraphics"/>
|
||||
<key for="port" id="d2" yfiles.type="portgeometry"/>
|
||||
<key for="port" id="d3" yfiles.type="portuserdata"/>
|
||||
<key attr.name="url" attr.type="string" for="node" id="d4"/>
|
||||
<key attr.name="description" attr.type="string" for="node" id="d5"/>
|
||||
<key for="node" id="d6" yfiles.type="nodegraphics"/>
|
||||
<key for="graphml" id="d7" yfiles.type="resources"/>
|
||||
<key attr.name="url" attr.type="string" for="edge" id="d8"/>
|
||||
<key attr.name="description" attr.type="string" for="edge" id="d9"/>
|
||||
<key for="edge" id="d10" yfiles.type="edgegraphics"/>
|
||||
<graph edgedefault="directed" id="G">
|
||||
<data key="d0"/>
|
||||
<node id="n0">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="179.0" x="731.0" y="144.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="135.8408203125" x="21.57958984375" y="3.0">AStructureReader<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n1">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="179.0" x="522.0" y="249.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="172.974609375" x="3.0126953125" y="3.0">YAML_StructureReader<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n2">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="179.0" x="731.0" y="249.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="163.52294921875" x="7.738525390625" y="3.0">XML_StructureReader<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n3">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="179.0" x="940.0" y="249.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="168.41064453125" x="5.294677734375" y="3.0">JSON_StructureReader<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n4">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="208.0" x="716.5" y="-10.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="181.16943359375" x="13.415283203125" y="3.0">StructureReaderFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n5">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="208.0" x="716.5" y="-110.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="191.23046875" x="8.384765625" y="3.0">AStructureReaderFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n6">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="179.0" x="1358.0" y="144.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="130.3564453125" x="24.32177734375" y="3.0">AStructureWriter<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n7">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="179.0" x="1149.0" y="249.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="167.490234375" x="5.7548828125" y="3.0">YAML_StructureWriter<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n8">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="179.0" x="1358.0" y="249.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="158.03857421875" x="10.480712890625" y="3.0">XML_StructureWriter<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n9">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="179.0" x="1567.0" y="249.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="162.92626953125" x="8.036865234375" y="3.0">JSON_StructureWriter<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n10">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="208.0" x="1343.5" y="-10.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="175.68505859375" x="16.157470703125" y="3.0">StructureWriterFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<node id="n11">
|
||||
<data key="d4"/>
|
||||
<data key="d6">
|
||||
<y:UMLClassNode>
|
||||
<y:Geometry height="28.0" width="208.0" x="1343.5" y="-110.0"/>
|
||||
<y:Fill color="#FFCC00" transparent="false"/>
|
||||
<y:BorderStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="185.74609375" x="11.126953125" y="3.0">AStructureWriterFactory<y:LabelModel>
|
||||
<y:SmartNodeLabelModel distance="4.0"/>
|
||||
</y:LabelModel>
|
||||
<y:ModelParameter>
|
||||
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="-0.03703090122767855" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
|
||||
</y:ModelParameter>
|
||||
</y:NodeLabel>
|
||||
<y:UML clipContent="false" constraint="" omitDetails="false" stereotype="" use3DEffect="true">
|
||||
<y:AttributeLabel/>
|
||||
<y:MethodLabel/>
|
||||
</y:UML>
|
||||
</y:UMLClassNode>
|
||||
</data>
|
||||
</node>
|
||||
<edge id="e0" source="n3" target="n0">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e1" source="n2" target="n0">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e2" source="n1" target="n0">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e3" source="n4" target="n5">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e4" source="n0" target="n4">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="dashed" width="1.0"/>
|
||||
<y:Arrows source="none" target="plain"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e5" source="n9" target="n6">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e6" source="n8" target="n6">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e7" source="n7" target="n6">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e8" source="n10" target="n11">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="line" width="1.0"/>
|
||||
<y:Arrows source="none" target="white_delta"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
<edge id="e9" source="n6" target="n10">
|
||||
<data key="d8"/>
|
||||
<data key="d10">
|
||||
<y:PolyLineEdge>
|
||||
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
|
||||
<y:LineStyle color="#000000" type="dashed" width="1.0"/>
|
||||
<y:Arrows source="none" target="plain"/>
|
||||
<y:BendStyle smoothed="false"/>
|
||||
</y:PolyLineEdge>
|
||||
</data>
|
||||
</edge>
|
||||
</graph>
|
||||
<data key="d7">
|
||||
<y:Resources/>
|
||||
</data>
|
||||
</graphml>
|
|
@ -4,15 +4,11 @@ set(HEADERS mainwindow.h
|
|||
set(SOURCES mainwindow.cpp
|
||||
)
|
||||
|
||||
# add_subdirectory(model)
|
||||
add_subdirectory(model)
|
||||
add_subdirectory(editor)
|
||||
add_subdirectory(parser)
|
||||
add_subdirectory(core)
|
||||
|
||||
add_library(src ${HEADERS} ${SOURCES})
|
||||
target_link_libraries(src
|
||||
editor
|
||||
parser
|
||||
core
|
||||
)
|
||||
target_link_libraries(src model editor parser core )
|
||||
qt5_use_modules(src Widgets)
|
||||
|
|
|
@ -4,66 +4,41 @@ set(HEADERS
|
|||
TreeNode.h
|
||||
BinaryPacketComposer.h
|
||||
APluginManager.h
|
||||
RandomAccessBinary.h
|
||||
# interfaces to model
|
||||
model/IField.h
|
||||
model/ILayerTransitionField.h
|
||||
model/IStructure.h
|
||||
model/IModel.h
|
||||
model/IValueField.h
|
||||
model/IValidateableValueField.h
|
||||
model/ICombinationField.h
|
||||
model/IRegexValueField.h
|
||||
# full model implementations
|
||||
model/Repository.h
|
||||
model/Model.h
|
||||
model/Structure.h
|
||||
model/Field.h
|
||||
model/LayerTransitionField.h
|
||||
model/ValueField.h
|
||||
model/ValidateableValueField.h
|
||||
model/CombinationField.h
|
||||
model/RegexValueField.h
|
||||
model/Modifier.h
|
||||
# control classes
|
||||
control/ARepositoryFactory.h
|
||||
control/AFieldFactory.h
|
||||
control/AStructureFactory.h
|
||||
control/AModelFactory.h
|
||||
control/ModelController.h
|
||||
# schema classes
|
||||
control/RepositoryFactory.h
|
||||
control/FieldFactory.h
|
||||
control/StructureFactory.h
|
||||
control/ModelFactory.h
|
||||
|
||||
schemaio/AStructureReaderFactory.h
|
||||
schemaio/AStructureWriterFactory.h
|
||||
schemaio/AStructureReader.h
|
||||
schemaio/AStructureWriter.h
|
||||
|
||||
RandomAccessBinary.h
|
||||
)
|
||||
|
||||
set(SOURCES
|
||||
BinaryPacketComposer.cpp
|
||||
APluginManager.cpp
|
||||
RandomAccessBinary.cpp
|
||||
|
||||
model/Repository.cpp
|
||||
model/Model.cpp
|
||||
model/Structure.cpp
|
||||
model/Field.cpp
|
||||
model/ValueField.cpp
|
||||
model/LayerTransitionField.cpp
|
||||
model/ValidateableValueField.cpp
|
||||
model/RegexValueField.cpp
|
||||
model/CombinationField.cpp
|
||||
model/Modifier.cpp
|
||||
|
||||
control/ARepositoryFactory.cpp
|
||||
control/AFieldFactory.cpp
|
||||
control/AStructureFactory.cpp
|
||||
control/AModelFactory.cpp
|
||||
control/ModelController.cpp
|
||||
control/RepositoryFactory.cpp
|
||||
control/FieldFactory.cpp
|
||||
control/StructureFactory.cpp
|
||||
control/ModelFactory.cpp
|
||||
|
||||
schemaio/AStructureReaderFactory.cpp
|
||||
schemaio/AStructureWriterFactory.cpp
|
||||
schemaio/AStructureReader.cpp
|
||||
schemaio/AStructureWriter.cpp
|
||||
|
||||
RandomAccessBinary.cpp
|
||||
)
|
||||
|
||||
add_library(core ${HEADERS} ${SOURCES})
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
#ifndef JSONSERIALIZABLE_H
|
||||
#define JSONSERIALIZABLE_H
|
||||
#include <string>
|
||||
|
||||
namespace NPC_core {
|
||||
|
||||
class JSONSerializable {
|
||||
public:
|
||||
virtual std::string toJSON() const = 0;
|
||||
virtual void fromJSON(std::string &json) = 0;
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,19 +1,17 @@
|
|||
#include "RandomAccessBinary.h"
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
#include <iomanip>
|
||||
#include <iostream>
|
||||
#include <algorithm>
|
||||
namespace NPC_core {
|
||||
|
||||
RandomAccessBinary::RandomAccessBinary() : RandomAccessBinary(1548)
|
||||
{}
|
||||
RandomAccessBinary::RandomAccessBinary()
|
||||
{
|
||||
this->ptr_data = std::make_unique<std::vector<uint8_t>>();
|
||||
this->ptr_data->reserve(1548);
|
||||
}
|
||||
|
||||
RandomAccessBinary::RandomAccessBinary(uint possible_packetsize)
|
||||
{
|
||||
this->ptr_data = std::make_unique<std::vector<uint8_t>>();
|
||||
this->ptr_data->reserve(possible_packetsize);
|
||||
this->endianness = RandomAccessBinary::Endianness::BIG;
|
||||
}
|
||||
|
||||
RandomAccessBinary::~RandomAccessBinary()
|
||||
|
@ -21,7 +19,7 @@ RandomAccessBinary::~RandomAccessBinary()
|
|||
|
||||
}
|
||||
|
||||
RandomAccessBinary::Endianness RandomAccessBinary::getEndianness()
|
||||
const RandomAccessBinary::Endianness RandomAccessBinary::getEndianness()
|
||||
{
|
||||
return this->endianness;
|
||||
}
|
||||
|
@ -33,258 +31,190 @@ void RandomAccessBinary::setEndianness(RandomAccessBinary::Endianness endianness
|
|||
|
||||
void RandomAccessBinary::setBytes(uint position, const std::vector<uint8_t> &data)
|
||||
{
|
||||
auto it = this->ptr_data->begin();
|
||||
for(uint i = 0; i < data.size(); ++i)
|
||||
this->ptr_data->insert(it+(position+i), data[i]);
|
||||
(*this->ptr_data)[position+i] = data[i];
|
||||
}
|
||||
|
||||
void RandomAccessBinary::setByte(uint position, const uint8_t &data)
|
||||
{
|
||||
auto it = this->ptr_data->begin();
|
||||
this->ptr_data->insert(it+position, data);
|
||||
(*this->ptr_data)[position] = data;
|
||||
}
|
||||
|
||||
void RandomAccessBinary::setBit(uint64_t position, const bool &value)
|
||||
{
|
||||
uint bytePosition = static_cast<uint>(position>>3);
|
||||
uint bitPosition = position % 8;
|
||||
uint64_t bytePosition = position>>3;
|
||||
uint bitPosition = position%8;
|
||||
this->setBit(bytePosition, bitPosition, value);
|
||||
}
|
||||
|
||||
void RandomAccessBinary::setBit(uint bytePosition, uint bitPosition, const bool &value)
|
||||
{
|
||||
if(ptr_data->size() < bytePosition+1)
|
||||
ptr_data->insert(ptr_data->begin()+bytePosition, 0x00);
|
||||
uint8_t byte = this->ptr_data->at(bytePosition);
|
||||
uint8_t newbyte = 0;
|
||||
uint8_t byte = (*this->ptr_data)[bytePosition];
|
||||
uint8_t newbyte = 1;
|
||||
if (value)
|
||||
newbyte = byte | (1<< (7-bitPosition));
|
||||
newbyte = byte | (newbyte << (7-bitPosition));
|
||||
else {
|
||||
newbyte = byte & ~(1 << (7-bitPosition));
|
||||
newbyte = byte & ~(newbyte << (7-bitPosition));
|
||||
}
|
||||
ptr_data->insert(ptr_data->begin()+bytePosition, newbyte);
|
||||
(*this->ptr_data)[bytePosition] = newbyte;
|
||||
}
|
||||
|
||||
void RandomAccessBinary::setBits(uint64_t position, uint bits, const uint8_t &value)
|
||||
{
|
||||
uint64_t bytePosition = position >> 3;
|
||||
uint bitPosition = position % 8;
|
||||
uint64_t bytePosition = position>>3;
|
||||
uint bitPosition = position%8;
|
||||
this->setBits(bytePosition, bitPosition, bits, value);
|
||||
}
|
||||
|
||||
void RandomAccessBinary::setBits(uint bytePosition, uint bitPosition, uint bits, const uint8_t &value)
|
||||
{
|
||||
if(ptr_data->size() < bytePosition+1)
|
||||
ptr_data->insert(ptr_data->begin()+bytePosition, 0x00);
|
||||
uint8_t byte = this->ptr_data->at(bytePosition);
|
||||
uint8_t byte = (*this->ptr_data)[bytePosition];
|
||||
uint8_t newbyte = value;
|
||||
uint8_t mask = 0;
|
||||
for(uint i = 0; i < bits; ++i)
|
||||
mask |= (1 << i);
|
||||
mask <<= (8-bits-bitPosition);
|
||||
for(uint i = bits-1; i >= 0; --i)
|
||||
mask |= 1 << i;
|
||||
mask <<= (7-bits-bitPosition);
|
||||
byte &= ~mask;
|
||||
newbyte <<= (8-bits-bitPosition);
|
||||
newbyte <<= (7-bits-bitPosition);
|
||||
byte |= newbyte;
|
||||
ptr_data->insert(ptr_data->begin()+bytePosition, byte);
|
||||
(*this->ptr_data)[bytePosition] = byte;
|
||||
}
|
||||
|
||||
void RandomAccessBinary::set_uint16(uint byteOffset, const uint16_t &data)
|
||||
{
|
||||
uint8_t * conv = (uint8_t*)&data;
|
||||
std::vector<uint8_t> tmp;
|
||||
tmp.assign(conv, conv+sizeof(uint16_t));
|
||||
if (this->endianness != Endianness::LITTLE)
|
||||
std::reverse(tmp.begin(), tmp.end());
|
||||
this->setBytes(byteOffset, tmp);
|
||||
if (this->endianness == Endianness::BIG) {
|
||||
this->setByte(byteOffset, (uint8_t)(data >> 8));
|
||||
this->setByte(byteOffset+1, (uint8_t)(data & 0x0FF));
|
||||
} else if (this->endianness == Endianness::LITTLE) {
|
||||
this->setByte(byteOffset, (uint8_t)(data & 0x0FF));
|
||||
this->setByte(byteOffset+1, (uint8_t)(data >> 8));
|
||||
} else {
|
||||
//TODO
|
||||
}
|
||||
}
|
||||
|
||||
void RandomAccessBinary::set_uint32(uint byteOffset, const uint32_t &data)
|
||||
{
|
||||
uint8_t * conv = (uint8_t*)&data;
|
||||
std::vector<uint8_t> tmp;
|
||||
tmp.assign(conv, conv+sizeof(uint32_t));
|
||||
if (this->endianness != Endianness::LITTLE)
|
||||
std::reverse(tmp.begin(), tmp.end());
|
||||
this->setBytes(byteOffset, tmp);
|
||||
if (this->endianness == Endianness::BIG) {
|
||||
this->setByte(byteOffset+0, (uint8_t)((data >> 24) & 0x0FF));
|
||||
this->setByte(byteOffset+1, (uint8_t)((data >> 16) & 0x0FF));
|
||||
this->setByte(byteOffset+2, (uint8_t)((data >> 8) & 0x0FF));
|
||||
this->setByte(byteOffset+3, (uint8_t)(data & 0x0FF));
|
||||
} else if (this->endianness == Endianness::LITTLE) {
|
||||
this->setByte(byteOffset+3, (uint8_t)((data >> 24) & 0x0FF));
|
||||
this->setByte(byteOffset+2, (uint8_t)((data >> 16) & 0x0FF));
|
||||
this->setByte(byteOffset+1, (uint8_t)((data >> 8) & 0x0FF));
|
||||
this->setByte(byteOffset+0, (uint8_t)(data & 0x0FF));
|
||||
}
|
||||
}
|
||||
|
||||
void RandomAccessBinary::set_uint64(uint byteOffset, const uint64_t &data)
|
||||
{
|
||||
uint8_t * conv = (uint8_t*)&data;
|
||||
std::vector<uint8_t> tmp;
|
||||
tmp.assign(conv, conv+sizeof(uint64_t));
|
||||
if (this->endianness != Endianness::LITTLE)
|
||||
std::reverse(tmp.begin(), tmp.end());
|
||||
this->setBytes(byteOffset, tmp);
|
||||
if (this->endianness == Endianness::BIG) {
|
||||
this->setByte(byteOffset+0, (uint8_t)((data >> 56) & 0x0FF));
|
||||
this->setByte(byteOffset+1, (uint8_t)((data >> 48) & 0x0FF));
|
||||
this->setByte(byteOffset+2, (uint8_t)((data >> 40) & 0x0FF));
|
||||
this->setByte(byteOffset+3, (uint8_t)((data >> 32) & 0x0FF));
|
||||
this->setByte(byteOffset+4, (uint8_t)((data >> 24) & 0x0FF));
|
||||
this->setByte(byteOffset+5, (uint8_t)((data >> 16) & 0x0FF));
|
||||
this->setByte(byteOffset+6, (uint8_t)((data >> 8) & 0x0FF));
|
||||
this->setByte(byteOffset+7, (uint8_t)(data & 0x0FF));
|
||||
} else if (this->endianness == Endianness::LITTLE) {
|
||||
this->setByte(byteOffset+7, (uint8_t)((data >> 56) & 0x0FF));
|
||||
this->setByte(byteOffset+6, (uint8_t)((data >> 48) & 0x0FF));
|
||||
this->setByte(byteOffset+5, (uint8_t)((data >> 40) & 0x0FF));
|
||||
this->setByte(byteOffset+4, (uint8_t)((data >> 32) & 0x0FF));
|
||||
this->setByte(byteOffset+3, (uint8_t)((data >> 24) & 0x0FF));
|
||||
this->setByte(byteOffset+2, (uint8_t)((data >> 16) & 0x0FF));
|
||||
this->setByte(byteOffset+1, (uint8_t)((data >> 8) & 0x0FF));
|
||||
this->setByte(byteOffset+0, (uint8_t)(data & 0x0FF));
|
||||
}
|
||||
}
|
||||
|
||||
void RandomAccessBinary::set_float(uint position, float &data)
|
||||
{
|
||||
uint8_t * conv = (uint8_t*)&data;
|
||||
std::vector<uint8_t> tmp;
|
||||
tmp.assign(conv, conv+sizeof(float));
|
||||
if (this->endianness != Endianness::LITTLE)
|
||||
std::reverse(tmp.begin(), tmp.end());
|
||||
this->setBytes(position, tmp);
|
||||
float * conv = &data;
|
||||
this->set_uint32(position, *conv);
|
||||
}
|
||||
|
||||
void RandomAccessBinary::set_double(uint position, double &data)
|
||||
{
|
||||
uint8_t * conv = (uint8_t*)&data;
|
||||
std::vector<uint8_t> tmp;
|
||||
tmp.assign(conv, conv+sizeof(double));
|
||||
if (this->endianness != Endianness::LITTLE)
|
||||
std::reverse(tmp.begin(), tmp.end());
|
||||
this->setBytes(position, tmp);
|
||||
double * conv = &data;
|
||||
this->set_uint64(position, *conv);
|
||||
}
|
||||
|
||||
uint8_t RandomAccessBinary::getByte(uint position)
|
||||
{
|
||||
return this->ptr_data->at(position);
|
||||
return (*this->ptr_data)[position];
|
||||
}
|
||||
|
||||
const std::vector<uint8_t> RandomAccessBinary::getBytes(uint position, uint length)
|
||||
{
|
||||
auto begin = ptr_data->begin() + position;
|
||||
auto end = ptr_data->begin() + position + length;
|
||||
std::vector<uint8_t> vec(begin, end);
|
||||
std::vector<uint8_t> vec;
|
||||
for(uint i = position; i< position+length; ++i)
|
||||
vec.push_back((*this->ptr_data)[i]);
|
||||
return vec;
|
||||
}
|
||||
|
||||
bool RandomAccessBinary::getBit(uint byteOffset, uint bitOffset)
|
||||
{
|
||||
uint8_t byte = this->ptr_data->at(byteOffset);
|
||||
uint8_t byte = (*this->ptr_data)[byteOffset];
|
||||
return (byte & (1 << (7-bitOffset))) > 0;
|
||||
}
|
||||
|
||||
bool RandomAccessBinary::getBit(uint64_t position)
|
||||
{
|
||||
uint byteOffset = static_cast<uint>(position>>3);
|
||||
uint bitOffset = position % 8;
|
||||
uint64_t byteOffset = position>>3;
|
||||
uint bitOffset = position%8;
|
||||
return this->getBit(byteOffset, bitOffset);
|
||||
}
|
||||
|
||||
const std::vector<bool> RandomAccessBinary::getBits(uint byteOffset, uint8_t bitOffset, uint64_t length)
|
||||
{
|
||||
uint64_t byteLength = length >> 3;
|
||||
int olength = length - (byteLength<<3) - bitOffset;
|
||||
std::vector<uint8_t> tmp(ptr_data->begin()+byteOffset, ptr_data->begin()+byteOffset+byteLength+1);
|
||||
std::vector<bool> output;
|
||||
uint i = 0;
|
||||
for(auto it = tmp.begin(); it != tmp.end(); ++it, ++i){
|
||||
if(i == 0){
|
||||
for(int a = 7-bitOffset; a >= 0; --a)
|
||||
output.push_back((*it & (1 << a)) > 0);
|
||||
} else if(olength > 0 && i == byteLength) {
|
||||
for(int a = 7; a >= olength; --a)
|
||||
output.push_back((*it & (1 << a)) > 0);
|
||||
} else {
|
||||
for(int a = 7; a >= 0; --a)
|
||||
output.push_back((*it & (1 << a)) > 0);
|
||||
}
|
||||
}
|
||||
return output;
|
||||
return std::vector<bool>();
|
||||
}
|
||||
|
||||
const std::vector<bool> RandomAccessBinary::getBits(uint64_t position, uint64_t length)
|
||||
{
|
||||
uint byteOffset = static_cast<uint>(position>>3);
|
||||
uint8_t bitOffset = position % 8;
|
||||
return this->getBits(byteOffset,bitOffset,length);
|
||||
return std::vector<bool>();
|
||||
}
|
||||
|
||||
uint16_t RandomAccessBinary::get_uint16(uint byteOffset)
|
||||
{
|
||||
auto tmp = getBytes(byteOffset, sizeof(uint16_t));
|
||||
if (endianness != Endianness::LITTLE)
|
||||
std::reverse(tmp.begin(), tmp.end());
|
||||
if (tmp.data() != nullptr) {
|
||||
uint16_t* d = (uint16_t*)tmp.data();
|
||||
return *d;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32_t RandomAccessBinary::get_uint32(uint byteOffset)
|
||||
{
|
||||
auto tmp = getBytes(byteOffset, sizeof(uint32_t));
|
||||
if (endianness != Endianness::LITTLE)
|
||||
std::reverse(tmp.begin(), tmp.end());
|
||||
if (tmp.data() != nullptr) {
|
||||
uint32_t* d = (uint32_t*)tmp.data();
|
||||
return *d;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64_t RandomAccessBinary::get_uint64(uint byteOffset)
|
||||
{
|
||||
auto tmp = getBytes(byteOffset, sizeof(uint64_t));
|
||||
if (endianness != Endianness::LITTLE)
|
||||
std::reverse(tmp.begin(), tmp.end());
|
||||
if (tmp.data() != nullptr) {
|
||||
uint64_t* d = (uint64_t*)tmp.data();
|
||||
return *d;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
float RandomAccessBinary::get_float(uint byteOffset)
|
||||
{
|
||||
float tmp = 0.0;
|
||||
auto bytes = this->getBytes(byteOffset, sizeof(float));
|
||||
uint8_t* ptr_tmp = (uint8_t*)&tmp;
|
||||
if (endianness != Endianness::LITTLE) {
|
||||
std::reverse(std::begin(bytes), std::end(bytes));
|
||||
}
|
||||
uint8_t i = 0;
|
||||
for(auto it = bytes.begin(); it != bytes.end();++it, ++i)
|
||||
*(ptr_tmp+i) = *it;
|
||||
return tmp;
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
double RandomAccessBinary::get_double(uint byteOffset)
|
||||
{
|
||||
double tmp = 0.0;
|
||||
auto bytes = this->getBytes(byteOffset, sizeof(double));
|
||||
uint8_t* ptr_tmp = (uint8_t*)&tmp;
|
||||
if (endianness != Endianness::LITTLE) {
|
||||
std::reverse(std::begin(bytes), std::end(bytes));
|
||||
}
|
||||
uint8_t i = 0;
|
||||
for(auto it = bytes.begin(); it != bytes.end();++it, ++i)
|
||||
*(ptr_tmp+i) = *it;
|
||||
return tmp;
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
std::__cxx11::string RandomAccessBinary::get_string(uint byteOffset, uint length)
|
||||
{
|
||||
std::stringstream output;
|
||||
uint i = 0;
|
||||
for(auto it = ptr_data->begin(); it != ptr_data->end() && i < length; ++it, ++i) {
|
||||
output << *it;
|
||||
}
|
||||
return output.str();
|
||||
return "";
|
||||
}
|
||||
|
||||
std::__cxx11::string RandomAccessBinary::get_hex_string(uint byteOffset, uint length)
|
||||
{
|
||||
std::stringstream output;
|
||||
output << std::hex << std::noshowbase << std::right << std::setfill('0');
|
||||
uint i = 0;
|
||||
for(auto it = ptr_data->begin()+byteOffset; it != ptr_data->end() && i < length; ++it, ++i) {
|
||||
output << std::setw(2) << static_cast<int>(*it);
|
||||
}
|
||||
return output.str();
|
||||
return "";
|
||||
}
|
||||
|
||||
std::__cxx11::string RandomAccessBinary::get_hex_string()
|
||||
{
|
||||
std::stringstream output;
|
||||
output << std::hex << std::noshowbase << std::right << std::setfill('0');
|
||||
for(auto it = ptr_data->begin(); it != ptr_data->end(); ++it) {
|
||||
output << std::setw(2) << static_cast<int>(*it);
|
||||
}
|
||||
return output.str();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
#include <list>
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
namespace NPC_core {
|
||||
|
||||
class RandomAccessBinary
|
||||
{
|
||||
|
@ -20,9 +19,7 @@ public:
|
|||
virtual ~RandomAccessBinary();
|
||||
|
||||
void setEndianness(Endianness endianess);
|
||||
Endianness getEndianness();
|
||||
|
||||
void clear() { ptr_data->clear(); }
|
||||
const Endianness getEndianness();
|
||||
|
||||
void setBytes(uint position, const std::vector<uint8_t>& data);
|
||||
void setByte(uint position, const uint8_t& data);
|
||||
|
@ -64,11 +61,9 @@ public:
|
|||
|
||||
std::string get_hex_string(uint byteOffset, uint length);
|
||||
std::string get_hex_string();
|
||||
|
||||
uint64_t size() { return ptr_data->size(); }
|
||||
private:
|
||||
std::unique_ptr<std::vector<uint8_t>> ptr_data;
|
||||
Endianness endianness;
|
||||
};
|
||||
}
|
||||
|
||||
#endif // RANDOMACCESSBINARY_H
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
#ifndef VALIDATOR_H
|
||||
#define VALIDATOR_H
|
||||
|
||||
namespace NPC_core {
|
||||
class Validator {
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,12 +0,0 @@
|
|||
#ifndef YAMLSERIALIZABLE_H
|
||||
#define YAMLSERIALIZABLE_H
|
||||
#include <string>
|
||||
namespace NPC_core {
|
||||
|
||||
class YAMLSerializable {
|
||||
public:
|
||||
virtual std::string toYAML() const = 0;
|
||||
virtual void fromYAML(std::string &yaml) = 0;
|
||||
};
|
||||
}
|
||||
#endif
|
|
@ -1,22 +0,0 @@
|
|||
#include "AFieldFactory.h"
|
||||
namespace NPC_core {
|
||||
namespace Control {
|
||||
AFieldFactory::AFieldFactory()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
std::shared_ptr<Model::Field> AFieldFactory::createField(std::string name, std::shared_ptr<Model::Structure> parentStructure)
|
||||
{
|
||||
auto f = std::make_shared<Model::Field>();
|
||||
f->setName(name);
|
||||
return f;
|
||||
}
|
||||
|
||||
std::shared_ptr<Model::Field> AFieldFactory::createFieldFull(std::string name, std::map<std::string, std::string> syntaxes, std::shared_ptr<Model::Structure> parentStructure)
|
||||
{
|
||||
auto f = std::make_shared<Model::Field>();
|
||||
f->setName(name);
|
||||
return f;
|
||||
}
|
||||
}}
|
|
@ -1,19 +0,0 @@
|
|||
#ifndef AFIELDFACTORY_H
|
||||
#define AFIELDFACTORY_H
|
||||
|
||||
#include "../model/Field.h"
|
||||
#include <memory>
|
||||
|
||||
namespace NPC_core {
|
||||
namespace Control {
|
||||
class AFieldFactory
|
||||
{
|
||||
public:
|
||||
AFieldFactory();
|
||||
virtual ~AFieldFactory();
|
||||
|
||||
virtual std::shared_ptr<Model::Field> createField(std::string name, std::shared_ptr<Model::Structure> parentStructure = nullptr);
|
||||
virtual std::shared_ptr<Model::Field> createFieldFull(std::string name, std::map<std::string, std::string> syntaxes, std::shared_ptr<Model::Structure> parentStructure = nullptr);
|
||||
};
|
||||
}}
|
||||
#endif // AFIELDFACTORY_H
|
|
@ -1,8 +0,0 @@
|
|||
#include "AModelFactory.h"
|
||||
namespace NPC_core {
|
||||
namespace Control {
|
||||
AModelFactory::AModelFactory()
|
||||
{
|
||||
|
||||
}
|
||||
}}
|
|
@ -1,8 +0,0 @@
|
|||
#include "ARepositoryFactory.h"
|
||||
namespace NPC_core {
|
||||
namespace Control {
|
||||
ARepositoryFactory::ARepositoryFactory()
|
||||
{
|
||||
|
||||
}
|
||||
}}
|
|
@ -1,8 +0,0 @@
|
|||
#include "AStructureFactory.h"
|
||||
namespace NPC_core {
|
||||
namespace Control {
|
||||
AStructureFactory::AStructureFactory()
|
||||
{
|
||||
|
||||
}
|
||||
}}
|
|
@ -1,13 +0,0 @@
|
|||
#include "DataController.h"
|
||||
|
||||
using namespace NPC_core::control;
|
||||
|
||||
DataController::DataController()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
std::shared_ptr<RandomAccessBinary> DataController::getRAB() const
|
||||
{
|
||||
return rab;
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
#ifndef DATACONTROLLER_H
|
||||
#define DATACONTROLLER_H
|
||||
|
||||
#include "RandomAccessBinary.h"
|
||||
#include <memory>
|
||||
|
||||
namespace NPC_core {
|
||||
namespace control {
|
||||
|
||||
class DataController
|
||||
{
|
||||
public:
|
||||
DataController();
|
||||
|
||||
std::shared_ptr<RandomAccessBinary> getRAB() const;
|
||||
|
||||
private:
|
||||
std::shared_ptr<RandomAccessBinary> rab;
|
||||
};
|
||||
}}
|
||||
#endif // DATACONTROLLER_H
|
|
@ -0,0 +1,30 @@
|
|||
#include "FieldFactory.h"
|
||||
namespace NPC { namespace core {
|
||||
namespace Control {
|
||||
FieldFactory::FieldFactory()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
std::shared_ptr<Model::Field> FieldFactory::createField(std::string name, std::shared_ptr<Model::Structure> parentStructure)
|
||||
{
|
||||
auto f = std::make_shared<Model::Field>();
|
||||
f->setName(name);
|
||||
f->setParentStructure(parentStructure);
|
||||
return f;
|
||||
}
|
||||
|
||||
std::shared_ptr<Model::Field> FieldFactory::createFieldFull(std::string name, std::shared_ptr<std::map<std::string, std::string>> syntaxes, std::shared_ptr<Model::Structure> parentStructure)
|
||||
{
|
||||
auto f = this->createField(name, parentStructure);
|
||||
f->setSyntaxes(syntaxes);
|
||||
return f;
|
||||
}
|
||||
|
||||
std::shared_ptr<Model::Field> FieldFactory::createFieldWithPredefinedValues(std::string name, std::shared_ptr<std::map<std::string, std::string> > choosableValues, std::shared_ptr<std::map<std::string, std::string> > syntaxes, std::shared_ptr<Model::Structure> parentStructure)
|
||||
{
|
||||
auto f = this->createFieldFull(name, syntaxes, parentStructure);
|
||||
f->setChooseableValues(choosableValues);
|
||||
return f;
|
||||
}
|
||||
}}}
|
|
@ -0,0 +1,22 @@
|
|||
#ifndef AFIELDFACTORY_H
|
||||
#define AFIELDFACTORY_H
|
||||
|
||||
#include "../model/Field.h"
|
||||
#include <memory>
|
||||
|
||||
namespace NPC { namespace core {
|
||||
namespace Control {
|
||||
class FieldFactory
|
||||
{
|
||||
public:
|
||||
FieldFactory();
|
||||
virtual ~FieldFactory();
|
||||
|
||||
virtual std::shared_ptr<Model::Field> createField(std::string name, std::shared_ptr<Model::Structure> parentStructure = nullptr);
|
||||
virtual std::shared_ptr<Model::Field> createFieldFull(std::string name, std::shared_ptr<std::map<std::string, std::string>> syntaxes, std::shared_ptr<Model::Structure> parentStructure = nullptr);
|
||||
virtual std::shared_ptr<Model::Field> createFieldWithPredefinedValues(std::string name, std::shared_ptr<std::map<std::string, std::string>> choosableValues,
|
||||
std::shared_ptr<std::map<std::string, std::string>> syntaxes,
|
||||
std::shared_ptr<Model::Structure> parentStructure = nullptr);
|
||||
};
|
||||
}}}
|
||||
#endif // AFIELDFACTORY_H
|
|
@ -1,12 +0,0 @@
|
|||
#include "ModelController.h"
|
||||
|
||||
|
||||
namespace NPC_core {
|
||||
namespace control {
|
||||
|
||||
ModelController::ModelController()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}}
|
|
@ -1,13 +0,0 @@
|
|||
#ifndef MODELCONTROLLER_H
|
||||
#define MODELCONTROLLER_H
|
||||
|
||||
|
||||
namespace NPC_core {
|
||||
namespace control {
|
||||
class ModelController
|
||||
{
|
||||
public:
|
||||
ModelController();
|
||||
};
|
||||
}}
|
||||
#endif // MODELCONTROLLER_H
|
|
@ -0,0 +1,8 @@
|
|||
#include "ModelFactory.h"
|
||||
namespace NPC { namespace core {
|
||||
namespace Control {
|
||||
ModelFactory::ModelFactory()
|
||||
{
|
||||
|
||||
}
|
||||
}}}
|
|
@ -1,12 +1,12 @@
|
|||
#ifndef AMODELFACTORY_H
|
||||
#define AMODELFACTORY_H
|
||||
|
||||
namespace NPC_core {
|
||||
namespace NPC { namespace core {
|
||||
namespace Control {
|
||||
class AModelFactory
|
||||
class ModelFactory
|
||||
{
|
||||
public:
|
||||
AModelFactory();
|
||||
ModelFactory();
|
||||
};
|
||||
}}
|
||||
}}}
|
||||
#endif // AMODELFACTORY_H
|
|
@ -0,0 +1,8 @@
|
|||
#include "RepositoryFactory.h"
|
||||
namespace NPC { namespace core {
|
||||
namespace Control {
|
||||
RepositoryFactory::RepositoryFactory()
|
||||
{
|
||||
|
||||
}
|
||||
}}}
|
|
@ -1,12 +1,12 @@
|
|||
#ifndef AREPOSITORYFACTORY_H
|
||||
#define AREPOSITORYFACTORY_H
|
||||
|
||||
namespace NPC_core {
|
||||
namespace NPC { namespace core {
|
||||
namespace Control {
|
||||
class ARepositoryFactory
|
||||
class RepositoryFactory
|
||||
{
|
||||
public:
|
||||
ARepositoryFactory();
|
||||
RepositoryFactory();
|
||||
};
|
||||
}}
|
||||
}}}
|
||||
#endif // AREPOSITORYFACTORY_H
|
|
@ -0,0 +1,8 @@
|
|||
#include "StructureFactory.h"
|
||||
namespace NPC { namespace core {
|
||||
namespace Control {
|
||||
StructureFactory::StructureFactory()
|
||||
{
|
||||
|
||||
}
|
||||
}}}
|
|
@ -1,12 +1,12 @@
|
|||
#ifndef ASTRUCTUREFACTORY_H
|
||||
#define ASTRUCTUREFACTORY_H
|
||||
|
||||
namespace NPC_core {
|
||||
namespace NPC { namespace core {
|
||||
namespace Control {
|
||||
class AStructureFactory
|
||||
class StructureFactory
|
||||
{
|
||||
public:
|
||||
AStructureFactory();
|
||||
StructureFactory();
|
||||
};
|
||||
}}
|
||||
}}}
|
||||
#endif // ASTRUCTUREFACTORY_H
|
|
@ -1,11 +0,0 @@
|
|||
#include "CombinationField.h"
|
||||
|
||||
namespace NPC_core {
|
||||
namespace Model {
|
||||
CombinationField::CombinationField() {
|
||||
}
|
||||
|
||||
CombinationField::~CombinationField() {
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
#ifndef COMBINATIONFIELD_H
|
||||
#define COMBINATIONFIELD_H
|
||||
#include "ICombinationField.h"
|
||||
#include "ValidateableValueField.h"
|
||||
|
||||
namespace NPC_core {
|
||||
namespace Model {
|
||||
class CombinationField : public ICombinationField, public Field {
|
||||
public:
|
||||
CombinationField();
|
||||
virtual ~CombinationField();
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,9 +1,10 @@
|
|||
#include "Field.h"
|
||||
|
||||
namespace NPC_core {
|
||||
namespace NPC { namespace core {
|
||||
namespace Model {
|
||||
Field::Field()
|
||||
{
|
||||
this->parentStructure = nullptr;
|
||||
}
|
||||
|
||||
std::string Field::getName() const
|
||||
|
@ -16,14 +17,45 @@ void Field::setName(const std::string &value)
|
|||
name = value;
|
||||
}
|
||||
|
||||
std::string Field::getDescription() const
|
||||
std::shared_ptr<std::map<std::string, std::string> > Field::getSyntaxes() const
|
||||
{
|
||||
return description;
|
||||
return syntaxes;
|
||||
}
|
||||
|
||||
void Field::setDescription(const std::string &value)
|
||||
void Field::setSyntaxes(const std::shared_ptr<std::map<std::string, std::string>> &value)
|
||||
{
|
||||
description = value;
|
||||
syntaxes = value;
|
||||
}
|
||||
|
||||
std::string Field::getValue() const
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
void Field::setValue(const std::string &value)
|
||||
{
|
||||
this->value = value;
|
||||
}
|
||||
|
||||
std::shared_ptr<Structure> Field::getParentStructure() const
|
||||
{
|
||||
return parentStructure;
|
||||
}
|
||||
|
||||
void Field::setParentStructure(const std::shared_ptr<Structure> &value)
|
||||
{
|
||||
parentStructure = value;
|
||||
}
|
||||
|
||||
std::shared_ptr<std::map<std::string, std::string> > Field::getChooseableValues() const
|
||||
{
|
||||
return chooseableValues;
|
||||
}
|
||||
|
||||
void Field::setChooseableValues(const std::shared_ptr<std::map<std::string, std::string> > &value)
|
||||
{
|
||||
chooseableValues = value;
|
||||
}
|
||||
|
||||
}
|
||||
}}
|
||||
|
|
|
@ -5,54 +5,40 @@
|
|||
#include <memory>
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include "IField.h"
|
||||
|
||||
namespace NPC_core {
|
||||
namespace NPC { namespace core {
|
||||
namespace Model {
|
||||
|
||||
class Structure;
|
||||
|
||||
class Field : public IField {
|
||||
class Field
|
||||
{
|
||||
public:
|
||||
Field();
|
||||
virtual ~Field(){}
|
||||
virtual ~Field();
|
||||
|
||||
std::string getName() const;
|
||||
void setName(const std::string &value);
|
||||
|
||||
std::string getDescription() const;
|
||||
void setDescription(const std::string &value);
|
||||
private:
|
||||
std::string name;
|
||||
std::string description;
|
||||
};
|
||||
std::shared_ptr<std::map<std::string, std::string>> getSyntaxes() const;
|
||||
void setSyntaxes(const std::shared_ptr<std::map<std::string, std::string>> &value);
|
||||
|
||||
// class Field : public IField
|
||||
// {
|
||||
// public:
|
||||
// Field();
|
||||
// virtual ~Field(){}
|
||||
//
|
||||
// std::string getName() const;
|
||||
// void setName(const std::string &value);
|
||||
//
|
||||
// std::map<std::string, std::string> getSyntaxes() const;
|
||||
// void setSyntaxes(const std::map<std::string, std::string> &value);
|
||||
//
|
||||
// std::shared_ptr<Structure> getParentStructure() const;
|
||||
// void setParentStructure(const std::shared_ptr<Structure> &value);
|
||||
//
|
||||
// protected:
|
||||
// std::shared_ptr<Structure> parentStructure;
|
||||
// std::string name;
|
||||
// std::map<std::string, std::string> syntaxes; // example : regex; for validation
|
||||
// std::map<std::string, std::string> options;
|
||||
// bool nextLevel;
|
||||
//
|
||||
// // IField interface
|
||||
// public:
|
||||
// bool isNextLevel() { return this->nextLevel; }
|
||||
// };
|
||||
}}
|
||||
std::string getValue() const;
|
||||
void setValue(const std::string &value);
|
||||
|
||||
std::shared_ptr<Structure> getParentStructure() const;
|
||||
void setParentStructure(const std::shared_ptr<Structure> &value);
|
||||
|
||||
std::shared_ptr<std::map<std::string, std::string> > getChooseableValues() const;
|
||||
void setChooseableValues(const std::shared_ptr<std::map<std::string, std::string> > &value);
|
||||
|
||||
protected:
|
||||
std::shared_ptr<Structure> parentStructure;
|
||||
std::string name;
|
||||
std::shared_ptr<std::map<std::string, std::string>> syntaxes; // example : regex; for validation
|
||||
std::string value;
|
||||
std::shared_ptr<std::map<std::string, std::string>> chooseableValues;
|
||||
};
|
||||
}}}
|
||||
|
||||
#endif // AFIELD_H
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
#ifndef ICOMBINATIONFIELD_H
|
||||
#define ICOMBINATIONFIELD_H
|
||||
#include "IField.h"
|
||||
|
||||
namespace NPC_core {
|
||||
namespace Model {
|
||||
class ICombinationField : public IField {
|
||||
public:
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
#endif
|
|
@ -1,27 +0,0 @@
|
|||
#ifndef IFIELD_H
|
||||
#define IFIELD_H
|
||||
#include <string>
|
||||
|
||||
namespace NPC_core {
|
||||
namespace Model {
|
||||
|
||||
class IField
|
||||
{
|
||||
public:
|
||||
virtual std::string getName() const = 0;
|
||||
virtual std::string getDescription() const = 0;
|
||||
};
|
||||
|
||||
// class IField
|
||||
// {
|
||||
// public:
|
||||
// virtual std::string getName() const = 0;
|
||||
//
|
||||
// virtual std::map<std::string, std::string> getSyntaxes() const = 0;
|
||||
//
|
||||
// virtual std::shared_ptr<Structure> getParentStructure() const = 0;
|
||||
//
|
||||
// virtual bool isNextLevel() = 0;
|
||||
// };
|
||||
}}
|
||||
#endif // IFIELD_H
|
|
@ -1,14 +0,0 @@
|
|||
#ifndef ILAYERTRANSITIONFIELD_H
|
||||
#define ILAYERTRANSITIONFIELD_H
|
||||
#include "IField.h"
|
||||
|
||||
namespace NPC_core {
|
||||
namespace Model {
|
||||
|
||||
class ILayerTransitionField : public IField {
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,18 +0,0 @@
|
|||
#ifndef IMODEL_H
|
||||
#define IMODEL_H
|
||||
#include "../Tree.h"
|
||||
#include "Field.h"
|
||||
#include "../RandomAccessBinary.h"
|
||||
#include <list>
|
||||
namespace NPC_core {
|
||||
namespace Model {
|
||||
class IModel
|
||||
{
|
||||
public:
|
||||
virtual Tree<Field> getStack() const = 0;
|
||||
virtual std::list<std::shared_ptr<Structure>> getStructures() const = 0;
|
||||
virtual std::string getBinaryInHex() const = 0;
|
||||
};
|
||||
}}
|
||||
|
||||
#endif // IMODEL_H
|
|
@ -1,16 +0,0 @@
|
|||
#ifndef IREGEXVALUEFIELD_H
|
||||
#define IREGEXVALUEFIELD_H
|
||||
#include "IValidateableValueField.h"
|
||||
#include <string>
|
||||
|
||||
namespace NPC_core {
|
||||
namespace Model {
|
||||
class IRegexValueField : IValidateableValueField {
|
||||
public:
|
||||
// virtual std::string getRegex() const = 0;
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,21 +0,0 @@
|
|||
#ifndef ISTRUCTURE_H
|
||||
#define ISTRUCTURE_H
|
||||
#include <memory>
|
||||
#include <list>
|
||||
#include "Field.h"
|
||||
#include "../Tree.h"
|
||||
|
||||
namespace NPC_core {
|
||||
namespace Model {
|
||||
|
||||
class Field;
|
||||
|
||||
class IStructure
|
||||
{
|
||||
public:
|
||||
virtual std::string getName() const = 0;
|
||||
|
||||
virtual Tree<Field> getElements() const = 0;
|
||||
};
|
||||
}}
|
||||
#endif // ISTRUCTURE_H
|
|
@ -1,17 +0,0 @@
|
|||
#ifndef IVALIDATEABLEVALUEFIELD_H
|
||||
#define IVALIDATEABLEVALUEFIELD_H
|
||||
#include "IValueField.h"
|
||||
#include "../Validator.h"
|
||||
|
||||
namespace NPC_core {
|
||||
namespace Model {
|
||||
class IValidateableValueField : public IValueField {
|
||||
public:
|
||||
virtual bool validate() const = 0;
|
||||
virtual Validator& getValidator() const = 0;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif
|
|
@ -1,17 +0,0 @@
|
|||
#ifndef IVALUEFIELD_H
|
||||
#define IVALUEFIELD_H
|
||||
#include <string>
|
||||
#include "IField.h"
|
||||
|
||||
namespace NPC_core {
|
||||
namespace Model {
|
||||
|
||||
class IValueField: public IField {
|
||||
public:
|
||||
virtual std::string getValue() const = 0;
|
||||
virtual uint32_t getBitsize() const = 0;
|
||||
};
|
||||
|
||||
|
||||
}}
|
||||
#endif
|
|
@ -1,10 +0,0 @@
|
|||
#include "LayerTransitionField.h"
|
||||
|
||||
namespace NPC_core {
|
||||
namespace Model {
|
||||
LayerTransitionField::LayerTransitionField() : Field() {
|
||||
}
|
||||
LayerTransitionField::~LayerTransitionField() {
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
#ifndef LAYERTRANSITIONFIELD_H
|
||||
#define LAYERTRANSITIONFIELD_H
|
||||
#include "ILayerTransitionField.h"
|
||||
#include "Field.h"
|
||||
|
||||
namespace NPC_core {
|
||||
namespace Model {
|
||||
class LayerTransitionField : public Field, public ILayerTransitionField {
|
||||
public:
|
||||
LayerTransitionField();
|
||||
virtual ~LayerTransitionField();
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,28 +1,8 @@
|
|||
#include "Model.h"
|
||||
namespace NPC_core {
|
||||
namespace NPC { namespace core {
|
||||
namespace Model {
|
||||
Model::Model()
|
||||
{
|
||||
this->rab = std::make_unique<RandomAccessBinary>();
|
||||
}
|
||||
|
||||
Tree<Field> Model::getStack() const
|
||||
{
|
||||
return stack;
|
||||
}
|
||||
|
||||
std::list<std::shared_ptr<Structure> > Model::getStructures() const
|
||||
{
|
||||
return structures;
|
||||
}
|
||||
|
||||
std::string Model::getBinaryInHex() const {
|
||||
return this->rab->get_hex_string();
|
||||
}
|
||||
|
||||
void Model::update()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}}
|
||||
}}}
|
||||
|
|
|
@ -1,31 +1,19 @@
|
|||
#ifndef AMODEL_H
|
||||
#define AMODEL_H
|
||||
#include <memory>
|
||||
|
||||
#include "../Tree.h"
|
||||
#include "Field.h"
|
||||
#include "../RandomAccessBinary.h"
|
||||
#include "IModel.h"
|
||||
#include <list>
|
||||
|
||||
namespace NPC_core {
|
||||
namespace NPC { namespace core {
|
||||
namespace Model {
|
||||
class Model : public IModel
|
||||
class Model
|
||||
{
|
||||
public:
|
||||
Model();
|
||||
virtual ~Model(){}
|
||||
|
||||
Tree<Field> getStack() const;
|
||||
std::list<std::shared_ptr<Structure>> getStructures() const;
|
||||
std::string getBinaryInHex() const;
|
||||
void addStructure(std::shared_ptr<Structure> structure);
|
||||
|
||||
void update(); // updates the stack if a new structure has been added, and updates the binary
|
||||
virtual ~Model();
|
||||
|
||||
private:
|
||||
Tree<Field> stack;
|
||||
std::unique_ptr<RandomAccessBinary> rab;
|
||||
std::list<std::shared_ptr<Structure>> structures;
|
||||
};
|
||||
}}
|
||||
}}}
|
||||
#endif // AMODEL_H
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
#include "Modifier.h"
|
||||
|
||||
Modifier::Modifier()
|
||||
{
|
||||
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
#ifndef MODIFIER_H
|
||||
#define MODIFIER_H
|
||||
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
|
||||
class Modifier
|
||||
{
|
||||
public:
|
||||
Modifier();
|
||||
virtual ~Modifier();
|
||||
|
||||
virtual void modifySelf(std::shared_ptr<std::vector<uint8_t>> bytes) = 0;
|
||||
virtual void modifySelfFromFullData(std::shared_ptr<std::vector<uint8_t>> bytes, const std::shared_ptr<std::vector<uint8_t>> data) = 0;
|
||||
};
|
||||
|
||||
#endif // MODIFIER_H
|
|
@ -1,13 +0,0 @@
|
|||
#include "RegexValueField.h"
|
||||
|
||||
namespace NPC_core {
|
||||
namespace Model {
|
||||
RegexValueField::RegexValueField() : ValidateableValueField() {
|
||||
}
|
||||
|
||||
RegexValueField::~RegexValueField() {
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
#ifndef REGEXVALUEFIELD_H
|
||||
#define REGEXVALUEFIELD_H
|
||||
#include "ValidateableValueField.h"
|
||||
#include "IRegexValueField.h"
|
||||
|
||||
|
||||
namespace NPC_core {
|
||||
namespace Model {
|
||||
class RegexValueField : public ValidateableValueField, public IRegexValueField {
|
||||
public:
|
||||
RegexValueField();
|
||||
virtual ~RegexValueField();
|
||||
};
|
||||
}
|
||||
}
|
||||
#endif
|
|
@ -1,8 +1,8 @@
|
|||
#include "Repository.h"
|
||||
namespace NPC_core {
|
||||
namespace NPC { namespace core {
|
||||
namespace Model {
|
||||
Repository::Repository()
|
||||
{
|
||||
|
||||
}
|
||||
}}
|
||||
}}}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <map>
|
||||
#include "Structure.h"
|
||||
|
||||
namespace NPC_core {
|
||||
namespace NPC { namespace core {
|
||||
namespace Model {
|
||||
class Repository
|
||||
{
|
||||
|
@ -15,5 +15,5 @@ public:
|
|||
private:
|
||||
std::map<std::string, Structure> structures;
|
||||
};
|
||||
}}
|
||||
}}}
|
||||
#endif // AREPOSITORY_H
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#include "Structure.h"
|
||||
namespace NPC_core {
|
||||
namespace NPC { namespace core {
|
||||
namespace Model {
|
||||
Structure::Structure()
|
||||
{
|
||||
|
@ -16,13 +16,29 @@ void Structure::setName(const std::string &value)
|
|||
name = value;
|
||||
}
|
||||
|
||||
Tree<Field> Structure::getElements() const
|
||||
uint Structure::getLayer() const
|
||||
{
|
||||
return layer;
|
||||
}
|
||||
|
||||
void Structure::setLayer(const uint &value)
|
||||
{
|
||||
layer = value;
|
||||
}
|
||||
|
||||
std::shared_ptr<Tree<Field> > Structure::getElements() const
|
||||
{
|
||||
return elements;
|
||||
}
|
||||
|
||||
void Structure::setElements(const Tree<Field> &value)
|
||||
void Structure::setElements(const std::shared_ptr<Tree<Field> > &value)
|
||||
{
|
||||
elements = value;
|
||||
}
|
||||
}}
|
||||
|
||||
std::shared_ptr<TreeNode<Field> > Structure::getElementCopy()
|
||||
{
|
||||
if(elements != nullptr)
|
||||
return elements->getRoot()->rcopy();
|
||||
}
|
||||
}}}
|
||||
|
|
|
@ -5,30 +5,29 @@
|
|||
#include <list>
|
||||
#include "Field.h"
|
||||
#include "../Tree.h"
|
||||
#include "IStructure.h"
|
||||
|
||||
namespace NPC_core {
|
||||
namespace NPC { namespace core {
|
||||
namespace Model {
|
||||
|
||||
class Field;
|
||||
|
||||
class Structure : public IStructure
|
||||
class Structure
|
||||
{
|
||||
public:
|
||||
Structure();
|
||||
virtual ~Structure() {}
|
||||
virtual ~Structure();
|
||||
|
||||
std::string getName() const;
|
||||
void setName(const std::string &value);
|
||||
|
||||
|
||||
Tree<Field> getElements() const;
|
||||
void setElements(const Tree<Field> &value);
|
||||
uint getLayer() const;
|
||||
void setLayer(const uint &value);
|
||||
|
||||
private:
|
||||
Tree<Field> elements;
|
||||
std::string name;
|
||||
uint layer;
|
||||
};
|
||||
}}
|
||||
}}}
|
||||
|
||||
#endif // ASTRUCTURE_H
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
#include "ValidateableValueField.h"
|
||||
|
||||
namespace NPC_core {
|
||||
namespace Model {
|
||||
ValidateableValueField::ValidateableValueField() : ValueField() {
|
||||
}
|
||||
|
||||
ValidateableValueField::~ValidateableValueField() {
|
||||
}
|
||||
|
||||
Validator& ValidateableValueField::getValidator() {
|
||||
return this->validator;
|
||||
}
|
||||
|
||||
bool ValidateableValueField::validate() {
|
||||
// return this->validator.validate();
|
||||
}
|
||||
|
||||
void ValidateableValueField::setValidator(Validator& value) {
|
||||
this->validator = value;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
#ifndef VALIDATEABLEVALUEFIELD_H
|
||||
#define VALIDATEABLEVALUEFIELD_H
|
||||
#include "ValueField.h"
|
||||
#include "IValidateableValueField.h"
|
||||
#include "../Validator.h"
|
||||
|
||||
namespace NPC_core {
|
||||
namespace Model {
|
||||
class ValidateableValueField : public IValidateableValueField, public ValueField {
|
||||
public:
|
||||
ValidateableValueField();
|
||||
virtual ~ValidateableValueField();
|
||||
bool validate();
|
||||
Validator& getValidator();
|
||||
|
||||
void setValidator(Validator& value);
|
||||
private:
|
||||
Validator validator;
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,28 +0,0 @@
|
|||
#include "ValueField.h"
|
||||
|
||||
namespace NPC_core {
|
||||
namespace Model {
|
||||
|
||||
ValueField::ValueField() : Field() {
|
||||
}
|
||||
|
||||
ValueField::~ValueField() {}
|
||||
|
||||
std::string ValueField::getValue() const {
|
||||
return this->value;
|
||||
}
|
||||
|
||||
uint32_t ValueField::getBitsize() const {
|
||||
return this->bitsize;
|
||||
}
|
||||
|
||||
void ValueField::setValue(std::string &value) {
|
||||
this->value = value;
|
||||
}
|
||||
|
||||
void ValueField::setBitsize(uint32_t &value) {
|
||||
this->bitsize = value;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
#ifndef VALUEFIELD_H
|
||||
#define VALUEFIELD_H
|
||||
#include "IValueField.h"
|
||||
#include "Field.h"
|
||||
|
||||
namespace NPC_core {
|
||||
namespace Model {
|
||||
|
||||
class ValueField : public IValueField, public Field {
|
||||
public:
|
||||
ValueField();
|
||||
virtual ~ValueField();
|
||||
virtual std::string getValue() const;
|
||||
virtual uint32_t getBitsize() const;
|
||||
|
||||
void setValue(std::string &value);
|
||||
void setBitsize(uint32_t &size);
|
||||
|
||||
private:
|
||||
std::string value;
|
||||
uint32_t bitsize;
|
||||
};
|
||||
}}
|
||||
#endif
|
||||
|
|
@ -2,13 +2,13 @@
|
|||
set(HEADERS
|
||||
flowlayout.h
|
||||
StructureField.h
|
||||
EditorView.h
|
||||
StackContainer.h
|
||||
)
|
||||
|
||||
set(SOURCES
|
||||
flowlayout.cpp
|
||||
StructureField.cpp
|
||||
EditorView.cpp
|
||||
StackContainer.cpp
|
||||
)
|
||||
|
||||
add_library(editor ${HEADERS} ${SOURCES})
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
#include "EditorView.h"
|
||||
|
||||
using namespace NPC_editor;
|
||||
|
||||
EditorView::EditorView(QWidget *parent) : QWidget(parent)
|
||||
{
|
||||
this->flowLayout = std::make_shared<FlowLayout>();
|
||||
this->setLayout(this->flowLayout.get());
|
||||
}
|
||||
|
||||
void EditorView::addWidget(QWidget *widget)
|
||||
{
|
||||
this->flowLayout->addWidget(widget);
|
||||
}
|
||||
|
||||
void EditorView::remWidget(QWidget *widget)
|
||||
{
|
||||
this->flowLayout->removeWidget(widget);
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
#ifndef EDITORVIEW_H
|
||||
#define EDITORVIEW_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <memory>
|
||||
#include "flowlayout.h"
|
||||
|
||||
namespace NPC_editor {
|
||||
|
||||
class EditorView : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit EditorView(QWidget *parent = nullptr);
|
||||
virtual ~EditorView() {}
|
||||
|
||||
void addWidget(QWidget * widget);
|
||||
void remWidget(QWidget * widget);
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private:
|
||||
std::shared_ptr<FlowLayout> flowLayout;
|
||||
};
|
||||
}
|
||||
#endif // EDITORVIEW_H
|
|
@ -0,0 +1,6 @@
|
|||
#include "StackContainer.h"
|
||||
using namespace NPC::editor;
|
||||
StackContainer::StackContainer(QWidget *parent) : QWidget(parent)
|
||||
{
|
||||
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
#ifndef STACKCONTAINER_H
|
||||
#define STACKCONTAINER_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <memory>
|
||||
#include "../core/model/Model.h"
|
||||
|
||||
namespace NPC {
|
||||
namespace editor {
|
||||
|
||||
|
||||
class StackContainer : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit StackContainer(QWidget *parent = nullptr);
|
||||
void setModel(std::shared_ptr<NPC::core::Model::Model> model);
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
};
|
||||
|
||||
}}
|
||||
|
||||
#endif // STACKCONTAINER_H
|
|
@ -1,6 +1,7 @@
|
|||
#include "StructureField.h"
|
||||
|
||||
namespace NPC_editor {
|
||||
namespace NPC {
|
||||
namespace editor {
|
||||
|
||||
StructureField::StructureField(QWidget *parent) : QWidget(parent)
|
||||
{
|
||||
|
@ -14,7 +15,7 @@ StructureField::StructureField(QWidget *parent) : QWidget(parent)
|
|||
this->syntax = new QLabel(this);
|
||||
}
|
||||
|
||||
StructureField::StructureField(const std::shared_ptr<NPC_core::Model::Field> field, QWidget *parent) : QWidget(parent)
|
||||
StructureField::StructureField(const std::shared_ptr<NPC::core::Model::Field> field, QWidget *parent) : StructureField(parent)
|
||||
{
|
||||
this->field = field;
|
||||
}
|
||||
|
@ -56,4 +57,4 @@ void StructureField::initialRender()
|
|||
this->render();
|
||||
}
|
||||
|
||||
}
|
||||
}}
|
||||
|
|
|
@ -10,14 +10,15 @@
|
|||
#include "../core/model/Field.h"
|
||||
#include <memory>
|
||||
|
||||
namespace NPC_editor {
|
||||
namespace NPC{
|
||||
namespace editor {
|
||||
|
||||
class StructureField : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit StructureField(QWidget *parent = nullptr);
|
||||
explicit StructureField(const std::shared_ptr<NPC_core::Model::Field> field, QWidget *parent = nullptr);
|
||||
explicit StructureField(const std::shared_ptr<NPC::core::Model::Field> field, QWidget *parent = nullptr);
|
||||
|
||||
signals:
|
||||
|
||||
|
@ -30,7 +31,7 @@ public slots:
|
|||
void initialRender();
|
||||
|
||||
private:
|
||||
std::shared_ptr<NPC_core::Model::Field> field;
|
||||
std::shared_ptr<NPC::core::Model::Field> field;
|
||||
// layout
|
||||
QVBoxLayout* layout;
|
||||
QLabel* title;
|
||||
|
@ -41,5 +42,5 @@ private:
|
|||
QRegExpValidator* validator;
|
||||
QWidget* subContainer;
|
||||
};
|
||||
}
|
||||
}}
|
||||
#endif // STRUCTUREFIELD_H
|
||||
|
|
|
@ -10,7 +10,7 @@ class FlowLayout : public QLayout
|
|||
public:
|
||||
explicit FlowLayout(QWidget *parent, int margin = -1, int hSpacing = -1, int vSpacing = -1);
|
||||
explicit FlowLayout(int margin = -1, int hSpacing = -1, int vSpacing = -1);
|
||||
~FlowLayout() override;
|
||||
~FlowLayout();
|
||||
|
||||
void addItem(QLayoutItem *item) Q_DECL_OVERRIDE;
|
||||
int horizontalSpacing() const;
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
#include "mainwindow.h"
|
||||
#include <QPushButton>
|
||||
#include <iostream>
|
||||
#include "editor/EditorView.h"
|
||||
|
||||
void MainWindow::doSomething()
|
||||
{
|
||||
|
@ -13,8 +12,8 @@ void MainWindow::doSomething()
|
|||
MainWindow::MainWindow(QWidget *parent)
|
||||
: QMainWindow(parent)
|
||||
{
|
||||
editor = new NPC_editor::EditorView(this);
|
||||
this->setCentralWidget(editor);
|
||||
//editor = new GuidedEditorView(this);
|
||||
//this->setCentralWidget(editor);
|
||||
dockWidget = new QDockWidget(this);
|
||||
this->addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
|
||||
|
||||
|
|
|
@ -6,14 +6,14 @@
|
|||
#include <QList>
|
||||
#include <QGridLayout>
|
||||
#include <QDockWidget>
|
||||
#include "editor/EditorView.h"
|
||||
#include "editor/guidededitorview.h"
|
||||
|
||||
|
||||
class MainWindow : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
private:
|
||||
NPC_editor::EditorView* editor;
|
||||
GuidedEditorView* editor;
|
||||
QDockWidget* dockWidget;
|
||||
public slots:
|
||||
void doSomething();
|
||||
|
|
|
@ -6,10 +6,8 @@ INCLUDE_DIRECTORIES(/usr/include/gtest)
|
|||
|
||||
set(SOURCES
|
||||
core/test_tree.cpp
|
||||
core/test_rab.cpp
|
||||
core/test_model.cpp
|
||||
)
|
||||
|
||||
add_executable(runUnitTests ${SOURCES})
|
||||
target_link_libraries(runUnitTests gtest gtest_main core)
|
||||
target_link_libraries(runUnitTests gtest gtest_main)
|
||||
add_test(runUnitTests runUnitTests)
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
#include <iostream>
|
||||
#include <string>
|
||||
#include "gtest/gtest.h"
|
||||
#include "../src/core/model/Model.h"
|
||||
#include "../src/core/model/Field.h"
|
||||
#include "../src/core/model/Structure.h"
|
||||
|
||||
class ModelTest : public ::testing::Test {
|
||||
protected:
|
||||
virtual void SetUp(){
|
||||
baseStructure.setName("BaseStructure");
|
||||
secondLvlStructure.setName("Second Level");
|
||||
|
||||
}
|
||||
|
||||
virtual void TearDown(){
|
||||
}
|
||||
|
||||
NPC_core::Model::Structure baseStructure;
|
||||
NPC_core::Model::Structure secondLvlStructure;
|
||||
NPC_core::Model::Model m;
|
||||
};
|
||||
|
||||
TEST_F(ModelTest, IsEmptyInitially) {
|
||||
EXPECT_EQ(0, m.getStructures().size());
|
||||
|
||||
}
|
|
@ -1,115 +0,0 @@
|
|||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include "gtest/gtest.h"
|
||||
#include "../src/core/RandomAccessBinary.h"
|
||||
using namespace NPC_core;
|
||||
|
||||
class RABTest : public ::testing::Test {
|
||||
protected:
|
||||
virtual void SetUp(){
|
||||
uint64_t bigdata = 0x0CAFEBABE;
|
||||
test2.set_uint64(0, bigdata);
|
||||
test4.setEndianness(RandomAccessBinary::Endianness::LITTLE);
|
||||
}
|
||||
|
||||
virtual void TearDown(){
|
||||
test.clear();
|
||||
test2.clear();
|
||||
test3.clear();
|
||||
test4.clear();
|
||||
}
|
||||
|
||||
RandomAccessBinary test;
|
||||
RandomAccessBinary test2;
|
||||
RandomAccessBinary test3;
|
||||
RandomAccessBinary test4;
|
||||
};
|
||||
|
||||
TEST_F(RABTest, IsEmptyInitially) {
|
||||
EXPECT_EQ(0, test.size());
|
||||
EXPECT_EQ("", test.get_hex_string());
|
||||
}
|
||||
|
||||
TEST_F(RABTest, SomeData) {
|
||||
EXPECT_EQ(8, test2.size());
|
||||
EXPECT_EQ("00000000cafebabe", test2.get_hex_string());
|
||||
EXPECT_EQ("cafebabe", test2.get_hex_string(4,4));
|
||||
}
|
||||
|
||||
TEST_F(RABTest, Double) {
|
||||
//double a = 3.1415;
|
||||
double a = 2.7182818284;
|
||||
test3.set_double(0, a);
|
||||
EXPECT_EQ("4005bf0a8b12500b", test3.get_hex_string());
|
||||
EXPECT_DOUBLE_EQ(2.7182818284, test3.get_double(0));
|
||||
// LITTLE ENDIAN
|
||||
test4.set_double(0, a);
|
||||
EXPECT_EQ("0b50128b0abf0540", test4.get_hex_string());
|
||||
EXPECT_DOUBLE_EQ(2.7182818284, test4.get_double(0));
|
||||
}
|
||||
|
||||
TEST_F(RABTest, Float) {
|
||||
float a = 2.71828f;
|
||||
test3.set_float(0, a);
|
||||
EXPECT_EQ("402df84d", test3.get_hex_string());
|
||||
EXPECT_FLOAT_EQ(2.71828f, test3.get_float(0));
|
||||
// LITTLE ENDIAN
|
||||
test4.set_float(0, a);
|
||||
EXPECT_EQ("4df82d40", test4.get_hex_string());
|
||||
EXPECT_FLOAT_EQ(2.71828f, test4.get_float(0));
|
||||
}
|
||||
|
||||
TEST_F(RABTest, VariousInteger) {
|
||||
uint8_t byte = 42;
|
||||
uint16_t a_short = 31337;
|
||||
uint32_t a_int = 0xdeadbeef;
|
||||
uint64_t a_long = 0xcafebabedeadbeef;
|
||||
|
||||
test3.setByte(0, byte);
|
||||
test3.set_uint16(1, a_short);
|
||||
test3.set_uint32(3, a_int);
|
||||
test3.set_uint64(7, a_long);
|
||||
|
||||
test4.setByte(0, byte);
|
||||
test4.set_uint16(1, a_short);
|
||||
test4.set_uint32(3, a_int);
|
||||
test4.set_uint64(7, a_long);
|
||||
std::cout << "BIG ENDIAN: " << test3.get_hex_string() << std::endl;
|
||||
std::cout << "LITTLE ENDIAN: "<< test4.get_hex_string() << std::endl;
|
||||
EXPECT_EQ("2a7a69deadbeefcafebabedeadbeef", test3.get_hex_string());
|
||||
EXPECT_EQ("2a697aefbeaddeefbeaddebebafeca", test4.get_hex_string());
|
||||
}
|
||||
|
||||
TEST_F(RABTest, Strings) {
|
||||
std::string a = "Dies ist ein Test.";
|
||||
test3.setBytes(0, std::vector<uint8_t>(a.begin(), a.end()));
|
||||
EXPECT_EQ("Dies ist ein Test.", test3.get_string(0, test3.size()));
|
||||
EXPECT_EQ("44696573206973742065696e20546573742e", test3.get_hex_string());
|
||||
}
|
||||
|
||||
TEST_F(RABTest, Bits) {
|
||||
bool bit = true;
|
||||
test3.setBit(4, bit);
|
||||
EXPECT_EQ(0x08, test3.getByte(0));
|
||||
uint8_t bits = 0b101;
|
||||
test3.setBits(3, 3, bits);
|
||||
EXPECT_EQ(0x14, test3.getByte(0));
|
||||
}
|
||||
|
||||
TEST_F(RABTest, BitVectors) {
|
||||
test3.set_uint64(0, 0xdeadbeefcafebabe);
|
||||
auto vec = test3.getBits(18, 20);
|
||||
std::stringstream stream;
|
||||
for( auto it = vec.begin(); it != vec.end(); ++it)
|
||||
stream << (*it);
|
||||
EXPECT_EQ("11111011101111110010", stream.str());
|
||||
|
||||
test4.set_uint64(0, 0xdeadbeefcafebabe);
|
||||
auto vec2 = test4.getBits(18, 20);
|
||||
std::stringstream stream2;
|
||||
for( auto it = vec2.begin(); it != vec2.end(); ++it)
|
||||
stream2 << (*it);
|
||||
EXPECT_EQ("11111011001010111011", stream2.str());
|
||||
}
|
||||
|
Reference in New Issue