blob: c864fe4230cd3c60790d1e6b067ac4846eb6eae2 [file] [log] [blame]
reed@android.com8a1c16f2008-12-17 15:59:43 +00001#ifndef SkScriptRuntime_DEFINED
2#define SkScriptRuntime_DEFINED
3
4#include "SkOperand2.h"
5#include "SkTDArray_Experimental.h"
6#include "SkTDStack.h"
7
8class SkScriptCallBack;
9
10typedef SkLongArray(SkString*) SkTDStringArray;
11typedef SkLongArray(SkScriptCallBack*) SkTDScriptCallBackArray;
12
13class SkScriptRuntime {
14public:
15 enum SkError {
16 kNoError,
17 kArrayIndexOutOfBounds,
18 kCouldNotFindReferencedID,
19 kFunctionCallFailed,
20 kMemberOpFailed,
21 kPropertyOpFailed
22 };
23
24 SkScriptRuntime(SkTDScriptCallBackArray& callBackArray) : fCallBackArray(callBackArray)
25 { }
26 ~SkScriptRuntime();
27 bool executeTokens(unsigned char* opCode);
28 bool getResult(SkOperand2* result);
29 void untrack(SkOpArray* array);
30 void untrack(SkString* string);
31private:
32 void track(SkOpArray* array);
33 void track(SkString* string);
34 SkTDScriptCallBackArray& fCallBackArray;
35 SkError fError;
36 SkTDStack<SkOperand2> fRunStack;
37 SkLongArray(SkOpArray*) fTrackArray;
38 SkTDStringArray fTrackString;
39 // illegal
40 SkScriptRuntime& operator=(const SkScriptRuntime&);
41};
42
43#endif // SkScriptRuntime_DEFINED