I'm making a derivative of EDIF. It's strictly a derivative because it is not compatible with anything lower than Visual Studio 10, and uses a lot of C++11.
This question is for both regular users and extension developers:
What do you want to see in an extension SDK?
What I am implementing now:
- Multi-linguistic support
The JSON supports multiple languages for all its settings. All the object properties (excluding identifier and dependencies) are contained within a language group. DarkEDIF reads the languages from top-to-bottom and chooses the top one by default.
DarkEDIF otherwise loads a "DarkEDIF.ini" settings file, where it reads the languages, for example someone's whose first language is UK English might look like:
Languages = UK English; US English; French; Spanish
The first language in the edittime properties will be a combo box with the languages, unless MMF2 updates to support it in a function call.
- Name it what it is name
Call something described as a Level Object a LO? Why not call it a LevelObject instead?
All names will be changed to something readable and instinctive. Not something 300 miles long obviously, but abbreviation is unnecessary in most of the current uses.
If the SDK is confusing at any point, it will be commented.
- Efficiency rather than readability
Despite the last point, the focus of this SDK will be on efficiency more than being blatantly obvious. For example, C++ initialiser lists are faster than manual "=" in constructors, so the SDK will use as many of those as possible.
- Object properties within the JSON
Set up your list boxes, editboxes, checkboxes and etc right in the JSON. No more MMF2SDK way of handling it. [Requested by Villy]
- Permits comments in the JSON
Although this is not JSON standard, it is recognisable that many people would find this feature useful. Both single-line and /* multiline phrase */ are supported.
- Minimalist files
The current SDK has all kinds of structs and classes, carried over from Click 'n' Create and such. Well, you can't actually make CNC extensions any more, so those are getting scrapped. If you want them, go back to an older SDK, cause I just went through the SDK header files and my days they are pointlessly bloated.
- Multi-threading support
There is no support for multithreading in the MMF2 libraries. If two threads complete at the same time and you create an event, the expressions will only show the last thread's data. DarkEDIF has an optional memory model that will loop through triggered conditions and ensure the expressions are correctly obtained. By default, this is disabled.
What else do you think would kick ass in an MMF2 extension SDK?