Skip to content

Commit

Permalink
DBus Qt refactoring (part 1)
Browse files Browse the repository at this point in the history
  • Loading branch information
rcaelers committed Feb 17, 2025
1 parent da173b7 commit a6f1a5e
Show file tree
Hide file tree
Showing 12 changed files with 579 additions and 672 deletions.
44 changes: 37 additions & 7 deletions libs/dbus/bin/dbusgen.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,10 @@ def symbol_int(self):
def sig(self):
return self.type_sig

def value_to_internal(s):
def value_to_internal(self, s):
return s

def value_from_internal(s):
def value_from_internal(self, s):
return s

class QStringTypeNode(TypeNode):
Expand All @@ -93,12 +93,40 @@ def __init__(self):
self.type_sig = 's'
self.top_node = None

def to_internal(s):
def value_to_internal(self, s):
return 'QString::fromStdString(' + s + ')'

def from_internal(s):
def value_from_internal(self, s):
return s + '.toStdString()'

class QUInt64TypeNode(TypeNode):
def __init__(self):
TypeNode.__init__(self)
self.csymbol = "uint64_t"
self.csymbol_internal = "unsigned long long"
self.type_sig = 't'
self.top_node = None

def value_to_internal(self, s):
return 'static_cast<unsigned long long>(' + s + ')'

def value_from_internal(self, s):
return 'static_cast<uint64_t>(' + s + ')'

class QInt64TypeNode(TypeNode):
def __init__(self):
TypeNode.__init__(self)
self.csymbol = "int64_t"
self.csymbol_internal = "long long"
self.type_sig = 'x'
self.top_node = None

def value_to_internal(self, s):
return 'static_cast<long long>(' + s + ')'

def value_from_internal(self, s):
return 'static_cast<int64_t>(' + s + ')'

class UserTypeNode(TypeNode):
def __init__(self, top_node):
TypeNode.__init__(self)
Expand Down Expand Up @@ -193,15 +221,17 @@ def add_default_types(self):
self.types['uint16']= TypeNode('uint16_t','q')
self.types['int32']= TypeNode('int32_t','i')
self.types['uint32']= TypeNode('uint32_t','u')
self.types['int64']= TypeNode('int64_t','x')
self.types['uint64']= TypeNode('uint64_t','t')
self.types['bool']= TypeNode('bool','b')
self.types['double']= TypeNode('double','d')

if self.backend == 'qt':
self.types['string']= QStringTypeNode()
self.types['int64']= QInt64TypeNode()
self.types['uint64']= QUInt64TypeNode()
else:
self.types['string']= TypeNode('std::string','s')
self.types['int64']= TypeNode('int64_t','x')
self.types['uint64']= TypeNode('uint64_t','t')

def get_type(self, typename):
if typename in self.types:
Expand Down Expand Up @@ -565,7 +595,7 @@ def handle_namespace(self, node):
base = os.path.splitext(os.path.basename(args[2]))[0]

loader = jinja2.FileSystemLoader(directory, followlinks=True)
environment = jinja2.Environment(loader=loader, trim_blocks=True)
environment = jinja2.Environment(loader=loader, trim_blocks=True, lstrip_blocks=True)
template = environment.get_template(filename)

binding = TopNode(args[0], base, backend)
Expand Down
Loading

0 comments on commit a6f1a5e

Please sign in to comment.