mirror of https://github.com/axmolengine/axmol.git
48 lines
1.2 KiB
C++
48 lines
1.2 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
|