blob: 8b9a08de79dff1c74a6a93ee6c93ef53ba5abc1e [file] [log] [blame]
/*
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package flash.swf;
/**
* Base class for all actionscript opcodes
*/
public class Action implements ActionConstants
{
public Action(int code)
{
this.code = code;
}
public final int code;
/**
* Subclasses implement this method to callback one of the methods in ActionHandler...
* @param h
*/
public void visit(ActionHandler h)
{
switch (code)
{
case sactionNextFrame: h.nextFrame(this); break;
case sactionPrevFrame: h.prevFrame(this); break;
case sactionPlay: h.play(this); break;
case sactionStop: h.stop(this); break;
case sactionToggleQuality: h.toggleQuality(this); break;
case sactionStopSounds: h.stopSounds(this); break;
case sactionAdd: h.add(this); break;
case sactionSubtract: h.subtract(this); break;
case sactionMultiply: h.multiply(this); break;
case sactionDivide: h.divide(this); break;
case sactionEquals: h.equals(this); break;
case sactionLess: h.less(this); break;
case sactionAnd: h.and(this); break;
case sactionOr: h.or(this); break;
case sactionNot: h.not(this); break;
case sactionStringEquals: h.stringEquals(this); break;
case sactionStringLength: h.stringLength(this); break;
case sactionStringExtract: h.stringExtract(this); break;
case sactionPop: h.pop(this); break;
case sactionToInteger: h.toInteger(this); break;
case sactionGetVariable: h.getVariable(this); break;
case sactionSetVariable: h.setVariable(this); break;
case sactionSetTarget2: h.setTarget2(this); break;
case sactionStringAdd: h.stringAdd(this); break;
case sactionGetProperty: h.getProperty(this); break;
case sactionSetProperty: h.setProperty(this); break;
case sactionCloneSprite: h.cloneSprite(this); break;
case sactionRemoveSprite: h.removeSprite(this); break;
case sactionTrace: h.trace(this); break;
case sactionStartDrag: h.startDrag(this); break;
case sactionEndDrag: h.endDrag(this); break;
case sactionStringLess: h.stringLess(this); break;
case sactionThrow: h.throwAction(this); break;
case sactionCastOp: h.castOp(this); break;
case sactionImplementsOp: h.implementsOp(this); break;
case sactionRandomNumber: h.randomNumber(this); break;
case sactionMBStringLength: h.mbStringLength(this); break;
case sactionCharToAscii: h.charToASCII(this); break;
case sactionAsciiToChar: h.asciiToChar(this); break;
case sactionGetTime: h.getTime(this); break;
case sactionMBStringExtract: h.mbStringExtract(this); break;
case sactionMBCharToAscii: h.mbCharToASCII(this); break;
case sactionMBAsciiToChar: h.mbASCIIToChar(this); break;
case sactionDelete: h.delete(this); break;
case sactionDelete2: h.delete2(this); break;
case sactionDefineLocal: h.defineLocal(this); break;
case sactionCallFunction: h.callFunction(this); break;
case sactionReturn: h.returnAction(this); break;
case sactionModulo: h.modulo(this); break;
case sactionNewObject: h.newObject(this); break;
case sactionDefineLocal2: h.defineLocal2(this); break;
case sactionInitArray: h.initArray(this); break;
case sactionInitObject: h.initObject(this); break;
case sactionTypeOf: h.typeOf(this); break;
case sactionTargetPath: h.targetPath(this); break;
case sactionEnumerate: h.enumerate(this); break;
case sactionAdd2: h.add2(this); break;
case sactionLess2: h.less2(this); break;
case sactionEquals2: h.equals2(this); break;
case sactionToNumber: h.toNumber(this); break;
case sactionToString: h.toString(this); break;
case sactionPushDuplicate: h.pushDuplicate(this); break;
case sactionStackSwap: h.stackSwap(this); break;
case sactionGetMember: h.getMember(this); break;
case sactionSetMember: h.setMember(this); break;
case sactionIncrement: h.increment(this); break;
case sactionDecrement: h.decrement(this); break;
case sactionCallMethod: h.callMethod(this); break;
case sactionNewMethod: h.newMethod(this); break;
case sactionInstanceOf: h.instanceOf(this); break;
case sactionEnumerate2: h.enumerate2(this); break;
case sactionBitAnd: h.bitAnd(this); break;
case sactionBitOr: h.bitOr(this); break;
case sactionBitXor: h.bitXor(this); break;
case sactionBitLShift: h.bitLShift(this); break;
case sactionBitRShift: h.bitRShift(this); break;
case sactionBitURShift: h.bitURShift(this); break;
case sactionStrictEquals: h.strictEquals(this); break;
case sactionGreater: h.greater(this); break;
case sactionStringGreater: h.stringGreater(this); break;
case sactionCall: h.call(this); break;
case sactionQuickTime: h.quickTime(this); break;
case sactionExtends: h.extendsOp(this); break;
case sactionNop: h.nop(this); break;
case sactionHalt: h.halt(this); break;
default:
assert false : ("unexpected action "+code);// should not get here
}
}
public boolean equals(Object object)
{
boolean isEqual = false;
if (object instanceof Action)
{
Action action = (Action) object;
if (action.code == this.code)
{
isEqual = true;
}
}
return isEqual;
}
protected boolean equals(Object a, Object b)
{
return a == b || a != null && a.equals(b);
}
public int hashCode()
{
return code;
}
public int objectHashCode()
{
return super.hashCode();
}
public String toString()
{
return getClass().getName() + "[ code = " + code + " ]";
}
}