]> git.mxchange.org Git - flightgear.git/blobdiff - src/Server/message.hxx
Add David Culp's AI model manager code which is derived from David Luff's AI/ATC...
[flightgear.git] / src / Server / message.hxx
index 35c7e51112ec9daedd4ab929444dae95793cbdae..30daf9f81f86443641dc730be58f3073d5b9091e 100644 (file)
 \r
 #include STL_STRING\r
 #include <stdexcept>\r
+#include <map>\r
 \r
 SG_USING_STD(string);\r
 SG_USING_STD(invalid_argument);\r
+SG_USING_STD(map);\r
 \r
 #include "messagebuf.hxx"\r
 \r
@@ -62,22 +64,35 @@ typedef struct
 \r
 #define FGMPSMsgElementArrayEnd {fgmps_null, 0}\r
 \r
+class FGMPSMessage;\r
+\r
+typedef FGMPSMessage* FGMPSMessagePtr;\r
+typedef FGMPSMessagePtr (*FGMPSMsgInstanceFunc)(void);\r
+\r
+typedef map<unsigned int, FGMPSMsgInstanceFunc> FGMPSInstanceFuncMap;\r
+\r
 class FGMPSMessage\r
 {\r
 private:\r
+       static FGMPSInstanceFuncMap     funcmap;\r
        FGMPSMsgElementEntry            elements[1];\r
-       static unsigned int             msgid;\r
 protected:\r
-       FGMPSMessageBuf                 msg;\r
+       FGMPSMessageBuf         buf;\r
+       unsigned int            msgid;\r
 public:\r
+       static int registermsg(int msgid, FGMPSMsgInstanceFunc func)\r
+       {\r
+               funcmap[msgid] = func;\r
+       }\r
+\r
        FGMPSMessage();\r
        ~FGMPSMessage() {}\r
 \r
-       virtual string                  encodemsg() {}\r
-       virtual FGMPSMessage*           decodemsg(string msg) {}\r
-       virtual FGMPSMsgElementEntry*   getelements() { return elements; }\r
-       virtual unsigned int            getmessageid() { return msgid; }\r
+       string                  encodemsg();\r
+       static FGMPSMessage*    decodemsg(string msg);\r
+       unsigned int            getmessageid() { return msgid; }\r
 \r
+       virtual FGMPSMsgElementEntry*   getelements() { return elements; }\r
 };\r
 \r
 #endif\r