001/* ---------------------------------------------------------------------------- 002 * This file was automatically generated by SWIG (http://www.swig.org). 003 * Version 2.0.11 004 * 005 * Do not make changes to this file unless you know what you are doing--modify 006 * the SWIG interface file instead. 007 * ----------------------------------------------------------------------------- */ 008 009package org.sbml.libsbml; 010 011/** 012 * 013 * Implementation of SBML's ListOfUnitDefinitions construct. 014 * <p> 015 * The various ListOf___ classes in SBML are merely containers used for 016 * organizing the main components of an SBML model. All are derived from 017 * the abstract class {@link SBase}, and inherit the various attributes and 018 * subelements of {@link SBase}, such as 'metaid' as and 'annotation'. The 019 * ListOf___ classes do not add any attributes of their own. 020 * <p> 021 * The relationship between the lists and the rest of an SBML model is 022 * illustrated by the following (for SBML Level 2 Version 4): 023 * <p> 024 * <center><img src='listof-illustration.jpg'></center><br> 025 * 026 * <p> 027 * Readers may wonder about the motivations for using the ListOf___ 028 * containers. A simpler approach in XML might be to place the components 029 * all directly at the top level of the model definition. The choice made 030 * in SBML is to group them within XML elements named after 031 * {@link ListOf}<em>Classname</em>, in part because it helps organize the 032 * components. More importantly, the fact that the container classes are 033 * derived from {@link SBase} means that software tools can add information <em>about</em> 034 * the lists themselves into each list container's 'annotation'. 035 * <p> 036 * @see ListOfFunctionDefinitions 037 * @see ListOfUnitDefinitions 038 * @see ListOfCompartmentTypes 039 * @see ListOfSpeciesTypes 040 * @see ListOfCompartments 041 * @see ListOfSpecies 042 * @see ListOfParameters 043 * @see ListOfInitialAssignments 044 * @see ListOfRules 045 * @see ListOfConstraints 046 * @see ListOfReactions 047 * @see ListOfEvents 048 */ 049 050public class ListOfUnitDefinitions extends ListOf { 051 private long swigCPtr; 052 053 protected ListOfUnitDefinitions(long cPtr, boolean cMemoryOwn) 054 { 055 super(libsbmlJNI.ListOfUnitDefinitions_SWIGUpcast(cPtr), cMemoryOwn); 056 swigCPtr = cPtr; 057 } 058 059 protected static long getCPtr(ListOfUnitDefinitions obj) 060 { 061 return (obj == null) ? 0 : obj.swigCPtr; 062 } 063 064 protected static long getCPtrAndDisown (ListOfUnitDefinitions obj) 065 { 066 long ptr = 0; 067 068 if (obj != null) 069 { 070 ptr = obj.swigCPtr; 071 obj.swigCMemOwn = false; 072 } 073 074 return ptr; 075 } 076 077 protected void finalize() { 078 delete(); 079 } 080 081 public synchronized void delete() { 082 if (swigCPtr != 0) { 083 if (swigCMemOwn) { 084 swigCMemOwn = false; 085 libsbmlJNI.delete_ListOfUnitDefinitions(swigCPtr); 086 } 087 swigCPtr = 0; 088 } 089 super.delete(); 090 } 091 092 093/** 094 * Creates a new {@link ListOfUnitDefinitions} object. 095 * <p> 096 * The object is constructed such that it is valid for the given SBML 097 * Level and Version combination. 098 * <p> 099 * @param level the SBML Level 100 * <p> 101 * @param version the Version within the SBML Level 102 */ public 103 ListOfUnitDefinitions(long level, long version) throws org.sbml.libsbml.SBMLConstructorException { 104 this(libsbmlJNI.new_ListOfUnitDefinitions__SWIG_0(level, version), true); 105 } 106 107 108/** 109 * Creates a new {@link ListOfUnitDefinitions} object. 110 * <p> 111 * The object is constructed such that it is valid for the SBML Level and 112 * Version combination determined by the {@link SBMLNamespaces} object in 113 * <code>sbmlns</code>. 114 * <p> 115 * @param sbmlns an {@link SBMLNamespaces} object that is used to determine the 116 * characteristics of the {@link ListOfUnitDefinitions} object to be created. 117 */ public 118 ListOfUnitDefinitions(SBMLNamespaces sbmlns) throws org.sbml.libsbml.SBMLConstructorException { 119 this(libsbmlJNI.new_ListOfUnitDefinitions__SWIG_1(SBMLNamespaces.getCPtr(sbmlns), sbmlns), true); 120 } 121 122 123/** 124 * Creates and returns a deep copy of this {@link ListOfUnitDefinitions} instance. 125 * <p> 126 * @return a (deep) copy of this {@link ListOfUnitDefinitions}. 127 */ public 128 ListOfUnitDefinitions cloneObject() { 129 long cPtr = libsbmlJNI.ListOfUnitDefinitions_cloneObject(swigCPtr, this); 130 return (cPtr == 0) ? null : new ListOfUnitDefinitions(cPtr, true); 131 } 132 133 134/** 135 * Returns the libSBML type code for this SBML object. 136 * <p> 137 * LibSBML attaches an identifying code to every 138 * kind of SBML object. These are known as <em>SBML type codes</em>. In 139 * other languages, the set of type codes is stored in an enumeration; in 140 * the Java language interface for libSBML, the type codes are defined as 141 * static integer constants in the interface class {@link 142 * libsbmlConstants}. The names of the type codes all begin with the 143 * characters <code>SBML_.</code> 144 * <p> 145 * @return the SBML type code for this object, or {@link libsbmlConstants#SBML_UNKNOWN SBML_UNKNOWN} (default). 146 * <p> 147 * @see #getElementName() 148 */ public 149 int getTypeCode() { 150 return libsbmlJNI.ListOfUnitDefinitions_getTypeCode(swigCPtr, this); 151 } 152 153 154/** 155 * Returns the libSBML type code for the objects contained in this {@link ListOf} 156 * (i.e., {@link UnitDefinition} objects, if the list is non-empty). 157 * <p> 158 * LibSBML attaches an identifying code to every 159 * kind of SBML object. These are known as <em>SBML type codes</em>. In 160 * other languages, the set of type codes is stored in an enumeration; in 161 * the Java language interface for libSBML, the type codes are defined as 162 * static integer constants in the interface class {@link 163 * libsbmlConstants}. The names of the type codes all begin with the 164 * characters <code>SBML_.</code> 165 * <p> 166 * @return the SBML type code for the objects contained in this {@link ListOf} 167 * instance, or {@link libsbmlConstants#SBML_UNKNOWN SBML_UNKNOWN} (default). 168 * <p> 169 * @see #getElementName() 170 */ public 171 int getItemTypeCode() { 172 return libsbmlJNI.ListOfUnitDefinitions_getItemTypeCode(swigCPtr, this); 173 } 174 175 176/** 177 * Returns the XML element name of this object. 178 * <p> 179 * For {@link ListOfUnitDefinitions}, the XML element name is 180 * <code>'listOfUnitDefinitions'.</code> 181 * <p> 182 * @return the name of this element, i.e., <code>'listOfUnitDefinitions'.</code> 183 */ public 184 String getElementName() { 185 return libsbmlJNI.ListOfUnitDefinitions_getElementName(swigCPtr, this); 186 } 187 188 189/** 190 * Get a {@link UnitDefinition} from the {@link ListOfUnitDefinitions}. 191 * <p> 192 * @param n the index number of the {@link UnitDefinition} to get. 193 * <p> 194 * @return the nth {@link UnitDefinition} in this {@link ListOfUnitDefinitions}. 195 * <p> 196 * @see #size() 197 */ public 198 UnitDefinition get(long n) { 199 long cPtr = libsbmlJNI.ListOfUnitDefinitions_get__SWIG_0(swigCPtr, this, n); 200 return (cPtr == 0) ? null : new UnitDefinition(cPtr, false); 201 } 202 203 204/** 205 * Get a {@link UnitDefinition} from the {@link ListOfUnitDefinitions} 206 * based on its identifier. 207 * <p> 208 * @param sid a string representing the identifier 209 * of the {@link UnitDefinition} to get. 210 * <p> 211 * @return {@link UnitDefinition} in this {@link ListOfUnitDefinitions} 212 * with the given <code>sid</code> or <code>null</code> if no such 213 * {@link UnitDefinition} exists. 214 * <p> 215 * @see #get(long n) 216 * @see #size() 217 */ public 218 UnitDefinition get(String sid) { 219 long cPtr = libsbmlJNI.ListOfUnitDefinitions_get__SWIG_2(swigCPtr, this, sid); 220 return (cPtr == 0) ? null : new UnitDefinition(cPtr, false); 221 } 222 223 224/** 225 * Returns the first child element found that has the given <code>id</code> in the model-wide SId namespace, or <code>null</code> if no such object is found. Note that UnitDefinitions themselves are in the UnitId namespace, not the SId namespace, so no {@link UnitDefinition} object will be returned from this function (and is the reason we override the base ListOf.getElementBySId function here). 226 * <p> 227 * @param id string representing the id of objects to find 228 * <p> 229 * @return pointer to the first element found with the given <code>id</code>. 230 */ public 231 SBase getElementBySId(String id) { 232 return libsbml.DowncastSBase(libsbmlJNI.ListOfUnitDefinitions_getElementBySId(swigCPtr, this, id), false); 233} 234 235 236/** 237 * Removes the nth item from this {@link ListOfUnitDefinitions} items and returns a pointer to 238 * it. 239 * <p> 240 * The caller owns the returned item and is responsible for deleting it. 241 * <p> 242 * @param n the index of the item to remove 243 * <p> 244 * @see #size() 245 */ public 246 UnitDefinition remove(long n) { 247 long cPtr = libsbmlJNI.ListOfUnitDefinitions_remove__SWIG_0(swigCPtr, this, n); 248 return (cPtr == 0) ? null : new UnitDefinition(cPtr, true); 249 } 250 251 252/** 253 * Removes item in this {@link ListOfUnitDefinitions} items with the given identifier. 254 * <p> 255 * The caller owns the returned item and is responsible for deleting it. 256 * If none of the items in this list have the identifier <code>sid</code>, then 257 * <code>null</code> is returned. 258 * <p> 259 * @param sid the identifier of the item to remove 260 * <p> 261 * @return the item removed. As mentioned above, the caller owns the 262 * returned item. 263 */ public 264 UnitDefinition remove(String sid) { 265 long cPtr = libsbmlJNI.ListOfUnitDefinitions_remove__SWIG_1(swigCPtr, this, sid); 266 return (cPtr == 0) ? null : new UnitDefinition(cPtr, true); 267 } 268 269}