codesimian
Class JavaOutSimple

java.lang.Object
  extended by codesimian.CS<CSGeneric>
      extended by codesimian.DefaultCS
          extended by codesimian.JavaOutSimple
All Implemented Interfaces:
CodeSimian
Direct Known Subclasses:
JavaOutSimple.Lists

public class JavaOutSimple
extends DefaultCS

Summary: put any CS in P(1), execute, and get an optimized and possibly slightly mutated version of it in P(0) that you can copy without limit and which will exist in all future codesimians you save.

Gets a string of java code from a network of CSs starting at P(1), uses the java compiler if available on the current computer, creates a new class in package codesimian.javaout, merges it with the current code, and creates an instance of it connected to the parts of the network of CSs that could not be converted to java code. Those parts become the parameters of the new subclass of CS. Thats what defineds its minP() and maxP().

Has static functions for creating new Java code on-the-fly by codesimian Most created classes go in package codesimian.javaout. Some go in package codesimian, but those are generated by Human design, not evolved. Do not pollute package codesimian with evolved code.


Nested Class Summary
static class JavaOutSimple.Lists
          superclass does CS in, CS out.
 
Field Summary
static java.lang.String defaultPackage
          Most generated java classes go in this package
static int maxJavaOutClasses
          Returns 50000.
static int maxJavaOutClassesIfManyClassloaders
          Returns 314159.
 
Fields inherited from class codesimian.CS
DESCRIPTION, END, EXECPROXY, HEAP, JAVACODE, MYFUEL, NAME, NEWINSTANCE, NULL, PARENT, PARSEPRIORITY, PREV, TESTER, THIS
 
Constructor Summary
JavaOutSimple()
           
 
Method Summary
static java.lang.Class[] createNewClasses(CS[] createOneJavaClassForEach)
          WARNING: calls a java compiler, which is slow and may require certain operating systems or options
 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.
static java.lang.String javaCodeForNewSubclassOfCS(java.lang.String nameOfNewClass, java.lang.Class parentClass, java.lang.reflect.Method callMe)
          Builds a class that wraps any java Method in a CS.
static java.lang.String javaCodeForPartOfNetworkOfCSAsNewSubclassOfCS(CS networkRoot)
           
static java.lang.String javaCodeForType(java.lang.Class type)
          javaCodeForType(List.class) returns "java.util.List".
 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 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.
 
Methods inherited from class codesimian.DefaultCS
B, C, countP, decrementMyFuel, deleteP, F, fuel, getExec, getObject, heap, I, indexP, indexPName, insertB, insertC, insertD, insertF, insertI, insertJ, insertL, insertL, insertL1, insertP, 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, D, deleteP, FForProxy, GETB, GETC, GETD, GETF, GETI, GETJ, GETL, GETS, GETZ, IForProxy, isIllusion, JForProxy, L, L, L, L, L, maxD, maxP, 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

defaultPackage

public static final java.lang.String defaultPackage
Most generated java classes go in this package

See Also:
Constant Field Values

maxJavaOutClasses

public static final int maxJavaOutClasses
Returns 50000. Max total classes with a single classloader: 0xfffd. I left room for 15533 Human written classes.

See Also:
Constant Field Values

maxJavaOutClassesIfManyClassloaders

public static final int maxJavaOutClassesIfManyClassloaders
Returns 314159. With multiple classloaders, the 0xfffd limit can be extended past any practical limit, but I dont want this program (CodeSimian.jar) to get too big per Jar, or ot slow down the JVM, which may have been designed only for small numbers of classes.

See Also:
Constant Field Values
Constructor Detail

JavaOutSimple

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

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

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

createNewClasses

public static java.lang.Class[] createNewClasses(CS[] createOneJavaClassForEach)
                                          throws JavaException
WARNING: calls a java compiler, which is slow and may require certain operating systems or options

Throws:
JavaException

javaCodeForPartOfNetworkOfCSAsNewSubclassOfCS

public static java.lang.String javaCodeForPartOfNetworkOfCSAsNewSubclassOfCS(CS networkRoot)

javaCodeForNewSubclassOfCS

public static java.lang.String javaCodeForNewSubclassOfCS(java.lang.String nameOfNewClass,
                                                          java.lang.Class parentClass,
                                                          java.lang.reflect.Method callMe)
Builds a class that wraps any java Method in a CS.

Returns a String of Java code that, when put into a Java compiler (javac *.java), builds a Java Class whose code calls a specific Method when that class's DForProxy() function is executed.

Parameters:
nameOfParentClass - - name of any subclass of CS
m - - any Method from any Class

javaCodeForType

public static java.lang.String javaCodeForType(java.lang.Class type)
javaCodeForType(List.class) returns "java.util.List". javaCodeForType(List[][][].class) returns "java.util.List[][][]"