blob: 7bbae38b3ed5b70e3885ea9f494da22857811b39 [file] [log] [blame]
import os
import yaml
from .namedelement import NamedElement
from .property import Property
from .method import Method
from .signal import Signal
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', []) ]
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)