001/* ----------------------------------------------------------------------------
002 * This file was automatically generated by SWIG (http://www.swig.org).
003 * Version 3.0.12
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 * abstract base class for linear and radial gradients
013 <p>
014 * The base class implements common structures to both gradient classes.
015 * Both gradients have an id attribute which is used to reference a gradient
016 * within other render extension constructs. The id of a gradient can be used
017 * to define the fill style of 2D objects like e.g. rectangles.
018 <p>
019 * Further both gradient classes have a ListOfGradientStop objects which holds
020 * the {@link GradientStop} objects that define the gradient and bothe classes have an 
021 * attribute called spreadMethod which defines how a gradient is applied to an
022 * object.
023 */
024
025public class GradientBase extends SBase {
026   private long swigCPtr;
027
028   protected GradientBase(long cPtr, boolean cMemoryOwn)
029   {
030     super(libsbmlJNI.GradientBase_SWIGUpcast(cPtr), cMemoryOwn);
031     swigCPtr = cPtr;
032   }
033
034   protected static long getCPtr(GradientBase obj)
035   {
036     return (obj == null) ? 0 : obj.swigCPtr;
037   }
038
039   protected static long getCPtrAndDisown (GradientBase obj)
040   {
041     long ptr = 0;
042
043     if (obj != null)
044     {
045       ptr             = obj.swigCPtr;
046       obj.swigCMemOwn = false;
047     }
048
049     return ptr;
050   }
051
052  protected void finalize() {
053    delete();
054  }
055
056  public synchronized void delete() {
057    if (swigCPtr != 0) {
058      if (swigCMemOwn) {
059        swigCMemOwn = false;
060        libsbmlJNI.delete_GradientBase(swigCPtr);
061      }
062      swigCPtr = 0;
063    }
064    super.delete();
065  }
066
067  
068/**
069   * Returns the spreadmethod of the gradient.
070   * Valid values are GradientBase.PAD, GradientBase.REFLECT
071   * and GradientBase.REPEAT.
072   <p>
073   * @return the spread method for the gradient object.
074   */ public
075 int getSpreadMethod() {
076    return libsbmlJNI.GradientBase_getSpreadMethod(swigCPtr, this);
077  }
078
079  
080/**
081   * Sets the spread method.
082   * Valid values are GradientBase.PAD, GradientBase.REFLECT
083   * and GradientBase.REPEAT.
084   <p>
085   * @param method The new spread method for the gradient.
086   */ public
087 void setSpreadMethod(int method) {
088    libsbmlJNI.GradientBase_setSpreadMethod(swigCPtr, this, method);
089  }
090
091  
092/**
093   * Returns the number of gradient stops.
094   * A valid gradient needs at least two gradient stops
095   <p>
096   * @return the number of gradient stops in the gradient.
097   */ public
098 long getNumGradientStops() {
099    return libsbmlJNI.GradientBase_getNumGradientStops(swigCPtr, this);
100  }
101
102  
103/**
104   * Returns a pointer to the gradient stop vector.
105   <p>
106   * @return a pointer to the {@link ListOfGradientStops} object
107   * for the gradient.
108   */ public
109 ListOfGradientStops getListOfGradientStops() {
110    long cPtr = libsbmlJNI.GradientBase_getListOfGradientStops__SWIG_0(swigCPtr, this);
111    return (cPtr == 0) ? null : new ListOfGradientStops(cPtr, false);
112  }
113
114  
115/**
116   * Returns a pointer to the gradient stop with the given index or null
117   * if the index is invalid.
118   <p>
119   * @param i index of the gradient stop to be returned. The index has to be between 0 and
120   * getNumGradientStops() - 1.
121   <p>
122   * @return a pointer to the gradient stop with the given index
123   * or null if the index was out of bounds.
124   */ public
125 GradientStop getGradientStop(long i) {
126    long cPtr = libsbmlJNI.GradientBase_getGradientStop__SWIG_0(swigCPtr, this, i);
127    return (cPtr == 0) ? null : new GradientStop(cPtr, false);
128  }
129
130  
131/**
132   * Creates a new {@link GradientStop}. The new {@link GradientStop} object is automatically
133   * added to the gradient and the gradient own the object-
134   <p>
135   * @return a pointer to the newly created {@link GradientStop}.
136   */ public
137 GradientStop createGradientStop() {
138    long cPtr = libsbmlJNI.GradientBase_createGradientStop(swigCPtr, this);
139    return (cPtr == 0) ? null : new GradientStop(cPtr, false);
140  }
141
142  
143/**
144   * Adds a copy of the given {@link GradientStop} object to the end
145   * of the list of gradient stops.
146   <p>
147   * @param pStop a  pointer to the new gradient stop 
148   <p>
149   * @return integer value indicating success/failure of the
150   * function.   The possible values
151   * returned by this function are:
152   * <ul>
153   * <li> LIBSBML_OPERATION_SUCCESS
154   * <li> LIBSBML_LEVEL_MISMATCH
155   * <li> LIBSBML_VERSION_MISMATCH
156   * <li> LIBSBML_OPERATION_FAILED
157   *
158   * </ul> <p>
159   * @note This method should be used with some caution.  The fact that
160   * this method <em>copies</em> the object passed to it means that the caller
161   * will be left holding a physically different object instance than the
162   * one contained in this {@link GradientBase}.  Changes made to the original object
163   * instance (such as resetting attribute values) will <em>not affect the
164   * instance in the {@link GradientBase}</em>.  In addition, the caller should make
165   * sure to free the original object if it is no longer being used, or
166   * else a memory leak will result.  Please see {@link GradientBase#createGradientStop()}
167   * for a method that does not lead to these issues.
168   <p>
169   * @see #createGradientStop()
170   */ public
171 int addGradientStop(GradientStop pStop) {
172    return libsbmlJNI.GradientBase_addGradientStop(swigCPtr, this, GradientStop.getCPtr(pStop), pStop);
173  }
174
175  
176/**
177   * Creates and returns a deep copy of this {@link SBase} object.
178   <p>
179   * @return the (deep) copy of this {@link SBase} object.
180   */ public
181 SBase cloneObject() {
182  return (GradientBase) libsbml.DowncastSBase(libsbmlJNI.GradientBase_cloneObject(swigCPtr, this), true);
183}
184
185  
186/**
187   * Returns the XML element name of this object.
188   <p>
189   * This is overridden by subclasses to return a string appropriate to the
190   * SBML component.  For example, {@link Model} defines it as returning
191   * <code>'model'</code>, {@link CompartmentType} defines it as returning <code>'compartmentType'</code>,
192   * and so on.
193   */ public
194 String getElementName() {
195    return libsbmlJNI.GradientBase_getElementName(swigCPtr, this);
196  }
197
198  
199/**
200   * Creates an {@link Text} object from this {@link Group} object.
201   <p>
202   * @return the {@link XMLNode} with the XML representation for the 
203   * {@link Text} object.
204   */ public
205 XMLNode toXML() {
206    return new XMLNode(libsbmlJNI.GradientBase_toXML(swigCPtr, this), true);
207  }
208
209  public void connectToChild() {
210    libsbmlJNI.GradientBase_connectToChild(swigCPtr, this);
211  }
212
213  
214/** * @internal */ public
215 void enablePackageInternal(String pkgURI, String pkgPrefix, boolean flag) {
216    libsbmlJNI.GradientBase_enablePackageInternal(swigCPtr, this, pkgURI, pkgPrefix, flag);
217  }
218
219  
220/**
221   * Returns the value of the 'id' attribute of this SBML object, if it has one, 
222   * or the 'variable' attribute of a {@link Rule}, or the 'symbol' attribute of
223   * an {@link InitialAssignment}.
224   <p>
225   * @note Because of the inconsistent behavior of this function with 
226   * respect to assignments and rules, it is now recommended to
227   * use the getIdAttribute() function instead.
228   <p>
229   * <p>
230 * The identifier given by an object's 'id' attribute value
231 * is used to identify the object within the SBML model definition.
232 * Other objects can refer to the component using this identifier.  The
233 * data type of 'id' is always <code>SId</code> or a type derived
234 * from that, such as <code>UnitSId</code>, depending on the object in 
235 * question.  All data types are defined as follows:
236 * <pre style='margin-left: 2em; border: none; font-weight: bold; color: black'>
237 *   letter .= 'a'..'z','A'..'Z'
238 *   digit  .= '0'..'9'
239 *   idChar .= letter | digit | '_'
240 *   SId    .= ( letter | '_' ) idChar*
241 * </pre>
242 <p>
243 * The characters <code>(</code> and <code>)</code> are used for grouping, the
244 * character <code>*</code> 'zero or more times', and the character
245 * <code>|</code> indicates logical 'or'.  The equality of SBML identifiers is
246 * determined by an exact character sequence match; i.e., comparisons must be
247 * performed in a case-sensitive manner.  This applies to all uses of <code>SId</code>, 
248 * <code>SIdRef</code>, and derived types.
249 <p>
250 * In SBML Level&nbsp;3 Version&nbsp;2, the 'id' and 'name' attributes were
251 * moved to {@link SBase} directly, instead of being defined individually for many
252 * (but not all) objects.  Libsbml has for a long time provided functions
253 * defined on {@link SBase} itself to get, set, check, and unset those attributes, which 
254 * would fail or otherwise return empty strings if executed on any object 
255 * for which those attributes were not defined.  Now that all {@link SBase} objects 
256 * define those attributes, those functions now succeed for any object with 
257 * the appropriate level and version.
258 <p>
259 * The exception to this rule is that for {@link InitialAssignment}, {@link EventAssignment}, 
260 * {@link AssignmentRule}, and {@link RateRule} objects, the getId() function and the isSetId() 
261 * functions (though not the setId() or unsetId() functions) would instead 
262 * reference the value of the 'variable' attribute (for the rules and event 
263 * assignments) or the 'symbol' attribute (for initial assignments).  
264 * The {@link AlgebraicRule} fell into this category as well, though because it 
265 * contained neither a 'variable' nor a 'symbol' attribute, getId() would 
266 * always return an empty string, and isSetId() would always return <code>false.</code>
267 * For this reason, four new functions are now provided 
268 * (getIdAttribute(), setIdAttribute(String), 
269 * isSetIdAttribute(), and unsetIdAttribute()) that will always
270 * act on the actual 'id' attribute, regardless of the object's type.  The
271 * new functions should be used instead of the old ones unless the old behavior
272 * is somehow necessary.
273 <p>
274 * Regardless of the level and version of the SBML, these functions allow
275 * client applications to use more generalized code in some situations 
276 * (for instance, when manipulating objects that are all known to have 
277 * identifiers).  If the object in question does not posess an 'id' attribute 
278 * according to the SBML specification for the Level and Version in use,
279 * libSBML will not allow the identifier to be set, nor will it read or 
280 * write 'id' attributes for those objects.
281   <p>
282   * @return the id of this SBML object, or the 'variable' if the object 
283   * is a {@link Rule}, or the 'symbol' if the object is an {@link InitialAssignment}.
284   <p>
285   * @see #getIdAttribute()
286   * @see #setIdAttribute(String sid)
287   * @see #isSetIdAttribute()
288   * @see #unsetIdAttribute()
289   */ public
290 String getId() {
291    return libsbmlJNI.GradientBase_getId(swigCPtr, this);
292  }
293
294  
295/**
296   * Predicate returning <code>true</code> if a call to getId() returns a 
297   * non-empty string.  This means that for most objects, this 
298   * function will return <code>true</code> if its 'id' attribute is set, and
299   * <code>false</code> if it is not, or if the object has no 'id' attribute
300   * at all.  However, for an {@link EventAssignment} or a {@link Rule}, isSetId() 
301   * checks whether the 'variable' attribute is set, and for an
302   * {@link InitialAssignment}, it checks whether the 'symbol' attribute
303   * is set.  Because those elements will also have an 'id'
304   * attribute in SBML Level&nbsp;3 Version&nbsp;2 which isSetId()
305   * will not check, the function itself is deprecated, and it
306   * is recommended to use isSetIdAttribute() in all cases where
307   * one needs to know whether the 'id' attribute is set, and
308   * to use {@link EventAssignment#isSetVariable()}, {@link Rule#isSetVariable()}
309   * and {@link InitialAssignment#isSetSymbol()} when the status of the
310   * 'variable' or 'symbol' attributes need to be checked.
311   <p>
312   * <p>
313 * @note Because of the inconsistent behavior of this function with 
314 * respect to assignments and rules, it is now recommended to
315 * use the isSetIdAttribute() function instead.
316 <p>
317 * <p>
318 * The identifier given by an object's 'id' attribute value
319 * is used to identify the object within the SBML model definition.
320 * Other objects can refer to the component using this identifier.  The
321 * data type of 'id' is always <code>SId</code> or a type derived
322 * from that, such as <code>UnitSId</code>, depending on the object in 
323 * question.  All data types are defined as follows:
324 * <pre style='margin-left: 2em; border: none; font-weight: bold; color: black'>
325 *   letter .= 'a'..'z','A'..'Z'
326 *   digit  .= '0'..'9'
327 *   idChar .= letter | digit | '_'
328 *   SId    .= ( letter | '_' ) idChar*
329 * </pre>
330 <p>
331 * The characters <code>(</code> and <code>)</code> are used for grouping, the
332 * character <code>*</code> 'zero or more times', and the character
333 * <code>|</code> indicates logical 'or'.  The equality of SBML identifiers is
334 * determined by an exact character sequence match; i.e., comparisons must be
335 * performed in a case-sensitive manner.  This applies to all uses of <code>SId</code>, 
336 * <code>SIdRef</code>, and derived types.
337 <p>
338 * In SBML Level&nbsp;3 Version&nbsp;2, the 'id' and 'name' attributes were
339 * moved to {@link SBase} directly, instead of being defined individually for many
340 * (but not all) objects.  Libsbml has for a long time provided functions
341 * defined on {@link SBase} itself to get, set, check, and unset those attributes, which 
342 * would fail or otherwise return empty strings if executed on any object 
343 * for which those attributes were not defined.  Now that all {@link SBase} objects 
344 * define those attributes, those functions now succeed for any object with 
345 * the appropriate level and version.
346 <p>
347 * The exception to this rule is that for {@link InitialAssignment}, {@link EventAssignment}, 
348 * {@link AssignmentRule}, and {@link RateRule} objects, the getId() function and the isSetId() 
349 * functions (though not the setId() or unsetId() functions) would instead 
350 * reference the value of the 'variable' attribute (for the rules and event 
351 * assignments) or the 'symbol' attribute (for initial assignments).  
352 * The {@link AlgebraicRule} fell into this category as well, though because it 
353 * contained neither a 'variable' nor a 'symbol' attribute, getId() would 
354 * always return an empty string, and isSetId() would always return <code>false.</code>
355 * For this reason, four new functions are now provided 
356 * (getIdAttribute(), setIdAttribute(String), 
357 * isSetIdAttribute(), and unsetIdAttribute()) that will always
358 * act on the actual 'id' attribute, regardless of the object's type.  The
359 * new functions should be used instead of the old ones unless the old behavior
360 * is somehow necessary.
361 <p>
362 * Regardless of the level and version of the SBML, these functions allow
363 * client applications to use more generalized code in some situations 
364 * (for instance, when manipulating objects that are all known to have 
365 * identifiers).  If the object in question does not posess an 'id' attribute 
366 * according to the SBML specification for the Level and Version in use,
367 * libSBML will not allow the identifier to be set, nor will it read or 
368 * write 'id' attributes for those objects.
369 <p>
370 * @return <code>true</code> if the 'id' attribute of this SBML object is
371 * set, <code>false</code> otherwise.
372 <p>
373 * @see #getIdAttribute()
374 * @see #setIdAttribute(String sid)
375 * @see #unsetIdAttribute()
376 * @see #isSetIdAttribute()
377   */ public
378 boolean isSetId() {
379    return libsbmlJNI.GradientBase_isSetId(swigCPtr, this);
380  }
381
382  
383/**
384   * Sets the value of the 'id' attribute of this SBML object.
385   <p>
386   * <p>
387 * The string <code>sid</code> is copied.
388 <p>
389 * <p>
390 * The identifier given by an object's 'id' attribute value
391 * is used to identify the object within the SBML model definition.
392 * Other objects can refer to the component using this identifier.  The
393 * data type of 'id' is always <code>SId</code> or a type derived
394 * from that, such as <code>UnitSId</code>, depending on the object in 
395 * question.  All data types are defined as follows:
396 * <pre style='margin-left: 2em; border: none; font-weight: bold; color: black'>
397 *   letter .= 'a'..'z','A'..'Z'
398 *   digit  .= '0'..'9'
399 *   idChar .= letter | digit | '_'
400 *   SId    .= ( letter | '_' ) idChar*
401 * </pre>
402 <p>
403 * The characters <code>(</code> and <code>)</code> are used for grouping, the
404 * character <code>*</code> 'zero or more times', and the character
405 * <code>|</code> indicates logical 'or'.  The equality of SBML identifiers is
406 * determined by an exact character sequence match; i.e., comparisons must be
407 * performed in a case-sensitive manner.  This applies to all uses of <code>SId</code>, 
408 * <code>SIdRef</code>, and derived types.
409 <p>
410 * In SBML Level&nbsp;3 Version&nbsp;2, the 'id' and 'name' attributes were
411 * moved to {@link SBase} directly, instead of being defined individually for many
412 * (but not all) objects.  Libsbml has for a long time provided functions
413 * defined on {@link SBase} itself to get, set, check, and unset those attributes, which 
414 * would fail or otherwise return empty strings if executed on any object 
415 * for which those attributes were not defined.  Now that all {@link SBase} objects 
416 * define those attributes, those functions now succeed for any object with 
417 * the appropriate level and version.
418 <p>
419 * The exception to this rule is that for {@link InitialAssignment}, {@link EventAssignment}, 
420 * {@link AssignmentRule}, and {@link RateRule} objects, the getId() function and the isSetId() 
421 * functions (though not the setId() or unsetId() functions) would instead 
422 * reference the value of the 'variable' attribute (for the rules and event 
423 * assignments) or the 'symbol' attribute (for initial assignments).  
424 * The {@link AlgebraicRule} fell into this category as well, though because it 
425 * contained neither a 'variable' nor a 'symbol' attribute, getId() would 
426 * always return an empty string, and isSetId() would always return <code>false.</code>
427 * For this reason, four new functions are now provided 
428 * (getIdAttribute(), setIdAttribute(String), 
429 * isSetIdAttribute(), and unsetIdAttribute()) that will always
430 * act on the actual 'id' attribute, regardless of the object's type.  The
431 * new functions should be used instead of the old ones unless the old behavior
432 * is somehow necessary.
433 <p>
434 * Regardless of the level and version of the SBML, these functions allow
435 * client applications to use more generalized code in some situations 
436 * (for instance, when manipulating objects that are all known to have 
437 * identifiers).  If the object in question does not posess an 'id' attribute 
438 * according to the SBML specification for the Level and Version in use,
439 * libSBML will not allow the identifier to be set, nor will it read or 
440 * write 'id' attributes for those objects.
441 <p>
442 * @param sid the string to use as the identifier of this object.
443 <p>
444 * <p>
445 * @return integer value indicating success/failure of the
446 * function.   The possible values
447 * returned by this function are:
448 * <ul>
449 * <li> {@link libsbmlConstants#LIBSBML_OPERATION_SUCCESS LIBSBML_OPERATION_SUCCESS}
450 * <li> {@link libsbmlConstants#LIBSBML_INVALID_ATTRIBUTE_VALUE LIBSBML_INVALID_ATTRIBUTE_VALUE}
451 * <li> {@link libsbmlConstants#LIBSBML_UNEXPECTED_ATTRIBUTE LIBSBML_UNEXPECTED_ATTRIBUTE}
452 *
453 * </ul> <p>
454 * @see #getIdAttribute()
455 * @see #setIdAttribute(String sid)
456 * @see #isSetIdAttribute()
457 * @see #unsetIdAttribute()
458   */ public
459 int setId(String id) {
460    return libsbmlJNI.GradientBase_setId(swigCPtr, this, id);
461  }
462
463  
464/**
465   * Unsets the value of the 'id' attribute of this SBML object.
466   <p>
467   * <p>
468 * <p>
469 * The identifier given by an object's 'id' attribute value
470 * is used to identify the object within the SBML model definition.
471 * Other objects can refer to the component using this identifier.  The
472 * data type of 'id' is always <code>SId</code> or a type derived
473 * from that, such as <code>UnitSId</code>, depending on the object in 
474 * question.  All data types are defined as follows:
475 * <pre style='margin-left: 2em; border: none; font-weight: bold; color: black'>
476 *   letter .= 'a'..'z','A'..'Z'
477 *   digit  .= '0'..'9'
478 *   idChar .= letter | digit | '_'
479 *   SId    .= ( letter | '_' ) idChar*
480 * </pre>
481 <p>
482 * The characters <code>(</code> and <code>)</code> are used for grouping, the
483 * character <code>*</code> 'zero or more times', and the character
484 * <code>|</code> indicates logical 'or'.  The equality of SBML identifiers is
485 * determined by an exact character sequence match; i.e., comparisons must be
486 * performed in a case-sensitive manner.  This applies to all uses of <code>SId</code>, 
487 * <code>SIdRef</code>, and derived types.
488 <p>
489 * In SBML Level&nbsp;3 Version&nbsp;2, the 'id' and 'name' attributes were
490 * moved to {@link SBase} directly, instead of being defined individually for many
491 * (but not all) objects.  Libsbml has for a long time provided functions
492 * defined on {@link SBase} itself to get, set, check, and unset those attributes, which 
493 * would fail or otherwise return empty strings if executed on any object 
494 * for which those attributes were not defined.  Now that all {@link SBase} objects 
495 * define those attributes, those functions now succeed for any object with 
496 * the appropriate level and version.
497 <p>
498 * The exception to this rule is that for {@link InitialAssignment}, {@link EventAssignment}, 
499 * {@link AssignmentRule}, and {@link RateRule} objects, the getId() function and the isSetId() 
500 * functions (though not the setId() or unsetId() functions) would instead 
501 * reference the value of the 'variable' attribute (for the rules and event 
502 * assignments) or the 'symbol' attribute (for initial assignments).  
503 * The {@link AlgebraicRule} fell into this category as well, though because it 
504 * contained neither a 'variable' nor a 'symbol' attribute, getId() would 
505 * always return an empty string, and isSetId() would always return <code>false.</code>
506 * For this reason, four new functions are now provided 
507 * (getIdAttribute(), setIdAttribute(String), 
508 * isSetIdAttribute(), and unsetIdAttribute()) that will always
509 * act on the actual 'id' attribute, regardless of the object's type.  The
510 * new functions should be used instead of the old ones unless the old behavior
511 * is somehow necessary.
512 <p>
513 * Regardless of the level and version of the SBML, these functions allow
514 * client applications to use more generalized code in some situations 
515 * (for instance, when manipulating objects that are all known to have 
516 * identifiers).  If the object in question does not posess an 'id' attribute 
517 * according to the SBML specification for the Level and Version in use,
518 * libSBML will not allow the identifier to be set, nor will it read or 
519 * write 'id' attributes for those objects.
520 <p>
521 * <p>
522 * @return integer value indicating success/failure of the
523 * function.   The possible values
524 * returned by this function are:
525 * <ul>
526 * <li> {@link libsbmlConstants#LIBSBML_OPERATION_SUCCESS LIBSBML_OPERATION_SUCCESS}
527 * <li> {@link libsbmlConstants#LIBSBML_OPERATION_FAILED LIBSBML_OPERATION_FAILED}
528 *
529 * </ul> <p>
530 * @see #getIdAttribute()
531 * @see #setIdAttribute(String sid)
532 * @see #isSetIdAttribute()
533 * @see #unsetIdAttribute()
534   */ public
535 int unsetId() {
536    return libsbmlJNI.GradientBase_unsetId(swigCPtr, this);
537  }
538
539  
540/**
541   * Returns the value of the 'name' attribute of this SBML object.
542   <p>
543   * <p>
544 * <p>
545 * In SBML Level&nbsp;3 Version&nbsp;2, the 'id' and 'name' attributes were
546 * moved to {@link SBase} directly, instead of being defined individually for many
547 * (but not all) objects.  Libsbml has for a long time provided functions
548 * defined on {@link SBase} itself to get, set, and unset those attributes, which 
549 * would fail or otherwise return empty strings if executed on any object 
550 * for which those attributes were not defined.  Now that all {@link SBase} objects 
551 * define those attributes, those functions now succeed for any object with 
552 * the appropriate level and version.
553 <p>
554 * The 'name' attribute is
555 * optional and is not intended to be used for cross-referencing purposes
556 * within a model.  Its purpose instead is to provide a human-readable
557 * label for the component.  The data type of 'name' is the type
558 * <code>string</code> defined in XML Schema.  SBML imposes no
559 * restrictions as to the content of 'name' attributes beyond those
560 * restrictions defined by the <code>string</code> type in XML Schema.
561 <p>
562 * The recommended practice for handling 'name' is as follows.  If a
563 * software tool has the capability for displaying the content of 'name'
564 * attributes, it should display this content to the user as a
565 * component's label instead of the component's 'id'.  If the user
566 * interface does not have this capability (e.g., because it cannot
567 * display or use special characters in symbol names), or if the 'name'
568 * attribute is missing on a given component, then the user interface
569 * should display the value of the 'id' attribute instead.  (Script
570 * language interpreters are especially likely to display 'id' instead of
571 * 'name'.)
572 <p>
573 * As a consequence of the above, authors of systems that automatically
574 * generate the values of 'id' attributes should be aware some systems
575 * may display the 'id''s to the user.  Authors therefore may wish to
576 * take some care to have their software create 'id' values that are: (a)
577 * reasonably easy for humans to type and read; and (b) likely to be
578 * meaningful, for example by making the 'id' attribute be an abbreviated
579 * form of the name attribute value.
580 <p>
581 * An additional point worth mentioning is although there are
582 * restrictions on the uniqueness of 'id' values, there are no
583 * restrictions on the uniqueness of 'name' values in a model.  This
584 * allows software applications leeway in assigning component identifiers.
585 <p>
586 * Regardless of the level and version of the SBML, these functions allow
587 * client applications to use more generalized code in some situations 
588 * (for instance, when manipulating objects that are all known to have 
589 * names).  If the object in question does not posess a 'name' attribute 
590 * according to the SBML specification for the Level and Version in use,
591 * libSBML will not allow the name to be set, nor will it read or 
592 * write 'name' attributes for those objects.
593 <p>
594 * @return the name of this SBML object, or the empty string if not set or unsettable.
595 <p>
596 * @see #getIdAttribute()
597 * @see #isSetName()
598 * @see #setName(String sid)
599 * @see #unsetName()
600   */ public
601 String getName() {
602    return libsbmlJNI.GradientBase_getName(swigCPtr, this);
603  }
604
605  
606/**
607   * Predicate returning <code>true</code> if this
608   * object's 'name' attribute is set.
609   <p>
610   * <p>
611 * <p>
612 * In SBML Level&nbsp;3 Version&nbsp;2, the 'id' and 'name' attributes were
613 * moved to {@link SBase} directly, instead of being defined individually for many
614 * (but not all) objects.  Libsbml has for a long time provided functions
615 * defined on {@link SBase} itself to get, set, and unset those attributes, which 
616 * would fail or otherwise return empty strings if executed on any object 
617 * for which those attributes were not defined.  Now that all {@link SBase} objects 
618 * define those attributes, those functions now succeed for any object with 
619 * the appropriate level and version.
620 <p>
621 * The 'name' attribute is
622 * optional and is not intended to be used for cross-referencing purposes
623 * within a model.  Its purpose instead is to provide a human-readable
624 * label for the component.  The data type of 'name' is the type
625 * <code>string</code> defined in XML Schema.  SBML imposes no
626 * restrictions as to the content of 'name' attributes beyond those
627 * restrictions defined by the <code>string</code> type in XML Schema.
628 <p>
629 * The recommended practice for handling 'name' is as follows.  If a
630 * software tool has the capability for displaying the content of 'name'
631 * attributes, it should display this content to the user as a
632 * component's label instead of the component's 'id'.  If the user
633 * interface does not have this capability (e.g., because it cannot
634 * display or use special characters in symbol names), or if the 'name'
635 * attribute is missing on a given component, then the user interface
636 * should display the value of the 'id' attribute instead.  (Script
637 * language interpreters are especially likely to display 'id' instead of
638 * 'name'.)
639 <p>
640 * As a consequence of the above, authors of systems that automatically
641 * generate the values of 'id' attributes should be aware some systems
642 * may display the 'id''s to the user.  Authors therefore may wish to
643 * take some care to have their software create 'id' values that are: (a)
644 * reasonably easy for humans to type and read; and (b) likely to be
645 * meaningful, for example by making the 'id' attribute be an abbreviated
646 * form of the name attribute value.
647 <p>
648 * An additional point worth mentioning is although there are
649 * restrictions on the uniqueness of 'id' values, there are no
650 * restrictions on the uniqueness of 'name' values in a model.  This
651 * allows software applications leeway in assigning component identifiers.
652 <p>
653 * Regardless of the level and version of the SBML, these functions allow
654 * client applications to use more generalized code in some situations 
655 * (for instance, when manipulating objects that are all known to have 
656 * names).  If the object in question does not posess a 'name' attribute 
657 * according to the SBML specification for the Level and Version in use,
658 * libSBML will not allow the name to be set, nor will it read or 
659 * write 'name' attributes for those objects.
660 <p>
661 * @return <code>true</code> if the 'name' attribute of this SBML object is
662 * set, <code>false</code> otherwise.
663 <p>
664 * @see #getName()
665 * @see #setName(String sid)
666 * @see #unsetName()
667   */ public
668 boolean isSetName() {
669    return libsbmlJNI.GradientBase_isSetName(swigCPtr, this);
670  }
671
672  
673/**
674   * Sets the value of the 'name' attribute of this SBML object.
675   <p>
676   * <p>
677 * The string in <code>name</code> is copied.
678 <p>
679 * @param name the new name for the SBML object.
680 <p>
681 * <p>
682 * @return integer value indicating success/failure of the
683 * function.   The possible values
684 * returned by this function are:
685 * <ul>
686 * <li> {@link libsbmlConstants#LIBSBML_OPERATION_SUCCESS LIBSBML_OPERATION_SUCCESS}
687 * <li> {@link libsbmlConstants#LIBSBML_INVALID_ATTRIBUTE_VALUE LIBSBML_INVALID_ATTRIBUTE_VALUE}
688 *
689 * </ul>
690   */ public
691 int setName(String name) {
692    return libsbmlJNI.GradientBase_setName(swigCPtr, this, name);
693  }
694
695  
696/**
697   * Unsets the value of the 'name' attribute of this SBML object.
698   <p>
699   * <p>
700 * <p>
701 * In SBML Level&nbsp;3 Version&nbsp;2, the 'id' and 'name' attributes were
702 * moved to {@link SBase} directly, instead of being defined individually for many
703 * (but not all) objects.  Libsbml has for a long time provided functions
704 * defined on {@link SBase} itself to get, set, and unset those attributes, which 
705 * would fail or otherwise return empty strings if executed on any object 
706 * for which those attributes were not defined.  Now that all {@link SBase} objects 
707 * define those attributes, those functions now succeed for any object with 
708 * the appropriate level and version.
709 <p>
710 * The 'name' attribute is
711 * optional and is not intended to be used for cross-referencing purposes
712 * within a model.  Its purpose instead is to provide a human-readable
713 * label for the component.  The data type of 'name' is the type
714 * <code>string</code> defined in XML Schema.  SBML imposes no
715 * restrictions as to the content of 'name' attributes beyond those
716 * restrictions defined by the <code>string</code> type in XML Schema.
717 <p>
718 * The recommended practice for handling 'name' is as follows.  If a
719 * software tool has the capability for displaying the content of 'name'
720 * attributes, it should display this content to the user as a
721 * component's label instead of the component's 'id'.  If the user
722 * interface does not have this capability (e.g., because it cannot
723 * display or use special characters in symbol names), or if the 'name'
724 * attribute is missing on a given component, then the user interface
725 * should display the value of the 'id' attribute instead.  (Script
726 * language interpreters are especially likely to display 'id' instead of
727 * 'name'.)
728 <p>
729 * As a consequence of the above, authors of systems that automatically
730 * generate the values of 'id' attributes should be aware some systems
731 * may display the 'id''s to the user.  Authors therefore may wish to
732 * take some care to have their software create 'id' values that are: (a)
733 * reasonably easy for humans to type and read; and (b) likely to be
734 * meaningful, for example by making the 'id' attribute be an abbreviated
735 * form of the name attribute value.
736 <p>
737 * An additional point worth mentioning is although there are
738 * restrictions on the uniqueness of 'id' values, there are no
739 * restrictions on the uniqueness of 'name' values in a model.  This
740 * allows software applications leeway in assigning component identifiers.
741 <p>
742 * Regardless of the level and version of the SBML, these functions allow
743 * client applications to use more generalized code in some situations 
744 * (for instance, when manipulating objects that are all known to have 
745 * names).  If the object in question does not posess a 'name' attribute 
746 * according to the SBML specification for the Level and Version in use,
747 * libSBML will not allow the name to be set, nor will it read or 
748 * write 'name' attributes for those objects.
749 <p>
750 * <p>
751 * @return integer value indicating success/failure of the
752 * function.   The possible values
753 * returned by this function are:
754 * <ul>
755 * <li> {@link libsbmlConstants#LIBSBML_OPERATION_SUCCESS LIBSBML_OPERATION_SUCCESS}
756 * <li> {@link libsbmlConstants#LIBSBML_OPERATION_FAILED LIBSBML_OPERATION_FAILED}
757 *
758 * </ul> <p>
759 * @see #getName()
760 * @see #setName(String sid)
761 * @see #isSetName()
762   */ public
763 int unsetName() {
764    return libsbmlJNI.GradientBase_unsetName(swigCPtr, this);
765  }
766
767  
768/** * @internal */ public
769 boolean hasRequiredAttributes() {
770    return libsbmlJNI.GradientBase_hasRequiredAttributes(swigCPtr, this);
771  }
772
773  
774/** * @internal */ public
775 boolean hasRequiredElements() {
776    return libsbmlJNI.GradientBase_hasRequiredElements(swigCPtr, this);
777  }
778
779  // SPREADMETHOD 
780  public final static int PAD = 0;
781  public final static int REFLECT = PAD + 1;
782  public final static int REPEAT = REFLECT + 1;
783  public final static int INVALID = REPEAT + 1;
784
785}