CellML 1.1 API definition
The CellML 1.1 API definition in IDL.
Size 34.7 kB - File type text/x-idlFile contents
/**
* This module contains a description of the CellML Application Programming
* Interface in the language-neutral IDL form.
*/
module cellml_api
{
/* Forward definitions... */
interface RDF;
interface CollectionOfExtensionElements;
interface Model;
interface CollectionOfComponents;
interface CollectionOfGroups;
interface CollectionOfImports;
interface CollectionOfUnits;
interface CollectionOfCellMLAttributeString;
interface CollectionOfConnections;
interface CollectionOfGroups;
interface CollectionOfVariables;
interface CollectionOfMath;
interface CollectionOfImportComponents;
interface CollectionOfImportUnits;
interface CollectionOfUnit;
interface CollectionOfComponentRefs;
interface Units;
interface ConstCollectionOfUnits;
interface ConstCollectionOfCellMLAttributeString;
interface ConstCollectionOfComponents;
interface ConstCollectionOfGroups;
interface ConstCollectionOfConnections;
interface CollectionOfMapVariables;
interface Group;
interface CollectionOfRelationshipRefs;
interface RateVariableRef;
interface CollectionOfReactantVariableRefElements;
interface CollectionOfProductVariableRefElements;
interface MapComponents;
interface ReactantRole;
/**
* This holds attribute values for the XML attributes of elements in
* serialised CellML. Character data in XML can be any Unicode character;
* the sequence of characters must conform to the rules of XML character data
* (which define escaping of reserved characters etc).
* @see http://www.w3.org/TR/REC-xml/#syntax
* @todo How much escaping is done by the application and how much by the API?
* @todo Perhaps not use wstring(W3C doesn't, it is a wide-string but doesn't
* expsay Unicode).
*/
typedef wstring CellMLAttributeString;
/**
* This interface is a place-holder in this IDL, in the DOM-based API
* implementations it would refer to the MathML DOM.
*/
interface MathMLElement
{
};
/**
* This interface is a place-holder in this IDL, it could refer to some sort
* of RDF interface in certain implementations.
*/
interface RDF
{
};
/**
* This interface can be inherited from by the user for use in annotations.
*/
interface UserData
{
};
/**
* Indicates that something went wrong. Implementations are free to add more
* attributes to this, but to support all implementations, these are not
* required.
*/
exception CellMLException{};
/**
* Represents a uniform resource indicator, conforming to RFC2396
* (http://rfc.net/rfc2396.html)
*/
interface URI
{
/**
* A representation of this string as text.
*/
attribute string asText;
};
/**
* This is a general interface from which all CellML elements inherit.
*/
interface CellMLElement
{
/**
* The CellML version that this element corresponds to.
* Can be the string "1.0" or "1.1".
* Raises a CellMLException if set to an invalid string.
* Other values are reserved for future use.
*/
attribute CellMLAttributeString cellmlVersion;
/**
* This element's cmeta id(which may be defined on any CellML element)
*/
attribute CellMLAttributeString cmetaId;
/**
* The RDF metadata associated with this element. An element must have a
* cmeta:id for any RDF to be able to refer to it.
*/
attribute RDF rdfMetadata;
/**
* The collection of extension elements associated with this CellML
* element.
*/
readonly attribute CollectionOfExtensionElements extensionElements;
/**
* Perform validation according to the validation requirements
* specification. Some validation only makes sense once entire model is
* loaded.
*/
boolean validate();
/**
* The parent element of this model...
*/
readonly attribute CellMLElement parentElement;
/**
* The underlying model element.
*/
readonly attribute Model modelElement;
/**
* Sets user-supplied annotations on this element. These annotations are
* never read from an XML file or written out, but are for the application
* to use for any purpose it likes.
* Implementations in languages in which the ability to do this on any
* object is built in may choose not to implement this.
* If the key already exists, then the existing user-data should be removed
* and the new user-data added.
* @param key A string to identify the annotation.
* @param data The data to set, or null to clear the UserData for a key.
*/
void setUserData(in string key, in UserData data);
/**
* Retrieves user-supplied annotations previously set on this element.
* @param key A string to identify the annotation.
* @return The user-data associated with the key.
* @raises CellMLException if no UserData is set for the given key.
*/
UserData getUserData(in string key) raises(CellMLException);
};
/**
* This is a general interface from which all CellML elements which have a
* name attribute inherit.
*/
interface NamedCellMLElement
: CellMLElement
{
/**
* The name associated with this CellML element.
*/
attribute CellMLAttributeString name;
};
/**
* An extension object is a user defined representation of data in an
* extension namespace. In CellML/XML, a user is free to add other data
* elements that do not conform to CellML names or rules, so long as they are
* defined in another namespace. It is up to the application developer to
* handle the creation of extension objects, which usually means interacting
* with the XML parser to trigger the correct methods.
*/
interface ExtensionElement
{
};
/**
* This interface represents a <model> element in the XML.
*/
interface Model
: NamedCellMLElement
{
/** @todo model manager removed from here as previously discussed, but need to
* determine alternative strategy for accessing the model manager.
*/
/**
* The collection of groups described in this model document.
*/
readonly attribute CollectionOfGroups groups;
/**
* The collection of imports described in this model document.
*/
readonly attribute CollectionOfImports imports;
/**
* @todo namespace map removed from here are previously discussed, but we
* need to decide where to put it.
*/
/**
* Models should really set an 'xml:base' attribute in the model element as
* we need to be able to unambiguously and uniquely reference a model
* independent of its location. If this is not set, the base_uri could be
* set to the URI used to obtain it.
*/
attribute URI base_uri;
/**
* The collection of units defined within this model.
*/
readonly attribute CollectionOfUnits localUnits;
/**
* The collection of units, including those from imports(if imports have
* been fully instantiated).
*/
readonly attribute ConstCollectionOfUnits units;
/**
* Returns names of all units visible at the model level. This does not
* include units declared in components, but will include units declared
* in imports. This interface has the benefit of always including imported
* units, whereas the units interface does not.
*/
readonly attribute ConstCollectionOfCellMLAttributeString unitsNames;
/**
* Returns a collection of all components which are defined in this model.
*/
readonly attribute CollectionOfComponents localComponents;
/**
* returns all components with interface 'CellMLComponent' in the model.
* If imports have been fully instantiated then it includes these too.
*/
readonly attribute ConstCollectionOfComponents components;
/**
* returns names of all components declared in the model, including those
* declared in the import structures.
*/
readonly attribute ConstCollectionOfCellMLAttributeString componentNames;
/**
* Model connections. If any imports have been fully instantiated, then it
* includes connections relevant to those also.
* Adding or removing from this collection must always add the connection
* to the correct model.
*/
readonly attribute CollectionOfConnections connections;
/**
* The following also searches user-defined relationships.
* @param name The name of the relationship to search for.
*/
ConstCollectionOfGroups findGroupsWithRelationshipRefName
(
in CellMLAttributeString name
);
/**
* This fully instantiates the import definitions
*/
void fullyInstantiateImports();
/**
* Return a flattened model, i.e. all imported component trees are promoted
* to model level and import objects are removed.
* @return The flattened model.
*/
Model generateFlattenedModel();
};
/**
* This interface represents a component element in the CellML document.
*/
interface CellMLComponent
: NamedCellMLElement
{
/**
* The set of all variables defined in this component.
*/
readonly attribute CollectionOfVariables variables;
/**
* The set of all units defined in this component.
*/
readonly attribute CollectionOfUnits units;
/**
* The set of all math defined in this component.
*/
readonly attribute CollectionOfMath math;
/**
* The set of all connections which involve this component.
*/
readonly attribute ConstCollectionOfConnections connections;
/**
* The component which, in the encapsulation hierarchy defined in this
* model, encapsulates this component. When this component is
* an imported component, an implementation must return
* any encapsulation parent defined in the importing model.
* When the same component is imported twice under different
* names, the implementation must return the correct encapsulation
* parent for each component instance.
* This attribute is null if there is no encapsulation parent.
*/
readonly attribute CellMLComponent encapsulationParent;
/**
* The set of all children of this component.
*/
readonly attribute CollectionOfComponents encapsulationChildren;
/**
* The containment parent for this component. This must work correctly
* across imports if imports have been instantiated.
*/
readonly attribute CellMLComponent containmentParent;
/**
* The containment parent for this component. This must work correctly
* across imports if imports have been instantiated.
*/
readonly attribute CollectionOfComponents containmentChildren;
};
interface Units
: NamedCellMLElement
{
/**
* True if this set of units is base units, or false otherwise.
*/
attribute boolean isBaseUnits;
/**
* A collection of all the <unit> elements making up this <units> element.
*/
readonly attribute CollectionOfUnit unitCollection;
};
/**
* Interface to a <unit> element.
*/
interface Unit
: CellMLElement
{
/**
* The value of the prefix attribute in the unit element. This is
* automatically converted to or from the text name of the SI prefix when
* converting to a DOM view.
*/
attribute long prefix;
/**
* The value of the multiplier attribute in the unit element.
*/
attribute double multiplier;
/**
* The value of the offset attribute in the unit element.
*/
attribute double offset;
/**
* The value of the exponent attribute in unit element.
*/
attribute double exponent;
/**
* The name of the units attribute.
*/
attribute CellMLAttributeString units;
};
/**
* This interface represents a CellML import element.
*/
interface CellMLImport
: CellMLElement
{
/**
* The URI in the xlink:href attribute.
*/
attribute URI xlinkHref;
/**
* The collection of all <component> elements inside this element.
*/
readonly attribute CollectionOfImportComponents components;
/**
* The collection of all <units> elements inside this element.
*/
readonly attribute CollectionOfImportUnits units;
/**
* The collection of all connections defined in the import or in components
* which are imported by the import(and so on) and which involve only
* the imported component or other components beneath the same imported
* component in the encapsulation hierarchy.
*/
readonly attribute CollectionOfConnections importedConnections;
/**
* Fully instantiate the import.
* @todo Definition of full instantiation.
*/
void fullyInstantiate();
/**
* Returns true if fullyInstantiate has previously been called on this
* import, or false otherwise.
*/
readonly attribute boolean wasFullyInstantiated;
};
/**
* This interface represents a <component> element inside an <import>
* element.
*/
interface ImportComponent
: CellMLComponent
{
/**
* The name of the component referenced by this import component.
* @todo what happens if this is changed after fullyInstantiate()?
*/
attribute CellMLAttributeString componentRef;
/**
* Fully instantiate the import.
* @todo Definition of full instantiation.
*/
void fullyInstantiate();
/**
* Returns true if fullyInstantiate has previously been called on this
* import, or false otherwise.
*/
readonly attribute boolean wasFullyInstantiated;
};
/**
* This interface represents a <units> found in <import>
*/
interface ImportUnits
: Units
{
/**
* The name of the units referenced by this import component.
* @todo what happens if this is changed after fullyInstantiate()?
*/
attribute CellMLAttributeString unitsRef;
/**
* Fully instantiate the import.
* @todo Definition of full instantiation.
*/
void fullyInstantiate();
/**
* Returns true if fullyInstantiate has previously been called on this
* import, or false otherwise.
*/
readonly attribute boolean wasFullyInstantiated;
};
/**
* An enumeration representing the direction of the variable interface.
*/
enum VariableInterface
{
/**
* The interface is in.
*/
INTERFACE_IN,
/**
* The interface is out.
*/
INTERFACE_OUT,
/**
* No interface is defined.
*/
INTERFACE_NONE
};
/**
* Represents a <variable> element in a CellML document.
*/
interface CellMLVariable
: CellMLElement
{
/**
* The initial value of this variable.
*/
attribute CellMLAttributeString initialValue;
/**
* The private interface direction of this variable.
*/
attribute VariableInterface privateInterface;
/**
* The public interface direction of this variable.
*/
attribute VariableInterface publicInterface;
/**
* The collection of all variables connected to this variable.
*/
readonly attribute CollectionOfVariables connectedVariables;
/**
* The source variable is always a variable on which f(v) holds, and is
* this variable, or a variable which is(directly or indirectly) connected
* to this variable. If no such variable exists, sourceVariable is null.
* This must work correctly across import boundaries, if those imports
* have been fully instantiated.
* f(v) is defined as meaning
* (v.public_interface == INTERFACE_OUT ||
* v.public_interface == INTERFACE_NONE) &&
* (v.private_interface == INTERFACE_OUT ||
* v.private_interface == INTERFACE_NONE)
*
*/
readonly attribute CellMLVariable sourceVariable;
};
/**
* Represents a <component_ref> element in a group element or in another
* <component_ref> element.
*/
interface ComponentRef
: CellMLElement
{
/**
* The name of the component being referenced.
*/
attribute CellMLAttributeString componentName;
/**
* A collection of component references which are beneath this one in the
* group tree.
*/
readonly attribute CollectionOfComponentRefs componentRefs;
/**
* The parent component reference, or null if this is the toplevel
* component reference.
*/
readonly attribute ComponentRef parentComponentRef;
/**
* Thie parent group in which the component reference is found.
*/
readonly attribute Group parentGroup;
};
/**
* Represents a relationship_ref element in a group element.
*/
interface RelationshipRef
: CellMLElement
{
/**
* The name of this relationship_ref, or the empty string if no such name
* is defined.
*/
attribute CellMLAttributeString name;
/**
* The name of the relationship referenced by this element.
*/
attribute CellMLAttributeString relationship;
/**
* The namespace in which the relationship attribute belongs.
*/
attribute URI relationship_namespace;
};
/**
* Represents a <group> element.
*/
interface Group
{
/**
* The collection of relationship references.
*/
attribute CollectionOfRelationshipRefs relationshipRefs;
/**
* The collection of component references.
*/
attribute CollectionOfComponentRefs componentRefs;
/**
* @todo Find out what Matt meant by the following
Component get_parent_component_name(component name)
Component get_children_component_names(component name)
*/
/**
* True if this is an encapsulation relationship
* (with relationship on relationship_ref in the CellML namespace)
* and false otherwise.
*/
readonly attribute boolean isEncapsulation;
/**
* True if this is a containment relationship
* (with relationship on relationship_ref in the CellML namespace)
* and false otherwise.
*/
readonly attribute boolean isContainment;
};
/**
* Represents a <connection> element.
*/
interface Connection
: CellMLElement
{
/**
* The map_components element in this connection.
*/
readonly attribute MapComponents componentMapping;
/**
* A collection of the map_variables elements in this connection.
*/
readonly attribute CollectionOfMapVariables variableMappings;
};
/**
* An interface the map_components element.
*/
interface MapComponents
: CellMLElement
{
/**
* The name of the first component.
*/
attribute CellMLAttributeString firstComponentName;
/**
* The name of the second component.
*/
attribute CellMLAttributeString secondComponentName;
/**
* The first component.
*/
readonly attribute CellMLComponent firstComponent;
/**
* The second component.
*/
readonly attribute CellMLComponent secondComponent;
};
/**
* An interface the map_variables element.
*/
interface MapVariables
: CellMLElement
{
/**
* The name of the first variable.
*/
attribute CellMLAttributeString firstVariableName;
/**
* The name of the second variable.
*/
attribute CellMLAttributeString secondVariableName;
/**
* The first variable.
*/
readonly attribute CellMLVariable firstVariable;
/**
* The second variable.
*/
readonly attribute CellMLVariable secondVariable;
};
/**
* An interface to a <reaction> element.
*/
interface Reaction
: CellMLElement
{
/**
* A collection of all the reactants involved in this reaction.
*/
readonly attribute CollectionOfReactantVariableRefElements reactants;
/**
* A collection of all the products for this reaction.
*/
readonly attribute CollectionOfProductVariableRefElements products;
/**
* A reference to the rate variable.
*/
readonly attribute RateVariableRef rate;
};
/**
* An interface to any type of variable reference.
*/
interface VariableRef
: CellMLElement
{
/**
* The variable being referenced.
*/
readonly attribute CellMLVariable variable;
/**
* A string representing the type of variable reference.
* "reactant" if this is a reference to a variable with the reactant role.
* "product" if this is a reference to a variable with the product role.
* "rate" if this is a reference to a variable with the rate role.
*/
readonly attribute string refType;
};
/**
* An interface to a reactant variable reference.
*/
interface ReactantVariableRef
: VariableRef
{
attribute ReactantRole role;
};
interface ProductRole;
/*
* An interface to a reactant variable reference.
*/
interface ProductVariableRef
: VariableRef
{
attribute ProductRole role;
};
interface RateRole;
/**
* An interface to a rate variable reference.
*/
interface RateVariableRef
: VariableRef
{
attribute RateRole role;
};
/**
* An interface to any type of role.
*/
interface Role
: CellMLElement
{
/**
* A string representing the type of role.
* "reactant" if this is a reactant role.
* "product" if this is a product role.
* "rate" if this is a rate role.
*/
readonly attribute string roleType;
};
/**
* An interface to a reactant role.
*/
interface ReactantRole
: Role
{
};
/**
* An interface to a product role.
*/
interface ProductRole
: Role
{
};
/**
* An interface to a rate role.
*/
interface RateRole
: Role
{
/**
* A collection of maths which applies to this rate role.
*/
readonly attribute CollectionOfMath maths;
};
/**
* An interface allowing CellMLElements to be iterated.
*/
interface CellMLElementIterator
{
/**
* Fetches the next CellML element, and advances the iterator.
* @return The next CellML element, or null if there are no more CellML
* elements.
*/
CellMLElement next();
};
/**
* An interface allowing MathMLElements to be iterated.
*/
interface MathMLElementIterator
{
/**
* Fetches the next MathML element, and advances the iterator.
* @return The next MathML element, or null if there are no more MathML
* elements.
*/
MathMLElement next();
};
/**
* An interface allowing CellMLAttributeStrings to be iterated.
*/
interface CellMLAttributeStringIterator
{
/**
* Fetches the next CellML attribute string, and advances the iterator.
* @return The next CellML attribute string, or null if there are no more
* CellML attribute strings.
*/
CellMLAttributeString next();
};
/**
* A collection of extension elements.
*/
interface CollectionOfExtensionElements
{
/**
* The length of the collection.
*/
readonly attribute unsigned long length;
/**
* Tests for the existance of an element in the set.
* @param x The element to test for.
* @return true if the element is present, or false otherwise.
*/
boolean contains(in ExtensionElement x);
/**
* Finds the index of the given extension element.
* @param x The extension element to find.
* @return The index(first is 0) of the extension element, or -1 if the
* element is not found.
*/
long getIndexOf(in ExtensionElement x);
/**
* Fetches the extension element at a certain index(starting from 0).
* @param index The index at which to fetch the extension element.
*/
ExtensionElement getAt(in unsigned long index);
/**
* Insert an element into this collection without disturbing the order of
* the existing elements.
* @param index The new index(indices start at 0) that the inserted element
* will have. Must be in the range [0, length]
* @param x The element to insert.
*/
void insertAt(in unsigned long index, in ExtensionElement x);
/**
* Equivalent to insertAt(length, x)
* @param x The element to append.
*/
void append(in ExtensionElement x);
/**
* Equivalent to insertAt(0, x)
* @param x The element to prepend.
*/
void prepend(in ExtensionElement x);
/**
* Remove an element from this collection. If the element is not found,
* do nothing.
* @param x The element to remove.
*/
void remove(in ExtensionElement x);
/**
* Find an element in this collection, and if it is found, replace it
* with another element.
* @param x The element to find.
* @param y The element to replace x with.
*/
void replace(in ExtensionElement x, in ExtensionElement y);
/**
* Remove all elements in this collection.
*/
void clear();
};
/**
* A collection of math.
*/
interface CollectionOfMath
{
/**
* The length of the collection.
*/
readonly attribute unsigned long length;
/**
* Tests for the existance of an element in the set.
* @param x The element to test for.
* @return true if the element is present, or false otherwise.
*/
boolean contains(in MathMLElement x);
/**
* Returns a CellMLElementIterator that can be used to iterate through the
* elements. The iteration order is undefined.
*/
MathMLElementIterator iterate();
/**
* Add an element to this collection.
* @param x The element to add.
*/
void add(in MathMLElement x);
/**
* Remove an element from this collection. If the element is not found,
* do nothing.
* @param x The element to remove.
*/
void remove(in MathMLElement x);
/**
* Find an element in this collection, and if it is found, replace it
* with another element.
* @param x The element to find.
* @param y The element to replace x with.
* @raises CellMLException If y is not valid according to the constraints
* on this collection(check optional).
*/
void replace(in MathMLElement x, in MathMLElement y);
/**
* Remove all elements in this collection.
*/
void clear();
};
/**
* An immutable collection of CellML attribute strings.
*/
interface ConstCollectionOfCellMLAttributeString
{
/**
* The length of the collection.
*/
readonly attribute unsigned long length;
/**
* Tests for the existance of a string in the set.
* @param x The string to test for.
* @return true if the string is present, or false otherwise.
*/
boolean contains(in CellMLAttributeString x);
/**
* Returns a CellMLAttributeStringIterator that can be used to iterate
* through the strings. The iteration order is undefined.
*/
CellMLAttributeStringIterator iterate();
};
/**
* A collection of CellML attribute strings.
*/
interface CollectionOfCellMLAttributeString
: ConstCollectionOfCellMLAttributeString
{
/**
* Add a string to this collection.
* @param x The string to add.
*/
void add(in CellMLAttributeString x);
/**
* Remove a string from this collection. If the string is not found,
* do nothing.
* @param x The string to remove.
*/
void remove(in CellMLAttributeString x);
/**
* Find a string in this collection, and if it is found, replace it
* with another string.
* @param x The string to find.
* @param y The string to replace x with.
*/
void replace(in CellMLAttributeString x, in CellMLAttributeString y);
/**
* Remove all strings in this collection.
*/
void clear();
};
/**
* An immutable collection of CellML elements.
*/
interface ConstCollectionOfCellMLElements
{
/**
* The length of the collection.
*/
readonly attribute unsigned long length;
/**
* Tests for the existance of an element in the set.
* @param x The element to test for.
* @return true if the element is present, or false otherwise.
*/
boolean contains(in CellMLElement x);
/**
* Returns a CellMLElementIterator that can be used to iterate through the
* elements. The iteration order is undefined.
*/
CellMLElementIterator iterate();
};
/**
* An interface for modifying a collection of CellML elements.
*/
interface ModifyCollectionOfCellMLElements
{
/**
* Add an element to this collection.
* @param x The element to add.
* @raises CellMLException If x is not valid according to the constraints
* on this collection(check optional).
*/
void add(in CellMLElement x)
raises(CellMLException);
/**
* Remove an element from this collection. If the element is not found,
* do nothing.
* @param x The element to remove.
*/
void remove(in CellMLElement x);
/**
* Find an element in this collection, and if it is found, replace it
* with another element.
* @param x The element to find.
* @param y The element to replace x with.
* @raises CellMLException If y is not valid according to the constraints
* on this collection(check optional).
*/
void replace(in CellMLElement x, in CellMLElement y)
raises(CellMLException);
/**
* Remove all elements in this collection.
*/
void clear();
};
/**
* An interface for viewing or modifying a collection of CellML elements.
*/
interface CollectionOfCellMLElements
: ConstCollectionOfCellMLElements, ModifyCollectionOfCellMLElements
{
};
/**
* An interface for accessing a collection of NamedCellMLElements. It is
* an error if any element in this collection does not inherit from
* NamedCellMLElement.
*/
interface ConstCollectionOfNamedCellMLElements
: ConstCollectionOfCellMLElements
{
/**
* Fetch a NamedCellMLElement by name.
* @param name The name of the element
* @return The element, or null if not found.
*/
NamedCellMLElement get(in CellMLAttributeString name);
};
/**
* An interface for modifying a collection of NamedCellMLElements. It is an
* error if any element in this collection does not inherit from
* NamedCellMLElement.
*/
interface ModifyCollectionOfNamedCellMLElements
: ModifyCollectionOfCellMLElements
{
/**
* Remove a CellML element by name, or do nothing if that element is not
* found.
* @param name The name to remove.
*/
void removeByName(in CellMLAttributeString name);
};
/**
* An interface for accessing or modifying a collection of
* NamedCellMLElements.
*/
interface CollectionOfNamedCellMLElements
: CollectionOfCellMLElements,
ConstCollectionOfNamedCellMLElements,
ModifyCollectionOfNamedCellMLElements
{
};
/**
* An interface for accessing a collection of models.
*/
interface ConstCollectionOfModels
: ConstCollectionOfNamedCellMLElements
{
};
/**
* An interface for accessing or modifying a collection of models.
*/
interface CollectionOfModels
: CollectionOfNamedCellMLElements
{
};
/**
* An interface for accessing or modifying a collection of components.
*/
interface CollectionOfComponents
: CollectionOfNamedCellMLElements
{
};
/**
* An interface for accessing a collection of components.
*/
interface ConstCollectionOfComponents
: ConstCollectionOfNamedCellMLElements
{
};
/**
* An interface for accessing or modifying a collection of <import>
* components.
*/
interface CollectionOfImportComponents
: CollectionOfComponents
{
};
/**
* An interface for accessing or modifying a collection of variables.
*/
interface CollectionOfVariables
: CollectionOfNamedCellMLElements
{
};
/**
* An interface for accessing a collection of units.
*/
interface ConstCollectionOfUnits
: ConstCollectionOfNamedCellMLElements
{
};
/**
* An interface for accessing or modifying a collection of units.
*/
interface CollectionOfUnits
: CollectionOfNamedCellMLElements
{
};
/**
* An interface for accessing or modifying a collection of import units.
*/
interface CollectionOfImportUnits
: CollectionOfUnits
{
};
/**
* An interface for accessing or modifying a collection of imports.
*/
interface CollectionOfImports
: CollectionOfCellMLElements
{
};
/**
* An interface for accessing or modifying a collection of unit elements.
*/
interface CollectionOfUnit
: CollectionOfCellMLElements
{
};
/**
* An interface for accessing a collection of connections.
*/
interface ConstCollectionOfConnections
: ConstCollectionOfCellMLElements
{
/**
* Fetch a subset collection containing only those connections involving
* the named component.
* @param compName The component to restrict this to.
*/
ConstCollectionOfConnections
getSubsetInvolvingComponent(in CellMLAttributeString compName);
};
/**
* An interface for accessing or modifying a collection of connections.
*/
interface CollectionOfConnections
: CollectionOfCellMLElements, ConstCollectionOfConnections
{
};
/**
* An interface for accessing a collection of groups.
*/
interface ConstCollectionOfGroups
{
/**
* Fetch a subset collection containing only those connections involving
* the named relationship.
* @param relName The relationship to restrict this to.
*/
ConstCollectionOfConnections
getSubsetInvolvingRelationship(in CellMLAttributeString relName);
/**
* The subset of all connections in this collection involving
* encapsulation.
*/
readonly attribute ConstCollectionOfConnections subsetInvolvingEncapsulation;
/**
* The subset of all connections in this collection involving
* containment.
*/
readonly attribute ConstCollectionOfConnections subsetInvolvingContainment;
};
/**
* An interface for accessing or modifying a collection of groups.
*/
interface CollectionOfGroups
: ConstCollectionOfGroups, CollectionOfCellMLElements
{
};
/**
* An interface for accessing or modifying a collection of relationship refs.
*/
interface CollectionOfRelationshipRefs
: CollectionOfCellMLElements
{
};
/**
* An interface for accessing or modifying a collection of component refs.
*/
interface CollectionOfComponentRefs
: CollectionOfCellMLElements
{
};
/**
* An interface for accessing or modifiying a collection of map_variables.
*/
interface CollectionOfMapVariables
: CollectionOfCellMLElements
{
};
/**
* An interface for accessing or modifying a collection of reactant variable
* refs.
*/
interface CollectionOfReactantVariableRefElements
: CollectionOfCellMLElements
{
};
/**
* An interface for accessing or modifying a collection of product variable
* refs.
*/
interface CollectionOfProductVariableRefElements
: CollectionOfCellMLElements
{
};
};
