aboutsummaryrefslogtreecommitdiff
path: root/SrcShared/EmAction.h
diff options
context:
space:
mode:
Diffstat (limited to 'SrcShared/EmAction.h')
-rw-r--r--SrcShared/EmAction.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/SrcShared/EmAction.h b/SrcShared/EmAction.h
new file mode 100644
index 0000000..eb2a996
--- /dev/null
+++ b/SrcShared/EmAction.h
@@ -0,0 +1,73 @@
+/* -*- mode: C++; tab-width: 4 -*- */
+/* ===================================================================== *\
+ Copyright (c) 1998-2001 Palm, Inc. or its subsidiaries.
+ All rights reserved.
+
+ This file is part of the Palm OS Emulator.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+\* ===================================================================== */
+
+#ifndef EmAction_h
+#define EmAction_h
+
+#include "omnithread.h" // omni_mutex
+
+#include <vector>
+
+class EmAction;
+typedef vector <EmAction*> EmActionList;
+
+class EmAction
+{
+ public:
+ EmAction (StrCode strCode) : fStrCode (strCode) {}
+ virtual ~EmAction (void) {}
+
+ virtual void Do (void) = 0;
+
+ StrCode GetDescription (void) const { return fStrCode; };
+
+ private:
+ StrCode fStrCode;
+};
+
+
+class EmActionComposite : public EmAction
+{
+ public:
+ EmActionComposite (void);
+ virtual ~EmActionComposite (void);
+
+ virtual void Do (void);
+
+ void AddAction (EmAction*);
+
+ private:
+ EmActionList fActions;
+};
+
+
+class EmActionHandler
+{
+ public:
+ EmActionHandler (void);
+ virtual ~EmActionHandler (void);
+
+ public:
+ void PostAction (EmAction*);
+ EmAction* GetNextAction (void);
+ void DoAll (void);
+
+ private:
+ void DeleteAll (void);
+
+ private:
+ omni_mutex fMutex;
+ EmActionList fActions;
+};
+
+#endif // EmAction