interface: SEOperatorOverloadCallback
public Boolean operatorOverload(SEContext se,short op);
ScriptEase implements operator overloading. Whenever an object is used as the lefthand operand, this callback is invoked. The op parameter will be the operator being overloaded, according to this table:
SE.OP_PREINC

++expr

SE.OP_POSTING

expr++

SE.OP_PREDEC

expr

SE.OP_POSTDEC

expr

SE.OP_ASSIGN

lhs = expr

SE.OP_NOT

!expr

SE.OP_UNARY_PLUS

+expr

SE.OP_UNARY_MINUS

expr

SE.OP_BITNOT

~expr

SE.OP_EQUAL

expr==expr

SE.OP_NOTEQUAL

expr!=expr

SE.OP_STRICT_EQUAL

expr===expr

SE.OP_STRING_NOTEQUAL

expr!==expr

SE.OP_LESS

expr<expr

SE.OP_LESS_EQUAL

expr<=expr

SE.OP_GREATER

expr>expr

SE.OP_GREATER_EQUAL

expr>=expr

SE.OP_SUBTRACT

exprexpr

SE.OP_ADD

expr+expr

SE.OP_MULTIPLY

expr*expr

SE.OP_DIVIDE

expr/expr

SE.OP_MOD

expr%expr

SE.OP_SHIFTLEFT

expr<<expr

SE.OP_SHIFTRIGHT

expr>>expr

SE.OP_USHIFTRIGHT

expr>>>expr

SE.OP_OR

exprexpr

SE.OP_XOR

expr^expr

SE.OP_AND

expr&expr

The assign operators, such as *=, are performed as two separate operations, as if written expr = expr * expr instead of expr *= expr.
The righthand side of the operator is to be found in SE.ARGS,SE.NUM(0). The result of the operation should be returned in the SE.RETURN object with a return from the function of true. A return of false will do the normal operation which will involve converting the object to a primitive type compatible with the other operand and doing the JavaScript operation.
Note that the operator overload will be called with the op SE.OP_ASSIGN if the object is assigned to. Normally, this operation is ignored since you cannot assign to an object directly. In a script, you can write:
some_obj = 10;
but this just discards the object in the given variable and replaces it with 10. If the object has operator overloading, this will call the overload callback instead. If you return false, the normal changing of some_obj's value takes place. If you return true, it does not. Be careful, you can make a variable whose value the user can never change in this way.
inteface: SEGetByIndexCallback