Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changes between Initial Version and Version 1 of code/doc/MultiType


Ignore:
Timestamp:
Sep 22, 2008, 7:45:24 PM (16 years ago)
Author:
landauf
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • code/doc/MultiType

    v1 v1  
     1= MultiType =
     2[[TracNav(TracNav/TOC_Development)]]
     3[[TOC]]
     4
     5== Introduction ==
     6
     7The MultiType is a fancy class, designed to accept values of almost every type and to return exactly this value in almost every other type - depending on your needs. This allows you to assign a string, for example "105.3", to a MultiType and to let the MultiType return 105.3 as a float.
     8
     9But what is this good for? Well, just think of an XML level. You write all values as strings, the [wiki:Loader] loads the level, creates new objects and passes the values to the objects. But how should the Loader know, which type a value has? It just loads a string! Thats why the Loader puts the string into a MultiType and passes it to the new object. The object receives the MultiType and C++ does an implicit conversion to the requested type.
     10
     11== Example ==
     12This is what you got:
     13{{{
     14SomeType value = XXXX; // a value
     15
     16void function(OtherType value); // a function
     17}}}
     18
     19This is what you want:
     20{{{
     21function(value); // call the function with the value
     22}}}
     23
     24This is what you know about SomeType and OtherType:
     25{{{
     26// nothing
     27}}}
     28
     29This is how you're doing it:
     30{{{
     31function(MultiType(value));
     32}}}
     33Isn't it cool? Sure it is!
     34
     35== Usage ==
     36It's important to know the MultiType has some sort of an internal type.
     37
     38
     39== Types ==
     40Of course SomeType and OtherType from the example above can't be anything, otherwise the class would be called AnyType and probably being useless.
     41
     42These are the types supported by MultiType:
     43
     44 * All primitives:
     45  * char
     46  * unsigned char
     47  * short
     48  * unsigned short
     49  * int
     50  * unsigned int
     51  * long
     52  * unsigned long
     53  * long long
     54  * unsigned long long
     55  * float
     56  * double
     57  * long double
     58  * bool
     59 * All pointers (but be careful with inheritance, in fact it's just handled as a void pointer)
     60 * std::string
     61 * Math objects:
     62  * Vector2
     63  * Vector3
     64  * Vector4
     65  * Quaternion
     66  * ColourValue
     67  * Radian
     68  * Degree