feat: better code structure
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
import logging
|
||||
|
||||
__PATH__ = "."
|
||||
|
||||
|
||||
def signal(obj, label, type):
|
||||
return (obj, label, type)
|
||||
|
||||
|
||||
def edge(src, trg, thread):
|
||||
return (src, trg, thread)
|
||||
|
||||
|
||||
def format_name(name):
|
||||
return name.replace(".", "_")
|
||||
|
||||
|
||||
def type_bytes_count(mtype):
|
||||
if mtype.startswith("uint"):
|
||||
return int(mtype[4:]) // 8
|
||||
if mtype.startswith("int"):
|
||||
return int(mtype[3:]) // 8
|
||||
if mtype.startswith("float"):
|
||||
return int(mtype[5:]) // 8
|
||||
if mtype == "bool":
|
||||
return 1
|
||||
logging.debug(f"Type `{mtype}` unknow, size 1 byte")
|
||||
return 1
|
||||
|
||||
|
||||
def signal_byte_size(sig):
|
||||
noe = 1 if "NumberOfElements" not in sig else int(sig["NumberOfElements"])
|
||||
nod = 1 if "NumberOfDimensions" not in sig else int(sig["NumberOfDimensions"])
|
||||
nod = nod if nod > 0 else 1
|
||||
noe = noe if noe > 0 else 1
|
||||
bytes = type_bytes_count(sig["Type"])
|
||||
tot = noe * nod
|
||||
|
||||
if "Ranges" in sig:
|
||||
tot = 0
|
||||
for i0, ie in sig["Ranges"]:
|
||||
tot += int(ie) - int(i0) + 1
|
||||
|
||||
return tot * bytes
|
||||
|
||||
|
||||
def signal_type(sig):
|
||||
type_name = sig["Type"]
|
||||
noe = int(sig["NumberOfElements"]) if "NumberOfElements" in sig else 1
|
||||
nod = int(sig["NumberOfDimensions"]) if "NumberOfDimensions" in sig else 1
|
||||
nod = nod if nod > 0 else 1
|
||||
dim = noe * nod
|
||||
range = sig["Ranges"] if "Ranges" in sig else []
|
||||
return (type_name, dim, range)
|
||||
|
||||
|
||||
def type_to_string(mtype):
|
||||
range = ""
|
||||
if mtype[2]:
|
||||
range = (
|
||||
"("
|
||||
+ ", ".join(
|
||||
[
|
||||
str(i0) if i0 == i1 else (str(i0) + ":" + str(int(i1) + 1))
|
||||
for i0, i1 in mtype[2]
|
||||
]
|
||||
)
|
||||
+ ")"
|
||||
)
|
||||
if mtype[1] != 1:
|
||||
return f"{mtype[0]}[{mtype[1]}]{range}"
|
||||
return mtype[0] + range
|
||||
|
||||
|
||||
def signal_alias(name, signal):
|
||||
return name if "Alias" not in signal else signal["Alias"]
|
||||
|
||||
|
||||
def path():
|
||||
global __PATH__
|
||||
return __PATH__
|
||||
|
||||
|
||||
def set_path(path):
|
||||
global __PATH__
|
||||
__PATH__ = path
|
||||
Reference in New Issue
Block a user