blob: b9def8d5b9f260902afccb80671821ab5110a056 [file] [log] [blame]
import os
import yaml
from .namedelement import NamedElement
from .property import Property
from .method import Method
from .signal import Signal
from .enum import Enum
from .renderer import Renderer
class Interface(NamedElement, Renderer):
@staticmethod
def load(name, rootdir='.'):
filename = os.path.join(rootdir,
name.replace('.', '/') + ".interface.yaml")
with open(filename) as f:
data = f.read()
y = yaml.safe_load(data)
y['name'] = name
return Interface(**y)
def __init__(self, **kwargs):
self.properties = \
[Property(**p) for p in kwargs.pop('properties', [])]
self.methods = \
[Method(**m) for m in kwargs.pop('methods', [])]
self.signals = \
[Signal(**s) for s in kwargs.pop('signals', [])]
self.enums = \
[Enum(**e) for e in kwargs.pop('enumerations', [])]
super(Interface, self).__init__(**kwargs)
def markdown(self, loader):
return self.render(loader, "interface.mako.md", interface=self)
def server_header(self, loader):
return self.render(loader, "interface.mako.server.hpp", interface=self)
def server_cpp(self, loader):
return self.render(loader, "interface.mako.server.cpp", interface=self)