codesimian
Class PrimitiveArray.ByteArray

java.lang.Object
  extended by codesimian.CS
      extended by codesimian.DefaultCS
          extended by codesimian.PrimitiveArray
              extended by codesimian.PrimitiveArray.ByteArray
All Implemented Interfaces:
CodeSimian, java.io.Serializable
Enclosing class:
PrimitiveArray

public static class PrimitiveArray.ByteArray
extends PrimitiveArray

stores all params as bytes (instead of CSs) in an array, and converts them to CS by using the constant-pool when requested.
THIS CLASS WAS NOT AUTOMATICLY-GENERATED BY PrimitiveArray.javaCodeForSubclass(byte[].class), but it should be.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class codesimian.PrimitiveArray
PrimitiveArray.ByteArray, PrimitiveArray.IntArray
 
Field Summary
 
Fields inherited from class codesimian.CS
DESCRIPTION, END, EXECPROXY, FUEL, HEAP, JAVACODE, MYFUEL, NAME, NEWINSTANCE, NULL, PARENT, PARSEPRIORITY, PREV, TESTER
 
Constructor Summary
PrimitiveArray.ByteArray()
           
PrimitiveArray.ByteArray(byte[] array)
           
 
Method Summary
 double cost()
          cost() should be changed to return a float, and should be renamed to costToExecute()

cost of EXECUTING this CS, not including any CSs it executes recursively.
 int countP()
          Quantity of params.
 java.lang.String keyword()
          For the CodeSimian language as a String.
CodeSimian language keyword, like "+" "*" "max" ">" etc.

Override this function if you want to specify a keyword other than how I derive them from the class name, like + for Add.

Some CSs might never be intended to be used in the language by their keyword.
The best example (4/05) is Num, because it is used in the language like "3.4" instead of "num()".
 java.lang.Object L(java.lang.Class c)
          Optionally execute this CS, and definitely try to CAST it to the specified Java type.
 java.lang.Object L(int startIndex, java.lang.Class type, int indexQuantity)
          efficient array-copy if type==byte[].class
 CS newInstance()
          the byte[] array is copied
 CS P(int index)
          returns from the constant-pool
 byte PB(int index)
           
 double PD(int index)
          Returns a param as a double.
 boolean setB(int index, byte value)
           
 boolean setD(int index, double value)
          sets a param to a double value.
 boolean setL(int startIndex, java.lang.Object value)
          needs to be tested
 boolean setL(int startIndex, java.lang.Object value, int indexQuantity)
          needs to be tested
 boolean setL(java.lang.Object value)
          setL setD setF setJ setI setS setC setB setZ are functions that SET THE VALUE OF THIS CS to some object, primitive, or array.
 boolean setP(int index, CS value)
          can only set indexs that already exist
 
Methods inherited from class codesimian.PrimitiveArray
D, deleteP, DForProxy, insertP, isIllusion, javaCodeForSubclass, maxP, minP
 
Methods inherited from class codesimian.DefaultCS
B, C, decrementMyFuel, description, F, fuel, getExec, getObject, heap, I, indexP, indexPName, insertB, insertC, insertD, insertF, insertI, insertJ, insertL, insertL, insertL1, insertS, insertZ, J, javaCode, LForProxy, LForProxy, myFuel, name, objectToCS, objectToCSArray, objectToCSArray, prevD, prevL, PType, S, setC, setCountP, setD, setExec, setF, setFuel, setI, setJ, setL1, setMyFuel, setName, setObject, setPrevExec, setS, setZ, start, toString, V, Z
 
Methods inherited from class codesimian.CS
addP, addP, addP, addP, addP, BForProxy, CForProxy, clone, deleteP, FForProxy, IForProxy, javaCode, JForProxy, L, L, L, maxD, minD, overwrites, parent, parsePriority, PC, PF, PI, PJ, PL, prevB, prevC, prevF, prevI, prevJ, prevS, prevZ, proxyOf, PS, PZ, reflect, reflect, setB, setC, setCost, setDescription, setF, setHeap, setI, setJ, setL, setL, setParent, setParsePriority, setProxyOf, setPType, setS, setTester, setZ, SForProxy, tester, VForProxy, voidReflect, ZForProxy
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PrimitiveArray.ByteArray

public PrimitiveArray.ByteArray()

PrimitiveArray.ByteArray

public PrimitiveArray.ByteArray(byte[] array)
Method Detail

keyword

public java.lang.String keyword()
Description copied from class: DefaultCS
For the CodeSimian language as a String.
CodeSimian language keyword, like "+" "*" "max" ">" etc.

Override this function if you want to specify a keyword other than how I derive them from the class name, like + for Add.

Some CSs might never be intended to be used in the language by their keyword.
The best example (4/05) is Num, because it is used in the language like "3.4" instead of "num()".
Default: Returns class name, minus package name (and its dots), and change the first letter to lowercase.

For example, CS.MaxParams does not override keyword(), which returns "maxP".

Overrides:
keyword in class PrimitiveArray
See Also:
CS.parent(), CS.newInstance(), CS.name()

cost

public double cost()
Description copied from class: CS
cost() should be changed to return a float, and should be renamed to costToExecute()

cost of EXECUTING this CS, not including any CSs it executes recursively. The INTERNAL cost.

One unit of myFuel() costs cost() units of fuel(). Beware of CSs that counterfeit fuel.

Returns 1 by default.

Overrides:
cost in class CS

PB

public byte PB(int index)
Overrides:
PB in class CS
See Also:
CS.PD(int)

PD

public double PD(int index)
Description copied from class: CS
Returns a param as a double. Same as P(paramIndex).D()

Why not just use P(paramIndex).D() instead? Its not just for convenience. Some CSs store their params as doubles or other primitives, and if you predict correctly how params are stored, PD(paramIndex) is much faster than P(paramIndex).D(), but BEWARE: if you predict incorrectly its a little slower. It calculates the same double either way.

For all paramIndex: P(paramIndex).D() == PD(paramIndex)
except when the function call causes params to change. Example: param is an instance of the Count class.

Overrides:
PD in class CS

countP

public int countP()
Description copied from class: CS
Quantity of params. Should be between minP() and maxP() inclusive when you EXECUTE this CS. Can be below minP() for a short time during compiling, but you must not EXECUTE this CS during that time.

Overrides:
countP in class DefaultCS

P

public CS P(int index)
returns from the constant-pool

Overrides:
P in class DefaultCS
Parameters:
index - range 0 to countP()-1 inclusive
See Also:
CS.heap()

setP

public boolean setP(int index,
                    CS value)
can only set indexs that already exist

Overrides:
setP in class DefaultCS

setD

public boolean setD(int index,
                    double value)
Description copied from class: CS
sets a param to a double value. Same as P(paramIndex).setD(value)

Overrides:
setD in class DefaultCS

setB

public boolean setB(int index,
                    byte value)
Overrides:
setB in class DefaultCS
See Also:
CS.setD(int,double)

setL

public boolean setL(java.lang.Object value)
Description copied from class: CS
setL setD setF setJ setI setS setC setB setZ are functions that SET THE VALUE OF THIS CS to some object, primitive, or array.

Overrides:
setL in class DefaultCS

setL

public boolean setL(int startIndex,
                    java.lang.Object value)
Description copied from class: DefaultCS
needs to be tested

Specified by:
setL in interface CodeSimian
Overrides:
setL in class DefaultCS
See Also:
CS.setL(int,Object,int)

setL

public boolean setL(int startIndex,
                    java.lang.Object value,
                    int indexQuantity)
Description copied from class: DefaultCS
needs to be tested

Specified by:
setL in interface CodeSimian
Overrides:
setL in class DefaultCS

L

public java.lang.Object L(java.lang.Class c)
Description copied from class: CS
Optionally execute this CS, and definitely try to CAST it to the specified Java type. If fail, throw a ClassCastException.

Should I change this from throwing a CSCastException to return null instead?

It is preferred not to return CSs from this function. If you have a CS to return, the standard is to put it in param0... setP(0,returnValue), where the function caller should get the output from... P(0).

The functions: V L Z B C S I J F and D, usually EXECUTE this CS and CAST its value to the specified type.
L does not have to execute this CS, but all the others do. The other difference is L can throw a CSCastException (extends ClassCastException), which is a RuntimeException so you do not have to use try/catch if you trust it.

No pattern of L()'s behavior is guaranteed.
The L's of some some CSs are more predictable than others, often written about in javadoc.
If it casts correctly, it could fail later. If it fails many times, and you try again, it could still succeed.

Example: new int[7][6][5].getClass().getName() returns "[[[I". These 9 function names (not 10 because excludes Void) are also used by a very important part of Java (but not as function names): java.lang.Class.name() .

EXAMPLES:
JButton b = (JButton) new ButtonCS().L(Component.class); //JButton inherits from Component
int fiveFiftyFive = new N(555).I();
double charValues[] = (double[]) new S("arraySize11").L(double[].class);

Overrides:
L in class CS
See Also:
CS.Z(), CS.B(), CS.C(), CS.S(), CS.I(), CS.J(), CS.F(), CS.D()

L

public java.lang.Object L(int startIndex,
                          java.lang.Class type,
                          int indexQuantity)
efficient array-copy if type==byte[].class

Overrides:
L in class CS

newInstance

public CS newInstance()
the byte[] array is copied

Overrides:
newInstance in class DefaultCS