codesimian
Class PrimitiveArray

java.lang.Object
  extended by codesimian.CS<CSGeneric>
      extended by codesimian.DefaultCS
          extended by codesimian.PrimitiveArray
All Implemented Interfaces:
CodeSimian
Direct Known Subclasses:
ImmutBytes, PrimitiveArray.ByteArray, PrimitiveArray.IntArray, PrimitiveArray.ShortArray

public abstract class PrimitiveArray
extends DefaultCS

Contains inner subclasses for efficiently using primitive arrays.

For efficiency, does NOT use the PROXY (setExec(CS) and getExec()) for some functions. This would usually cause infinite-loops, but its ok here because primitives are LEAFs in a tree therefore cant be in a cycle.

If you want to insert and delete from the array, you should use a tree, where leafs contain small primitive arrays, and put those classes here when you build them.

THIS CLASS IS NOT FINISHED


Nested Class Summary
static class PrimitiveArray.ByteArray
          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.
static class PrimitiveArray.IntArray
          stores all params as ints (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(int[].class), but it should be.
static class PrimitiveArray.ShortArray
          hard-coding 3 similar classes is too much...
 
Field Summary
 
Fields inherited from class codesimian.CS
DESCRIPTION, END, EXECPROXY, HEAP, JAVACODE, MYFUEL, NAME, NEWINSTANCE, NULL, PARENT, PARSEPRIORITY, PREV, TESTER, THIS
 
Constructor Summary
PrimitiveArray()
           
 
Method Summary
static byte[] bitsToBytes(boolean[] bits)
           
static boolean[] bytesToBits(byte[] bytes)
           
static byte[] concatByteArrays(CS listOfByteArrays)
           
static boolean[] cutBitsToMultipleOf8(boolean[] bits)
           
 double D()
          Execute this CS and cast to double.
 boolean deleteP(int index)
          WARNING: if returns false, could have deleted but not moved other params down 1 index.
WARNING: if duplicates not allowed, can not slide params down 1 index the standard way, returns false.
 double DForProxy()
          Execute this CS and cast to double.
 boolean insertP(int index, CS value)
          same as setP(int,CS) but inserts instead of overwriting.
 byte isIllusion(int index)
          Describes if the CS in an index is an illusion or not.
static java.lang.String javaCodeForSubclass(java.lang.Class arrayType)
          returns a String of Java code for an inner subclass of PrimitiveArray, to be copy/pasted into PrimitiveArray.java (or automaticly modify that file?).
 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()".
 int maxP()
          Maximum quantity of Params
 int minP()
          For DForProxy().
Minimum number of parameters in param[] needed to call DForProxy().
Defines which indexs of param[] DForProxy() can use.
Functions with a different number of parameters must override this.
OVERRIDE THIS FUNCTION IF EXEC USES A DIFFERENT NUMBER OF PARAMETERS.
Default is 1.
static boolean[] padBitsToMultipleOf8(boolean[] bits, boolean padValue)
           
static int sizeOfConcatChilds(CS listOfLists)
           
static byte[] subarray(byte[] b, int start, int size)
           
 
Methods inherited from class codesimian.DefaultCS
B, C, countP, 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, newInstance, objectToCS, objectToCSArray, objectToCSArray, P, prevD, prevL, PType, S, setB, setC, setCountP, setD, setD, setExec, setF, setFuel, setI, setJ, setL, setL, setL, setL1, setMyFuel, setName, setObject, setP, setPrevExec, setPType, setS, setZ, start, toString, V, Z
 
Methods inherited from class codesimian.CS
addB, addC, addD, addF, addI, addJ, addL, addP, addP, addP, addP, addP, addS, addZ, BForProxy, CForProxy, clone, cost, deleteP, FForProxy, GETB, GETC, GETD, GETF, GETI, GETJ, GETL, GETS, GETZ, IForProxy, JForProxy, L, L, L, L, L, maxD, minD, overwrites, parent, parsePriority, PB, PC, PD, PF, PI, PJ, PL, prevB, prevC, prevF, prevI, prevJ, prevS, prevZ, proxyOf, PS, PZ, reflect, reflect, reflect6, setB, SETB, setC, SETC, setCost, SETD, setDescription, setF, SETF, setHeap, setI, SETI, setJ, SETJ, SETL, setL, setL, setParent, setParsePriority, setProxyOf, setS, SETS, setTester, setZ, SETZ, SForProxy, tester, toJavaCode, VForProxy, voidReflect, ZForProxy
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PrimitiveArray

public PrimitiveArray()
Method Detail

DForProxy

public double DForProxy()
Description copied from class: CS
Execute this CS and cast to double.

D() and DForProxy() are the 2 most important functions in CS. They execute this CS. All other execute functions, by default, return DForProxy cast to their own type.

For example, J() calls the proxy which calls JForProxy() which calls DForProxy(). D() calls the proxy which calls DForProxy().

By default, all other primitive EXECUTE functions defer to D.
Functions that EXECUTE this CS: L(Class) L(int,Class,int) Z() B() C() S() I() J() F() D() V()

Specified by:
DForProxy in class DefaultCS

D

public double D()
Description copied from class: CS
Execute this CS and cast to double. All subclasses should override DForProxy() instead of D().

Overrides:
D in class CS
See Also:
CS.L(java.lang.Class)

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 DefaultCS
See Also:
CS.parent(), CS.newInstance(), CS.name()

isIllusion

public byte isIllusion(int index)
Description copied from class: CS
Describes if the CS in an index is an illusion or not. Example (S extends CS): new S("8fakeCSs") contains a String containing 8 chars. It only appears to contain 8 CSs. new S("8fakeCSs").P(3) returns the same as Const.pool('k'); //P(4).C() == 'e' Therefore S should override isIllusion to return 1 for every index.

Since illusions are constantly overwritten (to give the illusion that they change), if isIllusion(x)==1 then it must be true that: overwrites(x)==1 or overwrites(x)==0. It may equal 0 because that says you dont know (even though it is true).

Overrides:
isIllusion in class CS
See Also:
CS.overwrites(int), S.isIllusion(int)

minP

public int minP()
Description copied from class: DefaultCS
For DForProxy().
Minimum number of parameters in param[] needed to call DForProxy().
Defines which indexs of param[] DForProxy() can use.
Functions with a different number of parameters must override this.
OVERRIDE THIS FUNCTION IF EXEC USES A DIFFERENT NUMBER OF PARAMETERS.
Default is 1.

Overrides:
minP in class DefaultCS

maxP

public int maxP()
Description copied from class: CS
Maximum quantity of Params

Overrides:
maxP in class CS

deleteP

public boolean deleteP(int index)
Description copied from class: DefaultCS
WARNING: if returns false, could have deleted but not moved other params down 1 index.
WARNING: if duplicates not allowed, can not slide params down 1 index the standard way, returns false.

Overrides:
deleteP in class DefaultCS

insertP

public boolean insertP(int index,
                       CS value)
Description copied from class: CS
same as setP(int,CS) but inserts instead of overwriting. All higher params slide up 1 index.

Overrides:
insertP in class DefaultCS

javaCodeForSubclass

public static java.lang.String javaCodeForSubclass(java.lang.Class arrayType)
returns a String of Java code for an inner subclass of PrimitiveArray, to be copy/pasted into PrimitiveArray.java (or automaticly modify that file?).

This should replace the hard-coded subclasses ByteArray and IntArray. DO NOT MAKE ANY MORE SUBCLASSES UNTIL YOU FINISH javaCodeForSubclass(Class).

Parameters:
arrayType - any of boolean[].class, byte[].class, int[].class, float[].class, etc. (Later, support may be added for multidimensional array types like int[][][].class, but not yet.)

bytesToBits

public static boolean[] bytesToBits(byte[] bytes)

bitsToBytes

public static byte[] bitsToBytes(boolean[] bits)

cutBitsToMultipleOf8

public static boolean[] cutBitsToMultipleOf8(boolean[] bits)

padBitsToMultipleOf8

public static boolean[] padBitsToMultipleOf8(boolean[] bits,
                                             boolean padValue)

subarray

public static byte[] subarray(byte[] b,
                              int start,
                              int size)

concatByteArrays

public static byte[] concatByteArrays(CS listOfByteArrays)

sizeOfConcatChilds

public static int sizeOfConcatChilds(CS listOfLists)