| |
| /* |
| * Copyright 2011 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| #ifndef SkScriptRuntime_DEFINED |
| #define SkScriptRuntime_DEFINED |
| |
| #include "SkOperand2.h" |
| #include "SkTDArray_Experimental.h" |
| #include "SkTDStack.h" |
| |
| class SkScriptCallBack; |
| |
| typedef SkLongArray(SkString*) SkTDStringArray; |
| typedef SkLongArray(SkScriptCallBack*) SkTDScriptCallBackArray; |
| |
| class SkScriptRuntime { |
| public: |
| enum SkError { |
| kNoError, |
| kArrayIndexOutOfBounds, |
| kCouldNotFindReferencedID, |
| kFunctionCallFailed, |
| kMemberOpFailed, |
| kPropertyOpFailed |
| }; |
| |
| SkScriptRuntime(SkTDScriptCallBackArray& callBackArray) : fCallBackArray(callBackArray) |
| { } |
| ~SkScriptRuntime(); |
| bool executeTokens(unsigned char* opCode); |
| bool getResult(SkOperand2* result); |
| void untrack(SkOpArray* array); |
| void untrack(SkString* string); |
| private: |
| void track(SkOpArray* array); |
| void track(SkString* string); |
| SkTDScriptCallBackArray& fCallBackArray; |
| SkError fError; |
| SkTDStack<SkOperand2> fRunStack; |
| SkLongArray(SkOpArray*) fTrackArray; |
| SkTDStringArray fTrackString; |
| // illegal |
| SkScriptRuntime& operator=(const SkScriptRuntime&); |
| }; |
| |
| #endif // SkScriptRuntime_DEFINED |