mirror of https://github.com/axmolengine/axmol.git
48 lines
1.1 KiB
C
48 lines
1.1 KiB
C
|
#ifndef SkOperand2_DEFINED
|
||
|
#define SkOperand2_DEFINED
|
||
|
|
||
|
#include "SkScalar.h"
|
||
|
|
||
|
class SkOpArray;
|
||
|
class SkString;
|
||
|
|
||
|
union SkOperand2 {
|
||
|
enum OpType {
|
||
|
kNoType,
|
||
|
kS32 = 1,
|
||
|
kScalar = 2,
|
||
|
kString = 4,
|
||
|
kArray = 8,
|
||
|
kObject = 16
|
||
|
};
|
||
|
SkOpArray* fArray;
|
||
|
void* fObject;
|
||
|
size_t fReference;
|
||
|
int32_t fS32;
|
||
|
SkScalar fScalar;
|
||
|
SkString* fString;
|
||
|
};
|
||
|
|
||
|
struct SkScriptValue2 {
|
||
|
enum IsConstant {
|
||
|
kConstant,
|
||
|
kVariable
|
||
|
};
|
||
|
enum IsWritten {
|
||
|
kUnwritten,
|
||
|
kWritten
|
||
|
};
|
||
|
SkOperand2 fOperand;
|
||
|
SkOperand2::OpType fType : 8;
|
||
|
IsConstant fIsConstant : 8;
|
||
|
IsWritten fIsWritten : 8;
|
||
|
SkOpArray* getArray() { SkASSERT(fType == SkOperand2::kArray); return fOperand.fArray; }
|
||
|
void* getObject() { SkASSERT(fType == SkOperand2::kObject); return fOperand.fObject; }
|
||
|
int32_t getS32() { SkASSERT(fType == SkOperand2::kS32); return fOperand.fS32; }
|
||
|
SkScalar getScalar() { SkASSERT(fType == SkOperand2::kScalar); return fOperand.fScalar; }
|
||
|
SkString* getString() { SkASSERT(fType == SkOperand2::kString); return fOperand.fString; }
|
||
|
bool isConstant() const { return fIsConstant == kConstant; }
|
||
|
};
|
||
|
|
||
|
#endif // SkOperand2_DEFINED
|