Custom Classes (Database):
PHP Code:
function onCreated()
{
createClass( "TObject" );
createClass( "TMap", TObject );
createClass( "TMapMod", TMap );
createClass( "TNode", TObject );
}
function createClass( className, superClass )
{
if ( "class" in serverr.debug )
echo("Creating class" SPC className );
if ( (@ className ).type() == 2 )
(@ className ).destroy();
// Create class object
temp.newClass = new TStaticVar( (@className) );
temp.newClass.super = superClass;
// Add Static Functions
temp.classes = { temp.newClass };
if ( superClass != null )
temp.classes.addarray( superClass.getClasses() );
for ( temp.class: temp.classes )
temp.newClass.join( ("class_"@ temp.class.name @"_static").lower() );
temp.newClass.join( "class_tclass" );
// Don't let the garabe collecter get this!
this.classes.add( temp.newClass );
return temp.newClass;
}
public function getClasses()
{
return this.classes;
}
class_tclass (Class):
PHP Code:
/** Class object **
(+) Class[] getClasses();
(+) Class getSuperclass();
(+) String getName();
(+) String toString();
(+) Object newInstance( objectName );
**/
public function getName()
{
return this.name;
}
public function toString()
{
return getName();
}
public function newInstance( param, objectName )
{
if ( objectName != "" )
if ( (@ objectName ).type() == 2 )
(@ objectName ).destroy();
// Initialize Class
if ( "class" in serverr.debug )
echo("Initializing class" SPC this.name );
if ( objectName == "" )
temp.newInstance = new TStaticVar();
else temp.newInstance = new TStaticVar( @objectName );
temp.newInstance.class = this;
temp.classes = getClasses();
for ( temp.class: temp.classes )
{
if ( "class" in serverr.debug )
echo("Joining gClass" SPC temp.class.getName() );
temp.newInstance.join( ("class_"@ temp.class.getName() ).lower() );
}
// Call constructor!
for ( temp.class: temp.classes )
{
if ( temp.class.getName() in temp.newInstance.getfunctions() )
{
temp.newInstance.(@ temp.class.getName() )( param );
break;
}
}
return temp.newInstance;
}
public function getClasses()
{
temp.classes = {this};
temp.super = getSuperclass();
if ( temp.super != null )
temp.classes.addarray( temp.super.getClasses() );
return temp.classes;
}
public function getSuperclass()
{
return this.super;
}
class_tobject (Class):
PHP Code:
/** General Object **
(+) void TObject();
(+) boolean instanceOf( Class class );
(+) String toString();
(+) Class getClass();
**/
public function TObject()
{
if ( "class" in serverr.debug )
echo( "Initialized Object" SPC toString() );
}
public function instanceOf( class )
{
return ( class in getClass().getClasses() );
}
public function toString()
{
return this.name @"-"@ this.class.getName();
}
public function getClass()
{
return this.class;
}
And... As a bonus class to this great deal, TMap! (Call now, and get TNode for free!) Only fifty-five payments of 9.99$:
PHP Code:
/** TMap inherits TObject **
// Constructor
(+) void TMap( String[][] contents );
// Object Manipulation
(+) Object get( String key );
(+) void put( String key, Object value );
(+) void putAll( String[][] contents );
(+) void removeKey( String key ); * can't override .remove
(+) void clearMap();
// Testing
(+) boolean containsKey( String key );
(+) boolean containsValue( Object value );
(+) String[] keySet();
(+) Object[] values();
(+) int mapSize();
(+) boolean isEmpty();
(+) String[][] toArray();
**/
public function TMap( initialContents )
{
TObject();
if ( this.init )
return;
this.init = true;
putAll( initialContents );
}
public function putAll( newContents )
{
for ( temp.content: newContents )
this.put( temp.content[0], temp.content[1] );
}
public function get( key )
{
for ( temp.content: this.contents )
{
if ( temp.content[0] == key )
return temp.content[1];
}
return null;
}
public function put( key, value )
{
for ( temp.content: this.contents )
{
if ( temp.content[0] == key )
{
temp.content[1] = value;
return;
}
}
this.contents.add( {key, value} );
return;
}
public function removeKey( key )
{
for ( temp.i = 0; temp.i < this.contents.size(); temp.i ++ )
{
temp.content = this.contents[ temp.i ];
if ( temp.content[0] == key )
{
this.contents.delete( temp.i );
return;
}
}
}
public function clearMap()
{
this.contents = "";
}
public function mapSize()
{
return this.contents.size();
}
public function isEmpty()
{
return (this.size() == 0);
}
public function containsKey( key )
{
for ( temp.content: this.contents )
if ( temp.content[0] == key )
return true;
return false;
}
public function containsValue( value )
{
for ( temp.content: this.contents )
if ( temp.content[1] == value )
return true;
return false;
}
public function values()
{
temp.values = new[0];
for ( temp.content: this.contents )
temp.values.add( temp.content[1] );
return temp.values;
}
public function keySet()
{
temp.keys = new[0];
for ( temp.content: this.contents )
temp.keys.add( temp.content[0] );
return temp.keys;
}
public function toArray()
{
return this.contents;
}