UpdatedCellMLAPIIDL

Taken from the <a href="http://www.cellml.org/pipermail/cellml-discussion/2005-March/000046.html">cellml-discussion mailing list message</a> on March 26, 2005.<br> <br> <p>This CellML API is based upon the specification at<a href="apifiles/APIideas.pdf"> apifiles/APIideas.pdf</a> by Matt Halstead.<br> <br> It has the following differences:<br> 1) It is a formulated in IDL instead as in a "more casual approach".<br> 2) The naming of some objects has been changed to better fit into the usual way<br> of doing things in IDL. For example, mixed case is used to separate words in<br> identifiers, instead of underscores. In addition, CellML was appended to a<br> number of names, like Component, to avoid conflicts with IDL reserved words.<br> Some names were also changed because case-insensitive conflicts of attribute<br> and interface names is not allowed in IDL.<br> 3) As required by IDL, a decision about what attributes were readonly and which<br> ones are read-write was made. Furthermore, all methods which take no<br> parameters, return no values, and are not expected to have any side effects<br> were converted to readonly attributes. Attributes referring to a CollectionOf*<br> were all made to be read-only(this doesn't mean you can't do any operations on<br> the collection that modify the collection, it just means you can't switch the<br> connection itself).<br> 4) The collection architecture was changed somewhat to accomodate the need for<br> immutable collections. There are now ConstCollectionOf* and CollectionOf*<br> collections available, related by an inheritance hierarchy. The polymorphic<br> inheritance hierarchy chosen may need further study to ensure it is generally<br> applicable.<br> <br> <br> This version has Doxygen/Javadoc style comments on every interface(except<br> forward definitions), attribute, method, enumeration, and enumeration option.<br> <br> Things which require further work are flagged with @todo. There are a number of<br> these:<br> CellMLAttributeString has two @todo flags, one for whose responsibility escaping<br> is, and another for the underlying IDL datatype to use.<br> <br> The model interface has two @todo flags, one because I removed the model manager<br> as previously agreed in-person with Matt(but not yet reflected in Matt's spec),<br> and this needs further work, and one because the namespace map was removed,<br> again based on what Matt and I agreed on in-person.<br> <br> CellMLImport::fullyInstantiate has a @todo flag to properly define "full<br> instantiation".<br> <br> ImportComponent::componentRef has a @todo flag to define what happens if<br> componentRef is changed after fullyInstantiate() is called.<br> <br> Group has a @todo flag because I don't understand what<br>

Component get_parent_component_name(component name)<br> Component get_children_component_names(component name)<br>

means.<br> <br> Best regards,<br> Andrew<br> <br> <br> </p>

The API specification in IDL: <a href="apifiles/CellML-1.1-API-2005-03-26.idl/file_view">apifiles/CellML-1.1-API-2005-03-26.idl</a>.<br>