diff options
author | Rodrigo Arias Mallo <rodarima@gmail.com> | 2024-12-10 22:30:12 +0100 |
---|---|---|
committer | Rodrigo Arias Mallo <rodarima@gmail.com> | 2024-12-10 22:30:12 +0100 |
commit | 429d5f88b94ff28416cbfc6420b6389fa284df97 (patch) | |
tree | fb6fdaf7731de1ef396f98b748c56f3149801c84 /objects/objects_parser.hh |
Import RTFL 0.1.1v0.1.1
Diffstat (limited to 'objects/objects_parser.hh')
-rw-r--r-- | objects/objects_parser.hh | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/objects/objects_parser.hh b/objects/objects_parser.hh new file mode 100644 index 0000000..e4dd2b0 --- /dev/null +++ b/objects/objects_parser.hh @@ -0,0 +1,115 @@ +#ifndef __OBJECTS_OBJECTS_PARSER_HH__ +#define __OBJECTS_OBJECTS_PARSER_HH__ + +#include "common/parser.hh" +#include "lout/object.hh" + +namespace rtfl { + +namespace objects { + +class ObjectsSink; + +class ObjectsSource +{ +public: + virtual void setObjectsSink (ObjectsSink *sink) = 0; + virtual void addTimeout (double secs, int type) = 0; + virtual void removeTimeout (int type) = 0; +}; + + +class ObjectsSink +{ +public: + virtual void setObjectsSource (ObjectsSource *source) = 0; + virtual void timeout (int type) = 0; + virtual void finish () = 0; +}; + + +class ObjectsController: public lout::object::Object, public ObjectsSource, + public ObjectsSink +{ +public: + virtual void objMsg (tools::CommonLineInfo *info, const char *id, + const char *aspect, int prio, const char *message) = 0; + virtual void objMark (tools::CommonLineInfo *info, const char *id, + const char *aspect, int prio, const char *message) = 0; + virtual void objMsgStart (tools::CommonLineInfo *info, const char *id) = 0; + virtual void objMsgEnd (tools::CommonLineInfo *info, const char *id) = 0; + virtual void objEnter (tools::CommonLineInfo *info, const char *id, + const char *aspect, int prio, const char *funname, + const char *args) = 0; + virtual void objLeave (tools::CommonLineInfo *info, const char *id, + const char *vals) = 0; + virtual void objCreate (tools::CommonLineInfo *info, const char *id, + const char *klass) = 0; + virtual void objIdent (tools::CommonLineInfo *info, const char *id1, + const char *id2) = 0; + virtual void objNoIdent (tools::CommonLineInfo *info) = 0; + virtual void objAssoc (tools::CommonLineInfo *info, const char *parent, + const char *child) = 0; + virtual void objSet (tools::CommonLineInfo *info, const char *id, + const char *var, const char *val) = 0; + virtual void objClassColor (tools::CommonLineInfo *info, const char *klass, + const char *color) = 0; + virtual void objObjectColor (tools::CommonLineInfo *info, const char *id, + const char *color) = 0; + virtual void objDelete (tools::CommonLineInfo *info, const char *id) = 0; +}; + + +class ObjectsControllerBase: public ObjectsController +{ + ObjectsSource *predessor; + ObjectsSink *successor; + +protected: + virtual void ownTimeout (int type); + virtual void ownFinish (); + void addOwnTimeout (double secs, int type); + void removeOwnTimeout (int type); + +public: + ObjectsControllerBase(); + + void setObjectsSink (ObjectsSink *sink); + void addTimeout (double secs, int type); + void removeTimeout (int type); + void setObjectsSource (ObjectsSource *source); + void timeout (int type); + void finish (); +}; + + +class ObjectsParser: public tools::Parser, public ObjectsSource +{ +private: + ObjectsController *controller; + tools::LinesSource *source; + +protected: + void processCommand (tools::CommonLineInfo *info, char *cmd, char *args); + void processVCommand (tools::CommonLineInfo *info, const char *module, + int majorVersion, int minorVersion, const char *cmd, + char **args); + +public: + ObjectsParser (ObjectsController *controller); + ~ObjectsParser (); + + void setLinesSource (tools::LinesSource *source); + void timeout (int type); + void finish (); + + void setObjectsSink (ObjectsSink *sink); + void addTimeout (double secs, int type); + void removeTimeout (int type); +}; + +} // namespace objects + +} // namespace rtfl + +#endif // __OBJECTS_OBJVIEW_PARSER_HH__ |