summaryrefslogtreecommitdiff
path: root/objects/objects_buffer.hh
diff options
context:
space:
mode:
authorRodrigo Arias Mallo <rodarima@gmail.com>2024-12-10 22:30:12 +0100
committerRodrigo Arias Mallo <rodarima@gmail.com>2024-12-10 22:30:12 +0100
commit429d5f88b94ff28416cbfc6420b6389fa284df97 (patch)
treefb6fdaf7731de1ef396f98b748c56f3149801c84 /objects/objects_buffer.hh
Import RTFL 0.1.1v0.1.1
Diffstat (limited to 'objects/objects_buffer.hh')
-rw-r--r--objects/objects_buffer.hh88
1 files changed, 88 insertions, 0 deletions
diff --git a/objects/objects_buffer.hh b/objects/objects_buffer.hh
new file mode 100644
index 0000000..f00ef89
--- /dev/null
+++ b/objects/objects_buffer.hh
@@ -0,0 +1,88 @@
+#ifndef __OBJECTS_OBJECTS_BUFFER_HH__
+#define __OBJECTS_OBJECTS_BUFFER_HH__
+
+#include "objects_parser.hh"
+#include "common/tools.hh"
+
+namespace rtfl {
+
+namespace objects {
+
+class ObjectsBuffer: public ObjectsControllerBase
+{
+private:
+ enum CommandType {
+ MSG, MARK, MSG_START, MSG_END, ENTER, LEAVE, CREATE, IDENT, NOIDENT,
+ ASSOC, SET, CLASS_COLOR, OBJECT_COLOR, DELETE
+ };
+
+ class ObjectCommand: public lout::object::Object
+ {
+ friend class ObjectsBuffer;
+
+ private:
+ CommandType type;
+ tools::CommonLineInfo info;
+
+ int numArgs;
+ struct Arg {
+ char type;
+ union {
+ int d;
+ char *s;
+ };
+ } *args;
+
+ public:
+ ObjectCommand (CommandType type, tools::CommonLineInfo *info,
+ const char *fmt, ...);
+ ~ObjectCommand ();
+ };
+
+ ObjectsController *successor;
+ lout::container::typed::Vector<ObjectCommand> *commandsQueue;
+ bool queued;
+
+ void process (ObjectCommand *command);
+ void queue (ObjectCommand *command);
+ void pass (ObjectCommand *command);
+
+public:
+ ObjectsBuffer (ObjectsController *successor);
+ ~ObjectsBuffer ();
+
+ void objMsg (tools::CommonLineInfo *info, const char *id,
+ const char *aspect, int prio, const char *message);
+ void objMark (tools::CommonLineInfo *info, const char *id,
+ const char *aspect, int prio, const char *message);
+ void objMsgStart (tools::CommonLineInfo *info, const char *id);
+ void objMsgEnd (tools::CommonLineInfo *info, const char *id);
+ void objEnter (tools::CommonLineInfo *info, const char *id,
+ const char *aspect, int prio, const char *funname,
+ const char *args);
+ void objLeave (tools::CommonLineInfo *info, const char *id,
+ const char *vals);
+ void objCreate (tools::CommonLineInfo *info, const char *id,
+ const char *klass);
+ void objIdent (tools::CommonLineInfo *info, const char *id1,
+ const char *id2);
+ void objNoIdent (tools::CommonLineInfo *info);
+ void objAssoc (tools::CommonLineInfo *info, const char *parent,
+ const char *child);
+ void objSet (tools::CommonLineInfo *info, const char *id, const char *var,
+ const char *val);
+ void objClassColor (tools::CommonLineInfo *info, const char *klass,
+ const char *color);
+ void objObjectColor (tools::CommonLineInfo *info, const char *id,
+ const char *color);
+ void objDelete (tools::CommonLineInfo *info, const char *id);
+
+ void queue ();
+ void pass ();
+};
+
+} // namespace objects
+
+} // namespace rtfl
+
+#endif // __OBJECTS_OBJECTS_BUFFER_HH__