| 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) |