11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2011 Google Inc. 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 80910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifndef SkScriptCallBack_DEFINED 90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkScriptCallBack_DEFINED 100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkOperand2.h" 120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkTDArray_Experimental.h" 130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkScriptCallBack { 150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic: 160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project enum Type { 170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kBox, 180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kFunction, 190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kMember, 200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kMemberFunction, 210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kProperty, 220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kUnbox 230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project }; 240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual bool getReference(const char* , size_t len, SkScriptValue2* result) { return false; } 260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual SkOperand2::OpType getReturnType(size_t ref, SkOperand2*) { 270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project return SkOperand2::kS32; } 280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual Type getType() const = 0; 290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkScriptCallBackConvert : public SkScriptCallBack { 320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic: 330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual bool convert(SkOperand2::OpType type, SkOperand2* operand) = 0; 340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkScriptCallBackFunction : public SkScriptCallBack { 370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic: 380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual void getParamTypes(SkIntArray(SkOperand2::OpType)* types) = 0; 390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual Type getType() const { return kFunction; } 400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual bool invoke(size_t ref, SkOpArray* params, SkOperand2* value) = 0; 410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkScriptCallBackMember: public SkScriptCallBack { 440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic: 450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project bool getMemberReference(const char* , size_t len, void* object, SkScriptValue2* ref); 460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual Type getType() const { return kMember; } 470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual bool invoke(size_t ref, void* object, SkOperand2* value) = 0; 480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkScriptCallBackMemberFunction : public SkScriptCallBack { 510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic: 520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project bool getMemberReference(const char* , size_t len, void* object, SkScriptValue2* ref); 530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual void getParamTypes(SkIntArray(SkOperand2::OpType)* types) = 0; 540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual Type getType() const { return kMemberFunction; } 550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual bool invoke(size_t ref, void* object, SkOpArray* params, SkOperand2* value) = 0; 560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkScriptCallBackProperty : public SkScriptCallBack { 590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic: 600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual bool getConstValue(const char* name, size_t len, SkOperand2* value) { return false; } 610910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual bool getResult(size_t ref, SkOperand2* answer) { return false; } 620910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual Type getType() const { return kProperty; } 630910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 640910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 650910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif // SkScriptCallBack_DEFINED 66