Home | History | Annotate | Download | only in animator
      1 
      2 /*
      3  * Copyright 2011 Google Inc.
      4  *
      5  * Use of this source code is governed by a BSD-style license that can be
      6  * found in the LICENSE file.
      7  */
      8 #ifndef SkScriptRuntime_DEFINED
      9 #define SkScriptRuntime_DEFINED
     10 
     11 #include "SkOperand2.h"
     12 #include "SkTDArray_Experimental.h"
     13 #include "SkTDStack.h"
     14 
     15 class SkScriptCallBack;
     16 
     17 typedef SkLongArray(SkString*) SkTDStringArray;
     18 typedef SkLongArray(SkScriptCallBack*) SkTDScriptCallBackArray;
     19 
     20 class SkScriptRuntime {
     21 public:
     22     enum SkError {
     23         kNoError,
     24         kArrayIndexOutOfBounds,
     25         kCouldNotFindReferencedID,
     26         kFunctionCallFailed,
     27         kMemberOpFailed,
     28         kPropertyOpFailed
     29     };
     30 
     31     SkScriptRuntime(SkTDScriptCallBackArray& callBackArray) : fCallBackArray(callBackArray)
     32         {  }
     33     ~SkScriptRuntime();
     34     bool executeTokens(unsigned char* opCode);
     35     bool getResult(SkOperand2* result);
     36     void untrack(SkOpArray* array);
     37     void untrack(SkString* string);
     38 private:
     39     void track(SkOpArray* array);
     40     void track(SkString* string);
     41     SkTDScriptCallBackArray& fCallBackArray;
     42     SkError fError;
     43     SkTDStack<SkOperand2> fRunStack;
     44     SkLongArray(SkOpArray*) fTrackArray;
     45     SkTDStringArray fTrackString;
     46     // illegal
     47     SkScriptRuntime& operator=(const SkScriptRuntime&);
     48 };
     49 
     50 #endif // SkScriptRuntime_DEFINED
     51