fsmc-template-2.0.0的 fsmheader.mako文件内容不知道做什么用:
# coding: utf-8
<%!
from textwrap import wrap
%>\
#include <QVariant>
#include <QQueue>
#include <QPair>
class ${machine.name} {
public:
enum State {
% for s in machine.states[:-1]:
${capitalCase(s.name)},
% endfor
${capitalCase(machine.states[-1].name)}
};
enum Event {
% for e in machine.events[:-1]:
% for l in wrap(e.comment, 80):
// ${l}
% endfor
${capitalCase(e.name)},
% endfor
% for l in wrap(machine.events[-1].comment, 80):
// ${l}
% endfor
${capitalCase(machine.events[-1].name)}
};
class Delegate {
public:
% for i in machine.inputs:
%if i.comment:
%for l in wrap(i.comment, 80):
// ${l}
%endfor
%endif
virtual bool ${i.name}(const QVariantMap& params) = 0;
% endfor
% for o in machine.outputs:
%if o.comment:
% for l in wrap(o.comment, 80):
// ${l}
% endfor
% endif
virtual void ${o.name}(const QVariantMap& params) = 0;
% endfor
};
State currentState();
Delegate* delegate;
QQueue<QPair<Event, QVariantMap> > eventQueue;
${machine.name}(Delegate * delegate);
void processEvent(Event event, const QVariantMap& params);
static QString stateName(State s);
State currentState() const;
private:
void processEventInternal(Event event, const QVariantMap& params);
State _currentState;
};
难道也是类似 protobuf 吗?