[nebulastudio-discuss] XML descriptions of Nebula classes to provide better wrappers and editor integration

Vadim Macagon vadim at steelronin.com
Wed May 5 02:41:00 PDT 2004

Bruce Mitchener wrote:
> Hello everyone,
> Currently, nwrapper looks at the data present in nClass and nCmdProto to 
> generate wrappers.  This gives it access to:
>    * class names
>    * class hierarchy information
>    * script method names, currently all lowercase.

Except for nOpende :)

>    * script method arg information:
>       * basic type of each arg, but without semantic information
>         (so, vector4, not 'color')
> And that's really about it.
> We could use having a much richer data representation for generating 
> richer and higher quality bindings, especially if we go further and want 
> the bindings to contain documentation to fit into their environment, etc.
> A rough shot at the information that I'd like to see:
>    * Class names
>    * Class hierarchy information
>    * Class documentation, from script docs rather than the
>      C++ docs.
>    * Which package/target the class is in (kernel, scene, nmap, etc)
>    * Script methods of the object:
>       * Script method names with Nebula-style proper capitalization so
>         that a wrapper can modify capitalization to match the target
>         language.
>       * Script method documentation
>       * Script method arg information:
>          * Basic type of each arg (as before)
>          * Name of each arg
>          * Semantic type of arg (color, etc.).
>    * Properties of the object:
>       * Name of the property
>       * Documentation on the property
>       * Name of the getter/setter methods (and therefore if it is
>         read-only (no setter)).
>       * Basic type of the property (int, float, vector4, etc)
>       * Semantic type of the property (color, etc). These would be
>         used by NebulaStudio to determine which potential editors
>         to use on the value.

Well didn't pay much attention, time is scarce atm, but I probably agree 
with the above.

> What else might we want to see?

I'll give it some thought later :)

> Is there a good XML format that already exists for encoding this sort of 
> information about an object system that we can/should use?
> This ends up bringing up a couple of other questions:
>    * Should we eventually use this information to generate the _cmds.cc
>      files rather than have duplicated data?

Yes. I've thought about using XML for the next generation of a class 
builder. The problem is since the XML is an intermidiate format where do 
we store the C++ code that actually implements the script commands? 
Generating empty shells isn't going to be good enough since that's what 
the existing class builder does and when you want to add a new script 
command later on it's the same old copy pasting again. Could the C++ 
code be stored in the XML?

>    * Should we move docs out of the _cmds.cc files in favor of putting
>      it here and letting autodoc.py use this information?

Err, well if we start using XML could store the docs anywhere... 
actually the same stuff as I said about for the C++ code applies to the docs

> We'll also need to determine how we want to make this information 
> available to Nebula Studio.  I suspect that it would be just fine for it 
> to load the XML files and maintain its own representations rather than 
> requiring that a wrapper make it all available at runtime (with the 
> subsequent costs and overheads).
> This will probably also provide the encouragement that we appear to need 
> to merge the tinyxml library into CVS as Radon Labs has done.
>  - Bruce

More information about the nebulastudio-discuss mailing list