Types
[Core]

Classes

class  BigInteger
 Ported from http://www.bouncycastle.org/csharp/index.html. More...
class  Char
 char helper class More...
class  Compare
 Compare's job is to allow template classes to perform search, sorting, and balancing without understanding the types involved. More...
class  Convert
 Helper for Variant and templates to perform automatic type conversion. More...
class  Date
 A date with no time. Most operations involve a single long value, so performance is generally good. More...
class  DateTime
class  Decimal
 Fixed point decimal helper. More...
class  IDelegate
class  Delegate< T >
 C# style delegate with no arguments for call backs by DelegateDispatch. Use in place of implemting call back interfaces to symplify code. DelegateDispatch. More...
class  IDelegateOneParameter< ARG >
class  DelegateOneParameter< T, ARG >
 C# style delegate with one argument for call backs by DelegateDispatch. Use in place of implemting call back interfaces to symplify code. DelegateDispatch. More...
class  IDelegateTwoParameter< ARG1, ARG2 >
class  DelegateTwoParameter< T, ARG1, ARG2 >
 C# style delegate with two arguments for call backs by DelegateDispatch. Use in place of implemting call back interfaces to symplify code. DelegateDispatch. More...
class  IDelegateThreeParameter< ARG1, ARG2, ARG3 >
class  DelegateThreeParameter< T, ARG1, ARG2, ARG3 >
 C# style delegate with three arguments for call backs by DelegateDispatch. Use in place of implemting call back interfaces to symplify code. DelegateDispatch. More...
class  DelegateDispatch
 Dispatcher for C# style delegates with no arguments. Use in place of implemting call back interfaces to symplify code. Delegate. More...
class  DelegateDispatchOneParameter< ARG1 >
 Dispatcher for C# style delegates with one argument. Use in place of implemting call back interfaces to symplify code. DelegateOneParameter. More...
class  DelegateDispatchTwoParameter< ARG1, ARG2 >
 Dispatcher for C# style delegates with two arguments. Use in place of implemting call back interfaces to symplify code. DelegateTwoParameter. More...
class  DelegateDispatchThreeParameter< ARG1, ARG2, ARG3 >
 Dispatcher for C# style delegates with three arguments. Use in place of implemting call back interfaces to symplify code. DelegateThreeParameter. More...
class  Double
 double helper type. More...
class  Guid
 A Globally Unique Identifier. This does not use microsoft's algorithm, but is similiar to type 4 UUID. However, it does not have a '4' in the required position. More...
class  IConvertable
 Implement this interface to make your class compatable with Convert. Convert. More...
class  IIterator< T >
 Each collection type defines a specialized iterator for its contents. More...
class  Image
 Simplistic image data, currently only works with BMP. More...
class  Int32
 32-bit integer helper. More...
class  Int64
 64-bit integer helper. More...
class  IVariant
 The purpose of this class is to allow JsObject to be a variant type, and to allow Variant to be the JsObject's property type. More...
class  Null
 This class is for a Variant type. Variant. More...
class  Numeric
 Base class for all numeric type classes. More...
class  String
 Your friend, the string. More...
class  TriState
struct  WrapType< T >
class  IHashable
 Lets Math return hash codes in an implementation independant way (mostly for Hashtable keys). More...
class  IComparable
 Lets Hashtable (through Math) use pointer keys. Implementors of IComparable assume that the argument is of their type. I.e., arbitrary types cannot be passed to Equals and Compare. More...
class  UInt32
 Unsigned 32-bit integer helper. More...
class  UInt64
 Unsigned 64-bit integer helper. More...
class  Undefined
 For an unset Variant Variant. More...
class  IVariantData
class  _VariantData< T >
class  Variant
 A variant type mostly for use in interpreters for variant languages. More...
class  WeakReference< BASE, BASEPTR >
 Use weak references in place of RefCountPtr's to break circular pointer dependancies. More...

Namespaces

namespace  spl
 

The spl name space is used for some of the stream classes to prevent conflicts with windoze. Perhaps it should be used for the entire library, maybe.


Defines

#define BIGINTEGER_MAJIC   721
#define CHAR_MAJIC   0x0015
#define DATE_MAJIC   0xA011
#define DATETIME_MAJIC   0x41FA
#define DECIMAL_MAJIC   0x1234
#define DOUBLE_MAJIC   0x0014
#define FLOAT_MAJIC   0x1000
#define GUID_SIZE_BYTES   16
#define INT32_MAJIC   0x0010
#define INT64_MAJIC   0x0011
#define NULL_MAJIC   0
#define STRING_MAJIC   0x0001
#define REGISTER_TYPEOF(N, T)
#define REGISTER_TYPEOF2(N, T, T2)
#define type_of(x)   typeof_class<sizeof(*typeof_fct(x))>::V
#define USER_REGISTER_TYPEOF_START   1024
#define foreach(_it_, _collection_)   for(type_of(_collection_)::Iterator _it_ = _collection_.Begin();_it_.Next(); )
 foreach suppport for Array, List, and Vector. To add foreach support for collections of your objects, register your class with the REGISTER_TYPEOF macro.
#define LITTLE_ENDIAN   1
#define false   0
#define true   1
#define IL_MIN_INT32   ((int32)0x80000000)
#define IL_MAX_INT32   ((int32)0x7FFFFFFF)
#define IL_MAX_UINT32   ((uint32)0xFFFFFFFFL)
#define IL_MIN_INT64   ((int64)0x8000000000000000LL)
#define IL_MAX_INT64   ((int64)0x7FFFFFFFFFFFFFFFLL)
#define IL_MAX_UINT64   ((int64)0x7FFFFFFFFFFFFFFFLL)
#define READ_BYTE(buf, offset)   ((int32)(((int8 *)(buf))[(offset)]))
#define READ_BYTE_SHIFT(buf, offset, shift)   (((uint32)(((uint8 *)(buf))[(offset)])) << (shift))
#define BYTE_MAJIC   0x0112
#define BOOL_MAJIC   0x0113
#define INT16_MAJIC   0x0114
#define FLOAT32_MAJIC   0x0115
#define UINT32_MAJIC   0x0012
#define UINT64_MAJIC   0x013
#define UNDEFINED_MAJIC   404

Typedefs

typedef RefCountPtr< BigIntegerBigIntegerPtr
typedef WeakReference
< BigInteger, BigIntegerPtr
BigIntegerRef
typedef RefCountPtr< StringStringPtr
typedef WeakReference< String,
StringPtr
StringRef
typedef signed __int64 int64
typedef unsigned __int64 uint64
typedef signed int int32
typedef signed short int16
typedef __int8 int8
typedef unsigned char byte
typedef unsigned int uint32
typedef unsigned short uint16
typedef unsigned __int8 uint8
typedef float float32
typedef double float64
typedef char bool
typedef RefCountPtr< VariantVariantPtr
typedef WeakReference< Variant,
VariantPtr
VariantRef

Functions

 REGISTER_TYPEOF (550, BigIntegerPtr)
 REGISTER_TYPEOF (552, BigIntegerRef)
void ValidateType (const BigInteger &b)
void ValidateType (BigIntegerPtr b)
 REGISTER_TYPEOF (554, BigInteger)
 REGISTER_TYPEOF (556, Char)
 REGISTER_TYPEOF (558, Date)
void ValidateType (DateTime &dtm)
void ValidateType (DateTime *dtm)
 REGISTER_TYPEOF (559, DateTime)
void ValidateType (Decimal &dec)
void ValidateType (Decimal *dec)
 REGISTER_TYPEOF (560, Decimal)
 REGISTER_TYPEOF (562, Double)
void ValidateType (const Guid &guid)
void ValidateType (Guid *guid)
 REGISTER_TYPEOF (564, Guid)
 REGISTER_TYPEOF (566, Int32)
 REGISTER_TYPEOF (568, Int64)
void ValidateType (const Null &u)
void ValidateType (const Null *u)
 REGISTER_TYPEOF (571, Null)
 REGISTER_TYPEOF (572, StringPtr)
 REGISTER_TYPEOF (574, StringRef)
void ValidateType (const String &s)
String operator+ (const char *cp, const String &str)
bool operator== (const char *cp, const String &str)
 REGISTER_TYPEOF (570, String)
 REGISTER_TYPEOF (588, Vector< String >)
 REGISTER_TYPEOF (589, Array< String >)
 REGISTER_TYPEOF (1, char)
 REGISTER_TYPEOF (2, byte)
 REGISTER_TYPEOF (6, int16)
 REGISTER_TYPEOF (7, uint16)
 REGISTER_TYPEOF (8, long)
 REGISTER_TYPEOF (9, unsigned long)
 REGISTER_TYPEOF (10, int32)
 REGISTER_TYPEOF (11, uint32)
 REGISTER_TYPEOF (12, int64)
 REGISTER_TYPEOF (13, uint64)
 REGISTER_TYPEOF (14, float32)
 REGISTER_TYPEOF (15, float64)
 REGISTER_TYPEOF (17, IHashable)
 REGISTER_TYPEOF (18, IComparable)
void ValidateType (int8 i)
void ValidateType (int16 i)
void ValidateType (int32 i)
void ValidateType (int64 i)
void ValidateType (float32 i)
void ValidateType (float64 i)
void ValidateType (byte i)
void ValidateType (uint16 i)
void ValidateType (uint32 i)
void ValidateType (uint64 i)
 REGISTER_TYPEOF (576, UInt32)
 REGISTER_TYPEOF (578, UInt64)
void ValidateType (const Undefined &u)
void ValidateType (const Undefined *u)
 REGISTER_TYPEOF (580, Undefined)
 REGISTER_TYPEOF (584, VariantPtr)
 REGISTER_TYPEOF (586, VariantRef)
 REGISTER_TYPEOF (606, Array< VariantPtr >)
 REGISTER_TYPEOF (610, Vector< VariantPtr >)
 REGISTER_TYPEOF (582, Variant)
 REGISTER_TYPEOF (600, Array< Variant >)
 REGISTER_TYPEOF (604, Vector< Variant >)

Define Documentation

#define foreach ( _it_,
_collection_   )     for(type_of(_collection_)::Iterator _it_ = _collection_.Begin();_it_.Next(); )

foreach suppport for Array, List, and Vector. To add foreach support for collections of your objects, register your class with the REGISTER_TYPEOF macro.

#include <spl/collection/Hashtable.h>
#include <spl/collection/Vector.h>

class MyClass
{
        // class stuff ...
};

REGISTER_TYPEOF(USER_REGISTER_TYPEOF_START+1,MyClass);
REGISTER_TYPEOF(USER_REGISTER_TYPEOF_START+2,Vector<MyClass>);
REGISTER_TYPEOF2(USER_REGISTER_TYPEOF_START+3,Hashtable<String,MyClass>);

Arary Hashtable List RedBlackTree Vector REGISTER_TYPEOF REGISTER_TYPEOF2

Vector<int> nums();
nums.Add(1);
nums.Add(2);
nums.Add(3);

foreach(i,nums)
{
        printf("%d\n", i.Current());
}

Definition at line 118 of file typeof.h.

#define REGISTER_TYPEOF ( N,
 ) 
Value:
template<> struct typeof_class<N > { typedef WrapType<T >::U V; }; \
    char (*typeof_fct(const WrapType<T >::U &))[N];

Definition at line 41 of file typeof.h.

#define REGISTER_TYPEOF2 ( N,
T,
T2   ) 
Value:
template<> struct typeof_class<N > { typedef WrapType<T,T2 >::U V; }; \
    char (*typeof_fct(const WrapType<T,T2 >::U &))[N];

Definition at line 50 of file typeof.h.


Function Documentation

void ValidateType ( int8  i  )  [inline]

These are used for templates that don't know the types of their args

Definition at line 324 of file types.h.