diff options
author | rmistry@google.com <rmistry@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-08-23 18:14:13 +0000 |
---|---|---|
committer | rmistry@google.com <rmistry@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-08-23 18:14:13 +0000 |
commit | dfb3e3c0faadabc131ac1532e29ca71667328513 (patch) | |
tree | 5d8fc1ee30094e12e98611a5d13cf901076fbce5 /animator/SkScriptRuntime.cpp | |
parent | 935e9f4fafdfc64130e6be9ea2bb30e3bafd852a (diff) | |
download | src-dfb3e3c0faadabc131ac1532e29ca71667328513.tar.gz |
Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/)
This CL is part II of IV (I broke down the 1280 files into 4 CLs).
Review URL: https://codereview.appspot.com/6474054
git-svn-id: http://skia.googlecode.com/svn/trunk/src@5263 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'animator/SkScriptRuntime.cpp')
-rw-r--r-- | animator/SkScriptRuntime.cpp | 584 |
1 files changed, 292 insertions, 292 deletions
diff --git a/animator/SkScriptRuntime.cpp b/animator/SkScriptRuntime.cpp index 6a96633b..b211a71c 100644 --- a/animator/SkScriptRuntime.cpp +++ b/animator/SkScriptRuntime.cpp @@ -27,326 +27,326 @@ // replace script string with script tokens preceeded by special value // need second version of script plugins that return private index of found value? - // then would need in script index of plugin, private index + // then would need in script index of plugin, private index // encode brace stack push/pop as opcodes // should token script enocde type where possible? // current flow: - // strip whitespace - // if in array brace [ recurse, continue - // if token, handle function, or array, or property (continue) - // parse number, continue - // parse token, continue - // parse string literal, continue - // if dot operator, handle dot, continue - // if [ , handle array literal or accessor, continue - // if ), pop (if function, break) - // if ], pop ; if ',' break - // handle logical ops - // or, handle arithmetic ops - // loop + // strip whitespace + // if in array brace [ recurse, continue + // if token, handle function, or array, or property (continue) + // parse number, continue + // parse token, continue + // parse string literal, continue + // if dot operator, handle dot, continue + // if [ , handle array literal or accessor, continue + // if ), pop (if function, break) + // if ], pop ; if ',' break + // handle logical ops + // or, handle arithmetic ops + // loop // !!! things to do - // add separate processing loop to advance while suppressed - // or, include jump offset to skip suppressed code? + // add separate processing loop to advance while suppressed + // or, include jump offset to skip suppressed code? SkScriptRuntime::~SkScriptRuntime() { - for (SkString** stringPtr = fTrackString.begin(); stringPtr < fTrackString.end(); stringPtr++) - delete *stringPtr; - for (SkOpArray** arrayPtr = fTrackArray.begin(); arrayPtr < fTrackArray.end(); arrayPtr++) - delete *arrayPtr; + for (SkString** stringPtr = fTrackString.begin(); stringPtr < fTrackString.end(); stringPtr++) + delete *stringPtr; + for (SkOpArray** arrayPtr = fTrackArray.begin(); arrayPtr < fTrackArray.end(); arrayPtr++) + delete *arrayPtr; } bool SkScriptRuntime::executeTokens(unsigned char* opCode) { - SkOperand2 operand[2]; // 1=accumulator and 2=operand - SkScriptEngine2::TypeOp op; - size_t ref; - int index, size; - int registerLoad; - SkScriptCallBack* callBack SK_INIT_TO_AVOID_WARNING; - do { - switch ((op = (SkScriptEngine2::TypeOp) *opCode++)) { - case SkScriptEngine2::kArrayToken: // create an array - operand[0].fArray = new SkOpArray(SkOperand2::kNoType /*fReturnType*/); - break; - case SkScriptEngine2::kArrayIndex: // array accessor - index = operand[1].fS32; - if (index >= operand[0].fArray->count()) { - fError = kArrayIndexOutOfBounds; - return false; - } - operand[0] = operand[0].fArray->begin()[index]; - break; - case SkScriptEngine2::kArrayParam: // array initializer, or function param - *operand[0].fArray->append() = operand[1]; - break; - case SkScriptEngine2::kCallback: - memcpy(&index, opCode, sizeof(index)); - opCode += sizeof(index); - callBack = fCallBackArray[index]; - break; - case SkScriptEngine2::kFunctionCall: { - memcpy(&ref, opCode, sizeof(ref)); - opCode += sizeof(ref); - SkScriptCallBackFunction* callBackFunction = (SkScriptCallBackFunction*) callBack; - if (callBackFunction->invoke(ref, operand[0].fArray, /* params */ - &operand[0] /* result */) == false) { - fError = kFunctionCallFailed; - return false; - } - } break; - case SkScriptEngine2::kMemberOp: { - memcpy(&ref, opCode, sizeof(ref)); - opCode += sizeof(ref); - SkScriptCallBackMember* callBackMember = (SkScriptCallBackMember*) callBack; - if (callBackMember->invoke(ref, operand[0].fObject, &operand[0]) == false) { - fError = kMemberOpFailed; - return false; - } - } break; - case SkScriptEngine2::kPropertyOp: { - memcpy(&ref, opCode, sizeof(ref)); - opCode += sizeof(ref); - SkScriptCallBackProperty* callBackProperty = (SkScriptCallBackProperty*) callBack; - if (callBackProperty->getResult(ref, &operand[0])== false) { - fError = kPropertyOpFailed; - return false; - } - } break; - case SkScriptEngine2::kAccumulatorPop: - fRunStack.pop(&operand[0]); - break; - case SkScriptEngine2::kAccumulatorPush: - *fRunStack.push() = operand[0]; - break; - case SkScriptEngine2::kIntegerAccumulator: - case SkScriptEngine2::kIntegerOperand: - registerLoad = op - SkScriptEngine2::kIntegerAccumulator; - memcpy(&operand[registerLoad].fS32, opCode, sizeof(int32_t)); - opCode += sizeof(int32_t); - break; - case SkScriptEngine2::kScalarAccumulator: - case SkScriptEngine2::kScalarOperand: - registerLoad = op - SkScriptEngine2::kScalarAccumulator; - memcpy(&operand[registerLoad].fScalar, opCode, sizeof(SkScalar)); - opCode += sizeof(SkScalar); - break; - case SkScriptEngine2::kStringAccumulator: - case SkScriptEngine2::kStringOperand: { - SkString* strPtr = new SkString(); - track(strPtr); - registerLoad = op - SkScriptEngine2::kStringAccumulator; - memcpy(&size, opCode, sizeof(size)); - opCode += sizeof(size); - strPtr->set((char*) opCode, size); - opCode += size; - operand[registerLoad].fString = strPtr; - } break; - case SkScriptEngine2::kStringTrack: // call after kObjectToValue - track(operand[0].fString); - break; - case SkScriptEngine2::kBoxToken: { - SkOperand2::OpType type; - memcpy(&type, opCode, sizeof(type)); - opCode += sizeof(type); - SkScriptCallBackConvert* callBackBox = (SkScriptCallBackConvert*) callBack; - if (callBackBox->convert(type, &operand[0]) == false) - return false; - } break; - case SkScriptEngine2::kUnboxToken: - case SkScriptEngine2::kUnboxToken2: { - SkScriptCallBackConvert* callBackUnbox = (SkScriptCallBackConvert*) callBack; - if (callBackUnbox->convert(SkOperand2::kObject, &operand[0]) == false) - return false; - } break; - case SkScriptEngine2::kIfOp: - case SkScriptEngine2::kLogicalAndInt: - memcpy(&size, opCode, sizeof(size)); - opCode += sizeof(size); - if (operand[0].fS32 == 0) - opCode += size; // skip to else (or end of if predicate) - break; - case SkScriptEngine2::kElseOp: - memcpy(&size, opCode, sizeof(size)); - opCode += sizeof(size); - opCode += size; // if true: after predicate, always skip to end of else - break; - case SkScriptEngine2::kLogicalOrInt: - memcpy(&size, opCode, sizeof(size)); - opCode += sizeof(size); - if (operand[0].fS32 != 0) - opCode += size; // skip to kToBool opcode after || predicate - break; - // arithmetic conversion ops - case SkScriptEngine2::kFlipOpsOp: - SkTSwap(operand[0], operand[1]); - break; - case SkScriptEngine2::kIntToString: - case SkScriptEngine2::kIntToString2: - case SkScriptEngine2::kScalarToString: - case SkScriptEngine2::kScalarToString2:{ - SkString* strPtr = new SkString(); - track(strPtr); - if (op == SkScriptEngine2::kIntToString || op == SkScriptEngine2::kIntToString2) - strPtr->appendS32(operand[op - SkScriptEngine2::kIntToString].fS32); - else - strPtr->appendScalar(operand[op - SkScriptEngine2::kScalarToString].fScalar); - operand[0].fString = strPtr; - } break; - case SkScriptEngine2::kIntToScalar: - case SkScriptEngine2::kIntToScalar2: - operand[0].fScalar = SkScriptEngine2::IntToScalar(operand[op - SkScriptEngine2::kIntToScalar].fS32); - break; - case SkScriptEngine2::kStringToInt: - if (SkParse::FindS32(operand[0].fString->c_str(), &operand[0].fS32) == false) - return false; - break; - case SkScriptEngine2::kStringToScalar: - case SkScriptEngine2::kStringToScalar2: - if (SkParse::FindScalar(operand[0].fString->c_str(), - &operand[op - SkScriptEngine2::kStringToScalar].fScalar) == false) - return false; - break; - case SkScriptEngine2::kScalarToInt: - operand[0].fS32 = SkScalarFloor(operand[0].fScalar); - break; - // arithmetic ops - case SkScriptEngine2::kAddInt: - operand[0].fS32 += operand[1].fS32; - break; - case SkScriptEngine2::kAddScalar: - operand[0].fScalar += operand[1].fScalar; - break; - case SkScriptEngine2::kAddString: -// if (fTrackString.find(operand[1].fString) < 0) { -// operand[1].fString = SkNEW_ARGS(SkString, (*operand[1].fString)); -// track(operand[1].fString); -// } - operand[0].fString->append(*operand[1].fString); - break; - case SkScriptEngine2::kBitAndInt: - operand[0].fS32 &= operand[1].fS32; - break; - case SkScriptEngine2::kBitNotInt: - operand[0].fS32 = ~operand[0].fS32; - break; - case SkScriptEngine2::kBitOrInt: - operand[0].fS32 |= operand[1].fS32; - break; - case SkScriptEngine2::kDivideInt: - SkASSERT(operand[1].fS32 != 0); - if (operand[1].fS32 == 0) - operand[0].fS32 = operand[0].fS32 == 0 ? SK_NaN32 : - operand[0].fS32 > 0 ? SK_MaxS32 : -SK_MaxS32; - else - if (operand[1].fS32 != 0) // throw error on divide by zero? - operand[0].fS32 /= operand[1].fS32; - break; - case SkScriptEngine2::kDivideScalar: - if (operand[1].fScalar == 0) - operand[0].fScalar = operand[0].fScalar == 0 ? SK_ScalarNaN : - operand[0].fScalar > 0 ? SK_ScalarMax : -SK_ScalarMax; - else - operand[0].fScalar = SkScalarDiv(operand[0].fScalar, operand[1].fScalar); - break; - case SkScriptEngine2::kEqualInt: - operand[0].fS32 = operand[0].fS32 == operand[1].fS32; - break; - case SkScriptEngine2::kEqualScalar: - operand[0].fS32 = operand[0].fScalar == operand[1].fScalar; - break; - case SkScriptEngine2::kEqualString: - operand[0].fS32 = *operand[0].fString == *operand[1].fString; - break; - case SkScriptEngine2::kGreaterEqualInt: - operand[0].fS32 = operand[0].fS32 >= operand[1].fS32; - break; - case SkScriptEngine2::kGreaterEqualScalar: - operand[0].fS32 = operand[0].fScalar >= operand[1].fScalar; - break; - case SkScriptEngine2::kGreaterEqualString: - operand[0].fS32 = strcmp(operand[0].fString->c_str(), operand[1].fString->c_str()) >= 0; - break; - case SkScriptEngine2::kToBool: - operand[0].fS32 = !! operand[0].fS32; - break; - case SkScriptEngine2::kLogicalNotInt: - operand[0].fS32 = ! operand[0].fS32; - break; - case SkScriptEngine2::kMinusInt: - operand[0].fS32 = -operand[0].fS32; - break; - case SkScriptEngine2::kMinusScalar: - operand[0].fScalar = -operand[0].fScalar; - break; - case SkScriptEngine2::kModuloInt: - operand[0].fS32 %= operand[1].fS32; - break; - case SkScriptEngine2::kModuloScalar: - operand[0].fScalar = SkScalarMod(operand[0].fScalar, operand[1].fScalar); - break; - case SkScriptEngine2::kMultiplyInt: - operand[0].fS32 *= operand[1].fS32; - break; - case SkScriptEngine2::kMultiplyScalar: - operand[0].fScalar = SkScalarMul(operand[0].fScalar, operand[1].fScalar); - break; - case SkScriptEngine2::kShiftLeftInt: - operand[0].fS32 <<= operand[1].fS32; - break; - case SkScriptEngine2::kShiftRightInt: - operand[0].fS32 >>= operand[1].fS32; - break; - case SkScriptEngine2::kSubtractInt: - operand[0].fS32 -= operand[1].fS32; - break; - case SkScriptEngine2::kSubtractScalar: - operand[0].fScalar -= operand[1].fScalar; - break; - case SkScriptEngine2::kXorInt: - operand[0].fS32 ^= operand[1].fS32; - break; - case SkScriptEngine2::kEnd: - goto done; - case SkScriptEngine2::kNop: - SkASSERT(0); + SkOperand2 operand[2]; // 1=accumulator and 2=operand + SkScriptEngine2::TypeOp op; + size_t ref; + int index, size; + int registerLoad; + SkScriptCallBack* callBack SK_INIT_TO_AVOID_WARNING; + do { + switch ((op = (SkScriptEngine2::TypeOp) *opCode++)) { + case SkScriptEngine2::kArrayToken: // create an array + operand[0].fArray = new SkOpArray(SkOperand2::kNoType /*fReturnType*/); + break; + case SkScriptEngine2::kArrayIndex: // array accessor + index = operand[1].fS32; + if (index >= operand[0].fArray->count()) { + fError = kArrayIndexOutOfBounds; + return false; + } + operand[0] = operand[0].fArray->begin()[index]; + break; + case SkScriptEngine2::kArrayParam: // array initializer, or function param + *operand[0].fArray->append() = operand[1]; + break; + case SkScriptEngine2::kCallback: + memcpy(&index, opCode, sizeof(index)); + opCode += sizeof(index); + callBack = fCallBackArray[index]; + break; + case SkScriptEngine2::kFunctionCall: { + memcpy(&ref, opCode, sizeof(ref)); + opCode += sizeof(ref); + SkScriptCallBackFunction* callBackFunction = (SkScriptCallBackFunction*) callBack; + if (callBackFunction->invoke(ref, operand[0].fArray, /* params */ + &operand[0] /* result */) == false) { + fError = kFunctionCallFailed; + return false; + } + } break; + case SkScriptEngine2::kMemberOp: { + memcpy(&ref, opCode, sizeof(ref)); + opCode += sizeof(ref); + SkScriptCallBackMember* callBackMember = (SkScriptCallBackMember*) callBack; + if (callBackMember->invoke(ref, operand[0].fObject, &operand[0]) == false) { + fError = kMemberOpFailed; + return false; + } + } break; + case SkScriptEngine2::kPropertyOp: { + memcpy(&ref, opCode, sizeof(ref)); + opCode += sizeof(ref); + SkScriptCallBackProperty* callBackProperty = (SkScriptCallBackProperty*) callBack; + if (callBackProperty->getResult(ref, &operand[0])== false) { + fError = kPropertyOpFailed; + return false; + } + } break; + case SkScriptEngine2::kAccumulatorPop: + fRunStack.pop(&operand[0]); + break; + case SkScriptEngine2::kAccumulatorPush: + *fRunStack.push() = operand[0]; + break; + case SkScriptEngine2::kIntegerAccumulator: + case SkScriptEngine2::kIntegerOperand: + registerLoad = op - SkScriptEngine2::kIntegerAccumulator; + memcpy(&operand[registerLoad].fS32, opCode, sizeof(int32_t)); + opCode += sizeof(int32_t); + break; + case SkScriptEngine2::kScalarAccumulator: + case SkScriptEngine2::kScalarOperand: + registerLoad = op - SkScriptEngine2::kScalarAccumulator; + memcpy(&operand[registerLoad].fScalar, opCode, sizeof(SkScalar)); + opCode += sizeof(SkScalar); + break; + case SkScriptEngine2::kStringAccumulator: + case SkScriptEngine2::kStringOperand: { + SkString* strPtr = new SkString(); + track(strPtr); + registerLoad = op - SkScriptEngine2::kStringAccumulator; + memcpy(&size, opCode, sizeof(size)); + opCode += sizeof(size); + strPtr->set((char*) opCode, size); + opCode += size; + operand[registerLoad].fString = strPtr; + } break; + case SkScriptEngine2::kStringTrack: // call after kObjectToValue + track(operand[0].fString); + break; + case SkScriptEngine2::kBoxToken: { + SkOperand2::OpType type; + memcpy(&type, opCode, sizeof(type)); + opCode += sizeof(type); + SkScriptCallBackConvert* callBackBox = (SkScriptCallBackConvert*) callBack; + if (callBackBox->convert(type, &operand[0]) == false) + return false; + } break; + case SkScriptEngine2::kUnboxToken: + case SkScriptEngine2::kUnboxToken2: { + SkScriptCallBackConvert* callBackUnbox = (SkScriptCallBackConvert*) callBack; + if (callBackUnbox->convert(SkOperand2::kObject, &operand[0]) == false) + return false; + } break; + case SkScriptEngine2::kIfOp: + case SkScriptEngine2::kLogicalAndInt: + memcpy(&size, opCode, sizeof(size)); + opCode += sizeof(size); + if (operand[0].fS32 == 0) + opCode += size; // skip to else (or end of if predicate) + break; + case SkScriptEngine2::kElseOp: + memcpy(&size, opCode, sizeof(size)); + opCode += sizeof(size); + opCode += size; // if true: after predicate, always skip to end of else + break; + case SkScriptEngine2::kLogicalOrInt: + memcpy(&size, opCode, sizeof(size)); + opCode += sizeof(size); + if (operand[0].fS32 != 0) + opCode += size; // skip to kToBool opcode after || predicate + break; + // arithmetic conversion ops + case SkScriptEngine2::kFlipOpsOp: + SkTSwap(operand[0], operand[1]); + break; + case SkScriptEngine2::kIntToString: + case SkScriptEngine2::kIntToString2: + case SkScriptEngine2::kScalarToString: + case SkScriptEngine2::kScalarToString2:{ + SkString* strPtr = new SkString(); + track(strPtr); + if (op == SkScriptEngine2::kIntToString || op == SkScriptEngine2::kIntToString2) + strPtr->appendS32(operand[op - SkScriptEngine2::kIntToString].fS32); + else + strPtr->appendScalar(operand[op - SkScriptEngine2::kScalarToString].fScalar); + operand[0].fString = strPtr; + } break; + case SkScriptEngine2::kIntToScalar: + case SkScriptEngine2::kIntToScalar2: + operand[0].fScalar = SkScriptEngine2::IntToScalar(operand[op - SkScriptEngine2::kIntToScalar].fS32); + break; + case SkScriptEngine2::kStringToInt: + if (SkParse::FindS32(operand[0].fString->c_str(), &operand[0].fS32) == false) + return false; + break; + case SkScriptEngine2::kStringToScalar: + case SkScriptEngine2::kStringToScalar2: + if (SkParse::FindScalar(operand[0].fString->c_str(), + &operand[op - SkScriptEngine2::kStringToScalar].fScalar) == false) + return false; + break; + case SkScriptEngine2::kScalarToInt: + operand[0].fS32 = SkScalarFloor(operand[0].fScalar); + break; + // arithmetic ops + case SkScriptEngine2::kAddInt: + operand[0].fS32 += operand[1].fS32; + break; + case SkScriptEngine2::kAddScalar: + operand[0].fScalar += operand[1].fScalar; + break; + case SkScriptEngine2::kAddString: +// if (fTrackString.find(operand[1].fString) < 0) { +// operand[1].fString = SkNEW_ARGS(SkString, (*operand[1].fString)); +// track(operand[1].fString); +// } + operand[0].fString->append(*operand[1].fString); + break; + case SkScriptEngine2::kBitAndInt: + operand[0].fS32 &= operand[1].fS32; + break; + case SkScriptEngine2::kBitNotInt: + operand[0].fS32 = ~operand[0].fS32; + break; + case SkScriptEngine2::kBitOrInt: + operand[0].fS32 |= operand[1].fS32; + break; + case SkScriptEngine2::kDivideInt: + SkASSERT(operand[1].fS32 != 0); + if (operand[1].fS32 == 0) + operand[0].fS32 = operand[0].fS32 == 0 ? SK_NaN32 : + operand[0].fS32 > 0 ? SK_MaxS32 : -SK_MaxS32; + else + if (operand[1].fS32 != 0) // throw error on divide by zero? + operand[0].fS32 /= operand[1].fS32; + break; + case SkScriptEngine2::kDivideScalar: + if (operand[1].fScalar == 0) + operand[0].fScalar = operand[0].fScalar == 0 ? SK_ScalarNaN : + operand[0].fScalar > 0 ? SK_ScalarMax : -SK_ScalarMax; + else + operand[0].fScalar = SkScalarDiv(operand[0].fScalar, operand[1].fScalar); + break; + case SkScriptEngine2::kEqualInt: + operand[0].fS32 = operand[0].fS32 == operand[1].fS32; + break; + case SkScriptEngine2::kEqualScalar: + operand[0].fS32 = operand[0].fScalar == operand[1].fScalar; + break; + case SkScriptEngine2::kEqualString: + operand[0].fS32 = *operand[0].fString == *operand[1].fString; + break; + case SkScriptEngine2::kGreaterEqualInt: + operand[0].fS32 = operand[0].fS32 >= operand[1].fS32; + break; + case SkScriptEngine2::kGreaterEqualScalar: + operand[0].fS32 = operand[0].fScalar >= operand[1].fScalar; + break; + case SkScriptEngine2::kGreaterEqualString: + operand[0].fS32 = strcmp(operand[0].fString->c_str(), operand[1].fString->c_str()) >= 0; + break; + case SkScriptEngine2::kToBool: + operand[0].fS32 = !! operand[0].fS32; + break; + case SkScriptEngine2::kLogicalNotInt: + operand[0].fS32 = ! operand[0].fS32; + break; + case SkScriptEngine2::kMinusInt: + operand[0].fS32 = -operand[0].fS32; + break; + case SkScriptEngine2::kMinusScalar: + operand[0].fScalar = -operand[0].fScalar; + break; + case SkScriptEngine2::kModuloInt: + operand[0].fS32 %= operand[1].fS32; + break; + case SkScriptEngine2::kModuloScalar: + operand[0].fScalar = SkScalarMod(operand[0].fScalar, operand[1].fScalar); + break; + case SkScriptEngine2::kMultiplyInt: + operand[0].fS32 *= operand[1].fS32; + break; + case SkScriptEngine2::kMultiplyScalar: + operand[0].fScalar = SkScalarMul(operand[0].fScalar, operand[1].fScalar); + break; + case SkScriptEngine2::kShiftLeftInt: + operand[0].fS32 <<= operand[1].fS32; + break; + case SkScriptEngine2::kShiftRightInt: + operand[0].fS32 >>= operand[1].fS32; + break; + case SkScriptEngine2::kSubtractInt: + operand[0].fS32 -= operand[1].fS32; + break; + case SkScriptEngine2::kSubtractScalar: + operand[0].fScalar -= operand[1].fScalar; + break; + case SkScriptEngine2::kXorInt: + operand[0].fS32 ^= operand[1].fS32; + break; + case SkScriptEngine2::kEnd: + goto done; + case SkScriptEngine2::kNop: + SkASSERT(0); default: break; - } - } while (true); + } + } while (true); done: - fRunStack.push(operand[0]); - return true; + fRunStack.push(operand[0]); + return true; } bool SkScriptRuntime::getResult(SkOperand2* result) { - if (fRunStack.count() == 0) - return false; - fRunStack.pop(result); - return true; + if (fRunStack.count() == 0) + return false; + fRunStack.pop(result); + return true; } -void SkScriptRuntime::track(SkOpArray* array) { - SkASSERT(fTrackArray.find(array) < 0); - *fTrackArray.append() = array; +void SkScriptRuntime::track(SkOpArray* array) { + SkASSERT(fTrackArray.find(array) < 0); + *fTrackArray.append() = array; } -void SkScriptRuntime::track(SkString* string) { - SkASSERT(fTrackString.find(string) < 0); - *fTrackString.append() = string; +void SkScriptRuntime::track(SkString* string) { + SkASSERT(fTrackString.find(string) < 0); + *fTrackString.append() = string; } void SkScriptRuntime::untrack(SkOpArray* array) { - int index = fTrackArray.find(array); - SkASSERT(index >= 0); - fTrackArray.begin()[index] = NULL; + int index = fTrackArray.find(array); + SkASSERT(index >= 0); + fTrackArray.begin()[index] = NULL; } void SkScriptRuntime::untrack(SkString* string) { - int index = fTrackString.find(string); - SkASSERT(index >= 0); - fTrackString.begin()[index] = NULL; + int index = fTrackString.find(string); + SkASSERT(index >= 0); + fTrackString.begin()[index] = NULL; } |