Adding bytes as a type
This commit is contained in:
parent
6c41c83f4f
commit
86cd7027f3
7 changed files with 57 additions and 4 deletions
|
|
@ -5,6 +5,7 @@ from services.primitives.integer_type import Integer
|
|||
from services.primitives.string_type import String
|
||||
from services.primitives.boolean_type import Boolean
|
||||
from services.primitives.actioncode_type import ActionCode
|
||||
from services.primitives.bytes_type import Bytes
|
||||
from api.cd import CDAPI
|
||||
from typing import Optional
|
||||
|
||||
|
|
@ -147,6 +148,13 @@ class OD:
|
|||
actioncode_t.create(value)
|
||||
return self.create_model_ref(name, "ActionCode", actioncode_node)
|
||||
|
||||
def create_bytes_value(self, name: str, value: str):
|
||||
from services.primitives.bytes_type import Bytes
|
||||
bytes_node = self.bottom.create_node()
|
||||
bytes_t = Bytes(bytes_node, self.bottom.state)
|
||||
bytes_t.create(value)
|
||||
return self.create_model_ref(name, "Bytes", bytes_node)
|
||||
|
||||
# Identical to the same SCD method:
|
||||
def create_model_ref(self, name: str, type_name: str, model: UUID):
|
||||
# create element + morphism links
|
||||
|
|
@ -389,6 +397,8 @@ def read_primitive_value(bottom, modelref: UUID, mm: UUID):
|
|||
return Boolean(referred_model, bottom.state).read(), typ_name
|
||||
elif typ_name == "ActionCode":
|
||||
return ActionCode(referred_model, bottom.state).read(), typ_name
|
||||
elif typ_name == "Bytes":
|
||||
return Bytes(referred_model, bottom.state).read(), typ_name
|
||||
else:
|
||||
raise Exception("Unimplemented type:", typ_name)
|
||||
|
||||
|
|
|
|||
24
services/primitives/bytes_type.py
Normal file
24
services/primitives/bytes_type.py
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
from uuid import UUID
|
||||
from state.base import State
|
||||
from services.bottom.V0 import Bottom
|
||||
|
||||
|
||||
class Bytes:
|
||||
def __init__(self, model: UUID, state: State):
|
||||
self.model = model
|
||||
self.bottom = Bottom(state)
|
||||
type_model_id_node, = self.bottom.read_outgoing_elements(state.read_root(), "Bytes")
|
||||
self.type_model = UUID(self.bottom.read_value(type_model_id_node))
|
||||
|
||||
def create(self, value: bool):
|
||||
if "bytes" in self.bottom.read_keys(self.model):
|
||||
instance, = self.bottom.read_outgoing_elements(self.model, "bytes")
|
||||
self.bottom.delete_element(instance)
|
||||
_instance = self.bottom.create_node(value)
|
||||
self.bottom.create_edge(self.model, _instance, "bytes")
|
||||
_type, = self.bottom.read_outgoing_elements(self.type_model, "Bytes")
|
||||
self.bottom.create_edge(_instance, _type, "Morphism")
|
||||
|
||||
def read(self):
|
||||
instance, = self.bottom.read_outgoing_elements(self.model, "bytes")
|
||||
return self.bottom.read_value(instance)
|
||||
Loading…
Add table
Add a link
Reference in a new issue