• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef SkScriptRuntime_DEFINED
2 #define SkScriptRuntime_DEFINED
3 
4 #include "SkOperand2.h"
5 #include "SkTDArray_Experimental.h"
6 #include "SkTDStack.h"
7 
8 class SkScriptCallBack;
9 
10 typedef SkLongArray(SkString*) SkTDStringArray;
11 typedef SkLongArray(SkScriptCallBack*) SkTDScriptCallBackArray;
12 
13 class SkScriptRuntime {
14 public:
15 	enum SkError {
16 		kNoError,
17 		kArrayIndexOutOfBounds,
18 		kCouldNotFindReferencedID,
19 		kFunctionCallFailed,
20 		kMemberOpFailed,
21 		kPropertyOpFailed
22 	};
23 
SkScriptRuntime(SkTDScriptCallBackArray & callBackArray)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);
31 private:
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