| Introduction | How to use | ClassLoader | Serialization | Reflection | Attributes | Mechanism |
How to create Metainfo for C++ classes and Scripting ACDK classes, like CfgScript COM objects, etc.
ACDK classes can have multiple levels of Metainfo attached.
For pure ordinary C++ usage of ACDK classes you don't need Metainfo at all:
ACDK_DECL_CLASS(MyClass);
class MyClass
: extends acdk::lang::Object
, implements acdk::lang::Comparable
{
private:
RString _myString;
public:
MyClass()
: _myString("hello")
{}
int compareTo(IN(RObject) other)
{
return 0; // always equal
}
int foo() { return _myString->length(); }
};
// using it
RMyClass myClass = new MyClass();
|
There is no problem with this code. Standard operations, including instanceof
will work.
As long the class does not contain any cyclic reference, the reference count based garbage collector works.
Basic Metainfo attaches additional information to a class:
- Derivation graph (MyClass is derived from Object and implements the Comparable interface)
- Possibility to resolve cyclic reference in garbace collecting.
- Basic ClassLoader ability.
Extended Metainfo enables following features
- Allows to implement C++ interfaces in a scripting language
- Allows to derive C++ classes, including overwriting virtual methods.
To create basic and/or extended Metainfo for a C++ class you have
to put the C++ class definition into a header file (MyClass.h )
and enrich the sample C++ class.
Please refer to DMI Server Objects how a C++ class with Metainfo
looks like, and how generate the Metainfo using acdkmc .
|