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 SkOperand2_DEFINED
90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkOperand2_DEFINED
100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkScalar.h"
120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkOpArray;
140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkString;
150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectunion SkOperand2 {
170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	enum OpType {
180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project		kNoType,
190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project		kS32 = 1,
200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project		kScalar = 2,
210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project		kString = 4,
220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project		kArray = 8,
230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project		kObject = 16
240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	};
250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	SkOpArray* fArray;
260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	void* fObject;
270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	size_t fReference;
280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	int32_t fS32;
290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	SkScalar fScalar;
300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	SkString* fString;
310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectstruct SkScriptValue2 {
340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	enum IsConstant {
350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project		kConstant,
360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project		kVariable
370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	};
380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	enum IsWritten {
390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project		kUnwritten,
400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project		kWritten
410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	};
420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	SkOperand2 fOperand;
430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	SkOperand2::OpType fType : 8;
440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	IsConstant fIsConstant : 8;
450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	IsWritten fIsWritten : 8;
460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	SkOpArray* getArray() { SkASSERT(fType == SkOperand2::kArray); return fOperand.fArray; }
470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	void* getObject() { SkASSERT(fType == SkOperand2::kObject); return fOperand.fObject; }
480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	int32_t getS32() { SkASSERT(fType == SkOperand2::kS32); return fOperand.fS32; }
490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	SkScalar getScalar() { SkASSERT(fType == SkOperand2::kScalar); return fOperand.fScalar; }
500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project	SkString* getString() { SkASSERT(fType == SkOperand2::kString); return fOperand.fString; }
510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        bool isConstant() const { return fIsConstant == kConstant; }
520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif // SkOperand2_DEFINED
55