codesimian
Class S

java.lang.Object
  extended by codesimian.CS<CSGeneric>
      extended by codesimian.DefaultCS
          extended by codesimian.S
All Implemented Interfaces:
CodeSimian
Direct Known Subclasses:
RandomExampleCode, StringMyName

public class S
extends DefaultCS

S = STRING. Params are the char values.
Executing this CS returns countP() and does not execute any of the params.

You could use any CS as a STRING with length countP(), but S is more efficient for that purpose...

All params are stored in a single shared String. Each param is a char value. S contains no actual CS params. All params come from the constant-pool (Const.pool(char value)). When params are changed, only the char values in the StringBuffer change.

Default implementation contains a StringSkeleton object and encapsulates its functions. Unlike StringSkeleton, StringCS extends DefaultCS (therefore uses more memory).


Field Summary
protected  StringSkeleton skel
           
 
Fields inherited from class codesimian.CS
DESCRIPTION, END, EXECPROXY, HEAP, JAVACODE, MYFUEL, NAME, NEWINSTANCE, NULL, PARENT, PARSEPRIORITY, PREV, TESTER, THIS
 
Constructor Summary
S()
           
S(java.lang.String initialString)
           
S(StringSkeleton initialStrSk)
           
 
Method Summary
 int countP()
          Quantity of params.
 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.
 java.lang.String description()
          a short description of this CS, shorter than the javadoc, but long enough to tell what the params are for.
 double DForProxy()
          Execute this CS and cast to double.
 int indexP(CS myParam)
          Returns the param index of 'myParam' in this CS or -1 if it is not this CS's param.
 int indexPName(java.lang.String name)
          Returns the index of the PARAM with name pName, or -1 if nothing is found.
 boolean insertP(int index, CS ins)
          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.
 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 LForProxy(java.lang.Class type)
          the default implementation can use many Class parameters.
 java.lang.Object LForProxy(int startIndex, java.lang.Class type, int indexQuantity)
          by default, only works if castToThisType==CS[].class or is a String or List.
 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.
 CS P(int index)
          WARNING: if add CSs then delete them, they are still in the param[] array and can be returned in this function, despite them being out of valid range: index at least countP().
 java.lang.String paramsToString()
           
 CS PWithName(java.lang.String paramName)
           
 boolean setP(int index, CS setTo)
          Every CS is a list of other CSs, between size minP() and maxP() inclusive.
 java.lang.String toString()
          problem: toString() does not return the same as L(String.class).
 java.lang.String toStringG(java.util.HashSet h)
           
 
Methods inherited from class codesimian.DefaultCS
B, C, decrementMyFuel, F, fuel, getExec, getObject, heap, I, insertB, insertC, insertD, insertF, insertI, insertJ, insertL, insertL, insertL1, insertS, insertZ, J, javaCode, myFuel, name, newInstance, objectToCS, objectToCSArray, objectToCSArray, prevD, prevL, PType, S, setB, setC, setCountP, setD, setD, setExec, setF, setFuel, setI, setJ, setL, setL, setL, setL1, setMyFuel, setName, setObject, setPrevExec, setPType, setS, setZ, start, 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, D, 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
 

Field Detail

skel

protected final StringSkeleton skel
Constructor Detail

S

public S()

S

public S(java.lang.String initialString)

S

public S(StringSkeleton initialStrSk)
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

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()

description

public java.lang.String description()
Description copied from class: CS
a short description of this CS, shorter than the javadoc, but long enough to tell what the params are for. Example use: in automatically generated webpages for CodeSimian. Example: "returns sum of all params" for Add.

Overrides:
description in class DefaultCS

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

P

public CS P(int index)
Description copied from class: DefaultCS
WARNING: if add CSs then delete them, they are still in the param[] array and can be returned in this function, despite them being out of valid range: index at least countP().

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

setP

public boolean setP(int index,
                    CS setTo)
Description copied from class: CS
Every CS is a list of other CSs, between size minP() and maxP() inclusive. setP overwrites one of those CSs or adds a new one at the end, depending on the index. If index is between 0 and countP()-1, overwrites. If it equals countP(), adds at end.

Overrides:
setP in class DefaultCS

insertP

public boolean insertP(int index,
                       CS ins)
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

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

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

indexP

public int indexP(CS myParam)
Description copied from class: DefaultCS
Returns the param index of 'myParam' in this CS or -1 if it is not this CS's param. If 'myParam' is in the param list more than once, returns the highest index.

Does not search the HEAP for the specified param. Fix it...

WARNING: Uses LINEAR SEARCH. Override and make faster if your CS has more than a few params.

Overrides:
indexP in class DefaultCS

PWithName

public CS PWithName(java.lang.String paramName)

indexPName

public int indexPName(java.lang.String name)
Description copied from class: DefaultCS
Returns the index of the PARAM with name pName, or -1 if nothing is found. Returns an index less than -1 if the HEAP contains it (heap() and setHeap()).

(returns int) indexPName(String) ...is the inverse of... (returns String) P(int).name().

Overrides:
indexPName in class DefaultCS
See Also:
CS.name(), CS.setName(String), CS.indexP(CS)

paramsToString

public java.lang.String paramsToString()

toString

public java.lang.String toString()
Description copied from class: DefaultCS
problem: toString() does not return the same as L(String.class). toString returns code and L returns params as char values. Maybe only decompile() should be used for code instead.

Overrides:
toString in class DefaultCS

toStringG

public java.lang.String toStringG(java.util.HashSet h)

LForProxy

public java.lang.Object LForProxy(java.lang.Class type)
Description copied from class: DefaultCS
the default implementation can use many Class parameters. If you override but do not know what to return, return super.LForProxy(Class). All EXEC objects must override L(Class) the same way they override D(), reversed.

TODO: add ability to return List, or should I make every CS be a list?

Overrides:
LForProxy in class DefaultCS
See Also:
execProxy(), setExecProxy(CS)

LForProxy

public java.lang.Object LForProxy(int startIndex,
                                  java.lang.Class type,
                                  int indexQuantity)
Description copied from class: DefaultCS
by default, only works if castToThisType==CS[].class or is a String or List. TODO: add more types, including all types L(Class) can use.

Overrides:
LForProxy in class DefaultCS
See Also:
CS.L(int,Class,int)

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)