Automatic type registering

What is automatic type registering?

CliPP supports automatic registration of types. This means, that when you register eg. a function to CliPP, CliPP will parse the argument list of the function, and try to register these types to CliPP eg. by calling the static init function on the class if applicable.

    //Some function
    int test(const point3& p1,double r,const vector3& v);

    //Register function
    function(c,"test",test);

In the above example, the following procedure is used when registering types:
Register return type:
int  -> native type. Have no means to register this type. Ignore.

Register argument types:
point3 -> class type. Does it inherit from value? If so, call point3::init(c);
double
-> native type. Have no means to register this type. Ignore.
vector3 -> class type. Does it inherit from value? If so, call vector3::init(c);

Of course, the system also checks if the types have been registered already. If so, no action is performed
 

When does it occur?

Automatic type registering is performed in the following contexts:

What types are considered?

Missing

Improvements

This framework can be used to report programming errors, such as missing initialization of types. Since it checks all relevant types exposed to the scripting, it would be easy to generate a list of types that were not registered during initialization of the parser. This list could then be displayed to the programmer. Alas, this feature has not been implemented.