/* * 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