00001 #ifndef GME_INTERPRETER_H
00002 #define GME_INTERPRETER_H
00003
00004 #include "Builder.h"
00005
00006
00007 #define NEW_BON_INVOKE
00008
00009
00010 class GMEHandle
00011 {
00012 public:
00013 static HWND hwnd;
00014 static CBuilder *bldr;
00015 };
00016
00017 class CComponent
00018 {
00019 public:
00020 CComponent() : focusfolder(NULL) { ; }
00021 CBuilderFolder *focusfolder;
00022 CBuilderFolderList selectedfolders;
00023 void InvokeEx(CBuilder &builder,CBuilderObject *focus, CBuilderObjectList &selected, long param);
00024
00025 };
00026
00027
00028
00029 class CBuilderEvent : public CBuilderAtom
00030 {
00031 DECLARE_CUSTOMATOM (CBuilderEvent, CBuilderAtom)
00032 public:
00033 virtual void Initialize();
00034 virtual ~CBuilderEvent();
00035
00036 int GetDelay();
00037
00038 void Highlight(CString eval, CBuilder *bldr, HWND handle);
00039
00040 private:
00041 int delay;
00042 CString GetOriginalIcon();
00043 void SaveOriginalIcon();
00044 CString orgicon;
00045 };
00046
00047 typedef CTypedPtrList<CPtrList, CBuilderEvent*> CBuilderEventList;
00048
00049
00050
00051 class CSequence
00052 {
00053 public:
00054 CSequence(CBuilder &builder);
00055 virtual ~CSequence();
00056
00057 CBuilderEventList *GetSequence();
00058
00059
00060 private:
00061 CBuilderFolder *root;
00062 const CBuilderEventList *events;
00063
00064 bool GetEvents();
00065 int SingleSequence(const CBuilderEventList *inp, CBuilderEvent **startevent);
00066
00067 void TraverseSequence(CBuilderEvent *node, CBuilderEventList *seq);
00068
00069 };
00070
00071
00072
00073
00074
00075 class CBuilderTransition : public CBuilderConnection
00076 {
00077 DECLARE_CUSTOMCONNECTION (CBuilderTransition, CBuilderConnection)
00078 public:
00079 virtual void Initialize();
00080 virtual ~CBuilderTransition();
00081
00082 CString GetEvent();
00083 void Highlight(CString tval, CBuilder *bldr, HWND handle);
00084
00085 private:
00086 CString GetOriginalColor();
00087 void SaveOriginalColor();
00088 CString event;
00089 CString orgcol;
00090
00091 };
00092
00093
00094
00095 class CBuilderState : public CBuilderModel
00096 {
00097 DECLARE_CUSTOMMODEL (CBuilderState, CBuilderModel)
00098 public:
00099 virtual void Initialize();
00100 virtual ~CBuilderState();
00101
00102 CBuilderState * GetActiveSubstate();
00103 CBuilderState * TransitOnEvent(CBuilderEvent *evt);
00104
00105 CString GetOriginalColor();
00106 void SaveOriginalColor();
00107
00108 CString GetOriginalIcon();
00109 void SaveOriginalIcon();
00110 bool GetIsStartState();
00111 CBuilderTransition *lastincomingtransition;
00112
00113 private:
00114 CBuilderState *activesubstate;
00115 bool GetChildStartState(CBuilderState **start);
00116 bool GetChildFirstState(CBuilderAtom *start, CBuilderState **firststate);
00117 bool GetNextState(CBuilderEvent *event, CBuilderState **nextstate);
00118
00119
00120 CString orgcol;
00121 CString orgicon;
00122 bool isstart;
00123 };
00124
00125
00126
00127 class CState
00128 {
00129 public:
00130 CState(CBuilder &builder);
00131 virtual ~CState();
00132
00133 bool GetRootState(CBuilderState **rootstate);
00134
00135 private:
00136 CBuilderFolder *root;
00137 };
00138
00139
00140 #endif // whole file