You can subscribe to this list here.
| 2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(121) |
Aug
(343) |
Sep
(98) |
Oct
(55) |
Nov
(158) |
Dec
(219) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2009 |
Jan
(278) |
Feb
(170) |
Mar
(286) |
Apr
(32) |
May
(83) |
Jun
(140) |
Jul
(212) |
Aug
(242) |
Sep
(52) |
Oct
(29) |
Nov
(132) |
Dec
(259) |
| 2010 |
Jan
(251) |
Feb
(147) |
Mar
(76) |
Apr
(140) |
May
(43) |
Jun
(66) |
Jul
(273) |
Aug
(205) |
Sep
(260) |
Oct
(100) |
Nov
(58) |
Dec
(264) |
| 2011 |
Jan
(219) |
Feb
(344) |
Mar
(320) |
Apr
(334) |
May
(125) |
Jun
(131) |
Jul
(195) |
Aug
(155) |
Sep
(55) |
Oct
(261) |
Nov
(286) |
Dec
(216) |
| 2012 |
Jan
(188) |
Feb
(177) |
Mar
(39) |
Apr
(179) |
May
(148) |
Jun
(43) |
Jul
(229) |
Aug
(104) |
Sep
(76) |
Oct
(82) |
Nov
(93) |
Dec
(180) |
| 2013 |
Jan
(323) |
Feb
(335) |
Mar
(35) |
Apr
(220) |
May
(238) |
Jun
(122) |
Jul
(316) |
Aug
(73) |
Sep
(135) |
Oct
(515) |
Nov
(320) |
Dec
(185) |
| 2014 |
Jan
(81) |
Feb
(146) |
Mar
(337) |
Apr
(234) |
May
(112) |
Jun
(239) |
Jul
(323) |
Aug
(123) |
Sep
(83) |
Oct
(285) |
Nov
(321) |
Dec
(96) |
| 2015 |
Jan
(77) |
Feb
(79) |
Mar
(124) |
Apr
(71) |
May
(35) |
Jun
(45) |
Jul
(77) |
Aug
(44) |
Sep
(22) |
Oct
(84) |
Nov
(120) |
Dec
(37) |
| 2016 |
Jan
(38) |
Feb
(74) |
Mar
(242) |
Apr
(153) |
May
(59) |
Jun
(44) |
Jul
(67) |
Aug
(74) |
Sep
(150) |
Oct
(35) |
Nov
(69) |
Dec
(43) |
| 2017 |
Jan
(43) |
Feb
(9) |
Mar
(274) |
Apr
(40) |
May
(81) |
Jun
(81) |
Jul
(87) |
Aug
(46) |
Sep
(98) |
Oct
(50) |
Nov
(220) |
Dec
(66) |
| 2018 |
Jan
(110) |
Feb
(22) |
Mar
(20) |
Apr
(147) |
May
(148) |
Jun
(30) |
Jul
(83) |
Aug
(63) |
Sep
(40) |
Oct
(53) |
Nov
(51) |
Dec
(104) |
| 2019 |
Jan
(14) |
Feb
(81) |
Mar
(80) |
Apr
(102) |
May
(16) |
Jun
(5) |
Jul
(34) |
Aug
(24) |
Sep
(9) |
Oct
(12) |
Nov
(42) |
Dec
(76) |
| 2020 |
Jan
(15) |
Feb
(11) |
Mar
(12) |
Apr
(7) |
May
(6) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
| 2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(5) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
1
(8) |
|
2
(12) |
3
(3) |
4
(3) |
5
(10) |
6
(7) |
7
(5) |
8
|
|
9
(3) |
10
(1) |
11
(17) |
12
(7) |
13
(1) |
14
(4) |
15
(10) |
|
16
|
17
(2) |
18
(5) |
19
(2) |
20
(3) |
21
(3) |
22
|
|
23
(1) |
24
(5) |
25
(7) |
26
(1) |
27
(2) |
28
|
29
|
|
30
|
|
|
|
|
|
|
|
From: <fbe...@us...> - 2013-06-27 16:54:06
|
Revision: 17962
http://sourceforge.net/p/sbml/code/17962
Author: fbergmann
Date: 2013-06-27 16:54:01 +0000 (Thu, 27 Jun 2013)
Log Message:
-----------
- ElementFilter: add new macro for elements
- layout package: implement getAllElements, renameSIdRefs, renameMetaIdRefs
Modified Paths:
--------------
trunk/libsbml/src/sbml/packages/layout/extension/LayoutModelPlugin.cpp
trunk/libsbml/src/sbml/packages/layout/extension/LayoutModelPlugin.h
trunk/libsbml/src/sbml/packages/layout/sbml/BoundingBox.cpp
trunk/libsbml/src/sbml/packages/layout/sbml/BoundingBox.h
trunk/libsbml/src/sbml/packages/layout/sbml/CompartmentGlyph.cpp
trunk/libsbml/src/sbml/packages/layout/sbml/CompartmentGlyph.h
trunk/libsbml/src/sbml/packages/layout/sbml/CubicBezier.cpp
trunk/libsbml/src/sbml/packages/layout/sbml/CubicBezier.h
trunk/libsbml/src/sbml/packages/layout/sbml/Curve.cpp
trunk/libsbml/src/sbml/packages/layout/sbml/Curve.h
trunk/libsbml/src/sbml/packages/layout/sbml/GeneralGlyph.cpp
trunk/libsbml/src/sbml/packages/layout/sbml/GeneralGlyph.h
trunk/libsbml/src/sbml/packages/layout/sbml/GraphicalObject.cpp
trunk/libsbml/src/sbml/packages/layout/sbml/GraphicalObject.h
trunk/libsbml/src/sbml/packages/layout/sbml/Layout.cpp
trunk/libsbml/src/sbml/packages/layout/sbml/Layout.h
trunk/libsbml/src/sbml/packages/layout/sbml/LineSegment.cpp
trunk/libsbml/src/sbml/packages/layout/sbml/LineSegment.h
trunk/libsbml/src/sbml/packages/layout/sbml/Point.h
trunk/libsbml/src/sbml/packages/layout/sbml/ReactionGlyph.cpp
trunk/libsbml/src/sbml/packages/layout/sbml/ReactionGlyph.h
trunk/libsbml/src/sbml/packages/layout/sbml/ReferenceGlyph.cpp
trunk/libsbml/src/sbml/packages/layout/sbml/ReferenceGlyph.h
trunk/libsbml/src/sbml/packages/layout/sbml/SpeciesGlyph.cpp
trunk/libsbml/src/sbml/packages/layout/sbml/SpeciesGlyph.h
trunk/libsbml/src/sbml/packages/layout/sbml/SpeciesReferenceGlyph.cpp
trunk/libsbml/src/sbml/packages/layout/sbml/SpeciesReferenceGlyph.h
trunk/libsbml/src/sbml/packages/layout/sbml/TextGlyph.cpp
trunk/libsbml/src/sbml/packages/layout/sbml/TextGlyph.h
trunk/libsbml/src/sbml/util/ElementFilter.h
Modified: trunk/libsbml/src/sbml/packages/layout/extension/LayoutModelPlugin.cpp
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/extension/LayoutModelPlugin.cpp 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/extension/LayoutModelPlugin.cpp 2013-06-27 16:54:01 UTC (rev 17962)
@@ -31,6 +31,8 @@
#include <sbml/packages/layout/extension/LayoutModelPlugin.h>
#include <sbml/packages/layout/util/LayoutAnnotation.h>
+#include <sbml/util/ElementFilter.h>
+
#include <iostream>
using namespace std;
@@ -39,6 +41,19 @@
LIBSBML_CPP_NAMESPACE_BEGIN
+List*
+LayoutModelPlugin::getAllElements(ElementFilter *filter)
+{
+ List* ret = new List();
+ List* sublist = NULL;
+
+ ADD_FILTERED_LIST(ret, sublist, mLayouts, filter);
+
+ return ret;
+}
+
+
+
/*
*
*/
Modified: trunk/libsbml/src/sbml/packages/layout/extension/LayoutModelPlugin.h
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/extension/LayoutModelPlugin.h 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/extension/LayoutModelPlugin.h 2013-06-27 16:54:01 UTC (rev 17962)
@@ -173,8 +173,19 @@
*
* ------------------------------------------------------------------
*/
-
+
+
+
/**
+ * Returns a List of all child SBase objects, including those nested to an
+ * arbitrary depth
+ *
+ * @return a List* of pointers to all children objects.
+ */
+ virtual List* getAllElements(ElementFilter* filter=NULL);
+
+
+ /**
* Returns the ListOfLayouts object for this Model.
*
* @return the ListOfLayouts object for this Model.
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/BoundingBox.cpp
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/BoundingBox.cpp 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/BoundingBox.cpp 2013-06-27 16:54:01 UTC (rev 17962)
@@ -62,10 +62,27 @@
#include <sbml/xml/XMLInputStream.h>
#include <sbml/xml/XMLOutputStream.h>
+#include <sbml/util/ElementFilter.h>
+
#include <sbml/packages/layout/extension/LayoutExtension.h>
LIBSBML_CPP_NAMESPACE_BEGIN
+
+List*
+BoundingBox::getAllElements(ElementFilter *filter)
+{
+ List* ret = new List();
+ List* sublist = NULL;
+
+ ADD_FILTERED_ELEMENT(ret, sublist, mPosition, filter);
+ ADD_FILTERED_ELEMENT(ret, sublist, mDimensions, filter);
+
+ ADD_FILTERED_FROM_PLUGIN(ret, sublist, filter);
+
+ return ret;
+}
+
/*
* Default Constructor set position and dimensions to (0.0,0.0,0.0) and the
* id to an empty string.
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/BoundingBox.h
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/BoundingBox.h 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/BoundingBox.h 2013-06-27 16:54:01 UTC (rev 17962)
@@ -208,8 +208,17 @@
*/
const Dimensions* getDimensions () const;
-
+
/**
+ * Returns a List of all child SBase objects, including those nested to an
+ * arbitrary depth
+ *
+ * @return a List* of pointers to all children objects.
+ */
+ virtual List* getAllElements(ElementFilter* filter=NULL);
+
+
+ /**
* Returns the position of the BoundingBox as referece to a Point object.
*/
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/CompartmentGlyph.cpp
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/CompartmentGlyph.cpp 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/CompartmentGlyph.cpp 2013-06-27 16:54:01 UTC (rev 17962)
@@ -65,6 +65,16 @@
LIBSBML_CPP_NAMESPACE_BEGIN
+void
+CompartmentGlyph::renameSIdRefs(std::string oldid, std::string newid)
+{
+ GraphicalObject::renameSIdRefs(oldid, newid);
+ if (isSetCompartmentId() && mCompartment == oldid)
+ {
+ setCompartmentId(newid);
+ }
+}
+
/*
* Default Constructor which creates a new CompartmentGlyph. Id and
* associated compartment id are unset.
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/CompartmentGlyph.h
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/CompartmentGlyph.h 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/CompartmentGlyph.h 2013-06-27 16:54:01 UTC (rev 17962)
@@ -160,8 +160,23 @@
*/
bool isSetCompartmentId () const;
-
+
+
/**
+ * Renames all the @c SIdRef attributes on this element, including any
+ * found in MathML content (if such exists).
+ *
+ * This method works by looking at all attributes and (if appropriate)
+ * mathematical formulas, comparing the identifiers to the value of @p
+ * oldid. If any matches are found, the matching identifiers are replaced
+ * with @p newid. The method does @em not descend into child elements.
+ *
+ * @param oldid the old identifier
+ * @param newid the new identifier
+ */
+ virtual void renameSIdRefs(std::string oldid, std::string newid);
+
+ /**
* Calls initDefaults from GraphicalObject.
*/
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/CubicBezier.cpp
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/CubicBezier.cpp 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/CubicBezier.cpp 2013-06-27 16:54:01 UTC (rev 17962)
@@ -61,10 +61,24 @@
#include <sbml/xml/XMLInputStream.h>
#include <sbml/xml/XMLOutputStream.h>
+#include <sbml/util/ElementFilter.h>
+
#include <sbml/packages/layout/extension/LayoutExtension.h>
LIBSBML_CPP_NAMESPACE_BEGIN
+List*
+CubicBezier::getAllElements(ElementFilter *filter)
+{
+ List* ret = LineSegment::getAllElements(filter);
+ List* sublist = NULL;
+
+ ADD_FILTERED_ELEMENT(ret, sublist, mBasePoint1, filter);
+ ADD_FILTERED_ELEMENT(ret, sublist, mBasePoint2, filter);
+
+ return ret;
+}
+
/*
* Creates a CubicBezier and returns the pointer.
*/
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/CubicBezier.h
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/CubicBezier.h 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/CubicBezier.h 2013-06-27 16:54:01 UTC (rev 17962)
@@ -164,8 +164,14 @@
*/
virtual CubicBezier& operator=(const CubicBezier& orig);
+ /**
+ * Returns a List of all child SBase objects, including those nested to an
+ * arbitrary depth
+ *
+ * @return a List* of pointers to all children objects.
+ */
+ virtual List* getAllElements(ElementFilter* filter=NULL);
-
/**
* Returns the first base point of the curve (the one closer to the
* starting point).
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/Curve.cpp
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/Curve.cpp 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/Curve.cpp 2013-06-27 16:54:01 UTC (rev 17962)
@@ -66,10 +66,27 @@
#include <sbml/xml/XMLInputStream.h>
#include <sbml/xml/XMLOutputStream.h>
+#include <sbml/util/ElementFilter.h>
+
#include <sbml/packages/layout/extension/LayoutExtension.h>
LIBSBML_CPP_NAMESPACE_BEGIN
+List*
+Curve::getAllElements(ElementFilter *filter)
+{
+ List* ret = new List();
+ List* sublist = NULL;
+
+ ADD_FILTERED_LIST(ret, sublist, mCurveSegments, filter);
+
+ ADD_FILTERED_FROM_PLUGIN(ret, sublist, filter);
+
+ return ret;
+}
+
+
+
/*
* Creates a curve with the given SBML level, version and package version and
* an empty list of segments.
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/Curve.h
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/Curve.h 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/Curve.h 2013-06-27 16:54:01 UTC (rev 17962)
@@ -217,7 +217,16 @@
void initDefaults ();
+
/**
+ * Returns a List of all child SBase objects, including those nested to an
+ * arbitrary depth
+ *
+ * @return a List* of pointers to all children objects.
+ */
+ virtual List* getAllElements(ElementFilter* filter=NULL);
+
+ /**
* Returns a reference to the ListOf object that holds all the curve
* segments.
*/
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/GeneralGlyph.cpp
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/GeneralGlyph.cpp 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/GeneralGlyph.cpp 2013-06-27 16:54:01 UTC (rev 17962)
@@ -63,6 +63,8 @@
#include <sbml/packages/layout/util/LayoutUtilities.h>
#include <sbml/packages/layout/extension/LayoutExtension.h>
+#include <sbml/util/ElementFilter.h>
+
#include <sbml/xml/XMLNode.h>
#include <sbml/xml/XMLToken.h>
#include <sbml/xml/XMLAttributes.h>
@@ -71,7 +73,29 @@
LIBSBML_CPP_NAMESPACE_BEGIN
+List*
+GeneralGlyph::getAllElements(ElementFilter *filter)
+{
+ List* ret = GraphicalObject::getAllElements(filter);
+ List* sublist = NULL;
+ ADD_FILTERED_LIST(ret, sublist, mReferenceGlyphs, filter);
+ ADD_FILTERED_LIST(ret, sublist, mSubGlyphs, filter);
+ ADD_FILTERED_ELEMENT(ret, sublist, mCurve, filter);
+
+ return ret;
+}
+
+void
+GeneralGlyph::renameSIdRefs(std::string oldid, std::string newid)
+{
+ GraphicalObject::renameSIdRefs(oldid, newid);
+ if (isSetReferenceId() && mReference == oldid)
+ {
+ setReferenceId(newid);
+ }
+}
+
/*
* Creates a new GeneralGlyph. The list of reference and sub glyph is
* empty and the id of the associated element is set to the empty string.
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/GeneralGlyph.h
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/GeneralGlyph.h 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/GeneralGlyph.h 2013-06-27 16:54:01 UTC (rev 17962)
@@ -285,9 +285,32 @@
*/
virtual ~GeneralGlyph();
-
+
+ /**
+ * Returns a List of all child SBase objects, including those nested to an
+ * arbitrary depth
+ *
+ * @return a List* of pointers to all children objects.
+ */
+ virtual List* getAllElements(ElementFilter* filter=NULL);
+
/**
+ * Renames all the @c SIdRef attributes on this element, including any
+ * found in MathML content (if such exists).
+ *
+ * This method works by looking at all attributes and (if appropriate)
+ * mathematical formulas, comparing the identifiers to the value of @p
+ * oldid. If any matches are found, the matching identifiers are replaced
+ * with @p newid. The method does @em not descend into child elements.
+ *
+ * @param oldid the old identifier
+ * @param newid the new identifier
+ */
+ virtual void renameSIdRefs(std::string oldid, std::string newid);
+
+
+ /**
* Returns the id of the associated element.
*/
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/GraphicalObject.cpp
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/GraphicalObject.cpp 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/GraphicalObject.cpp 2013-06-27 16:54:01 UTC (rev 17962)
@@ -65,6 +65,7 @@
#include <sbml/packages/layout/extension/LayoutExtension.h>
#include <sbml/packages/layout/common/LayoutExtensionTypes.h>
+#include <sbml/util/ElementFilter.h>
#if LIBSBML_HAS_PACKAGE_RENDER
#include <sbml/packages/render/extension/RenderGraphicalObjectPlugin.h>
@@ -72,6 +73,29 @@
LIBSBML_CPP_NAMESPACE_BEGIN
+List*
+GraphicalObject::getAllElements(ElementFilter *filter)
+{
+ List* ret = new List();
+ List* sublist = NULL;
+
+ ADD_FILTERED_ELEMENT(ret, sublist, mBoundingBox, filter);
+
+ ADD_FILTERED_FROM_PLUGIN(ret, sublist, filter);
+
+ return ret;
+}
+
+void
+GraphicalObject::renameMetaIdRefs(std::string oldid, std::string newid)
+{
+ SBase::renameMetaIdRefs(oldid, newid);
+ if (isSetMetaIdRef() && mMetaIdRef == oldid)
+ {
+ mMetaIdRef = newid;
+ }
+}
+
/*
* Creates a new GraphicalObject.
*/
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/GraphicalObject.h
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/GraphicalObject.h 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/GraphicalObject.h 2013-06-27 16:54:01 UTC (rev 17962)
@@ -182,7 +182,30 @@
void initDefaults ();
+
/**
+ * Returns a List of all child SBase objects, including those nested to an
+ * arbitrary depth
+ *
+ * @return a List* of pointers to all children objects.
+ */
+ virtual List* getAllElements(ElementFilter* filter=NULL);
+
+
+ /**
+ * Renames all the @c MetaIdRef attributes on this element.
+ *
+ * This method works by looking at all meta-attribute values, comparing
+ * the identifiers to the value of @p oldid. If any matches are found,
+ * the matching identifiers are replaced with @p newid. The method does
+ * @em not descend into child elements.
+ *
+ * @param oldid the old identifier
+ * @param newid the new identifier
+ */
+ virtual void renameMetaIdRefs(std::string oldid, std::string newid);
+
+ /**
* Returns the value of the "id" attribute of this GraphicalObject.
*/
virtual const std::string& getId () const;
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/Layout.cpp
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/Layout.cpp 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/Layout.cpp 2013-06-27 16:54:01 UTC (rev 17962)
@@ -68,6 +68,7 @@
#include <sbml/xml/XMLInputStream.h>
#include <sbml/xml/XMLOutputStream.h>
+#include <sbml/util/ElementFilter.h>
#include <sbml/packages/layout/extension/LayoutExtension.h>
LIBSBML_CPP_NAMESPACE_BEGIN
@@ -675,6 +676,24 @@
}
+List*
+Layout::getAllElements(ElementFilter *filter)
+{
+ List* ret = new List();
+ List* sublist = NULL;
+
+ ADD_FILTERED_ELEMENT(ret, sublist, mDimensions, filter);
+ ADD_FILTERED_LIST(ret, sublist, mCompartmentGlyphs, filter);
+ ADD_FILTERED_LIST(ret, sublist, mSpeciesGlyphs, filter);
+ ADD_FILTERED_LIST(ret, sublist, mReactionGlyphs, filter);
+ ADD_FILTERED_LIST(ret, sublist, mTextGlyphs, filter);
+ ADD_FILTERED_LIST(ret, sublist, mAdditionalGraphicalObjects, filter);
+
+ ADD_FILTERED_FROM_PLUGIN(ret, sublist, filter);
+
+ return ret;
+}
+
/*
* Returns the additional graphical object with the given index.
* If the index is invalid, @c NULL is returned.
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/Layout.h
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/Layout.h 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/Layout.h 2013-06-27 16:54:01 UTC (rev 17962)
@@ -826,6 +826,14 @@
ListOfGraphicalObjects* getListOfAdditionalGraphicalObjects ();
+
+ /**
+ * Returns a List of all child SBase objects, including those nested to an
+ * arbitrary depth
+ *
+ * @return a List* of pointers to all children objects.
+ */
+ virtual List* getAllElements(ElementFilter* filter=NULL);
/**
* Returns the compartment glyph with the given index.
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/LineSegment.cpp
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/LineSegment.cpp 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/LineSegment.cpp 2013-06-27 16:54:01 UTC (rev 17962)
@@ -61,10 +61,27 @@
#include <sbml/xml/XMLInputStream.h>
#include <sbml/xml/XMLOutputStream.h>
+#include <sbml/util/ElementFilter.h>
+
#include <sbml/packages/layout/extension/LayoutExtension.h>
LIBSBML_CPP_NAMESPACE_BEGIN
+List*
+LineSegment::getAllElements(ElementFilter *filter)
+{
+ List* ret = new List();
+ List* sublist = NULL;
+
+ ADD_FILTERED_ELEMENT(ret, sublist, mStartPoint, filter);
+ ADD_FILTERED_ELEMENT(ret, sublist, mEndPoint, filter);
+
+ ADD_FILTERED_FROM_PLUGIN(ret, sublist, filter);
+
+ return ret;
+}
+
+
/*
* Creates a line segment with the given SBML level, version, and package version
* and both points set to (0.0,0.0,0.0)
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/LineSegment.h
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/LineSegment.h 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/LineSegment.h 2013-06-27 16:54:01 UTC (rev 17962)
@@ -137,6 +137,15 @@
/**
+ * Returns a List of all child SBase objects, including those nested to an
+ * arbitrary depth
+ *
+ * @return a List* of pointers to all children objects.
+ */
+ virtual List* getAllElements(ElementFilter* filter=NULL);
+
+
+ /**
* Returns the start point of the line.
*/
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/Point.h
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/Point.h 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/Point.h 2013-06-27 16:54:01 UTC (rev 17962)
@@ -207,7 +207,6 @@
void initDefaults ();
-
/**
* Returns the value of the "id" attribute of this Point.
*/
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/ReactionGlyph.cpp
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/ReactionGlyph.cpp 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/ReactionGlyph.cpp 2013-06-27 16:54:01 UTC (rev 17962)
@@ -64,9 +64,34 @@
#include <sbml/xml/XMLInputStream.h>
#include <sbml/xml/XMLOutputStream.h>
+#include <sbml/util/ElementFilter.h>
+
+
LIBSBML_CPP_NAMESPACE_BEGIN
+List*
+ReactionGlyph::getAllElements(ElementFilter *filter)
+{
+ List* ret = GraphicalObject::getAllElements(filter);
+ List* sublist = NULL;
+
+ ADD_FILTERED_LIST(ret, sublist, mSpeciesReferenceGlyphs, filter);
+ ADD_FILTERED_ELEMENT(ret, sublist, mCurve, filter);
+
+ return ret;
+}
+
+void
+ReactionGlyph::renameSIdRefs(std::string oldid, std::string newid)
+{
+ GraphicalObject::renameSIdRefs(oldid, newid);
+ if (isSetReactionId() && mReaction == oldid) {
+ mReaction = newid;
+ }
+}
+
+
/*
* Creates a new ReactionGlyph. The list of species reference glyph is
* empty and the id of the associated reaction is set to the empty string.
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/ReactionGlyph.h
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/ReactionGlyph.h 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/ReactionGlyph.h 2013-06-27 16:54:01 UTC (rev 17962)
@@ -350,6 +350,29 @@
void initDefaults ();
/**
+ * Returns a List of all child SBase objects, including those nested to an
+ * arbitrary depth
+ *
+ * @return a List* of pointers to all children objects.
+ */
+ virtual List* getAllElements(ElementFilter* filter=NULL);
+
+ /**
+ * Renames all the @c SIdRef attributes on this element, including any
+ * found in MathML content (if such exists).
+ *
+ * This method works by looking at all attributes and (if appropriate)
+ * mathematical formulas, comparing the identifiers to the value of @p
+ * oldid. If any matches are found, the matching identifiers are replaced
+ * with @p newid. The method does @em not descend into child elements.
+ *
+ * @param oldid the old identifier
+ * @param newid the new identifier
+ */
+ virtual void renameSIdRefs(std::string oldid, std::string newid);
+
+
+ /**
* Returns the curve object for the reaction glyph
*/
const Curve* getCurve () const;
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/ReferenceGlyph.cpp
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/ReferenceGlyph.cpp 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/ReferenceGlyph.cpp 2013-06-27 16:54:01 UTC (rev 17962)
@@ -62,10 +62,35 @@
#include <sbml/xml/XMLInputStream.h>
#include <sbml/xml/XMLOutputStream.h>
+#include <sbml/util/ElementFilter.h>
+
LIBSBML_CPP_NAMESPACE_BEGIN
+List*
+ReferenceGlyph::getAllElements(ElementFilter *filter)
+{
+ List* ret = GraphicalObject::getAllElements(filter);
+ List* sublist = NULL;
+ ADD_FILTERED_ELEMENT(ret, sublist, mCurve, filter);
+ return ret;
+}
+
+void
+ReferenceGlyph::renameSIdRefs(std::string oldid, std::string newid)
+{
+ GraphicalObject::renameSIdRefs(oldid, newid);
+ if (isSetReferenceId() && mReference == oldid)
+ {
+ mReference = newid;
+ }
+ if (isSetGlyphId() && mGlyph == oldid)
+ {
+ mGlyph = newid;
+ }
+}
+
/*
* Creates a new ReferenceGlyph. The id if the associated
* reference and the id of the associated glyph are set to the
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/ReferenceGlyph.h
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/ReferenceGlyph.h 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/ReferenceGlyph.h 2013-06-27 16:54:01 UTC (rev 17962)
@@ -134,6 +134,28 @@
virtual ~ReferenceGlyph ();
+ /**
+ * Returns a List of all child SBase objects, including those nested to an
+ * arbitrary depth
+ *
+ * @return a List* of pointers to all children objects.
+ */
+ virtual List* getAllElements(ElementFilter* filter=NULL);
+
+ /**
+ * Renames all the @c SIdRef attributes on this element, including any
+ * found in MathML content (if such exists).
+ *
+ * This method works by looking at all attributes and (if appropriate)
+ * mathematical formulas, comparing the identifiers to the value of @p
+ * oldid. If any matches are found, the matching identifiers are replaced
+ * with @p newid. The method does @em not descend into child elements.
+ *
+ * @param oldid the old identifier
+ * @param newid the new identifier
+ */
+ virtual void renameSIdRefs(std::string oldid, std::string newid);
+
/**
* Returns the id of the associated glyph.
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/SpeciesGlyph.cpp
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/SpeciesGlyph.cpp 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/SpeciesGlyph.cpp 2013-06-27 16:54:01 UTC (rev 17962)
@@ -63,6 +63,16 @@
LIBSBML_CPP_NAMESPACE_BEGIN
+void
+SpeciesGlyph::renameSIdRefs(std::string oldid, std::string newid)
+{
+ GraphicalObject::renameSIdRefs(oldid, newid);
+ if (isSetSpeciesId() && mSpecies == oldid)
+ {
+ mSpecies = newid;
+ }
+}
+
/*
* Creates a new SpeciesGlyph with the given SBML level, version, and package version
* and the id of the associated species set to the empty string.
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/SpeciesGlyph.h
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/SpeciesGlyph.h 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/SpeciesGlyph.h 2013-06-27 16:54:01 UTC (rev 17962)
@@ -133,9 +133,23 @@
* Destructor.
*/
- virtual ~SpeciesGlyph ();
-
+ virtual ~SpeciesGlyph ();
+
/**
+ * Renames all the @c SIdRef attributes on this element, including any
+ * found in MathML content (if such exists).
+ *
+ * This method works by looking at all attributes and (if appropriate)
+ * mathematical formulas, comparing the identifiers to the value of @p
+ * oldid. If any matches are found, the matching identifiers are replaced
+ * with @p newid. The method does @em not descend into child elements.
+ *
+ * @param oldid the old identifier
+ * @param newid the new identifier
+ */
+ virtual void renameSIdRefs(std::string oldid, std::string newid);
+
+ /**
* Returns the id of the associated species object.
*/
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/SpeciesReferenceGlyph.cpp
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/SpeciesReferenceGlyph.cpp 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/SpeciesReferenceGlyph.cpp 2013-06-27 16:54:01 UTC (rev 17962)
@@ -62,6 +62,8 @@
#include <sbml/xml/XMLInputStream.h>
#include <sbml/xml/XMLOutputStream.h>
+#include <sbml/util/ElementFilter.h>
+
LIBSBML_CPP_NAMESPACE_BEGIN
const std::string SpeciesReferenceGlyph::SPECIES_REFERENCE_ROLE_STRING[]={
@@ -76,8 +78,31 @@
,""
};
+List*
+SpeciesReferenceGlyph::getAllElements(ElementFilter *filter)
+{
+ List* ret = GraphicalObject::getAllElements(filter);
+ List* sublist = NULL;
+ ADD_FILTERED_ELEMENT(ret, sublist, mCurve, filter);
+ return ret;
+}
+
+void
+SpeciesReferenceGlyph::renameSIdRefs(std::string oldid, std::string newid)
+{
+ GraphicalObject::renameSIdRefs(oldid, newid);
+ if (isSetSpeciesReferenceId() && mSpeciesReference == oldid)
+ {
+ mSpeciesReference = newid;
+ }
+ if (isSetSpeciesGlyphId() && mSpeciesGlyph == oldid)
+ {
+ mSpeciesGlyph = newid;
+ }
+}
+
/*
* Creates a new SpeciesReferenceGlyph. The id if the associated species
* reference and the id of the associated species glyph are set to the
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/SpeciesReferenceGlyph.h
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/SpeciesReferenceGlyph.h 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/SpeciesReferenceGlyph.h 2013-06-27 16:54:01 UTC (rev 17962)
@@ -198,8 +198,31 @@
*/
void setRole (SpeciesReferenceRole_t role);
-
+
/**
+ * Returns a List of all child SBase objects, including those nested to an
+ * arbitrary depth
+ *
+ * @return a List* of pointers to all children objects.
+ */
+ virtual List* getAllElements(ElementFilter* filter=NULL);
+
+ /**
+ * Renames all the @c SIdRef attributes on this element, including any
+ * found in MathML content (if such exists).
+ *
+ * This method works by looking at all attributes and (if appropriate)
+ * mathematical formulas, comparing the identifiers to the value of @p
+ * oldid. If any matches are found, the matching identifiers are replaced
+ * with @p newid. The method does @em not descend into child elements.
+ *
+ * @param oldid the old identifier
+ * @param newid the new identifier
+ */
+ virtual void renameSIdRefs(std::string oldid, std::string newid);
+
+
+ /**
* Returns the curve object for the species reference glyph
*/
Curve* getCurve () ;
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/TextGlyph.cpp
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/TextGlyph.cpp 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/TextGlyph.cpp 2013-06-27 16:54:01 UTC (rev 17962)
@@ -64,6 +64,20 @@
LIBSBML_CPP_NAMESPACE_BEGIN
+void
+TextGlyph::renameSIdRefs(std::string oldid, std::string newid)
+{
+ GraphicalObject::renameSIdRefs(oldid, newid);
+ if (isSetGraphicalObjectId() && mGraphicalObject == oldid)
+ {
+ mGraphicalObject = newid;
+ }
+ if (isSetOriginOfTextId() && mOriginOfText == oldid)
+ {
+ mOriginOfText = newid;
+ }
+}
+
/*
* Creates a new TextGlyph the ids of the associated GraphicalObject and
* the originOfText are set to the empty string. The actual text is set to
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/TextGlyph.h
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/TextGlyph.h 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/TextGlyph.h 2013-06-27 16:54:01 UTC (rev 17962)
@@ -145,7 +145,23 @@
virtual ~TextGlyph ();
+
/**
+ * Renames all the @c SIdRef attributes on this element, including any
+ * found in MathML content (if such exists).
+ *
+ * This method works by looking at all attributes and (if appropriate)
+ * mathematical formulas, comparing the identifiers to the value of @p
+ * oldid. If any matches are found, the matching identifiers are replaced
+ * with @p newid. The method does @em not descend into child elements.
+ *
+ * @param oldid the old identifier
+ * @param newid the new identifier
+ */
+ virtual void renameSIdRefs(std::string oldid, std::string newid);
+
+
+ /**
* Returns the text to be displayed by the text glyph.
*/
Modified: trunk/libsbml/src/sbml/util/ElementFilter.h
===================================================================
--- trunk/libsbml/src/sbml/util/ElementFilter.h 2013-06-27 12:41:34 UTC (rev 17961)
+++ trunk/libsbml/src/sbml/util/ElementFilter.h 2013-06-27 16:54:01 UTC (rev 17962)
@@ -71,6 +71,17 @@
}\
}
+#define ADD_FILTERED_ELEMENT(pResult,pSublist,element,pFilter)\
+{\
+ if (&element != NULL) {\
+ if (pFilter == NULL || pFilter->filter(&element))\
+ pResult->add(&element);\
+ pSublist = element.getAllElements(pFilter);\
+ pResult->transferFrom(pSublist);\
+ delete pSublist;\
+ }\
+}
+
#define ADD_FILTERED_FROM_PLUGIN(pResult,pSublist,pFilter)\
{\
pSublist = getAllElementsFromPlugins(pFilter);\
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sar...@us...> - 2013-06-27 12:41:37
|
Revision: 17961
http://sourceforge.net/p/sbml/code/17961
Author: sarahkeating
Date: 2013-06-27 12:41:34 +0000 (Thu, 27 Jun 2013)
Log Message:
-----------
comp validation: metaId reference check
plus more tests for other referencing objects
Modified Paths:
--------------
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/CompConsistencyConstraints.cpp
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-fail-01-05.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020902-fail-01-02.xml
Added Paths:
-----------
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020701-fail-01-03.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-pass-00-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-pass-00-02.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-pass-00-03.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-pass-00-04.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-fail-01-02.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-fail-01-03.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-fail-01-04.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-pass-00-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-pass-00-02.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-pass-00-03.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-pass-00-04.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-fail-01-02.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-fail-01-03.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-fail-01-04.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-pass-00-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-pass-00-02.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-pass-00-03.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-pass-00-04.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020709-fail-01-01-1020704.xml
Removed Paths:
-------------
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020709-fail-01-01.xml
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/CompConsistencyConstraints.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/CompConsistencyConstraints.cpp 2013-06-26 14:23:47 UTC (rev 17960)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/CompConsistencyConstraints.cpp 2013-06-27 12:41:34 UTC (rev 17961)
@@ -52,7 +52,7 @@
/**
* This class implements an element filter, that can be used to find elements
- * with notes
+ * with an id set
*/
class IdFilter : public ElementFilter
{
@@ -84,6 +84,30 @@
};
+/**
+ * This class implements an element filter, that can be used to find elements
+ * with an metaid set
+ */
+class MetaIdFilter : public ElementFilter
+{
+public:
+ MetaIdFilter() : ElementFilter()
+ {
+ }
+
+ virtual bool filter(const SBase* element)
+ {
+ // return in case we don't have a valid element with an id
+ if (element == NULL || element->isSetMetaId() == false)
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+};
+
//*************************************
//SBase constraints
@@ -921,6 +945,7 @@
}
END_CONSTRAINT
+// 20703
//20703 - port
START_CONSTRAINT (CompUnitRefMustReferenceUnitDef, Port, p)
{
@@ -1116,7 +1141,269 @@
}
END_CONSTRAINT
+// 20704
+//20704 - port
+START_CONSTRAINT (CompMetaIdRefMustReferenceObject, Port, p)
+{
+ pre(p.isSetMetaIdRef());
+
+ bool fail = false;
+ msg = "The 'metaIdRef' of a <port>";
+ msg += " is set to '";
+ msg += p.getMetaIdRef();
+ msg += "' which is not an element within the <model>.";
+
+ IdList mIds;
+
+ // create the filter we want to use
+ MetaIdFilter filter;
+
+ // get a list of all elements with an id
+ const Model* mod =
+ static_cast<const Model*>(p.getAncestorOfType(SBML_MODEL, "core"));
+ if (mod == NULL)
+ {
+ mod = static_cast<const Model*>
+ (p.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
+ }
+
+ List* allElements = const_cast<Model*>(mod)->getAllElements(&filter);
+
+ for (unsigned int i = 0; i < allElements->getSize(); i++)
+ {
+ mIds.append(static_cast<SBase*>(allElements->get(i))->getMetaId());
+ }
+
+
+ if (mIds.contains(p.getMetaIdRef()) == false)
+ {
+ fail = true;
+ }
+
+ inv(fail == false);
+}
+END_CONSTRAINT
+
+// 20704 - deletion
+START_CONSTRAINT (CompMetaIdRefMustReferenceObject, Deletion, d)
+{
+ pre(d.isSetMetaIdRef());
+
+ bool fail = false;
+
+ const Submodel * sub = static_cast<const Submodel*>
+ (d.getAncestorOfType(SBML_COMP_SUBMODEL, "comp"));
+ pre (sub != NULL);
+
+ msg = "The 'metaIdRef' of a <deletion>";
+ msg += " is set to '";
+ msg += d.getMetaIdRef();
+ msg += "' which is not an element within the <model> referenced by ";
+ msg += "submodel '";
+ msg += sub->getId();
+ msg += "'.";
+
+ std::string modelId = sub->getModelRef();
+
+ const SBMLDocument * doc = d.getSBMLDocument();
+ pre (doc != NULL);
+
+ CompSBMLDocumentPlugin * docPlug =
+ (CompSBMLDocumentPlugin*)(doc->getPlugin("comp"));
+ pre (docPlug != NULL);
+
+ Model * referencedModel = docPlug->getModelDefinition(modelId);
+ if (referencedModel == NULL)
+ {
+ // may be an external model
+ ExternalModelDefinition * emd =
+ docPlug->getExternalModelDefinition(modelId);
+ pre (emd != NULL);
+
+ string locationURI = doc->getLocationURI();
+ string uri = emd->getSource();
+
+ const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
+ SBMLDocument *newDoc = registry.resolve(uri, locationURI);
+ pre(newDoc != NULL);
+ referencedModel = newDoc->getModel();
+ }
+
+ pre (referencedModel != NULL);
+
+ IdList mIds;
+
+ // create the filter we want to use
+ MetaIdFilter filter;
+
+ // get a list of all elements with an id
+ List* allElements = referencedModel->getAllElements(&filter);
+
+ for (unsigned int i = 0; i < allElements->getSize(); i++)
+ {
+ mIds.append(static_cast<SBase*>(allElements->get(i))->getMetaId());
+ }
+
+
+ if (mIds.contains(d.getMetaIdRef()) == false)
+ {
+ fail = true;
+ }
+
+ inv(fail == false);
+}
+END_CONSTRAINT
+
+// 20704 - replacedElement
+START_CONSTRAINT (CompMetaIdRefMustReferenceObject, ReplacedElement, repE)
+{
+ pre(repE.isSetMetaIdRef());
+ pre(repE.isSetSubmodelRef());
+
+ bool fail = false;
+
+ msg = "The 'metaidRef' of a <replacedElement>";
+ msg += " is set to '";
+ msg += repE.getMetaIdRef();
+ msg += "' which is not an element within the <model> referenced by ";
+ msg += "submodel '";
+ msg += repE.getSubmodelRef();
+ msg += "'.";
+
+ /* need to be using the correct model */
+ CompModelPlugin *plug = (CompModelPlugin*)(m.getPlugin("comp"));
+
+ pre (plug != NULL);
+ pre (plug->getSubmodel(repE.getSubmodelRef()) != NULL);
+
+ std::string modelId =
+ (plug->getSubmodel(repE.getSubmodelRef()))->getModelRef();
+
+ const SBMLDocument * doc = repE.getSBMLDocument();
+ pre (doc != NULL);
+
+ CompSBMLDocumentPlugin * docPlug =
+ (CompSBMLDocumentPlugin*)(doc->getPlugin("comp"));
+
+ pre (docPlug != NULL);
+
+ Model * referencedModel = docPlug->getModelDefinition(modelId);
+ if (referencedModel == NULL)
+ {
+ // may be an external model
+ ExternalModelDefinition * emd =
+ docPlug->getExternalModelDefinition(modelId);
+ pre (emd != NULL);
+
+ string locationURI = doc->getLocationURI();
+ string uri = emd->getSource();
+
+ const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
+ SBMLDocument *newDoc = registry.resolve(uri, locationURI);
+ pre(newDoc != NULL);
+ referencedModel = newDoc->getModel();
+ }
+
+ pre (referencedModel != NULL);
+
+ IdList mIds;
+
+ // create the filter we want to use
+ MetaIdFilter filter;
+
+ // get a list of all elements with an id
+ List* allElements = referencedModel->getAllElements(&filter);
+
+ for (unsigned int i = 0; i < allElements->getSize(); i++)
+ {
+ mIds.append(static_cast<SBase*>(allElements->get(i))->getMetaId());
+ }
+
+
+ if (mIds.contains(repE.getMetaIdRef()) == false)
+ {
+ fail = true;
+ }
+
+ inv(fail == false);
+}
+END_CONSTRAINT
+
+// 20704 - replacedBy
+START_CONSTRAINT (CompMetaIdRefMustReferenceObject, ReplacedBy, repBy)
+{
+ pre(repBy.isSetMetaIdRef());
+ pre(repBy.isSetSubmodelRef());
+
+ bool fail = false;
+
+ msg = "The 'metaIdRef' of a <replacedBy>";
+ msg += " is set to '";
+ msg += repBy.getMetaIdRef();
+ msg += "' which is not an element within the <model> referenced by ";
+ msg += "submodel '";
+ msg += repBy.getSubmodelRef();
+ msg += "'.";
+
+ /* need to be using the correct model */
+ CompModelPlugin *plug = (CompModelPlugin*)(m.getPlugin("comp"));
+
+ pre (plug != NULL);
+ pre (plug->getSubmodel(repBy.getSubmodelRef()) != NULL);
+
+ std::string modelId =
+ (plug->getSubmodel(repBy.getSubmodelRef()))->getModelRef();
+
+ const SBMLDocument * doc = repBy.getSBMLDocument();
+ CompSBMLDocumentPlugin * docPlug =
+ (CompSBMLDocumentPlugin*)(doc->getPlugin("comp"));
+
+ pre (docPlug != NULL);
+
+ Model * referencedModel = docPlug->getModelDefinition(modelId);
+ if (referencedModel == NULL)
+ {
+ // may be an external model
+ ExternalModelDefinition * emd =
+ docPlug->getExternalModelDefinition(modelId);
+ pre (emd != NULL);
+
+ string locationURI = doc->getLocationURI();
+ string uri = emd->getSource();
+
+ const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
+ SBMLDocument *newDoc = registry.resolve(uri, locationURI);
+ pre(newDoc != NULL);
+ referencedModel = newDoc->getModel();
+ }
+
+ pre (referencedModel != NULL);
+
+ IdList mIds;
+
+ // create the filter we want to use
+ MetaIdFilter filter;
+
+ // get a list of all elements with an id
+ List* allElements = referencedModel->getAllElements(&filter);
+
+ for (unsigned int i = 0; i < allElements->getSize(); i++)
+ {
+ mIds.append(static_cast<SBase*>(allElements->get(i))->getMetaId());
+ }
+
+
+ if (mIds.contains(repBy.getMetaIdRef()) == false)
+ {
+ fail = true;
+ }
+
+ inv(fail == false);
+}
+END_CONSTRAINT
+
+
//
//TODO: 20704
//TODO: 20705
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020701-fail-01-03.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020701-fail-01-03.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020701-fail-01-03.xml 2013-06-27 12:41:34 UTC (rev 17961)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model>
+ <listOfUnitDefinitions>
+ <unitDefinition id="ddd">
+ <listOfUnits>
+ <unit kind="litre" multiplier="1" scale="0" exponent="0"/>
+ </listOfUnits>
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="C" spatialDimensions="3" size="10" constant="false" metaid="CD">
+ <comp:listOfReplacedElements>
+ <comp:replacedElement comp:idRef="sub1" comp:submodelRef="sub2">
+ <comp:sBaseRef comp:idRef="C"/>
+ </comp:replacedElement>
+ </comp:listOfReplacedElements>
+ </compartment>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S1" compartment="C" initialAmount="5" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false">
+ <comp:listOfReplacedElements>
+ <comp:replacedElement comp:idRef="sub1" comp:submodelRef="sub2">
+ <comp:sBaseRef comp:idRef="sub1">
+ <comp:sBaseRef comp:idRef="S1"/>
+ </comp:sBaseRef>
+ </comp:replacedElement>
+ </comp:listOfReplacedElements>
+ <comp:replacedBy comp:portRef="S1" comp:submodelRef="sub2">
+ <comp:sBaseRef comp:idRef="S1"/>
+ </comp:replacedBy>
+ </species>
+ </listOfSpecies>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="sub1" comp:modelRef="moddef1"/>
+ <comp:submodel comp:id="sub2" comp:modelRef="moddef2"/>
+ </comp:listOfSubmodels>
+ <comp:listOfPorts>
+ <comp:port comp:id="C_port" comp:idRef="C"/>
+ </comp:listOfPorts>
+ </model>
+ <comp:listOfModelDefinitions>
+ <comp:modelDefinition id="moddef1">
+ <listOfCompartments>
+ <compartment id="C" spatialDimensions="3" size="1" constant="false"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S1" compartment="C" initialConcentration="2.5" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ </comp:modelDefinition>
+ <comp:modelDefinition id="moddef2">
+ <listOfCompartments>
+ <compartment id="C" spatialDimensions="3" size="1" constant="false"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S1" compartment="C" initialAmount="9" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="sub1" comp:modelRef="moddef1"/>
+ </comp:listOfSubmodels>
+ </comp:modelDefinition>
+
+ </comp:listOfModelDefinitions>
+</sbml>
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-fail-01-05.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-fail-01-05.xml 2013-06-26 14:23:47 UTC (rev 17960)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-fail-01-05.xml 2013-06-27 12:41:34 UTC (rev 17961)
@@ -20,13 +20,13 @@
<listOfSpecies>
<species id="S1" compartment="C" initialAmount="5" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false">
<comp:listOfReplacedElements>
- <comp:replacedElement comp:idRef="sub2" comp:submodelRef="sub2">
+ <comp:replacedElement comp:idRef="sub1" comp:submodelRef="sub2">
<comp:sBaseRef comp:idRef="sub1">
<comp:sBaseRef comp:idRef="S1"/>
</comp:sBaseRef>
</comp:replacedElement>
</comp:listOfReplacedElements>
- <comp:replacedBy comp:idRef="sub1" comp:submodelRef="sub2">
+ <comp:replacedBy comp:idRef="sub2" comp:submodelRef="sub2">
<comp:sBaseRef comp:idRef="S1"/>
</comp:replacedBy>
</species>
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-pass-00-01.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-pass-00-01.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-pass-00-01.xml 2013-06-27 12:41:34 UTC (rev 17961)
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1"
+ xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" comp:required="true">
+ <model id="complexified">
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true">
+ <comp:listOfReplacedElements>
+ <comp:replacedElement comp:idRef="comp" comp:submodelRef="B"/>
+ </comp:listOfReplacedElements>
+ </compartment>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+ <comp:replacedBy comp:portRef="S_port" comp:submodelRef="B"/>
+ </species>
+ <species id="D" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+ <comp:replacedBy comp:portRef="D_port" comp:submodelRef="B"/>
+ </species>
+ </listOfSpecies>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="B" comp:modelRef="simple">
+ <comp:listOfDeletions>
+ <comp:deletion comp:portRef="J0_port"/>
+ </comp:listOfDeletions>
+ </comp:submodel>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfModelDefinitions>
+ <comp:modelDefinition id="simple">
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" initialConcentration="5" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ <species id="D" compartment="comp" initialConcentration="10" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ <listOfReactions>
+ <reaction id="J0" reversible="true" fast="false">
+ <listOfReactants>
+ <speciesReference species="S" stoichiometry="1" constant="true"/>
+ </listOfReactants>
+ <listOfProducts>
+ <speciesReference species="D" stoichiometry="1" constant="true"/>
+ </listOfProducts>
+ </reaction>
+ </listOfReactions>
+ <comp:listOfPorts>
+ <comp:port comp:idRef="S" comp:id="S_port"/>
+ <comp:port comp:idRef="D" comp:id="D_port"/>
+ <comp:port comp:idRef="comp" comp:id="comp_port"/>
+ <comp:port comp:idRef="J0" comp:id="J0_port"/>
+ </comp:listOfPorts>
+ </comp:modelDefinition>
+ </comp:listOfModelDefinitions>
+</sbml>
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-pass-00-02.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-pass-00-02.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-pass-00-02.xml 2013-06-27 12:41:34 UTC (rev 17961)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1"
+ xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" comp:required="true">
+ <model id="complexified">
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" initialConcentration="5" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ <species id="D" compartment="comp" initialConcentration="10" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ <listOfReactions>
+ <reaction id="J0" reversible="true" fast="false">
+ <listOfReactants>
+ <speciesReference species="S" stoichiometry="1" constant="true"/>
+ </listOfReactants>
+ <listOfProducts>
+ <speciesReference species="D" stoichiometry="1" constant="true"/>
+ </listOfProducts>
+ </reaction>
+ </listOfReactions>
+ <comp:listOfPorts>
+ <comp:port comp:idRef="S" comp:id="S_port"/>
+ <comp:port comp:idRef="D" comp:id="D_port"/>
+ <comp:port comp:idRef="comp" comp:id="comp_port"/>
+ <comp:port comp:idRef="J0" comp:id="J0_port"/>
+ </comp:listOfPorts>
+ </model>
+</sbml>
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-pass-00-03.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-pass-00-03.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-pass-00-03.xml 2013-06-27 12:41:34 UTC (rev 17961)
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1"
+ xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" comp:required="true">
+ <model id="complexified">
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true">
+
+ </compartment>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ <species id="D" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ </listOfSpecies>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="B" comp:modelRef="simple">
+ <comp:listOfDeletions>
+ <comp:deletion comp:idRef="D"/>
+ </comp:listOfDeletions>
+ </comp:submodel>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfModelDefinitions>
+ <comp:modelDefinition id="simple">
+ <listOfUnitDefinitions>
+ <unitDefinition id="perSecond">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" initialConcentration="5" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ <species id="D" compartment="comp" initialConcentration="10" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ <listOfReactions>
+ <reaction id="J0" reversible="true" fast="false">
+ <listOfReactants>
+ <speciesReference species="S" stoichiometry="1" constant="true"/>
+ </listOfReactants>
+ <listOfProducts>
+ <speciesReference species="D" stoichiometry="1" constant="true"/>
+ </listOfProducts>
+ </reaction>
+ </listOfReactions>
+ </comp:modelDefinition>
+ </comp:listOfModelDefinitions>
+</sbml>
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-pass-00-04.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-pass-00-04.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-pass-00-04.xml 2013-06-27 12:41:34 UTC (rev 17961)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model>
+ <listOfUnitDefinitions>
+ <unitDefinition id="ddd">
+ <listOfUnits>
+ <unit kind="litre" multiplier="1" scale="0" exponent="0"/>
+ </listOfUnits>
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="C" spatialDimensions="3" size="10" constant="false" metaid="CD">
+ <comp:listOfReplacedElements>
+ <comp:replacedElement comp:idRef="sub1" comp:submodelRef="sub2">
+ <comp:sBaseRef comp:idRef="C"/>
+ </comp:replacedElement>
+ </comp:listOfReplacedElements>
+ </compartment>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S1" compartment="C" initialAmount="5" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false">
+ <comp:listOfReplacedElements>
+ <comp:replacedElement comp:idRef="sub1" comp:submodelRef="sub2">
+ <comp:sBaseRef comp:idRef="sub1">
+ <comp:sBaseRef comp:idRef="S1"/>
+ </comp:sBaseRef>
+ </comp:replacedElement>
+ </comp:listOfReplacedElements>
+ <comp:replacedBy comp:idRef="S1" comp:submodelRef="sub2">
+ <comp:sBaseRef comp:idRef="S1"/>
+ </comp:replacedBy>
+ </species>
+ </listOfSpecies>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="sub1" comp:modelRef="moddef1"/>
+ <comp:submodel comp:id="sub2" comp:modelRef="moddef2"/>
+ </comp:listOfSubmodels>
+ <comp:listOfPorts>
+ <comp:port comp:id="C_port" comp:idRef="C"/>
+ </comp:listOfPorts>
+ </model>
+ <comp:listOfModelDefinitions>
+ <comp:modelDefinition id="moddef1">
+ <listOfCompartments>
+ <compartment id="C" spatialDimensions="3" size="1" constant="false"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S1" compartment="C" initialConcentration="2.5" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ </comp:modelDefinition>
+ <comp:modelDefinition id="moddef2">
+ <listOfCompartments>
+ <compartment id="C" spatialDimensions="3" size="1" constant="false"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S1" compartment="C" initialAmount="9" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="sub1" comp:modelRef="moddef1"/>
+ </comp:listOfSubmodels>
+ </comp:modelDefinition>
+
+ </comp:listOfModelDefinitions>
+</sbml>
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-fail-01-02.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-fail-01-02.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-fail-01-02.xml 2013-06-27 12:41:34 UTC (rev 17961)
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1"
+ xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" comp:required="true">
+ <model id="complexified">
+ <listOfUnitDefinitions>
+ <unitDefinition id="xyz">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+ <comp:listOfReplacedElements>
+ <comp:replacedElement comp:unitRef="not_per_second" comp:submodelRef="B"/>
+ </comp:listOfReplacedElements>
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true">
+
+ </compartment>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ <species id="D" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ </listOfSpecies>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="B" comp:modelRef="simple">
+ </comp:submodel>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfModelDefinitions>
+ <comp:modelDefinition id="simple">
+ <listOfUnitDefinitions>
+ <unitDefinition id="perSecond">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" initialConcentration="5" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ <species id="D" compartment="comp" initialConcentration="10" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ <listOfReactions>
+ <reaction id="J0" reversible="true" fast="false">
+ <listOfReactants>
+ <speciesReference species="S" stoichiometry="1" constant="true"/>
+ </listOfReactants>
+ <listOfProducts>
+ <speciesReference species="D" stoichiometry="1" constant="true"/>
+ </listOfProducts>
+ </reaction>
+ </listOfReactions>
+ </comp:modelDefinition>
+ </comp:listOfModelDefinitions>
+</sbml>
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-fail-01-03.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-fail-01-03.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-fail-01-03.xml 2013-06-27 12:41:34 UTC (rev 17961)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1"
+ xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" comp:required="true">
+ <model id="complexified">
+ <listOfUnitDefinitions>
+ <unitDefinition id="xyz">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+ <comp:replacedBy comp:unitRef="sub1" comp:submodelRef="B"/>
+
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true">
+
+ </compartment>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ <species id="D" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ </listOfSpecies>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="B" comp:modelRef="simple">
+ </comp:submodel>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfModelDefinitions>
+ <comp:modelDefinition id="simple">
+ <listOfUnitDefinitions>
+ <unitDefinition id="perSecond">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" initialConcentration="5" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ <species id="D" compartment="comp" initialConcentration="10" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ <listOfReactions>
+ <reaction id="J0" reversible="true" fast="false">
+ <listOfReactants>
+ <speciesReference species="S" stoichiometry="1" constant="true"/>
+ </listOfReactants>
+ <listOfProducts>
+ <speciesReference species="D" stoichiometry="1" constant="true"/>
+ </listOfProducts>
+ </reaction>
+ </listOfReactions>
+ </comp:modelDefinition>
+ </comp:listOfModelDefinitions>
+</sbml>
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-fail-01-04.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-fail-01-04.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-fail-01-04.xml 2013-06-27 12:41:34 UTC (rev 17961)
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1"
+ xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" comp:required="true">
+ <model id="complexified">
+ <listOfUnitDefinitions>
+ <unitDefinition id="xyz">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+
+
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true">
+
+ </compartment>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ <species id="D" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ </listOfSpecies>
+ <comp:listOfPorts>
+ <comp:port comp:id="C_port" comp:unitRef="param1"/>
+ </comp:listOfPorts>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="B" comp:modelRef="simple">
+ </comp:submodel>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfModelDefinitions>
+ <comp:modelDefinition id="simple">
+ <listOfUnitDefinitions>
+ <unitDefinition id="perSecond">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" initialConcentration="5" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ <species id="D" compartment="comp" initialConcentration="10" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ <listOfReactions>
+ <reaction id="J0" reversible="true" fast="false">
+ <listOfReactants>
+ <speciesReference species="S" stoichiometry="1" constant="true"/>
+ </listOfReactants>
+ <listOfProducts>
+ <speciesReference species="D" stoichiometry="1" constant="true"/>
+ </listOfProducts>
+ </reaction>
+ </listOfReactions>
+ </comp:modelDefinition>
+ </comp:listOfModelDefinitions>
+</sbml>
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-pass-00-01.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-pass-00-01.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-pass-00-01.xml 2013-06-27 12:41:34 UTC (rev 17961)
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1"
+ xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" comp:required="true">
+ <model id="complexified">
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true">
+
+ </compartment>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ <species id="D" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ </listOfSpecies>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="B" comp:modelRef="simple">
+ <comp:listOfDeletions>
+ <comp:deletion comp:unitRef="perSecond"/>
+ </comp:listOfDeletions>
+ </comp:submodel>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfModelDefinitions>
+ <comp:modelDefinition id="simple">
+ <listOfUnitDefinitions>
+ <unitDefinition id="perSecond">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" initialConcentration="5" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ <species id="D" compartment="comp" initialConcentration="10" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ <listOfReactions>
+ <reaction id="J0" reversible="true" fast="false">
+ <listOfReactants>
+ <speciesReference species="S" stoichiometry="1" constant="true"/>
+ </listOfReactants>
+ <listOfProducts>
+ <speciesReference species="D" stoichiometry="1" constant="true"/>
+ </listOfProducts>
+ </reaction>
+ </listOfReactions>
+ </comp:modelDefinition>
+ </comp:listOfModelDefinitions>
+</sbml>
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-pass-00-02.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-pass-00-02.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-pass-00-02.xml 2013-06-27 12:41:34 UTC (rev 17961)
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1"
+ xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" comp:required="true">
+ <model id="complexified">
+ <listOfUnitDefinitions>
+ <unitDefinition id="xyz">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+ <comp:listOfReplacedElements>
+ <comp:replacedElement comp:unitRef="perSecond" comp:submodelRef="B"/>
+ </comp:listOfReplacedElements>
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true">
+
+ </compartment>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ <species id="D" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ </listOfSpecies>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="B" comp:modelRef="simple">
+ </comp:submodel>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfModelDefinitions>
+ <comp:modelDefinition id="simple">
+ <listOfUnitDefinitions>
+ <unitDefinition id="perSecond">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" initialConcentration="5" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ <species id="D" compartment="comp" initialConcentration="10" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ <listOfReactions>
+ <reaction id="J0" reversible="true" fast="false">
+ <listOfReactants>
+ <speciesReference species="S" stoichiometry="1" constant="true"/>
+ </listOfReactants>
+ <listOfProducts>
+ <speciesReference species="D" stoichiometry="1" constant="true"/>
+ </listOfProducts>
+ </reaction>
+ </listOfReactions>
+ </comp:modelDefinition>
+ </comp:listOfModelDefinitions>
+</sbml>
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-pass-00-03.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-pass-00-03.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-pass-00-03.xml 2013-06-27 12:41:34 UTC (rev 17961)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1"
+ xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" comp:required="true">
+ <model id="complexified">
+ <listOfUnitDefinitions>
+ <unitDefinition id="xyz">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+ <comp:replacedBy comp:unitRef="perSecond" comp:submodelRef="B"/>
+
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true">
+
+ </compartment>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ <species id="D" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ </listOfSpecies>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="B" comp:modelRef="simple">
+ </comp:submodel>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfModelDefinitions>
+ <comp:modelDefinition id="simple">
+ <listOfUnitDefinitions>
+ <unitDefinition id="perSecond">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" initialConcentration="5" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ <species id="D" compartment="comp" initialConcentration="10" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ <listOfReactions>
+ <reaction id="J0" reversible="true" fast="false">
+ <listOfReactants>
+ <speciesReference species="S" stoichiometry="1" constant="true"/>
+ </listOfReactants>
+ <listOfProducts>
+ <speciesReference species="D" stoichiometry="1" constant="true"/>
+ </listOfProducts>
+ </reaction>
+ </listOfReactions>
+ </comp:modelDefinition>
+ </comp:listOfModelDefinitions>
+</sbml>
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-pass-00-04.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-pass-00-04.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020703-pass-00-04.xml 2013-06-27 12:41:34 UTC (rev 17961)
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1"
+ xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" comp:required="true">
+ <model id="complexified">
+ <listOfUnitDefinitions>
+ <unitDefinition id="xyz">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+
+
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true">
+
+ </compartment>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ <species id="D" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ </listOfSpecies>
+ <comp:listOfPorts>
+ <comp:port comp:id="C_port" comp:unitRef="xyz"/>
+ </comp:listOfPorts>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="B" comp:modelRef="simple">
+ </comp:submodel>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfModelDefinitions>
+ <comp:modelDefinition id="simple">
+ <listOfUnitDefinitions>
+ <unitDefinition id="perSecond">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" initialConcentration="5" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ <species id="D" compartment="comp" initialConcentration="10" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ <listOfReactions>
+ <reaction id="J0" reversible="true" fast="false">
+ <listOfReactants>
+ <speciesReference species="S" stoichiometry="1" constant="true"/>
+ </listOfReactants>
+ <listOfProducts>
+ <speciesReference species="D" stoichiometry="1" constant="true"/>
+ </listOfProducts>
+ </reaction>
+ </listOfReactions>
+ </comp:modelDefinition>
+ </comp:listOfModelDefinitions>
+</sbml>
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-fail-01-01.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-fail-01-01.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-fail-01-01.xml 2013-06-27 12:41:34 UTC (rev 17961)
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1"
+ xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" comp:required="true">
+ <model id="complexified">
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true">
+ <comp:listOfReplacedElements>
+ <comp:replacedElement comp:metaIdRef="non_existing_meta_id_comp" comp:submodelRef="B"/>
+ </comp:listOfReplacedElements>
+ </compartment>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+ <comp:replacedBy comp:portRef="S_port" comp:submodelRef="B"/>
+ </species>
+ <species id="D" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+ <comp:replacedBy comp:portRef="D_port" comp:submodelRef="B"/>
+ </species>
+ </listOfSpecies>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="B" comp:modelRef="simple">
+ <comp:listOfDeletions>
+ <comp:deletion comp:portRef="J0_port"/>
+ <comp:deletion comp:unitRef="perSecond"/>
+ </comp:listOfDeletions>
+ </comp:submodel>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfModelDefinitions>
+ <comp:modelDefinition id="simple">
+ <listOfUnitDefinitions>
+ <unitDefinition id="perSecond">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true" metaid="_"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" initialConcentration="5" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ <species id="D" compartment="comp" initialConcentration="10" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ <listOfReactions>
+ <reaction id="J0" reversible="true" fast="false">
+ <listOfReactants>
+ <speciesReference species="S" stoichiometry="1" constant="true"/>
+ </listOfReactants>
+ <listOfProducts>
+ <speciesReference species="D" stoichiometry="1" constant="true"/>
+ </listOfProducts>
+ </reaction>
+ </listOfReactions>
+ <comp:listOfPorts>
+ <comp:port comp:idRef="S" comp:id="S_port"/>
+ <comp:port comp:idRef="D" comp:id="D_port"/>
+ <comp:port comp:idRef="comp" comp:id="comp_port"/>
+ <comp:port comp:idRef="J0" comp:id="J0_port"/>
+ </comp:listOfPorts>
+ </comp:modelDefinition>
+ </comp:listOfModelDefinitions>
+</sbml>
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-fail-01-02.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-fail-01-02.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-fail-01-02.xml 2013-06-27 12:41:34 UTC (rev 17961)
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1"
+ xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" comp:required="true">
+ <model id="complexified">
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true">
+
+ </compartment>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ <species id="D" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ </listOfSpecies>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="B" comp:modelRef="simple">
+ <comp:listOfDeletions>
+ <comp:deletion comp:metaIdRef="not_perSecond"/>
+ </comp:listOfDeletions>
+ </comp:submodel>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfModelDefinitions>
+ <comp:modelDefinition id="simple">
+ <listOfUnitDefinitions>
+ <unitDefinition id="perSecond">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" initialConcentration="5" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ <species id="D" compartment="comp" initialConcentration="10" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ <listOfReactions>
+ <reaction id="J0" reversible="true" fast="false">
+ <listOfReactants>
+ <speciesReference species="S" stoichiometry="1" constant="true"/>
+ </listOfReactants>
+ <listOfProducts>
+ <speciesReference species="D" stoichiometry="1" constant="true"/>
+ </listOfProducts>
+ </reaction>
+ </listOfReactions>
+ </comp:modelDefinition>
+ </comp:listOfModelDefinitions>
+</sbml>
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-fail-01-03.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-fail-01-03.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-fail-01-03.xml 2013-06-27 12:41:34 UTC (rev 17961)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1"
+ xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" comp:required="true">
+ <model id="complexified">
+ <listOfUnitDefinitions>
+ <unitDefinition id="xyz">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+ <comp:replacedBy comp:metaIdRef="sub1" comp:submodelRef="B"/>
+
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true">
+
+ </compartment>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ <species id="D" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ </listOfSpecies>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="B" comp:modelRef="simple">
+ </comp:submodel>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfModelDefinitions>
+ <comp:modelDefinition id="simple">
+ <listOfUnitDefinitions>
+ <unitDefinition id="perSecond">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" initialConcentration="5" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ <species id="D" compartment="comp" initialConcentration="10" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ <listOfReactions>
+ <reaction id="J0" reversible="true" fast="false">
+ <listOfReactants>
+ <speciesReference species="S" stoichiometry="1" constant="true"/>
+ </listOfReactants>
+ <listOfProducts>
+ <speciesReference species="D" stoichiometry="1" constant="true"/>
+ </listOfProducts>
+ </reaction>
+ </listOfReactions>
+ </comp:modelDefinition>
+ </comp:listOfModelDefinitions>
+</sbml>
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-fail-01-04.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-fail-01-04.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020704-fail-01-04.xml 2013-06-27 12:41:34 UTC (rev 17961)
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1"
+ xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" comp:required="true">
+ <model id="complexified">
+ <listOfUnitDefinitions>
+ <unitDefinition id="xyz">
+ <listOfUnits>
+ <unit kind="second" exponent="-1" scale="0" multiplier="1"/>
+ </listOfUnits>
+
+
+ </unitDefinition>
+ </listOfUnitDefinitions>
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true">
+
+ </compartment>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ <species id="D" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+
+ </species>
+ </listOfSpecies>
+ <comp:listOfPorts>
+ <comp:port comp:id="C_port" comp:metaIdRef="param1"/>
+ </comp:listOfPorts>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="B" comp:modelRef="simple">
+ </comp:submodel>
+ </...
[truncated message content] |
|
From: <sar...@us...> - 2013-06-26 14:23:52
|
Revision: 17960
http://sourceforge.net/p/sbml/code/17960
Author: sarahkeating
Date: 2013-06-26 14:23:47 +0000 (Wed, 26 Jun 2013)
Log Message:
-----------
comp validation: does an idRef point to an actual id check
Modified Paths:
--------------
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/CompConsistencyConstraints.cpp
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020101-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020103-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020103-fail-01-02.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020103-pass-00-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020105-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020607-fail-01-02.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020608-fail-01-01-1020615.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020615-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020615-pass-00-02.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020701-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020801-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020801-pass-00-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020801-pass-00-02.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020801-pass-00-03.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020802-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020802-fail-01-02.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020802-fail-01-03.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020802-fail-01-04.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020803-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020902-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020902-fail-01-05.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020902-fail-01-06.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020902-fail-01-07.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020902-fail-01-08.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020902-fail-01-10.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020902-fail-01-11.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1021101-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1021101-pass-00-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1021101-pass-00-02.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1021101-pass-00-03.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1021101-pass-00-04.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1021102-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1021102-fail-01-02.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1021102-fail-01-03.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1021102-fail-01-04.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1021102-fail-01-05.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1021102-fail-01-06.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1021102-fail-01-07.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1021102-fail-01-08.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1021102-fail-01-09.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1021103-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1021104-fail-01-01.xml
Added Paths:
-----------
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020616-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-fail-01-02.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-fail-01-03.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-fail-01-04.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-fail-01-05.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020707-fail-01-01-1020702.xml
Removed Paths:
-------------
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020616-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020707-fail-01-01.xml
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/CompConsistencyConstraints.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/CompConsistencyConstraints.cpp 2013-06-25 15:24:04 UTC (rev 17959)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/CompConsistencyConstraints.cpp 2013-06-26 14:23:47 UTC (rev 17960)
@@ -35,6 +35,7 @@
#include <sbml/packages/comp/util/SBMLUri.h>
#include <sbml/SBMLTypes.h>
#include <sbml/packages/comp/common/CompExtensionTypes.h>
+#include <sbml/util/ElementFilter.h>
#include "ExtModelReferenceCycles.h"
#include "SubmodelReferenceCycles.h"
@@ -49,6 +50,40 @@
/** @endcond */
+/**
+ * This class implements an element filter, that can be used to find elements
+ * with notes
+ */
+class IdFilter : public ElementFilter
+{
+public:
+ IdFilter() : ElementFilter()
+ {
+ }
+
+ virtual bool filter(const SBase* element)
+ {
+ // return in case we don't have a valid element with an id
+ if (element == NULL || element->isSetId() == false)
+ {
+ return false;
+ }
+
+ // otherwise we have an id set and want to keep the element
+ // unless it is a rule or intialAssignment/eventAssignment
+ int tc = element->getTypeCode();
+ if (tc == SBML_ASSIGNMENT_RULE || tc == SBML_RATE_RULE
+ || tc == SBML_INITIAL_ASSIGNMENT || tc == SBML_EVENT_ASSIGNMENT)
+ {
+ return false;
+ }
+
+
+ return true;
+ }
+
+};
+
//*************************************
//SBase constraints
@@ -88,29 +123,21 @@
{
pre (emd.isSetSource() == true);
pre (emd.isSetId() == true);
-
- const SBMLDocument* doc = emd.getSBMLDocument();
- pre(doc != NULL);
- string locationURI = doc->getLocationURI();
- string uri = emd.getSource();
- doc = NULL;
-
+
bool fail = false;
- const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
-
- SBMLUri* resolved = registry.resolveUri(uri, locationURI);
- pre(resolved != NULL )
-
msg = "<externalModelDefinition> '";
msg += emd.getId();
msg += "' refers to a URI '";
msg += emd.getSource();
msg += "' which is not an SBML Level 3 document.";
- //TODO: is this necessatry
- string resolvedURI = resolved->getUri();
- delete resolved;
+ const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
+ const SBMLDocument* doc = emd.getSBMLDocument();
+ pre(doc != NULL);
+ string locationURI = doc->getLocationURI();
+ string uri = emd.getSource();
+ doc = NULL;
doc = registry.resolve(uri, locationURI);
pre (doc != NULL);
@@ -133,29 +160,30 @@
pre (emd.isSetId() == true);
pre (emd.isSetModelRef() == true);
+ bool fail = false;
+
+ msg = "<externalModelDefinition> '";
+ msg += emd.getId() ;
+ msg += "' refers to a model with id '";
+ msg += emd.getModelRef();
+ msg += "' that does not exist in the referenced document.";
+
+ const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
const SBMLDocument* doc = emd.getSBMLDocument();
pre(doc != NULL);
string locationURI = doc->getLocationURI();
string uri = emd.getSource();
- const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
- SBMLUri* resolved = registry.resolveUri(uri, locationURI);
- pre(resolved != NULL )
- string resolvedURI = resolved->getUri();
- delete resolved;
+ //SBMLUri* resolved = registry.resolveUri(uri, locationURI);
+ //pre(resolved != NULL )
+ //string resolvedURI = resolved->getUri();
+ //delete resolved;
doc = registry.resolve(uri, locationURI);
pre(doc != NULL);
pre(doc->getLevel() == 3);
- bool fail = false;
-
- msg = "<externalModelDefinition> '";
- msg += emd.getId() ;
- msg += "' refers to a model with id '";
- msg += emd.getModelRef();
- msg += "' that does not exist in the referenced document.";
-
- const CompSBMLDocumentPlugin* csdp = static_cast<const CompSBMLDocumentPlugin*>(doc->getPlugin(emd.getPrefix()));
+ const CompSBMLDocumentPlugin* csdp =
+ static_cast<const CompSBMLDocumentPlugin*>(doc->getPlugin("comp"));
if (csdp == NULL)
{
const Model* model = doc->getModel();
@@ -260,9 +288,11 @@
msg = "<submodel> '";
msg += s.getId() ;
msg += "' in ";
- const Model* mod = static_cast<const Model*>(s.getAncestorOfType(SBML_MODEL, "core"));
+ const Model* mod = static_cast<const Model*>
+ (s.getAncestorOfType(SBML_MODEL, "core"));
if (mod == NULL) {
- mod = static_cast<const Model*>(s.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
+ mod = static_cast<const Model*>
+ (s.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
}
if (mod == NULL || !mod->isSetId()) {
msg += "the main model in the document";
@@ -288,6 +318,8 @@
// do we refernce an external modelDefinition
CompSBMLDocumentPlugin *docPlug = (CompSBMLDocumentPlugin*)
(m.getSBMLDocument()->getPlugin("comp"));
+ pre (docPlug != NULL);
+
ModelDefinition * md = docPlug->getModelDefinition(s.getModelRef());
if (md == NULL)
{
@@ -319,9 +351,12 @@
msg = "<submodel> '";
msg += s.getId() ;
msg += "' in ";
- const Model* mod = static_cast<const Model*>(s.getAncestorOfType(SBML_MODEL, "core"));
- if (mod == NULL) {
- mod = static_cast<const Model*>(s.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
+ const Model* mod = static_cast<const Model*>
+ (s.getAncestorOfType(SBML_MODEL, "core"));
+ if (mod == NULL)
+ {
+ mod = static_cast<const Model*>
+ (s.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
}
if (mod == NULL || !mod->isSetId()) {
msg += "the main model in the document";
@@ -345,8 +380,9 @@
}
END_CONSTRAINT
-//TODO: 20617 circular dependencies
-EXTERN_CONSTRAINT( CompModCannotCircularlyReferenceSelf, SubmodelReferenceCycles)
+// 20617
+EXTERN_CONSTRAINT( CompModCannotCircularlyReferenceSelf,
+ SubmodelReferenceCycles)
// 20618 - 20621 non existant
@@ -360,9 +396,11 @@
msg = "The 'timeConversionFactor' of <submodel> '";
msg += s.getId() ;
msg += "' in ";
- const Model* mod = static_cast<const Model*>(s.getAncestorOfType(SBML_MODEL, "core"));
+ const Model* mod = static_cast<const Model*>
+ (s.getAncestorOfType(SBML_MODEL, "core"));
if (mod == NULL) {
- mod = static_cast<const Model*>(s.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
+ mod = static_cast<const Model*>
+ (s.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
}
if (mod == NULL || !mod->isSetId()) {
msg += "the main model in the document";
@@ -396,9 +434,11 @@
msg = "The 'extentConversionFactor' of <submodel> '";
msg += s.getId() ;
msg += "' in ";
- const Model* mod = static_cast<const Model*>(s.getAncestorOfType(SBML_MODEL, "core"));
+ const Model* mod = static_cast<const Model*>
+ (s.getAncestorOfType(SBML_MODEL, "core"));
if (mod == NULL) {
- mod = static_cast<const Model*>(s.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
+ mod = static_cast<const Model*>
+ (s.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
}
if (mod == NULL || !mod->isSetId()) {
msg += "the main model in the document";
@@ -439,9 +479,9 @@
bool fail = false;
const Submodel * sub = static_cast<const Submodel*>
- (d.getAncestorOfType(SBML_COMP_SUBMODEL, "comp"));
+ (d.getAncestorOfType(SBML_COMP_SUBMODEL, "comp"));
+ pre (sub != NULL);
-
msg = "The 'portRef' of a <deletion>";
msg += " is set to '";
msg += d.getPortRef();
@@ -453,20 +493,38 @@
std::string modelId = sub->getModelRef();
const SBMLDocument * doc = d.getSBMLDocument();
+ pre (doc != NULL);
+
CompSBMLDocumentPlugin * docPlug =
(CompSBMLDocumentPlugin*)(doc->getPlugin("comp"));
+ pre (docPlug != NULL);
+
Model * referencedModel = docPlug->getModelDefinition(modelId);
if (referencedModel == NULL)
{
- fail = true;
+ // may be an external model
+ ExternalModelDefinition * emd =
+ docPlug->getExternalModelDefinition(modelId);
+ pre (emd != NULL);
+
+ string locationURI = doc->getLocationURI();
+ string uri = emd->getSource();
+
+ const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
+ SBMLDocument *newDoc = registry.resolve(uri, locationURI);
+ pre(newDoc != NULL);
+ referencedModel = newDoc->getModel();
}
- else
+
+ pre (referencedModel != NULL);
+
+ CompModelPlugin *plug1 =
+ (CompModelPlugin*)(referencedModel->getPlugin("comp"));
+ pre (plug1 != NULL);
+
+ if (plug1->getPort(d.getPortRef()) == NULL)
{
- CompModelPlugin *plug1 = (CompModelPlugin*)(referencedModel->getPlugin("comp"));
- if (plug1->getPort(d.getPortRef()) == NULL)
- {
- fail = true;
- }
+ fail = true;
}
inv(fail == false);
@@ -491,23 +549,45 @@
/* need to be using the correct model */
CompModelPlugin *plug = (CompModelPlugin*)(m.getPlugin("comp"));
- std::string modelId = (plug->getSubmodel(repE.getSubmodelRef()))->getModelRef();
+
+ pre (plug != NULL);
+ pre (plug->getSubmodel(repE.getSubmodelRef()) != NULL);
+ std::string modelId =
+ (plug->getSubmodel(repE.getSubmodelRef()))->getModelRef();
+
const SBMLDocument * doc = repE.getSBMLDocument();
CompSBMLDocumentPlugin * docPlug =
(CompSBMLDocumentPlugin*)(doc->getPlugin("comp"));
+
+ pre (docPlug != NULL);
+
Model * referencedModel = docPlug->getModelDefinition(modelId);
if (referencedModel == NULL)
{
- fail = true;
+ // may be an external model
+ ExternalModelDefinition * emd =
+ docPlug->getExternalModelDefinition(modelId);
+ pre (emd != NULL);
+
+ string locationURI = doc->getLocationURI();
+ string uri = emd->getSource();
+
+ const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
+ SBMLDocument *newDoc = registry.resolve(uri, locationURI);
+ pre(newDoc != NULL);
+ referencedModel = newDoc->getModel();
}
- else
+
+ pre (referencedModel != NULL);
+
+ CompModelPlugin *plug1 =
+ (CompModelPlugin*)(referencedModel->getPlugin("comp"));
+ pre (plug1 != NULL);
+
+ if (plug1->getPort(repE.getPortRef()) == NULL)
{
- CompModelPlugin *plug1 = (CompModelPlugin*)(referencedModel->getPlugin("comp"));
- if (plug1->getPort(repE.getPortRef()) == NULL)
- {
- fail = true;
- }
+ fail = true;
}
inv(fail == false);
@@ -532,31 +612,315 @@
/* need to be using the correct model */
CompModelPlugin *plug = (CompModelPlugin*)(m.getPlugin("comp"));
- std::string modelId = (plug->getSubmodel(repBy.getSubmodelRef()))->getModelRef();
+
+ pre (plug != NULL);
+ pre (plug->getSubmodel(repBy.getSubmodelRef()) != NULL);
+ std::string modelId =
+ (plug->getSubmodel(repBy.getSubmodelRef()))->getModelRef();
+
const SBMLDocument * doc = repBy.getSBMLDocument();
+ pre (doc != NULL);
+
CompSBMLDocumentPlugin * docPlug =
(CompSBMLDocumentPlugin*)(doc->getPlugin("comp"));
+
+ pre (docPlug != NULL);
+
Model * referencedModel = docPlug->getModelDefinition(modelId);
if (referencedModel == NULL)
{
+ // may be an external model
+ ExternalModelDefinition * emd =
+ docPlug->getExternalModelDefinition(modelId);
+ pre (emd != NULL);
+
+ string locationURI = doc->getLocationURI();
+ string uri = emd->getSource();
+
+ const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
+ SBMLDocument *newDoc = registry.resolve(uri, locationURI);
+ pre(newDoc != NULL);
+ referencedModel = newDoc->getModel();
+ }
+
+ pre (referencedModel != NULL);
+
+ CompModelPlugin *plug1 =
+ (CompModelPlugin*)(referencedModel->getPlugin("comp"));
+ pre (plug1 != NULL);
+
+ if (plug1->getPort(repBy.getPortRef()) == NULL)
+ {
fail = true;
}
- else
+
+ inv(fail == false);
+}
+END_CONSTRAINT
+
+// 20702
+//20702 - port
+START_CONSTRAINT (CompIdRefMustReferenceObject, Port, p)
+{
+ pre(p.isSetIdRef());
+
+ bool fail = false;
+
+ msg = "The 'idRef' of a <port>";
+ msg += " is set to '";
+ msg += p.getIdRef();
+ msg += "' which is not an element within the <model>.";
+
+ IdList mIds;
+
+ // create the filter we want to use
+ IdFilter filter;
+
+ // get a list of all elements with an id
+ const Model* mod =
+ static_cast<const Model*>(p.getAncestorOfType(SBML_MODEL, "core"));
+ if (mod == NULL)
{
- CompModelPlugin *plug1 = (CompModelPlugin*)(referencedModel->getPlugin("comp"));
- if (plug1->getPort(repBy.getPortRef()) == NULL)
- {
- fail = true;
- }
+ mod = static_cast<const Model*>
+ (p.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
}
+
+ List* allElements = const_cast<Model*>(mod)->getAllElements(&filter);
+ for (unsigned int i = 0; i < allElements->getSize(); i++)
+ {
+ mIds.append(static_cast<SBase*>(allElements->get(i))->getId());
+ }
+
+
+ if (mIds.contains(p.getIdRef()) == false)
+ {
+ fail = true;
+ }
+
inv(fail == false);
}
END_CONSTRAINT
-//TODO: 20702 - to do
+// 20702 - deletion
+START_CONSTRAINT (CompIdRefMustReferenceObject, Deletion, d)
+{
+ pre(d.isSetIdRef());
+
+ bool fail = false;
+ const Submodel * sub = static_cast<const Submodel*>
+ (d.getAncestorOfType(SBML_COMP_SUBMODEL, "comp"));
+ pre (sub != NULL);
+
+ msg = "The 'idRef' of a <deletion>";
+ msg += " is set to '";
+ msg += d.getIdRef();
+ msg += "' which is not an element within the <model> referenced by ";
+ msg += "submodel '";
+ msg += sub->getId();
+ msg += "'.";
+
+ std::string modelId = sub->getModelRef();
+
+ const SBMLDocument * doc = d.getSBMLDocument();
+ pre (doc != NULL);
+
+ CompSBMLDocumentPlugin * docPlug =
+ (CompSBMLDocumentPlugin*)(doc->getPlugin("comp"));
+ pre (docPlug != NULL);
+
+ Model * referencedModel = docPlug->getModelDefinition(modelId);
+ if (referencedModel == NULL)
+ {
+ // may be an external model
+ ExternalModelDefinition * emd =
+ docPlug->getExternalModelDefinition(modelId);
+ pre (emd != NULL);
+
+ string locationURI = doc->getLocationURI();
+ string uri = emd->getSource();
+
+ const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
+ SBMLDocument *newDoc = registry.resolve(uri, locationURI);
+ pre(newDoc != NULL);
+ referencedModel = newDoc->getModel();
+ }
+
+ pre (referencedModel != NULL);
+
+ IdList mIds;
+
+ // create the filter we want to use
+ IdFilter filter;
+
+ // get a list of all elements with an id
+ List* allElements = referencedModel->getAllElements(&filter);
+
+ for (unsigned int i = 0; i < allElements->getSize(); i++)
+ {
+ mIds.append(static_cast<SBase*>(allElements->get(i))->getId());
+ }
+
+
+ if (mIds.contains(d.getIdRef()) == false)
+ {
+ fail = true;
+ }
+
+ inv(fail == false);
+}
+END_CONSTRAINT
+
+// 20702 - replacedElement
+START_CONSTRAINT (CompIdRefMustReferenceObject, ReplacedElement, repE)
+{
+ pre(repE.isSetIdRef());
+ pre(repE.isSetSubmodelRef());
+
+ bool fail = false;
+
+ msg = "The 'idRef' of a <replacedElement>";
+ msg += " is set to '";
+ msg += repE.getIdRef();
+ msg += "' which is not an element within the <model> referenced by ";
+ msg += "submodel '";
+ msg += repE.getSubmodelRef();
+ msg += "'.";
+
+ /* need to be using the correct model */
+ CompModelPlugin *plug = (CompModelPlugin*)(m.getPlugin("comp"));
+
+ pre (plug != NULL);
+ pre (plug->getSubmodel(repE.getSubmodelRef()) != NULL);
+
+ std::string modelId =
+ (plug->getSubmodel(repE.getSubmodelRef()))->getModelRef();
+
+ const SBMLDocument * doc = repE.getSBMLDocument();
+ pre (doc != NULL);
+
+ CompSBMLDocumentPlugin * docPlug =
+ (CompSBMLDocumentPlugin*)(doc->getPlugin("comp"));
+
+ pre (docPlug != NULL);
+
+ Model * referencedModel = docPlug->getModelDefinition(modelId);
+ if (referencedModel == NULL)
+ {
+ // may be an external model
+ ExternalModelDefinition * emd =
+ docPlug->getExternalModelDefinition(modelId);
+ pre (emd != NULL);
+
+ string locationURI = doc->getLocationURI();
+ string uri = emd->getSource();
+
+ const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
+ SBMLDocument *newDoc = registry.resolve(uri, locationURI);
+ pre(newDoc != NULL);
+ referencedModel = newDoc->getModel();
+ }
+
+ pre (referencedModel != NULL);
+
+ IdList mIds;
+
+ // create the filter we want to use
+ IdFilter filter;
+
+ // get a list of all elements with an id
+ List* allElements = referencedModel->getAllElements(&filter);
+
+ for (unsigned int i = 0; i < allElements->getSize(); i++)
+ {
+ mIds.append(static_cast<SBase*>(allElements->get(i))->getId());
+ }
+
+
+ if (mIds.contains(repE.getIdRef()) == false)
+ {
+ fail = true;
+ }
+
+ inv(fail == false);
+}
+END_CONSTRAINT
+
+// 20702 - replacedBy
+START_CONSTRAINT (CompIdRefMustReferenceObject, ReplacedBy, repBy)
+{
+ pre(repBy.isSetIdRef());
+ pre(repBy.isSetSubmodelRef());
+
+ bool fail = false;
+
+ msg = "The 'idRef' of a <replacedBy>";
+ msg += " is set to '";
+ msg += repBy.getIdRef();
+ msg += "' which is not an element within the <model> referenced by ";
+ msg += "submodel '";
+ msg += repBy.getSubmodelRef();
+ msg += "'.";
+
+ /* need to be using the correct model */
+ CompModelPlugin *plug = (CompModelPlugin*)(m.getPlugin("comp"));
+
+ pre (plug != NULL);
+ pre (plug->getSubmodel(repBy.getSubmodelRef()) != NULL);
+
+ std::string modelId =
+ (plug->getSubmodel(repBy.getSubmodelRef()))->getModelRef();
+
+ const SBMLDocument * doc = repBy.getSBMLDocument();
+ CompSBMLDocumentPlugin * docPlug =
+ (CompSBMLDocumentPlugin*)(doc->getPlugin("comp"));
+
+ pre (docPlug != NULL);
+
+ Model * referencedModel = docPlug->getModelDefinition(modelId);
+ if (referencedModel == NULL)
+ {
+ // may be an external model
+ ExternalModelDefinition * emd =
+ docPlug->getExternalModelDefinition(modelId);
+ pre (emd != NULL);
+
+ string locationURI = doc->getLocationURI();
+ string uri = emd->getSource();
+
+ const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
+ SBMLDocument *newDoc = registry.resolve(uri, locationURI);
+ pre(newDoc != NULL);
+ referencedModel = newDoc->getModel();
+ }
+
+ pre (referencedModel != NULL);
+
+ IdList mIds;
+
+ // create the filter we want to use
+ IdFilter filter;
+
+ // get a list of all elements with an id
+ List* allElements = referencedModel->getAllElements(&filter);
+
+ for (unsigned int i = 0; i < allElements->getSize(); i++)
+ {
+ mIds.append(static_cast<SBase*>(allElements->get(i))->getId());
+ }
+
+
+ if (mIds.contains(repBy.getIdRef()) == false)
+ {
+ fail = true;
+ }
+
+ inv(fail == false);
+}
+END_CONSTRAINT
+
//20703 - port
START_CONSTRAINT (CompUnitRefMustReferenceUnitDef, Port, p)
{
@@ -586,9 +950,9 @@
bool fail = false;
const Submodel * sub = static_cast<const Submodel*>
- (d.getAncestorOfType(SBML_COMP_SUBMODEL, "comp"));
+ (d.getAncestorOfType(SBML_COMP_SUBMODEL, "comp"));
+ pre (sub != NULL);
-
msg = "The 'unitRef' of a <deletion>";
msg += " is set to '";
msg += d.getUnitRef();
@@ -600,19 +964,34 @@
std::string modelId = sub->getModelRef();
const SBMLDocument * doc = d.getSBMLDocument();
+ pre (doc != NULL);
+
CompSBMLDocumentPlugin * docPlug =
(CompSBMLDocumentPlugin*)(doc->getPlugin("comp"));
+ pre (docPlug != NULL);
+
Model * referencedModel = docPlug->getModelDefinition(modelId);
if (referencedModel == NULL)
{
- fail = true;
+ // may be an external model
+ ExternalModelDefinition * emd =
+ docPlug->getExternalModelDefinition(modelId);
+ pre (emd != NULL);
+
+ string locationURI = doc->getLocationURI();
+ string uri = emd->getSource();
+
+ const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
+ SBMLDocument *newDoc = registry.resolve(uri, locationURI);
+ pre(newDoc != NULL);
+ referencedModel = newDoc->getModel();
}
- else
+
+ pre (referencedModel != NULL);
+
+ if (referencedModel->getUnitDefinition(d.getUnitRef()) == NULL)
{
- if (referencedModel->getUnitDefinition(d.getUnitRef()) == NULL)
- {
- fail = true;
- }
+ fail = true;
}
inv(fail == false);
@@ -637,22 +1016,41 @@
/* need to be using the correct model */
CompModelPlugin *plug = (CompModelPlugin*)(m.getPlugin("comp"));
- std::string modelId = (plug->getSubmodel(repE.getSubmodelRef()))->getModelRef();
+
+ pre (plug != NULL);
+ pre (plug->getSubmodel(repE.getSubmodelRef()) != NULL);
+ std::string modelId =
+ (plug->getSubmodel(repE.getSubmodelRef()))->getModelRef();
+
const SBMLDocument * doc = repE.getSBMLDocument();
CompSBMLDocumentPlugin * docPlug =
(CompSBMLDocumentPlugin*)(doc->getPlugin("comp"));
+
+ pre (docPlug != NULL);
+
Model * referencedModel = docPlug->getModelDefinition(modelId);
if (referencedModel == NULL)
{
- fail = true;
+ // may be an external model
+ ExternalModelDefinition * emd =
+ docPlug->getExternalModelDefinition(modelId);
+ pre (emd != NULL);
+
+ string locationURI = doc->getLocationURI();
+ string uri = emd->getSource();
+
+ const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
+ SBMLDocument *newDoc = registry.resolve(uri, locationURI);
+ pre(newDoc != NULL);
+ referencedModel = newDoc->getModel();
}
- else
+
+ pre (referencedModel != NULL);
+
+ if (referencedModel->getUnitDefinition(repE.getUnitRef()) == NULL)
{
- if (referencedModel->getUnitDefinition(repE.getUnitRef()) == NULL)
- {
- fail = true;
- }
+ fail = true;
}
inv(fail == false);
@@ -677,22 +1075,41 @@
/* need to be using the correct model */
CompModelPlugin *plug = (CompModelPlugin*)(m.getPlugin("comp"));
- std::string modelId = (plug->getSubmodel(repBy.getSubmodelRef()))->getModelRef();
+
+ pre (plug != NULL);
+ pre (plug->getSubmodel(repBy.getSubmodelRef()) != NULL);
+ std::string modelId =
+ (plug->getSubmodel(repBy.getSubmodelRef()))->getModelRef();
+
const SBMLDocument * doc = repBy.getSBMLDocument();
CompSBMLDocumentPlugin * docPlug =
(CompSBMLDocumentPlugin*)(doc->getPlugin("comp"));
+
+ pre (docPlug != NULL);
+
Model * referencedModel = docPlug->getModelDefinition(modelId);
if (referencedModel == NULL)
{
- fail = true;
+ // may be an external model
+ ExternalModelDefinition * emd =
+ docPlug->getExternalModelDefinition(modelId);
+ pre (emd != NULL);
+
+ string locationURI = doc->getLocationURI();
+ string uri = emd->getSource();
+
+ const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
+ SBMLDocument *newDoc = registry.resolve(uri, locationURI);
+ pre(newDoc != NULL);
+ referencedModel = newDoc->getModel();
}
- else
+
+ pre (referencedModel != NULL);
+
+ if (referencedModel->getUnitDefinition(repBy.getUnitRef()) == NULL)
{
- if (referencedModel->getUnitDefinition(repBy.getUnitRef()) == NULL)
- {
- fail = true;
- }
+ fail = true;
}
inv(fail == false);
@@ -726,9 +1143,11 @@
msg = "<port> '";
msg += p.getId() ;
msg += "' in ";
- const Model* mod = static_cast<const Model*>(p.getAncestorOfType(SBML_MODEL, "core"));
+ const Model* mod = static_cast<const Model*>
+ (p.getAncestorOfType(SBML_MODEL, "core"));
if (mod == NULL) {
- mod = static_cast<const Model*>(p.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
+ mod = static_cast<const Model*>
+ (p.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
}
if (mod == NULL || !mod->isSetId()) {
msg += "the main model in the document";
@@ -776,9 +1195,11 @@
msg = "<port> '";
msg += p.getId() ;
msg += "' in ";
- const Model* mod = static_cast<const Model*>(p.getAncestorOfType(SBML_MODEL, "core"));
+ const Model* mod = static_cast<const Model*>
+ (p.getAncestorOfType(SBML_MODEL, "core"));
if (mod == NULL) {
- mod = static_cast<const Model*>(p.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
+ mod = static_cast<const Model*>
+ (p.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
}
if (mod == NULL || !mod->isSetId()) {
msg += "the main model in the document";
@@ -859,9 +1280,11 @@
msg = "<Deletion> '";
msg += d.getId() ;
msg += "' in ";
- const Model* mod = static_cast<const Model*>(d.getAncestorOfType(SBML_MODEL, "core"));
+ const Model* mod = static_cast<const Model*>
+ (d.getAncestorOfType(SBML_MODEL, "core"));
if (mod == NULL) {
- mod = static_cast<const Model*>(d.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
+ mod = static_cast<const Model*>
+ (d.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
}
if (mod == NULL || !mod->isSetId()) {
msg += "the main model in the document";
@@ -914,9 +1337,11 @@
msg = "<Deletion> '";
msg += d.getId() ;
msg += "' in ";
- const Model* mod = static_cast<const Model*>(d.getAncestorOfType(SBML_MODEL, "core"));
+ const Model* mod = static_cast<const Model*>
+ (d.getAncestorOfType(SBML_MODEL, "core"));
if (mod == NULL) {
- mod = static_cast<const Model*>(d.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
+ mod = static_cast<const Model*>
+ (d.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
}
if (mod == NULL || !mod->isSetId()) {
msg += "the main model in the document";
@@ -1047,9 +1472,11 @@
bool deletion = repE.isSetDeletion();
msg = "A <replacedElement> in ";
- const Model* mod = static_cast<const Model*>(repE.getAncestorOfType(SBML_MODEL, "core"));
+ const Model* mod = static_cast<const Model*>
+ (repE.getAncestorOfType(SBML_MODEL, "core"));
if (mod == NULL) {
- mod = static_cast<const Model*>(repE.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
+ mod = static_cast<const Model*>
+ (repE.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
}
if (mod == NULL || !mod->isSetId()) {
msg += "the main model in the document";
@@ -1107,9 +1534,11 @@
msg = "<replacedElement> '";
msg += repE.getId() ;
msg += "' in ";
- const Model* mod = static_cast<const Model*>(repE.getAncestorOfType(SBML_MODEL, "core"));
+ const Model* mod = static_cast<const Model*>
+ (repE.getAncestorOfType(SBML_MODEL, "core"));
if (mod == NULL) {
- mod = static_cast<const Model*>(repE.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
+ mod = static_cast<const Model*>
+ (repE.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
}
if (mod == NULL || !mod->isSetId()) {
msg += "the main model in the document";
@@ -1305,7 +1734,8 @@
bool fail = false;
- const CompModelPlugin * plug = static_cast<const CompModelPlugin*>(m.getPlugin("comp"));
+ const CompModelPlugin * plug =
+ static_cast<const CompModelPlugin*>(m.getPlugin("comp"));
if (plug != NULL
&& plug->getSubmodel(repE.getSubmodelRef()) == NULL)
{
@@ -1324,9 +1754,11 @@
pre (repE.isSetDeletion());
msg = "A <replacedElement> in ";
- const Model* mod = static_cast<const Model*>(repE.getAncestorOfType(SBML_MODEL, "core"));
+ const Model* mod = static_cast<const Model*>
+ (repE.getAncestorOfType(SBML_MODEL, "core"));
if (mod == NULL) {
- mod = static_cast<const Model*>(repE.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
+ mod = static_cast<const Model*>
+ (repE.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
}
if (mod == NULL || !mod->isSetId()) {
msg += "the main model in the document";
@@ -1365,9 +1797,11 @@
pre (repE.isSetConversionFactor());
msg = "The 'timeConversionFactor' of a <replacedElement> in ";
- const Model* mod = static_cast<const Model*>(repE.getAncestorOfType(SBML_MODEL, "core"));
+ const Model* mod = static_cast<const Model*>
+ (repE.getAncestorOfType(SBML_MODEL, "core"));
if (mod == NULL) {
- mod = static_cast<const Model*>(repE.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
+ mod = static_cast<const Model*>
+ (repE.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
}
if (mod == NULL || !mod->isSetId()) {
msg += "the main model in the document";
@@ -1413,9 +1847,11 @@
bool portRef = repBy.isSetPortRef();
msg = "A <replacedBy> in ";
- const Model* mod = static_cast<const Model*>(repBy.getAncestorOfType(SBML_MODEL, "core"));
+ const Model* mod = static_cast<const Model*>
+ (repBy.getAncestorOfType(SBML_MODEL, "core"));
if (mod == NULL) {
- mod = static_cast<const Model*>(repBy.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
+ mod = static_cast<const Model*>
+ (repBy.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
}
if (mod == NULL || !mod->isSetId()) {
msg += "the main model in the document";
@@ -1464,9 +1900,11 @@
bool fail = false;
msg = "A <replacedBy> object in ";
- const Model* mod = static_cast<const Model*>(repBy.getAncestorOfType(SBML_MODEL, "core"));
+ const Model* mod = static_cast<const Model*>
+ (repBy.getAncestorOfType(SBML_MODEL, "core"));
if (mod == NULL) {
- mod = static_cast<const Model*>(repBy.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
+ mod = static_cast<const Model*>
+ (repBy.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
}
if (mod == NULL || !mod->isSetId()) {
msg += "the main model in the document";
@@ -1586,9 +2024,11 @@
pre (repBy.isSetSubmodelRef());
msg = "A <replacedElement> in ";
- const Model* mod = static_cast<const Model*>(repBy.getAncestorOfType(SBML_MODEL, "core"));
+ const Model* mod = static_cast<const Model*>
+ (repBy.getAncestorOfType(SBML_MODEL, "core"));
if (mod == NULL) {
- mod = static_cast<const Model*>(repBy.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
+ mod = static_cast<const Model*>
+ (repBy.getAncestorOfType(SBML_COMP_MODELDEFINITION, "comp"));
}
if (mod == NULL || !mod->isSetId()) {
msg += "the main model in the document";
@@ -1604,7 +2044,8 @@
bool fail = false;
- const CompModelPlugin * plug = static_cast<const CompModelPlugin*>(m.getPlugin("comp"));
+ const CompModelPlugin * plug =
+ static_cast<const CompModelPlugin*>(m.getPlugin("comp"));
if (plug != NULL
&& plug->getSubmodel(repBy.getSubmodelRef()) == NULL)
{
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020101-fail-01-01.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020101-fail-01-01.xml 2013-06-25 15:24:04 UTC (rev 17959)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020101-fail-01-01.xml 2013-06-26 14:23:47 UTC (rev 17960)
@@ -4,12 +4,12 @@
<listOfCompartments>
<compartment id="C" spatialDimensions="3" size="10" constant="false" metaid="CD">
<comp:listOfReplacedElements>
- <comp:replacedElement comp:idRef="sub1" comp:submodelRef="sub2">
+ <comp:replacedElement comp:idRef="C" comp:submodelRef="sub2">
<comp:sBaseRef comp:idRef="C"/>
</comp:replacedElement>
</comp:listOfReplacedElements>
<comp:listOfReplacedElements>
- <comp:replacedElement comp:idRef="sub1" comp:submodelRef="sub2">
+ <comp:replacedElement comp:idRef="C" comp:submodelRef="sub2">
<comp:sBaseRef comp:idRef="C"/>
</comp:replacedElement>
</comp:listOfReplacedElements>
@@ -18,7 +18,7 @@
<listOfSpecies>
<species id="S1" compartment="C" initialAmount="5" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false">
<comp:listOfReplacedElements>
- <comp:replacedElement comp:idRef="sub2" comp:submodelRef="sub2">
+ <comp:replacedElement comp:idRef="sub1" comp:submodelRef="sub2">
<comp:sBaseRef comp:idRef="sub1">
<comp:sBaseRef comp:idRef="S1"/>
</comp:sBaseRef>
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020103-fail-01-01.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020103-fail-01-01.xml 2013-06-25 15:24:04 UTC (rev 17959)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020103-fail-01-01.xml 2013-06-26 14:23:47 UTC (rev 17960)
@@ -4,7 +4,7 @@
<listOfCompartments>
<compartment id="C" spatialDimensions="3" size="10" constant="false" metaid="CD">
<comp:listOfReplacedElements metaid="ddd" sboTerm="SBO:0000001" constant="false">
- <comp:replacedElement comp:idRef="sub1" comp:submodelRef="sub2">
+ <comp:replacedElement comp:idRef="C" comp:submodelRef="sub2">
<comp:sBaseRef comp:idRef="C"/>
</comp:replacedElement>
</comp:listOfReplacedElements>
@@ -13,7 +13,7 @@
<listOfSpecies>
<species id="S1" compartment="C" initialAmount="5" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false">
<comp:listOfReplacedElements>
- <comp:replacedElement comp:idRef="sub2" comp:submodelRef="sub2">
+ <comp:replacedElement comp:idRef="sub1" comp:submodelRef="sub2">
<comp:sBaseRef comp:idRef="sub1">
<comp:sBaseRef comp:idRef="S1"/>
</comp:sBaseRef>
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020103-fail-01-02.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020103-fail-01-02.xml 2013-06-25 15:24:04 UTC (rev 17959)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020103-fail-01-02.xml 2013-06-26 14:23:47 UTC (rev 17960)
@@ -4,7 +4,7 @@
<listOfCompartments>
<compartment id="C" spatialDimensions="3" size="10" constant="false" metaid="CD">
<comp:listOfReplacedElements metaid="ddd" sboTerm="SBO:0000001" comp:submodelRef="sub1">
- <comp:replacedElement comp:idRef="sub1" comp:submodelRef="sub2">
+ <comp:replacedElement comp:idRef="C" comp:submodelRef="sub2">
<comp:sBaseRef comp:idRef="C"/>
</comp:replacedElement>
</comp:listOfReplacedElements>
@@ -13,7 +13,7 @@
<listOfSpecies>
<species id="S1" compartment="C" initialAmount="5" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false">
<comp:listOfReplacedElements>
- <comp:replacedElement comp:idRef="sub2" comp:submodelRef="sub2">
+ <comp:replacedElement comp:idRef="sub1" comp:submodelRef="sub2">
<comp:sBaseRef comp:idRef="sub1">
<comp:sBaseRef comp:idRef="S1"/>
</comp:sBaseRef>
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020103-pass-00-01.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020103-pass-00-01.xml 2013-06-25 15:24:04 UTC (rev 17959)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020103-pass-00-01.xml 2013-06-26 14:23:47 UTC (rev 17960)
@@ -4,7 +4,7 @@
<listOfCompartments>
<compartment id="C" spatialDimensions="3" size="10" constant="false" metaid="CD">
<comp:listOfReplacedElements metaid="ddd" sboTerm="SBO:0000001">
- <comp:replacedElement comp:idRef="sub1" comp:submodelRef="sub2">
+ <comp:replacedElement comp:idRef="C" comp:submodelRef="sub2">
<comp:sBaseRef comp:idRef="C"/>
</comp:replacedElement>
</comp:listOfReplacedElements>
@@ -13,7 +13,7 @@
<listOfSpecies>
<species id="S1" compartment="C" initialAmount="5" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false">
<comp:listOfReplacedElements>
- <comp:replacedElement comp:idRef="sub2" comp:submodelRef="sub2">
+ <comp:replacedElement comp:idRef="sub1" comp:submodelRef="sub2">
<comp:sBaseRef comp:idRef="sub1">
<comp:sBaseRef comp:idRef="S1"/>
</comp:sBaseRef>
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020105-fail-01-01.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020105-fail-01-01.xml 2013-06-25 15:24:04 UTC (rev 17959)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020105-fail-01-01.xml 2013-06-26 14:23:47 UTC (rev 17960)
@@ -4,7 +4,7 @@
<listOfCompartments>
<compartment id="C" spatialDimensions="3" size="10" constant="false" metaid="CD">
<comp:listOfReplacedElements>
- <comp:replacedElement comp:idRef="sub1" comp:submodelRef="sub2">
+ <comp:replacedElement comp:idRef="C" comp:submodelRef="sub2">
<comp:sBaseRef comp:idRef="C"/>
</comp:replacedElement>
</comp:listOfReplacedElements>
@@ -13,7 +13,7 @@
<listOfSpecies>
<species id="S1" compartment="C" initialAmount="5" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false">
<comp:listOfReplacedElements>
- <comp:replacedElement comp:idRef="sub2" comp:submodelRef="sub2">
+ <comp:replacedElement comp:idRef="sub1" comp:submodelRef="sub2">
<comp:sBaseRef comp:idRef="sub1">
<comp:sBaseRef comp:idRef="S1"/>
</comp:sBaseRef>
@@ -22,7 +22,7 @@
<comp:replacedBy comp:idRef="sub1" comp:submodelRef="sub2">
<comp:sBaseRef comp:idRef="S1"/>
</comp:replacedBy>
- <comp:replacedBy comp:idRef="sub2" comp:submodelRef="sub1">
+ <comp:replacedBy comp:idRef="S1" comp:submodelRef="sub1">
<comp:sBaseRef comp:idRef="S1"/>
</comp:replacedBy>
</species>
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020607-fail-01-02.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020607-fail-01-02.xml 2013-06-25 15:24:04 UTC (rev 17959)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020607-fail-01-02.xml 2013-06-26 14:23:47 UTC (rev 17960)
@@ -2,11 +2,7 @@
<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
<model>
<listOfParameters>
- <parameter id="p8" value="8" constant="false">
- <comp:listOfReplacedElements>
- <comp:replacedElement comp:idRef="p80" comp:submodelRef="sub1"/>
- </comp:listOfReplacedElements>
- </parameter>
+ <parameter id="p8" value="8" constant="false"/>
</listOfParameters>
<comp:listOfSubmodels>
<comp:submodel comp:id="sub1">
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020608-fail-01-01-1020615.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020608-fail-01-01-1020615.xml 2013-06-25 15:24:04 UTC (rev 17959)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020608-fail-01-01-1020615.xml 2013-06-26 14:23:47 UTC (rev 17960)
@@ -2,11 +2,7 @@
<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
<model>
<listOfParameters>
- <parameter id="p8" value="8" constant="false">
- <comp:listOfReplacedElements>
- <comp:replacedElement comp:idRef="p80" comp:submodelRef="sub1"/>
- </comp:listOfReplacedElements>
- </parameter>
+ <parameter id="p8" value="8" constant="false"/>
</listOfParameters>
<comp:listOfSubmodels>
<comp:submodel comp:id="sub1" comp:modelRef="1111invalidModdef1">
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020615-fail-01-01.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020615-fail-01-01.xml 2013-06-25 15:24:04 UTC (rev 17959)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020615-fail-01-01.xml 2013-06-26 14:23:47 UTC (rev 17960)
@@ -2,11 +2,7 @@
<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
<model>
<listOfParameters>
- <parameter id="param1" constant="true">
- <comp:listOfReplacedElements>
- <comp:replacedElement comp:idRef="subparam1" comp:submodelRef="submod1"/>
- </comp:listOfReplacedElements>
- </parameter>
+ <parameter id="param1" constant="true"/>
</listOfParameters>
<comp:listOfSubmodels>
<comp:submodel comp:id="submod1" comp:modelRef="Moda"/>
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020615-pass-00-02.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020615-pass-00-02.xml 2013-06-25 15:24:04 UTC (rev 17959)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020615-pass-00-02.xml 2013-06-26 14:23:47 UTC (rev 17960)
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
<model>
- <listOfParameters>
- <parameter id="param1" constant="true">
+ <listOfCompartments>
+ <compartment id="comp1" spatialDimensions="3" size="1" constant="true">
<comp:listOfReplacedElements>
- <comp:replacedElement comp:idRef="subparam1" comp:submodelRef="submod1"/>
- </comp:listOfReplacedElements>
- </parameter>
- </listOfParameters>
+ <comp:replacedElement comp:idRef="submod1" comp:submodelRef="submod1"/>
+ </comp:listOfReplacedElements>
+ </compartment>
+ </listOfCompartments>
<comp:listOfSubmodels>
<comp:submodel comp:id="submod1" comp:modelRef="Mod1"/>
</comp:listOfSubmodels>
Deleted: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020616-fail-01-01.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020616-fail-01-01.xml 2013-06-25 15:24:04 UTC (rev 17959)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020616-fail-01-01.xml 2013-06-26 14:23:47 UTC (rev 17960)
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
- <model id="Mod1">
- <listOfParameters>
- <parameter id="param1" constant="true">
- <comp:listOfReplacedElements>
- <comp:replacedElement comp:idRef="subparam1" comp:submodelRef="submod1"/>
- </comp:listOfReplacedElements>
- </parameter>
- </listOfParameters>
- <comp:listOfSubmodels>
- <comp:submodel comp:id="submod1" comp:modelRef="Mod1"/>
- </comp:listOfSubmodels>
- </model>
-</sbml>
Copied: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020616-fail-01-01.xml (from rev 17955, trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020616-fail-01-01.xml)
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020616-fail-01-01.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020616-fail-01-01.xml 2013-06-26 14:23:47 UTC (rev 17960)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model id="Mod1">
+ <listOfParameters>
+ <parameter id="param1" constant="true">
+ <comp:listOfReplacedElements>
+ <comp:replacedElement comp:idRef="param1" comp:submodelRef="submod1"/>
+ </comp:listOfReplacedElements>
+ </parameter>
+ </listOfParameters>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="submod1" comp:modelRef="Mod1"/>
+ </comp:listOfSubmodels>
+ </model>
+</sbml>
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020701-fail-01-01.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020701-fail-01-01.xml 2013-06-25 15:24:04 UTC (rev 17959)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020701-fail-01-01.xml 2013-06-26 14:23:47 UTC (rev 17960)
@@ -30,7 +30,6 @@
<comp:port comp:idRef="S" comp:id="S_port"/>
<comp:port comp:idRef="D" comp:id="D_port"/>
<comp:port comp:idRef="comp" comp:id="comp_port"/>
- <comp:port comp:idRef="J0" comp:id="J0_port"/>
</comp:listOfPorts>
</model>
<comp:listOfModelDefinitions>
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-fail-01-01.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-fail-01-01.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-fail-01-01.xml 2013-06-26 14:23:47 UTC (rev 17960)
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1"
+ xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" comp:required="true">
+ <model id="complexified">
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true">
+ <comp:listOfReplacedElements>
+ <comp:replacedElement comp:idRef="non_existing_comp" comp:submodelRef="B"/>
+ </comp:listOfReplacedElements>
+ </compartment>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+ <comp:replacedBy comp:portRef="S_port" comp:submodelRef="B"/>
+ </species>
+ <species id="D" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+ <comp:replacedBy comp:portRef="D_port" comp:submodelRef="B"/>
+ </species>
+ </listOfSpecies>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="B" comp:modelRef="simple">
+ <comp:listOfDeletions>
+ <comp:deletion comp:portRef="J0_port"/>
+ </comp:listOfDeletions>
+ </comp:submodel>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfModelDefinitions>
+ <comp:modelDefinition id="simple">
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" initialConcentration="5" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ <species id="D" compartment="comp" initialConcentration="10" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ <listOfReactions>
+ <reaction id="J0" reversible="true" fast="false">
+ <listOfReactants>
+ <speciesReference species="S" stoichiometry="1" constant="true"/>
+ </listOfReactants>
+ <listOfProducts>
+ <speciesReference species="D" stoichiometry="1" constant="true"/>
+ </listOfProducts>
+ </reaction>
+ </listOfReactions>
+ <comp:listOfPorts>
+ <comp:port comp:idRef="S" comp:id="S_port"/>
+ <comp:port comp:idRef="D" comp:id="D_port"/>
+ <comp:port comp:idRef="comp" comp:id="comp_port"/>
+ <comp:port comp:idRef="J0" comp:id="J0_port"/>
+ </comp:listOfPorts>
+ </comp:modelDefinition>
+ </comp:listOfModelDefinitions>
+</sbml>
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-fail-01-02.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-fail-01-02.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020702-fail-01-02.xml 2013-06-26 14:23:47 UTC (rev 17960)
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1"
+ xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" comp:required="true">
+ <model id="complexified">
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true">
+ <comp:listOfReplacedElements>
+ <comp:replacedElement comp:idRef="comp1" comp:submodelRef="B"/>
+ </comp:listOfReplacedElements>
+ </compartment>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+ <comp:replacedBy comp:portRef="S_port" comp:submodelRef="B"/>
+ </species>
+ <species id="D" compartment="comp" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false">
+ <comp:replacedBy comp:portRef="D_port" comp:submodelRef="B"/>
+ </species>
+ </listOfSpecies>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="B" comp:modelRef="simple">
+ <comp:listOfDeletions>
+ <comp:deletion comp:portRef="J0_port"/>
+ </comp:listOfDeletions>
+ </comp:submodel>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfModelDefinitions>
+ <comp:modelDefinition id="simple">
+ <listOfCompartments>
+ <compartment id="comp" spatialDimensions="3" size="1" constant="true"/>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S" compartment="comp" initialConcentration="5" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ <species id="D" compartment="comp" initialConcentration="10" hasOnlySubstanceUnits="false"
+ boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ <listOfReactions>
+ <reaction id="J0" reversible="true" fast="false">
+ <listOfReactants>
+ <speciesReference species="S" stoichiometry="1" constant="true"/>
+ </listOfReactants>
+ <listOfProducts>
+ <speciesReference species="D" stoichiometry="1" constant="true"/>
+ </listOfProducts>
+ </reaction>
+ </listOfReactions>
+ <comp:listOfPorts>
+ <comp:port comp:idRef="S" c...
[truncated message content] |
|
From: <sar...@us...> - 2013-06-25 15:24:07
|
Revision: 17959
http://sourceforge.net/p/sbml/code/17959
Author: sarahkeating
Date: 2013-06-25 15:24:04 +0000 (Tue, 25 Jun 2013)
Log Message:
-----------
took out some unecessary includes
Modified Paths:
--------------
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLError.h
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLErrorTable.h
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLError.h
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLError.h 2013-06-25 15:23:35 UTC (rev 17958)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLError.h 2013-06-25 15:24:04 UTC (rev 17959)
@@ -36,11 +36,7 @@
#ifndef CompSBMLError_h
#define CompSBMLError_h
-#include <sbml/common/extern.h>
-#include <sbml/SBMLError.h>
-#include <sbml/SBMLNamespaces.h>
-
LIBSBML_CPP_NAMESPACE_BEGIN
BEGIN_C_DECLS
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLErrorTable.h
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLErrorTable.h 2013-06-25 15:23:35 UTC (rev 17958)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLErrorTable.h 2013-06-25 15:24:04 UTC (rev 17959)
@@ -24,10 +24,9 @@
* in the file named "LICENSE.txt" included with this software distribution
* and also available online as http://sbml.org/software/libsbml/license.html
* ---------------------------------------------------------------------- -->*/
+#ifndef CompSBMLErrorTable_h
+#define CompSBMLErrorTable_h
-#include <string>
-#include <iostream>
-#include <sstream>
#include <sbml/packages/comp/validator/CompSBMLError.h>
@@ -1165,5 +1164,6 @@
LIBSBML_CPP_NAMESPACE_END
+#endif
/** @endcond */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sar...@us...> - 2013-06-25 15:23:38
|
Revision: 17958
http://sourceforge.net/p/sbml/code/17958
Author: sarahkeating
Date: 2013-06-25 15:23:35 +0000 (Tue, 25 Jun 2013)
Log Message:
-----------
implemented cycles within submodels and models
Modified Paths:
--------------
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/CompConsistencyConstraints.cpp
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/ExtModelReferenceCycles.cpp
Added Paths:
-----------
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/SubmodelReferenceCycles.cpp
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/SubmodelReferenceCycles.h
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020617-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020617-fail-03-02.xml
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/CompConsistencyConstraints.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/CompConsistencyConstraints.cpp 2013-06-25 15:19:25 UTC (rev 17957)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/CompConsistencyConstraints.cpp 2013-06-25 15:23:35 UTC (rev 17958)
@@ -37,6 +37,7 @@
#include <sbml/packages/comp/common/CompExtensionTypes.h>
#include "ExtModelReferenceCycles.h"
+#include "SubmodelReferenceCycles.h"
#endif
@@ -195,12 +196,6 @@
const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
SBMLUri* resolved = registry.resolveUri(uri, locationURI);
- //pre(resolved != NULL )
- //string resolvedURI = resolved->getUri();
- //delete resolved;
- //doc = registry.resolve(uri, locationURI);
- //pre(doc != NULL);
- //pre(doc->getLevel() == 3);
bool fail = false;
@@ -351,6 +346,7 @@
END_CONSTRAINT
//TODO: 20617 circular dependencies
+EXTERN_CONSTRAINT( CompModCannotCircularlyReferenceSelf, SubmodelReferenceCycles)
// 20618 - 20621 non existant
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/ExtModelReferenceCycles.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/ExtModelReferenceCycles.cpp 2013-06-25 15:19:25 UTC (rev 17957)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/ExtModelReferenceCycles.cpp 2013-06-25 15:23:35 UTC (rev 17958)
@@ -114,14 +114,14 @@
location = locationURI.substr(5, string::npos);
}
- if (mDocumentsHandled.contains(location) == false)
- {
- addModelReferences(location + "_" + m->getId(), docPlug, modelPlug);
- mDocumentsHandled.append(location);
-
+ if (mDocumentsHandled.contains(location) == false)
+ {
+ addModelReferences(location + "_" + m->getId(), docPlug, modelPlug);
+ mDocumentsHandled.append(location);
+
const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
-
+
for (unsigned int i = 0; i < docPlug->getNumExternalModelDefinitions(); i++)
{
string uri = docPlug->getExternalModelDefinition(i)->getSource();
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/SubmodelReferenceCycles.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/SubmodelReferenceCycles.cpp (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/SubmodelReferenceCycles.cpp 2013-06-25 15:23:35 UTC (rev 17958)
@@ -0,0 +1,248 @@
+/**
+ * @cond doxygen-libsbml-internal
+ *
+ * @file SubmodelReferenceCycles.cpp
+ * @brief Ensures unique variables assigned by rules and events
+ * @author Sarah Keating
+ *
+ * <!--------------------------------------------------------------------------
+ * This file is part of libSBML. Please visit http://sbml.org for more
+ * information about SBML, and the latest version of libSBML.
+ *
+ * Copyright (C) 2009-2013 jointly by the following organizations:
+ * 1. California Institute of Technology, Pasadena, CA, USA
+ * 2. EMBL European Bioinformatics Institute (EBML-EBI), Hinxton, UK
+ *
+ * Copyright (C) 2006-2008 by the California Institute of Technology,
+ * Pasadena, CA, USA
+ *
+ * Copyright (C) 2002-2005 jointly by the following organizations:
+ * 1. California Institute of Technology, Pasadena, CA, USA
+ * 2. Japan Science and Technology Agency, Japan
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation. A copy of the license agreement is provided
+ * in the file named "LICENSE.txt" included with this software distribution
+ * and also available online as http://sbml.org/software/libsbml/license.html
+ * ---------------------------------------------------------------------- -->*/
+
+#include <cstring>
+
+#include <sbml/Model.h>
+#include <sbml/packages/comp/extension/CompModelPlugin.h>
+#include <sbml/packages/comp/extension/CompSBMLDocumentPlugin.h>
+#include <sbml/packages/comp/util/SBMLResolverRegistry.h>
+
+#include "SubmodelReferenceCycles.h"
+#include <sbml/util/IdList.h>
+
+/** @cond doxygen-ignored */
+
+using namespace std;
+
+/** @endcond */
+
+LIBSBML_CPP_NAMESPACE_BEGIN
+
+/**
+ * Creates a new Constraint with the given constraint id.
+ */
+SubmodelReferenceCycles::SubmodelReferenceCycles (unsigned int id, Validator& v) :
+ TConstraint<Model>(id, v)
+{
+}
+
+
+/**
+ * Destroys this Constraint.
+ */
+SubmodelReferenceCycles::~SubmodelReferenceCycles ()
+{
+}
+
+
+/**
+ * Checks that all ids on the following Model objects are unique:
+ * event assignments and assignment rules.
+ */
+void
+SubmodelReferenceCycles::check_ (const Model& m, const Model& object)
+{
+ mIdMap.clear();
+
+ addAllReferences(&m);
+
+ determineAllDependencies();
+
+ determineCycles(m);
+}
+
+void
+SubmodelReferenceCycles::addAllReferences(const Model* m)
+{
+ if (m == NULL)
+ {
+ return;
+ }
+
+ const CompSBMLDocumentPlugin* docPlug = (CompSBMLDocumentPlugin*)
+ (m->getSBMLDocument()->getPlugin("comp"));
+ const CompModelPlugin* modelPlug = (CompModelPlugin*)(m->getPlugin("comp"));
+
+ if (docPlug == NULL || modelPlug == NULL)
+ {
+ return;
+ }
+
+ if (modelPlug->getNumSubmodels() == 0)
+ {
+ return;
+ }
+
+ std::string modelId = m->isSetId() ? m->getId() : "tempId";
+
+ addModelReferences(modelId, modelPlug);
+
+ for (unsigned int i = 0; i < docPlug->getNumModelDefinitions(); i++)
+ {
+ const Model * newModel = static_cast<const Model *>
+ (docPlug->getModelDefinition(i));
+ const CompModelPlugin* newModelPlug = (CompModelPlugin*)
+ (newModel->getPlugin("comp"));
+
+ addModelReferences(newModel->getId(), newModelPlug);
+ }
+}
+
+void
+SubmodelReferenceCycles::addModelReferences(const std::string &id,
+ const CompModelPlugin* modelPlug)
+{
+ for (unsigned int i = 0; i < modelPlug->getNumSubmodels(); i++)
+ {
+ std::string modelRef = modelPlug->getSubmodel(i)->getModelRef();
+ mIdMap.insert(pair<const std::string, std::string>(id, modelRef));
+ }
+}
+
+
+void
+SubmodelReferenceCycles::determineAllDependencies()
+{
+ IdIter iterator;
+ IdIter inner_it;
+ IdRange range;
+
+ /* for each pair in the map (x, y)
+ * retrieve all other pairs where y is first (e.g. (y, s))
+ * and create pairs showing that x depends on these e.g. (x, s)
+ * check whether the pair already exists in the map
+ * and add it if not
+ */
+ for (iterator = mIdMap.begin(); iterator != mIdMap.end(); iterator++)
+ {
+ range = mIdMap.equal_range((*iterator).second);
+ for (inner_it = range.first; inner_it != range.second; inner_it++)
+ {
+ const pair<const std::string, std::string> &depend =
+ pair<const std::string, std::string>((*iterator).first, (*inner_it).second);
+ if (!alreadyExistsInMap(mIdMap, depend))
+ mIdMap.insert(depend);
+ }
+ }
+}
+
+
+bool
+SubmodelReferenceCycles::alreadyExistsInMap(IdMap map,
+ pair<const std::string, std::string> dependency)
+{
+ bool exists = false;
+
+ IdIter it;
+
+ for (it = map.begin(); it != map.end(); it++)
+ {
+ if (((*it).first == dependency.first)
+ && ((*it).second == dependency.second))
+ exists = true;
+ }
+
+ return exists;
+}
+
+
+void
+SubmodelReferenceCycles::determineCycles(const Model& m)
+{
+ IdIter it;
+ IdRange range;
+ IdList variables;
+ IdMap logged;
+ std::string id;
+ variables.clear();
+
+ /* create a list of variables that are cycles ie (x, x) */
+ for (it = mIdMap.begin(); it != mIdMap.end(); it++)
+ {
+ if ((*it).first == (*it).second)
+ {
+ id = (*it).first;
+ if (!variables.contains(id))
+ {
+ variables.append(id);
+ }
+ }
+ }
+
+ /* loop thru other dependencies for each; if the dependent is also
+ * in the list then this is the cycle
+ * keep a record of logged dependencies to avoid logging twice
+ */
+
+ for (unsigned int n = 0; n < variables.size(); n++)
+ {
+ id = variables.at(n);
+ range = mIdMap.equal_range(id);
+ for (it = range.first; it != range.second; it++)
+ {
+ if (((*it).second != id)
+ && (variables.contains((*it).second))
+ && !alreadyExistsInMap(logged, pair<const std::string, std::string>(id, (*it).second))
+ && !alreadyExistsInMap(logged, pair<const std::string, std::string>((*it).second, id)))
+ {
+ logCycle(m, id, (*it).second);
+ logged.insert(pair<const std::string, std::string>(id, (*it).second));
+ }
+ }
+ }
+}
+
+
+/**
+ * Logs a message about an undefined <ci> element in the given
+ * FunctionDefinition.
+ */
+void
+SubmodelReferenceCycles::logCycle (const Model& m, std::string id,
+ std::string id1)
+{
+ msg = "Model with id '";
+ msg += id;
+ msg += "' is referenced by with the model with id '";
+ msg += id1;
+ msg += "'.";
+
+ // want to log the error on a comp object
+ COMP_CREATE_NS(compns, m.getSBMLNamespaces());
+ Submodel *sub = new Submodel(compns);
+ logFailure(*(sub));
+}
+
+
+LIBSBML_CPP_NAMESPACE_END
+
+
+/** @endcond */
+
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/SubmodelReferenceCycles.h
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/SubmodelReferenceCycles.h (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/SubmodelReferenceCycles.h 2013-06-25 15:23:35 UTC (rev 17958)
@@ -0,0 +1,101 @@
+/**
+ * @cond doxygen-libsbml-internal
+ *
+ * @file SubmodelReferenceCycles.h
+ * @brief Ensures unique variables assigned by rules and events
+ * @author Sarah Keating
+ *
+ * <!--------------------------------------------------------------------------
+ * This file is part of libSBML. Please visit http://sbml.org for more
+ * information about SBML, and the latest version of libSBML.
+ *
+ * Copyright (C) 2009-2013 jointly by the following organizations:
+ * 1. California Institute of Technology, Pasadena, CA, USA
+ * 2. EMBL European Bioinformatics Institute (EBML-EBI), Hinxton, UK
+ *
+ * Copyright (C) 2006-2008 by the California Institute of Technology,
+ * Pasadena, CA, USA
+ *
+ * Copyright (C) 2002-2005 jointly by the following organizations:
+ * 1. California Institute of Technology, Pasadena, CA, USA
+ * 2. Japan Science and Technology Agency, Japan
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation. A copy of the license agreement is provided
+ * in the file named "LICENSE.txt" included with this software distribution
+ * and also available online as http://sbml.org/software/libsbml/license.html
+ * ---------------------------------------------------------------------- -->*/
+
+#ifndef SubmodelReferenceCycles_h
+#define SubmodelReferenceCycles_h
+
+
+#ifdef __cplusplus
+
+#include <string>
+#include <sbml/validator/VConstraint.h>
+
+#include <sbml/util/IdList.h>
+
+LIBSBML_CPP_NAMESPACE_BEGIN
+
+typedef std::multimap<const std::string, std::string> IdMap;
+typedef IdMap::iterator IdIter;
+typedef std::pair<IdIter, IdIter> IdRange;
+
+class SubmodelReferenceCycles: public TConstraint<Model>
+{
+public:
+
+ /**
+ * Creates a new Constraint with the given constraint id.
+ */
+ SubmodelReferenceCycles (unsigned int id, Validator& v);
+
+ /**
+ * Destroys this Constraint.
+ */
+ virtual ~SubmodelReferenceCycles ();
+
+
+protected:
+
+ virtual void check_ (const Model& m, const Model& object);
+
+ void addAllReferences (const Model* m);
+
+ /* create pairs of ids that depend on each other */
+ void addModelReferences(const std::string &id,
+ const CompModelPlugin* modelPlug);
+
+ void determineAllDependencies();
+
+
+ /* helper function to check if a pair already exists */
+ bool alreadyExistsInMap(IdMap map,
+ std::pair<const std::string, std::string> dependency);
+
+
+ /* find cycles in the map of dependencies */
+ void determineCycles(const Model& m);
+
+
+ /**
+ * functions for logging messages about the cycle
+ */
+
+
+ void logCycle (const Model& m, std::string id, std::string id1);
+
+
+ IdMap mIdMap;
+};
+
+LIBSBML_CPP_NAMESPACE_END
+
+#endif /* __cplusplus */
+#endif /* SubmodelReferenceCycles_h */
+
+/** @endcond */
+
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020617-fail-01-01.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020617-fail-01-01.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020617-fail-01-01.xml 2013-06-25 15:23:35 UTC (rev 17958)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model id="BaseModel">
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="A" comp:modelRef="Mod1"/>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfModelDefinitions>
+ <comp:modelDefinition id="Mod1">
+ <listOfParameters>
+ <parameter id="subparam1" constant="true"/>
+ </listOfParameters>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="A" comp:modelRef="BaseModel"/>
+ </comp:listOfSubmodels>
+ </comp:modelDefinition>
+ </comp:listOfModelDefinitions>
+</sbml>
Added: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020617-fail-03-02.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020617-fail-03-02.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020617-fail-03-02.xml 2013-06-25 15:23:35 UTC (rev 17958)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model id="BaseModel">
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="A" comp:modelRef="Mod1"/>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfModelDefinitions>
+ <comp:modelDefinition id="Mod1">
+ <listOfParameters>
+ <parameter id="subparam1" constant="true"/>
+ </listOfParameters>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="A" comp:modelRef="Mod2"/>
+ </comp:listOfSubmodels>
+ </comp:modelDefinition>
+ <comp:modelDefinition id="Mod2">
+ <listOfParameters>
+ <parameter id="subparam1" constant="true"/>
+ </listOfParameters>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="A" comp:modelRef="BaseModel"/>
+ </comp:listOfSubmodels>
+ </comp:modelDefinition>
+ </comp:listOfModelDefinitions>
+</sbml>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sar...@us...> - 2013-06-25 15:19:28
|
Revision: 17957
http://sourceforge.net/p/sbml/code/17957
Author: sarahkeating
Date: 2013-06-25 15:19:25 +0000 (Tue, 25 Jun 2013)
Log Message:
-----------
add more tests for the resolver
Modified Paths:
--------------
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/TestURIResolvers.cpp
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/TestURIResolvers.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/TestURIResolvers.cpp 2013-06-25 14:02:20 UTC (rev 17956)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/TestURIResolvers.cpp 2013-06-25 15:19:25 UTC (rev 17957)
@@ -145,6 +145,80 @@
END_TEST
+START_TEST (test_comp_fileresolver_resolve_1)
+{
+ string filename(TestDataDirectory);
+ filename += "complexified.xml";
+ SBMLDocument* doc = readSBMLFromFile(filename.c_str());
+ fail_unless(doc->getLocationURI() == "file:" + filename);
+ SBMLFileResolver fr;
+ string newFilename(TestDataDirectory);
+ newFilename += "enzyme_model.xml";
+ SBMLDocument* doc2 = fr.resolve(newFilename, doc->getLocationURI());
+ fail_unless(doc2 != NULL);
+ fail_unless(doc2->getModel() != NULL);
+}
+END_TEST
+
+
+START_TEST (test_comp_fileresolver_resolve_2)
+{
+ string filename(TestDataDirectory);
+ filename += "complexified.xml";
+ SBMLDocument* doc = readSBMLFromFile(filename.c_str());
+ fail_unless(doc->getLocationURI() == "file:" + filename);
+ SBMLFileResolver fr;
+ string newFilename("chrome://anything/enzyme_model.xml");
+ SBMLDocument* doc2 = fr.resolve(newFilename, doc->getLocationURI());
+ // this passes because we have inadvertently used
+ // the file name at the end of the uri
+ fail_unless(doc2 != NULL);
+ fail_unless(doc2->getModel() != NULL);
+}
+END_TEST
+
+
+START_TEST (test_comp_fileresolver_resolve_3)
+{
+ string filename(TestDataDirectory);
+ SBMLFileResolver fr;
+ SBMLDocument* doc2 = fr.resolve("enzyme_model.xml", filename);
+ fail_unless(doc2 != NULL);
+ fail_unless(doc2->getModel() != NULL);
+}
+END_TEST
+
+
+START_TEST (test_comp_fileresolver_resolve_4)
+{
+ string filename(TestDataDirectory);
+ filename += "complexified.xml";
+ SBMLDocument* doc = readSBMLFromFile(filename.c_str());
+ fail_unless(doc->getLocationURI() == "file:" + filename);
+ SBMLFileResolver fr;
+ string newDir(TestDataDirectory);
+ newDir += "/subdir";
+ fr.addAdditionalDir(newDir);
+ SBMLDocument* doc2 = fr.resolve("new_aggregate.xml", doc->getLocationURI());
+ fail_unless(doc2 != NULL);
+ fail_unless(doc2->getModel() != NULL);
+}
+END_TEST
+
+
+START_TEST (test_comp_fileresolver_resolve_5)
+{
+ SBMLFileResolver fr;
+ string name("chrome://anything/enzyme_model.xml");
+ string name1("http://anything/enzyme_model.xml");
+ SBMLDocument* doc2 = fr.resolve(name, name1);
+ // this passes because we have inadvertently used
+ // the file nam at the end of the uri
+ fail_unless(doc2 == NULL);
+}
+END_TEST
+
+
START_TEST (test_comp_resolverregistry_1)
{
SBMLResolverRegistry ®istry = SBMLResolverRegistry::getInstance();
@@ -182,6 +256,11 @@
tcase_add_test(tcase, test_comp_sbmluri_parse);
tcase_add_test(tcase, test_comp_fileresolver_resolve);
+ tcase_add_test(tcase, test_comp_fileresolver_resolve_1);
+ tcase_add_test(tcase, test_comp_fileresolver_resolve_2);
+ tcase_add_test(tcase, test_comp_fileresolver_resolve_3);
+ tcase_add_test(tcase, test_comp_fileresolver_resolve_4);
+ tcase_add_test(tcase, test_comp_fileresolver_resolve_5);
tcase_add_test(tcase, test_comp_resolverregistry_1);
tcase_add_test(tcase, test_comp_resolverregistry_2);
suite_add_tcase(suite, tcase);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fbe...@us...> - 2013-06-25 14:02:25
|
Revision: 17956
http://sourceforge.net/p/sbml/code/17956
Author: fbergmann
Date: 2013-06-25 14:02:20 +0000 (Tue, 25 Jun 2013)
Log Message:
-----------
- remove warning
Modified Paths:
--------------
trunk/libsbml/src/sbml/math/L3FormulaFormatter.c
Modified: trunk/libsbml/src/sbml/math/L3FormulaFormatter.c
===================================================================
--- trunk/libsbml/src/sbml/math/L3FormulaFormatter.c 2013-06-25 13:42:35 UTC (rev 17955)
+++ trunk/libsbml/src/sbml/math/L3FormulaFormatter.c 2013-06-25 14:02:20 UTC (rev 17956)
@@ -303,7 +303,7 @@
int precedence;
unsigned int numchildren = ASTNode_getNumChildren(node);
- if ( !ASTNode_hasCorrectNumberArguments(node) )
+ if ( !ASTNode_hasCorrectNumberArguments((ASTNode_t*)node) )
{
//If the number of arguments is wrong, it'll be treated like a function call.
precedence = 8;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fbe...@us...> - 2013-06-25 13:42:37
|
Revision: 17955
http://sourceforge.net/p/sbml/code/17955
Author: fbergmann
Date: 2013-06-25 13:42:35 +0000 (Tue, 25 Jun 2013)
Log Message:
-----------
- fix swigdoc issues with Port
Modified Paths:
--------------
trunk/libsbml-packages/comp/src/bindings/csharp/local-packages-comp.i
Modified: trunk/libsbml-packages/comp/src/bindings/csharp/local-packages-comp.i
===================================================================
--- trunk/libsbml-packages/comp/src/bindings/csharp/local-packages-comp.i 2013-06-25 13:24:05 UTC (rev 17954)
+++ trunk/libsbml-packages/comp/src/bindings/csharp/local-packages-comp.i 2013-06-25 13:42:35 UTC (rev 17955)
@@ -188,6 +188,16 @@
COVARIANT_RTYPE_RENAMEUNITSIDREFS(Port)
+%define COVARIANT_RTYPE_FUNCTION(_CNAME_, _FNAME_)
+%typemap(cstype) _CNAME_* _CNAME_::_FNAME_ "_CNAME_"
+%csmethodmodifiers _CNAME_::_FNAME_ "public new"
+%enddef
+
+COVARIANT_RTYPE_FUNCTION(Port, unsetName)
+COVARIANT_RTYPE_FUNCTION(Port, setName)
+COVARIANT_RTYPE_FUNCTION(Port, isSetName)
+COVARIANT_RTYPE_FUNCTION(Port, getId)
+
%define COVARIANT_RTYPE_RENAMEMETAIDREFS(_CNAME_)
%typemap(cstype) _CNAME_* _CNAME_::renameMetaIdRefs "_CNAME_"
%csmethodmodifiers _CNAME_::renameMetaIdRefs "public new"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fbe...@us...> - 2013-06-25 13:24:08
|
Revision: 17954
http://sourceforge.net/p/sbml/code/17954
Author: fbergmann
Date: 2013-06-25 13:24:05 +0000 (Tue, 25 Jun 2013)
Log Message:
-----------
- fix a bug, where on some unix systems a directory was mistaken as file
Modified Paths:
--------------
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/SBMLFileResolver.cpp
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/SBMLFileResolver.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/SBMLFileResolver.cpp 2013-06-25 08:55:52 UTC (rev 17953)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/SBMLFileResolver.cpp 2013-06-25 13:24:05 UTC (rev 17954)
@@ -179,15 +179,41 @@
return NULL;
}
+#ifndef WIN32
+#include <dirent.h>
+bool directoryExists( const char* path )
+{
+ if ( path == NULL) return false;
+
+ bool result = false;
+ DIR *dir = opendir (path);
+
+ if (dir != NULL)
+ {
+ result = true;
+ (void) closedir (dir);
+ }
+
+ return result;
+}
+#endif
+
/** @cond doxygen-libsbml-internal */
bool
SBMLFileResolver::fileExists(const std::string& fileName)
{
- ifstream file(fileName.c_str());
- if (!file)
- return false;
+ ifstream file(fileName.c_str());
+ if (!file)
+ return false;
file.close();
- return true;
+ // on linux we know that ther fileName exists, however
+ // it could be a directory (windows does not allow
+ // a directory be opened)
+ #ifndef WIN32
+ if (directoryExists(fileName.c_str()))
+ return false;
+ #endif
+ return true;
}
/** @endcond */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sar...@us...> - 2013-06-25 08:55:56
|
Revision: 17953
http://sourceforge.net/p/sbml/code/17953
Author: sarahkeating
Date: 2013-06-25 08:55:52 +0000 (Tue, 25 Jun 2013)
Log Message:
-----------
include a test that logs the fact that an external model cannot be found;
as if it cannot be found several errors cannot be checked so will 'appear to have passed'
Modified Paths:
--------------
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/CompConsistencyConstraints.cpp
Added Paths:
-----------
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-01-1090101.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-02-1090101.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-03-1090101.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-04-1090101.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-05-1090101.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-06-1090101.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-02.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-03.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-04.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-05.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-06.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-07.xml
Removed Paths:
-------------
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-02.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-03.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-04.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-05.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-06.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-01.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-02.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-03.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-04.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-05.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-06.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-07.xml
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/CompConsistencyConstraints.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/CompConsistencyConstraints.cpp 2013-06-24 12:39:53 UTC (rev 17952)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/constraints/CompConsistencyConstraints.cpp 2013-06-25 08:55:52 UTC (rev 17953)
@@ -177,12 +177,50 @@
END_CONSTRAINT
//TODO: 20306 - caught at read md5
-//TODO: 20307 - caught at read anyURI
+// 20307 - caught at read anyURI
// 20308 - caught at read
// 20309 - string
-//TODO: 20310
+// 20310
EXTERN_CONSTRAINT( CompCircularExternalModelReference, ExtModelReferenceCycles)
+//90101
+START_CONSTRAINT (CompUnresolvedReference, ExternalModelDefinition, emd)
+{
+ pre (emd.isSetSource() == true);
+
+ const SBMLDocument* doc = emd.getSBMLDocument();
+ pre(doc != NULL);
+ string locationURI = doc->getLocationURI();
+ string uri = emd.getSource();
+
+ const SBMLResolverRegistry& registry = SBMLResolverRegistry::getInstance();
+ SBMLUri* resolved = registry.resolveUri(uri, locationURI);
+ //pre(resolved != NULL )
+ //string resolvedURI = resolved->getUri();
+ //delete resolved;
+ //doc = registry.resolve(uri, locationURI);
+ //pre(doc != NULL);
+ //pre(doc->getLevel() == 3);
+
+ bool fail = false;
+
+ msg = "<externalModelDefinition> '";
+ msg += emd.getId() ;
+ msg += "' refers to a source '";
+ msg += emd.getSource();
+ msg += "' that cannot be accessed from here. Further checks relating to.";
+ msg += "' this document cannot be performed.";
+
+ if (resolved == NULL)
+ {
+ fail = true;
+ }
+
+ inv(fail == false);
+}
+END_CONSTRAINT
+
+
//*************************************
// 204xx - not used
Copied: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-01-1090101.xml (from rev 17947, trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-01.xml)
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-01-1090101.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-01-1090101.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
+<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="A" comp:modelRef="EM1"/>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfExternalModelDefinitions>
+ <comp:externalModelDefinition comp:id="EM1" comp:source="1:invalid" comp:modelRef="nonexistingid"/>
+ </comp:listOfExternalModelDefinitions>
+</sbml>
Deleted: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-01.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-01.xml 2013-06-24 12:39:53 UTC (rev 17952)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-01.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
-<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
- <model>
- <comp:listOfSubmodels>
- <comp:submodel comp:id="A" comp:modelRef="EM1"/>
- </comp:listOfSubmodels>
- </model>
- <comp:listOfExternalModelDefinitions>
- <comp:externalModelDefinition comp:id="EM1" comp:source="1:invalid" comp:modelRef="nonexistingid"/>
- </comp:listOfExternalModelDefinitions>
-</sbml>
Copied: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-02-1090101.xml (from rev 17947, trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-02.xml)
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-02-1090101.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-02-1090101.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
+<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="A" comp:modelRef="EM1"/>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfExternalModelDefinitions>
+ <comp:externalModelDefinition comp:id="EM1" comp:source="file:jjj/lll#kl#l" comp:modelRef="nonexistingid"/>
+ </comp:listOfExternalModelDefinitions>
+</sbml>
Deleted: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-02.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-02.xml 2013-06-24 12:39:53 UTC (rev 17952)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-02.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
-<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
- <model>
- <comp:listOfSubmodels>
- <comp:submodel comp:id="A" comp:modelRef="EM1"/>
- </comp:listOfSubmodels>
- </model>
- <comp:listOfExternalModelDefinitions>
- <comp:externalModelDefinition comp:id="EM1" comp:source="file:jjj/lll#kl#l" comp:modelRef="nonexistingid"/>
- </comp:listOfExternalModelDefinitions>
-</sbml>
Copied: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-03-1090101.xml (from rev 17947, trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-03.xml)
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-03-1090101.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-03-1090101.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
+<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="A" comp:modelRef="EM1"/>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfExternalModelDefinitions>
+ <comp:externalModelDefinition comp:id="EM1" comp:source="file:/jjj/lllk]l" comp:modelRef="nonexistingid"/>
+ </comp:listOfExternalModelDefinitions>
+</sbml>
Deleted: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-03.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-03.xml 2013-06-24 12:39:53 UTC (rev 17952)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-03.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
-<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
- <model>
- <comp:listOfSubmodels>
- <comp:submodel comp:id="A" comp:modelRef="EM1"/>
- </comp:listOfSubmodels>
- </model>
- <comp:listOfExternalModelDefinitions>
- <comp:externalModelDefinition comp:id="EM1" comp:source="file:/jjj/lllk]l" comp:modelRef="nonexistingid"/>
- </comp:listOfExternalModelDefinitions>
-</sbml>
Copied: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-04-1090101.xml (from rev 17947, trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-04.xml)
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-04-1090101.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-04-1090101.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
+<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="A" comp:modelRef="EM1"/>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfExternalModelDefinitions>
+ <comp:externalModelDefinition comp:id="EM1" comp:source="file://[jjj/lllkl#frag" comp:modelRef="nonexistingid"/>
+ </comp:listOfExternalModelDefinitions>
+</sbml>
Deleted: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-04.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-04.xml 2013-06-24 12:39:53 UTC (rev 17952)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-04.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
-<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
- <model>
- <comp:listOfSubmodels>
- <comp:submodel comp:id="A" comp:modelRef="EM1"/>
- </comp:listOfSubmodels>
- </model>
- <comp:listOfExternalModelDefinitions>
- <comp:externalModelDefinition comp:id="EM1" comp:source="file://[jjj/lllkl#frag" comp:modelRef="nonexistingid"/>
- </comp:listOfExternalModelDefinitions>
-</sbml>
Copied: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-05-1090101.xml (from rev 17947, trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-05.xml)
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-05-1090101.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-05-1090101.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
+<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="A" comp:modelRef="EM1"/>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfExternalModelDefinitions>
+ <comp:externalModelDefinition comp:id="EM1" comp:source="file://m]e@host/jjj/lllkl?query" comp:modelRef="nonexistingid"/>
+ </comp:listOfExternalModelDefinitions>
+</sbml>
Deleted: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-05.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-05.xml 2013-06-24 12:39:53 UTC (rev 17952)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-05.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
-<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
- <model>
- <comp:listOfSubmodels>
- <comp:submodel comp:id="A" comp:modelRef="EM1"/>
- </comp:listOfSubmodels>
- </model>
- <comp:listOfExternalModelDefinitions>
- <comp:externalModelDefinition comp:id="EM1" comp:source="file://m]e@host/jjj/lllkl?query" comp:modelRef="nonexistingid"/>
- </comp:listOfExternalModelDefinitions>
-</sbml>
Copied: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-06-1090101.xml (from rev 17947, trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-06.xml)
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-06-1090101.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-06-1090101.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
+<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="A" comp:modelRef="EM1"/>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfExternalModelDefinitions>
+ <comp:externalModelDefinition comp:id="EM1" comp:source="me]l@ggh?kkl?kll#hy" comp:modelRef="nonexistingid"/>
+ </comp:listOfExternalModelDefinitions>
+</sbml>
Deleted: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-06.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-06.xml 2013-06-24 12:39:53 UTC (rev 17952)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-fail-01-06.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
-<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
- <model>
- <comp:listOfSubmodels>
- <comp:submodel comp:id="A" comp:modelRef="EM1"/>
- </comp:listOfSubmodels>
- </model>
- <comp:listOfExternalModelDefinitions>
- <comp:externalModelDefinition comp:id="EM1" comp:source="me]l@ggh?kkl?kll#hy" comp:modelRef="nonexistingid"/>
- </comp:listOfExternalModelDefinitions>
-</sbml>
Deleted: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-01.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-01.xml 2013-06-24 12:39:53 UTC (rev 17952)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-01.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
-<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
- <model>
- <comp:listOfSubmodels>
- <comp:submodel comp:id="A" comp:modelRef="EM1"/>
- </comp:listOfSubmodels>
- </model>
- <comp:listOfExternalModelDefinitions>
- <comp:externalModelDefinition comp:id="EM1" comp:source="file:/jjj;lll" comp:modelRef="nonexistingid"/>
- </comp:listOfExternalModelDefinitions>
-</sbml>
Deleted: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-02.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-02.xml 2013-06-24 12:39:53 UTC (rev 17952)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-02.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
-<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
- <model>
- <comp:listOfSubmodels>
- <comp:submodel comp:id="A" comp:modelRef="EM1"/>
- </comp:listOfSubmodels>
- </model>
- <comp:listOfExternalModelDefinitions>
- <comp:externalModelDefinition comp:id="EM1" comp:source="file:/jjj/lllk#lkkk" comp:modelRef="nonexistingid"/>
- </comp:listOfExternalModelDefinitions>
-</sbml>
Deleted: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-03.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-03.xml 2013-06-24 12:39:53 UTC (rev 17952)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-03.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
-<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
- <model>
- <comp:listOfSubmodels>
- <comp:submodel comp:id="A" comp:modelRef="EM1"/>
- </comp:listOfSubmodels>
- </model>
- <comp:listOfExternalModelDefinitions>
- <comp:externalModelDefinition comp:id="EM1" comp:source="file://jjj/lllkl#hgh]lk" comp:modelRef="nonexistingid"/>
- </comp:listOfExternalModelDefinitions>
-</sbml>
Deleted: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-04.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-04.xml 2013-06-24 12:39:53 UTC (rev 17952)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-04.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
-<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
- <model>
- <comp:listOfSubmodels>
- <comp:submodel comp:id="A" comp:modelRef="EM1"/>
- </comp:listOfSubmodels>
- </model>
- <comp:listOfExternalModelDefinitions>
- <comp:externalModelDefinition comp:id="EM1" comp:source="1//jjj/lllkl:jjkj" comp:modelRef="nonexistingid"/>
- </comp:listOfExternalModelDefinitions>
-</sbml>
Deleted: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-05.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-05.xml 2013-06-24 12:39:53 UTC (rev 17952)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-05.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
-<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
- <model>
- <comp:listOfSubmodels>
- <comp:submodel comp:id="A" comp:modelRef="EM1"/>
- </comp:listOfSubmodels>
- </model>
- <comp:listOfExternalModelDefinitions>
- <comp:externalModelDefinition comp:id="EM1" comp:source="mel@ggh?kkl[k]?kll#hy" comp:modelRef="nonexistingid"/>
- </comp:listOfExternalModelDefinitions>
-</sbml>
Deleted: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-06.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-06.xml 2013-06-24 12:39:53 UTC (rev 17952)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-06.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
-<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
- <model>
- <comp:listOfSubmodels>
- <comp:submodel comp:id="A" comp:modelRef="EM1"/>
- </comp:listOfSubmodels>
- </model>
- <comp:listOfExternalModelDefinitions>
- <comp:externalModelDefinition comp:id="EM1" comp:source="file://me@host/jjj/lllkl?qu]ery" comp:modelRef="nonexistingid"/>
- </comp:listOfExternalModelDefinitions>
-</sbml>
Deleted: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-07.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-07.xml 2013-06-24 12:39:53 UTC (rev 17952)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-07.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
-<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
- <model>
- <comp:listOfSubmodels>
- <comp:submodel comp:id="A" comp:modelRef="EM1"/>
- </comp:listOfSubmodels>
- </model>
- <comp:listOfExternalModelDefinitions>
- <comp:externalModelDefinition comp:id="EM1" comp:source="file://me@host/jjj/lllkl#qu]ery" comp:modelRef="nonexistingid"/>
- </comp:listOfExternalModelDefinitions>
-</sbml>
Copied: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-01.xml (from rev 17947, trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-01.xml)
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-01.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-01.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
+<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="A" comp:modelRef="EM1"/>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfExternalModelDefinitions>
+ <comp:externalModelDefinition comp:id="EM1" comp:source="file:/jjj;lll" comp:modelRef="nonexistingid"/>
+ </comp:listOfExternalModelDefinitions>
+</sbml>
Copied: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-02.xml (from rev 17947, trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-02.xml)
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-02.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-02.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
+<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="A" comp:modelRef="EM1"/>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfExternalModelDefinitions>
+ <comp:externalModelDefinition comp:id="EM1" comp:source="file:/jjj/lllk#lkkk" comp:modelRef="nonexistingid"/>
+ </comp:listOfExternalModelDefinitions>
+</sbml>
Copied: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-03.xml (from rev 17947, trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-03.xml)
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-03.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-03.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
+<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="A" comp:modelRef="EM1"/>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfExternalModelDefinitions>
+ <comp:externalModelDefinition comp:id="EM1" comp:source="file://jjj/lllkl#hgh]lk" comp:modelRef="nonexistingid"/>
+ </comp:listOfExternalModelDefinitions>
+</sbml>
Copied: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-04.xml (from rev 17947, trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-04.xml)
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-04.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-04.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
+<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="A" comp:modelRef="EM1"/>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfExternalModelDefinitions>
+ <comp:externalModelDefinition comp:id="EM1" comp:source="1//jjj/lllkl:jjkj" comp:modelRef="nonexistingid"/>
+ </comp:listOfExternalModelDefinitions>
+</sbml>
Copied: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-05.xml (from rev 17947, trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-05.xml)
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-05.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-05.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
+<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="A" comp:modelRef="EM1"/>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfExternalModelDefinitions>
+ <comp:externalModelDefinition comp:id="EM1" comp:source="mel@ggh?kkl[k]?kll#hy" comp:modelRef="nonexistingid"/>
+ </comp:listOfExternalModelDefinitions>
+</sbml>
Copied: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-06.xml (from rev 17947, trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-06.xml)
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-06.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-06.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
+<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="A" comp:modelRef="EM1"/>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfExternalModelDefinitions>
+ <comp:externalModelDefinition comp:id="EM1" comp:source="file://me@host/jjj/lllkl?qu]ery" comp:modelRef="nonexistingid"/>
+ </comp:listOfExternalModelDefinitions>
+</sbml>
Copied: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-07.xml (from rev 17947, trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1020307-pass-00-07.xml)
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-07.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/test/test-data/general-constraints/1090101-fail-01-07.xml 2013-06-25 08:55:52 UTC (rev 17953)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- The file 'new_aggregate.xml' is actually in the subdirectory 'subdir', so you have to tell the converter to look there, or this model cannot be flattened.-->
+<?xml-model href="../../../../../RelaxNG/sbml_comp.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model>
+ <comp:listOfSubmodels>
+ <comp:submodel comp:id="A" comp:modelRef="EM1"/>
+ </comp:listOfSubmodels>
+ </model>
+ <comp:listOfExternalModelDefinitions>
+ <comp:externalModelDefinition comp:id="EM1" comp:source="file://me@host/jjj/lllkl#qu]ery" comp:modelRef="nonexistingid"/>
+ </comp:listOfExternalModelDefinitions>
+</sbml>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sar...@us...> - 2013-06-24 12:39:56
|
Revision: 17952
http://sourceforge.net/p/sbml/code/17952
Author: sarahkeating
Date: 2013-06-24 12:39:53 +0000 (Mon, 24 Jun 2013)
Log Message:
-----------
************IGNORE
playing with directories to test merging/copying for new svn structure
adding things to a branch
Added Paths:
-----------
branches/libsbml-sarah/win32-branch/msvc7/moreNew.txt
Added: branches/libsbml-sarah/win32-branch/msvc7/moreNew.txt
===================================================================
--- branches/libsbml-sarah/win32-branch/msvc7/moreNew.txt (rev 0)
+++ branches/libsbml-sarah/win32-branch/msvc7/moreNew.txt 2013-06-24 12:39:53 UTC (rev 17952)
@@ -0,0 +1 @@
+more new stuff
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sar...@us...> - 2013-06-24 12:27:55
|
Revision: 17951
http://sourceforge.net/p/sbml/code/17951
Author: sarahkeating
Date: 2013-06-24 12:27:51 +0000 (Mon, 24 Jun 2013)
Log Message:
-----------
************IGNORE
playing with directories to test merging/copying for new svn structure
adding things to a branch
Modified Paths:
--------------
branches/libsbml-sarah/win32-branch/msvc7/OtherMakefile.in
branches/libsbml-sarah/win32-branch/msvc7/expat/newfolder/libsbml_csharp.vcproj
Added Paths:
-----------
branches/libsbml-sarah/win32-branch/msvc7/expat/otherNewFile.txt
branches/libsbml-sarah/win32-branch/newfolder/
branches/libsbml-sarah/win32-branch/newfolder/testFile.txt
Modified: branches/libsbml-sarah/win32-branch/msvc7/OtherMakefile.in
===================================================================
--- branches/libsbml-sarah/win32-branch/msvc7/OtherMakefile.in 2013-06-24 11:13:25 UTC (rev 17950)
+++ branches/libsbml-sarah/win32-branch/msvc7/OtherMakefile.in 2013-06-24 12:27:51 UTC (rev 17951)
@@ -72,7 +72,7 @@
distfiles = \
Makefile.in
-
+Chnaging changing
# -----------------------------------------------------------------------------
# Primary build actions
Modified: branches/libsbml-sarah/win32-branch/msvc7/expat/newfolder/libsbml_csharp.vcproj
===================================================================
--- branches/libsbml-sarah/win32-branch/msvc7/expat/newfolder/libsbml_csharp.vcproj 2013-06-24 11:13:25 UTC (rev 17950)
+++ branches/libsbml-sarah/win32-branch/msvc7/expat/newfolder/libsbml_csharp.vcproj 2013-06-24 12:27:51 UTC (rev 17951)
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="Windows-1252"?>
-<!-- changeing with bad spelling -->
+<!-- changing with good spelling -->
+
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Added: branches/libsbml-sarah/win32-branch/msvc7/expat/otherNewFile.txt
===================================================================
--- branches/libsbml-sarah/win32-branch/msvc7/expat/otherNewFile.txt (rev 0)
+++ branches/libsbml-sarah/win32-branch/msvc7/expat/otherNewFile.txt 2013-06-24 12:27:51 UTC (rev 17951)
@@ -0,0 +1 @@
+test test tset
\ No newline at end of file
Added: branches/libsbml-sarah/win32-branch/newfolder/testFile.txt
===================================================================
--- branches/libsbml-sarah/win32-branch/newfolder/testFile.txt (rev 0)
+++ branches/libsbml-sarah/win32-branch/newfolder/testFile.txt 2013-06-24 12:27:51 UTC (rev 17951)
@@ -0,0 +1 @@
+test
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sar...@us...> - 2013-06-24 11:13:28
|
Revision: 17950
http://sourceforge.net/p/sbml/code/17950
Author: sarahkeating
Date: 2013-06-24 11:13:25 +0000 (Mon, 24 Jun 2013)
Log Message:
-----------
************IGNORE
playing with directories to test merging/copying for new svn structure
1. any new folders - branch
2. any new files - branch individually
3. any files with same name - manually merge changes
Modified Paths:
--------------
branches/libsbml-sarah/win_Copy/msvc7/Makefile.in
Modified: branches/libsbml-sarah/win_Copy/msvc7/Makefile.in
===================================================================
--- branches/libsbml-sarah/win_Copy/msvc7/Makefile.in 2013-06-24 11:11:55 UTC (rev 17949)
+++ branches/libsbml-sarah/win_Copy/msvc7/Makefile.in 2013-06-24 11:13:25 UTC (rev 17950)
@@ -1,3 +1,5 @@
+## testing merging etc
+
## @configure_input@
##
## Filename : Makefile.in
@@ -56,6 +58,8 @@
include @top_srcdir@/config/makefile-common-vars.mk
+# adding stuff
+
# `srcdir' points to the current directory, but should be set by configure.
# `subdir' must be set manually to the relative dir under `srcdir'. Don't
# set `subdir' to an absolute path, or some `make' actions will fail.
@@ -70,6 +74,7 @@
distfiles = \
Makefile.in
+ # change this file
# -----------------------------------------------------------------------------
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sar...@us...> - 2013-06-24 11:11:59
|
Revision: 17949
http://sourceforge.net/p/sbml/code/17949
Author: sarahkeating
Date: 2013-06-24 11:11:55 +0000 (Mon, 24 Jun 2013)
Log Message:
-----------
************IGNORE
playing with directories to test merging/copying for new svn structure
1. any new folders - branch
2. any new files - branch individually
3. any files with same name - manually merge changes
Added Paths:
-----------
branches/libsbml-sarah/win_Copy/msvc7/OtherMakefile.in
Copied: branches/libsbml-sarah/win_Copy/msvc7/OtherMakefile.in (from rev 17926, branches/libsbml-sarah/win32_Copy/msvc7/OtherMakefile.in)
===================================================================
--- branches/libsbml-sarah/win_Copy/msvc7/OtherMakefile.in (rev 0)
+++ branches/libsbml-sarah/win_Copy/msvc7/OtherMakefile.in 2013-06-24 11:11:55 UTC (rev 17949)
@@ -0,0 +1,137 @@
+## do more changes
+
+## @configure_input@
+##
+## Filename : Makefile.in
+## Description : Makefile for win\msvc7 subdirectory
+## Author(s) : SBML Team <sbm...@ca...>
+## Organization: Caltech, USA, and University of Hertfordshire, UK
+## Created : 2004-07-13
+## Revision : $Id: Makefile.in 9463 2009-04-30 09:46:51Z ajouraku $
+## $HeadURL: https://sbml.svn.sourceforge.net/svnroot/sbml/branches/libsbml-4/win32/Makefile.in $
+##
+## Copyright 2004 California Institute of Technology and
+## Japan Science and Technology Corporation.
+##
+## This library is free software; you can redistribute it and/or modify it
+## under the terms of the GNU Lesser General Public License as published
+## by the Free Software Foundation; either version 2.1 of the License, or
+## any later version.
+##
+## This library is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF
+## MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. The software and
+## documentation provided hereunder is on an "as is" basis, and the
+## California Institute of Technology and Japan Science and Technology
+## Corporation have no obligations to provide maintenance, support,
+## updates, enhancements or modifications. In no event shall the
+## California Institute of Technology or the Japan Science and Technology
+## Corporation be liable to any party for direct, indirect, special,
+## incidental or consequential damages, including lost profits, arising
+## out of the use of this software and its documentation, even if the
+## California Institute of Technology and/or Japan Science and Technology
+## Corporation have been advised of the possibility of such damage. See
+## the GNU Lesser General Public License for more details.
+##
+## You should have received a copy of the GNU Lesser General Public License
+## along with this library; if not, write to the Free Software Foundation,
+## Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+##
+## The original code contained here was initially developed by:
+##
+## Sarah Keating and Ben Bornstein
+## SBML Team
+## http://www.sbml.org
+## mailto:sbm...@ca...
+##
+## Contributor(s):
+## Michael Hucka <mh...@ca...> Wrote this Makefile.in.
+##
+
+# -----------------------------------------------------------------------------
+# Configuration variables
+# -----------------------------------------------------------------------------
+# Some of the following are substituted automatically by `configure'. If
+# you are looking at "Makefile", do not edit these values; instead, run the
+# configure script at the top level of the src tree. It will recreate
+# "Makefile".
+
+include @top_srcdir@/config/makefile-common-vars.mk
+
+# `srcdir' points to the current directory, but should be set by configure.
+# `subdir' must be set manually to the relative dir under `srcdir'. Don't
+# set `subdir' to an absolute path, or some `make' actions will fail.
+
+srcdir = @srcdir@
+thisdir = win/msvc7
+
+subdirs = common expat libxml2 xerces
+
+# This makefile only serves a role for `make dist'.
+
+distfiles = \
+ Makefile.in
+
+
+
+# -----------------------------------------------------------------------------
+# Primary build actions
+# -----------------------------------------------------------------------------
+
+# At this time, this makefile currently does nothing except serve to set
+# variables for `make dist'. Consequently, there is nothing here to build.
+
+all:
+
+
+# -----------------------------------------------------------------------------
+# Checking.
+# -----------------------------------------------------------------------------
+
+check:
+
+
+# -----------------------------------------------------------------------------
+# Tags.
+# -----------------------------------------------------------------------------
+
+# Nothing to be done for tags right now.
+
+tags:
+
+
+# -----------------------------------------------------------------------------
+# Installation
+# -----------------------------------------------------------------------------
+
+# This library doesn't actually get installed. The main libsbml library
+# (in ../src) slurps in the contents when it's built.
+
+install:
+
+install-docs:
+
+installcheck:
+
+uninstall:
+
+
+# -----------------------------------------------------------------------------
+# Creating distribution (for libSBML maintainers only)
+# -----------------------------------------------------------------------------
+
+dist: all dist-normal dist-recursive
+
+distcheck: all distcheck-normal distcheck-recursive
+
+
+# -----------------------------------------------------------------------------
+# Miscellaneous
+# -----------------------------------------------------------------------------
+
+include @top_srcdir@/config/makefile-common-actions.mk
+
+
+# -----------------------------------------------------------------------------
+# End.
+# -----------------------------------------------------------------------------
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sar...@us...> - 2013-06-24 11:11:22
|
Revision: 17948
http://sourceforge.net/p/sbml/code/17948
Author: sarahkeating
Date: 2013-06-24 11:11:20 +0000 (Mon, 24 Jun 2013)
Log Message:
-----------
************IGNORE
playing with directories to test merging/copying for new svn structure
1. any new folders - branch
2. any new files - branch individually
3. any files with same name - manually merge changes
Added Paths:
-----------
branches/libsbml-sarah/win_Copy/msvc7/expat/newfolder/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sar...@us...> - 2013-06-23 11:48:05
|
Revision: 17947
http://sourceforge.net/p/sbml/code/17947
Author: sarahkeating
Date: 2013-06-23 11:48:02 +0000 (Sun, 23 Jun 2013)
Log Message:
-----------
reverted Lucians commit since we have not yet agreed on how we proceed with this
Modified Paths:
--------------
trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompSBMLDocumentPlugin.cpp
trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompSBMLDocumentPlugin.h
trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestCheckConsistency.cpp
trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestExtensionObjects.cpp
trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestMultipleNamespaces.cpp
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/CompFlatteningConverter.cpp
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/CompTest_flat_ports.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/QuorumTrigger.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/exchangetest2_flat_ports.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_definitions.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_ports.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_portsAndDefinitions.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test_transfer_moddef.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test_transfer_moddef2mod.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLError.h
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLErrorTable.h
Added Paths:
-----------
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/1020204-fail-01-01.xml
Removed Paths:
-------------
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/1020203-fail-01-01.xml
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompSBMLDocumentPlugin.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompSBMLDocumentPlugin.cpp 2013-06-21 17:57:47 UTC (rev 17946)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompSBMLDocumentPlugin.cpp 2013-06-23 11:48:02 UTC (rev 17947)
@@ -237,7 +237,7 @@
/** @cond doxygen-libsbml-internal */
void
CompSBMLDocumentPlugin::readAttributes (const XMLAttributes& attributes,
- const ExpectedAttributes& expectedAttributes)
+ const ExpectedAttributes& expectedAttributes)
{
// for now don't read the required flag for L2 models
if (getSBMLDocument() != NULL && getSBMLDocument()->getLevel() < 3) return;
@@ -265,11 +265,6 @@
else
{
mIsSetRequired = true;
- if (mRequired == false)
- {
- getErrorLog()->logPackageError("comp", CompAttributeRequiredMustBeTrue,
- getPackageVersion(), getLevel(), getVersion());
- }
}
}
/** @endcond */
@@ -559,26 +554,6 @@
}
-int
-CompSBMLDocumentPlugin::setRequired(bool required)
-{
- //
- // required attribute is not defined for SBML Level 2 .
- //
- if ( getLevel() < 3) {
- return LIBSBML_UNEXPECTED_ATTRIBUTE;
- }
-
- if (required==false) {
- return LIBSBML_INVALID_ATTRIBUTE_VALUE;
- }
-
- mRequired = required;
- mIsSetRequired = true;
- return LIBSBML_OPERATION_SUCCESS;
-}
-
-
/** @cond doxygen-libsbml-internal */
void
CompSBMLDocumentPlugin::setSBMLDocument (SBMLDocument* d)
@@ -824,12 +799,36 @@
void
CompSBMLDocumentPlugin::checkRequiredFlagStatus(SBMLDocument * doc)
{
- if (getRequired() == false)
+ bool reqd = getRequired();
+
+ Model * m = doc->getModel();
+ if (m == NULL)
{
- doc->getErrorLog()->logPackageError("comp",
- CompAttributeRequiredMustBeTrue, getPackageVersion(), getLevel(),
- getVersion());
+ return;
}
+
+ const CompModelPlugin *mPlugin = static_cast<CompModelPlugin*>(
+ m->getPlugin("comp"));
+
+ if (mPlugin->getNumSubmodels() == 0)
+ {
+ if (reqd == true)
+ {
+ std::string message = "The containing model has no submodels and "
+ "thus the required attribute should be false";
+ doc->getErrorLog()->logPackageError("comp",
+ CompRequiredFalseIfAllElementsReplaced, getPackageVersion(), getLevel(),
+ getVersion(), message);
+ }
+ }
+ else
+ {
+ //TODO: need to llop thru submodels and check whether they
+ // contain any Species/Parameter/Compa/React/Event that gets replaced
+ // I suspect there might be code in teh flatten stuff that already
+ // does this but have not had time to look yet
+ }
+
}
/** @endcond */
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompSBMLDocumentPlugin.h
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompSBMLDocumentPlugin.h 2013-06-21 17:57:47 UTC (rev 17946)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompSBMLDocumentPlugin.h 2013-06-23 11:48:02 UTC (rev 17947)
@@ -439,25 +439,6 @@
/**
- *
- * Sets the bool value of "required" attribute of corresponding package
- * in SBMLDocument element. The only legal value is 'true' for the
- * Hierarchical Model Composition package.
- *
- * @param value the bool value of "required" attribute of corresponding
- * package in SBMLDocument element.
- *
- * @return integer value indicating success/failure of the
- * function. The possible values
- * returned by this function are:
- * @li @link OperationReturnValues_t#LIBSBML_OPERATION_SUCCESS LIBSBML_OPERATION_SUCCESS @endlink
- * @li @link OperationReturnValues_t#LIBSBML_UNEXPECTED_ATTRIBUTE LIBSBML_UNEXPECTED_ATTRIBUTE @endlink
- * @li @link OperationReturnValues_t#LIBSBML_INVALID_ATTRIBUTE_VALUE LIBSBML_INVALID_ATTRIBUTE_VALUE @endlink
- */
- virtual int setRequired(bool value);
-
-
- /**
* Adds a copy of the given ExternalModelDefinition object to the list of
* ExternalModelDefinitions.
*
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestCheckConsistency.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestCheckConsistency.cpp 2013-06-21 17:57:47 UTC (rev 17946)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestCheckConsistency.cpp 2013-06-23 11:48:02 UTC (rev 17947)
@@ -60,15 +60,15 @@
END_TEST
-START_TEST (test_comp_fail_20203)
+START_TEST (test_comp_fail_20204)
{
string filename(TestDataDirectory);
- string cfile = filename + "1020203-fail-01-01.xml";
+ string cfile = filename + "1020204-fail-01-01.xml";
SBMLDocument* doc = readSBMLFromFile(cfile.c_str());
unsigned int nerrors = doc->checkConsistency();
fail_unless (nerrors == 1);
- fail_unless (doc->getError(0)->getErrorId() == 1020203);
+ fail_unless (doc->getError(0)->getErrorId() == 1020204);
delete doc;
}
@@ -81,7 +81,7 @@
Suite *suite = suite_create("SBMLCompCheckConsistency");
tcase_add_test(tcase, test_comp_pass_all);
- tcase_add_test(tcase, test_comp_fail_20203);
+ tcase_add_test(tcase, test_comp_fail_20204);
suite_add_tcase(suite, tcase);
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestExtensionObjects.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestExtensionObjects.cpp 2013-06-21 17:57:47 UTC (rev 17946)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestExtensionObjects.cpp 2013-06-23 11:48:02 UTC (rev 17947)
@@ -206,7 +206,7 @@
//fail_unless(flatmod != NULL);
//SBMLNamespaces sbmlns(3,1,"comp",1);
//SBMLDocument doc2(&sbmlns);
- //doc2.setPackageRequired("comp", true);
+ //doc2.setPackageRequired("comp", false);
//doc2.setModel(flatmod);
//string newModel = writeSBMLToString(&doc2);
//===========
@@ -257,7 +257,7 @@
//fail_unless(flatmod != NULL);
//CompPkgNamespaces csbmlns(3,1,1,"comp");
//SBMLDocument flatdoc(&csbmlns);
- //flatdoc.setPackageRequired("comp", true);
+ //flatdoc.setPackageRequired("comp", false);
//flatdoc.setModel(flatmod);
//string newModel = writeSBMLToString(&flatdoc);
@@ -310,7 +310,7 @@
//fail_unless(flatmod != NULL);
//CompPkgNamespaces csbmlns(3,1,1,"comp");
//SBMLDocument flatdoc(&csbmlns);
- //flatdoc.setPackageRequired("comp", true);
+ //flatdoc.setPackageRequired("comp", false);
//flatdoc.setModel(flatmod);
//writeSBMLToFile(&flatdoc, "CompTest_flat_ports.xml");
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestMultipleNamespaces.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestMultipleNamespaces.cpp 2013-06-21 17:57:47 UTC (rev 17946)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestMultipleNamespaces.cpp 2013-06-23 11:48:02 UTC (rev 17947)
@@ -67,8 +67,6 @@
fail_unless(csdp != NULL);
Model* model = doc->getModel();
- fail_unless(model != NULL);
- if (model==NULL) return;
SBasePlugin* plugin = model->getPlugin("layout");
if (plugin == NULL)
{
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/CompFlatteningConverter.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/CompFlatteningConverter.cpp 2013-06-21 17:57:47 UTC (rev 17946)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/CompFlatteningConverter.cpp 2013-06-23 11:48:02 UTC (rev 17947)
@@ -190,12 +190,12 @@
}
result = mDocument->setModel(flatmodel);
- mDocument->setPackageRequired("comp", true);
+ mDocument->setPackageRequired("comp", false);
}
else
{
result = mDocument->setModel(flatmodel);
- mDocument->setPackageRequired("comp", true);
+ mDocument->setPackageRequired("comp", false);
}
}
else
@@ -209,7 +209,7 @@
{
flatmodel->disablePackage(CompExtension::getXmlnsL3V1V1(), "comp");
result = mDocument->setModel(flatmodel);
- mDocument->setPackageRequired("comp", true);
+ mDocument->setPackageRequired("comp", false);
}
}
Deleted: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/1020203-fail-01-01.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/1020203-fail-01-01.xml 2013-06-21 17:57:47 UTC (rev 17946)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/1020203-fail-01-01.xml 2013-06-23 11:48:02 UTC (rev 17947)
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
- <model>
- <listOfParameters>
- <parameter id="param1" constant="true" units="volt" value="2"/>
- </listOfParameters>
- </model>
-</sbml>
Copied: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/1020204-fail-01-01.xml (from rev 17939, trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/1020204-fail-01-01.xml)
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/1020204-fail-01-01.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/1020204-fail-01-01.xml 2013-06-23 11:48:02 UTC (rev 17947)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+ <model>
+ <listOfParameters>
+ <parameter id="param1" constant="true" units="volt" value="2"/>
+ </listOfParameters>
+ </model>
+</sbml>
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/CompTest_flat_ports.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/CompTest_flat_ports.xml 2013-06-21 17:57:47 UTC (rev 17946)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/CompTest_flat_ports.xml 2013-06-23 11:48:02 UTC (rev 17947)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
<model metaid="iBioSim1" id="CompTest">
<listOfFunctionDefinitions>
<functionDefinition id="neighborQuantityLeft" name="neighborQuantityLeft">
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/QuorumTrigger.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/QuorumTrigger.xml 2013-06-21 17:57:47 UTC (rev 17946)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/QuorumTrigger.xml 2013-06-23 11:48:02 UTC (rev 17947)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
<model id="QuorumTrigger">
<listOfCompartments>
<compartment id="default" spatialDimensions="3" size="1" constant="true">
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/exchangetest2_flat_ports.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/exchangetest2_flat_ports.xml 2013-06-21 17:57:47 UTC (rev 17946)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/exchangetest2_flat_ports.xml 2013-06-23 11:48:02 UTC (rev 17947)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
<model metaid="iBioSim1" id="exchangetest" name="testmod">
<listOfFunctionDefinitions>
<functionDefinition id="neighborQuantityLeft" name="neighborQuantityLeft">
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_definitions.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_definitions.xml 2013-06-21 17:57:47 UTC (rev 17946)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_definitions.xml 2013-06-23 11:48:02 UTC (rev 17947)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
<model>
<listOfCompartments>
<compartment id="C" spatialDimensions="3" size="10" constant="false"/>
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_ports.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_ports.xml 2013-06-21 17:57:47 UTC (rev 17946)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_ports.xml 2013-06-23 11:48:02 UTC (rev 17947)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
<model>
<listOfCompartments>
<compartment id="C" spatialDimensions="3" size="10" constant="false"/>
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_portsAndDefinitions.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_portsAndDefinitions.xml 2013-06-21 17:57:47 UTC (rev 17946)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_portsAndDefinitions.xml 2013-06-23 11:48:02 UTC (rev 17947)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
<model>
<listOfCompartments>
<compartment id="C" spatialDimensions="3" size="10" constant="false"/>
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test_transfer_moddef.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test_transfer_moddef.xml 2013-06-21 17:57:47 UTC (rev 17946)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test_transfer_moddef.xml 2013-06-23 11:48:02 UTC (rev 17947)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1" level="3" version="1" comp:required="true" layout:required="false">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1" level="3" version="1" comp:required="false" layout:required="false">
<model/>
<comp:listOfModelDefinitions>
<comp:modelDefinition id="QuorumTrigger">
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test_transfer_moddef2mod.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test_transfer_moddef2mod.xml 2013-06-21 17:57:47 UTC (rev 17946)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test_transfer_moddef2mod.xml 2013-06-23 11:48:02 UTC (rev 17947)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1" level="3" version="1" comp:required="true" layout:required="false">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1" level="3" version="1" comp:required="false" layout:required="false">
<model id="QuorumTrigger">
<listOfCompartments>
<compartment id="default" spatialDimensions="3" size="1" constant="true">
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLError.h
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLError.h 2013-06-21 17:57:47 UTC (rev 17946)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLError.h 2013-06-23 11:48:02 UTC (rev 17947)
@@ -77,7 +77,7 @@
, CompAttributeRequiredMissing = 1020201
, CompAttributeRequiredMustBeBoolean = 1020202
-, CompAttributeRequiredMustBeTrue = 1020203
+, CompRequiredTrueIfElementsRemain = 1020203
, CompRequiredFalseIfAllElementsReplaced= 1020204
, CompOneListOfModelDefinitions = 1020205
, CompEmptyLOModelDefs = 1020206
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLErrorTable.h
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLErrorTable.h 2013-06-21 17:57:47 UTC (rev 17946)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLErrorTable.h 2013-06-23 11:48:02 UTC (rev 17947)
@@ -268,23 +268,29 @@
},
// 1020203
- { CompAttributeRequiredMustBeTrue,
- "The comp:required attribute must be 'true'",
+ { CompRequiredTrueIfElementsRemain,
+ "The comp:required attribute must be 'true' if math changes",
LIBSBML_CAT_GENERAL_CONSISTENCY,
LIBSBML_SEV_ERROR,
"The value of attribute 'comp:required' on the SBML object must "
- "be set to 'true'.",
+ "be set to 'true' if the Model object within the SBML object "
+ "contains any Submodel with Species, Parameter, Compartment, "
+ "Reaction, or Event objects that have not been either directly or "
+ "indirectly replaced.",
{ "L3V1 Comp V1 Section 3.1"
}
},
- //1020204 removed, since the new interpretation of the core spec changed at HARMONY 2013.
+ // 1020204
{ CompRequiredFalseIfAllElementsReplaced,
- "Removed rule about comp:required attribute being 'false' if math does not change",
+ "The comp:required attribute must be 'false' if math does not change",
LIBSBML_CAT_GENERAL_CONSISTENCY,
- LIBSBML_SEV_NOT_APPLICABLE,
- "(Rule removed because of a change in the interpretation of the required attribute "
- "by the SBML Editors.)",
+ LIBSBML_SEV_ERROR,
+ "The value of attribute 'comp:required' on the SBML object must be "
+ "set to 'false' if the Model object within the SBML object contains "
+ "no Submodel objects, or if all Submodel objects that are present "
+ "contain no Species, Parameter, Compartment, Reaction, or Event "
+ "objects that have not been either directly or indirectly replaced.",
{ "L3V1 Comp V1 Section 3.1"
}
},
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <luc...@us...> - 2013-06-21 17:57:50
|
Revision: 17946
http://sourceforge.net/p/sbml/code/17946
Author: luciansmith
Date: 2013-06-21 17:57:47 +0000 (Fri, 21 Jun 2013)
Log Message:
-----------
Change some comp models to conform to latest errata: the 'required' flag must always be 'true'. Affects all eight tests tagged with comp:NotRequired, and no other tests.
Modified Paths:
--------------
trunk/test-suite/cases/semantic/01124/01124-sbml-l3v1.xml
trunk/test-suite/cases/semantic/01125/01125-sbml-l3v1.xml
trunk/test-suite/cases/semantic/01149/01149-sbml-l3v1.xml
trunk/test-suite/cases/semantic/01150/01150-sbml-l3v1.xml
trunk/test-suite/cases/semantic/01151/01151-sbml-l3v1.xml
trunk/test-suite/cases/semantic/01162/01162-sbml-l3v1.xml
trunk/test-suite/cases/semantic/01163/01163-sbml-l3v1.xml
trunk/test-suite/cases/semantic/01166/01166-sbml-l3v1.xml
Modified: trunk/test-suite/cases/semantic/01124/01124-sbml-l3v1.xml
===================================================================
--- trunk/test-suite/cases/semantic/01124/01124-sbml-l3v1.xml 2013-06-21 17:29:04 UTC (rev 17945)
+++ trunk/test-suite/cases/semantic/01124/01124-sbml-l3v1.xml 2013-06-21 17:57:47 UTC (rev 17946)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
<model id="case01124">
<listOfParameters>
<parameter id="param1" value="10.42" constant="true">
Modified: trunk/test-suite/cases/semantic/01125/01125-sbml-l3v1.xml
===================================================================
--- trunk/test-suite/cases/semantic/01125/01125-sbml-l3v1.xml 2013-06-21 17:29:04 UTC (rev 17945)
+++ trunk/test-suite/cases/semantic/01125/01125-sbml-l3v1.xml 2013-06-21 17:57:47 UTC (rev 17946)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
<model>
<listOfParameters>
<parameter id="param1" value="10.42" constant="true">
Modified: trunk/test-suite/cases/semantic/01149/01149-sbml-l3v1.xml
===================================================================
--- trunk/test-suite/cases/semantic/01149/01149-sbml-l3v1.xml 2013-06-21 17:29:04 UTC (rev 17945)
+++ trunk/test-suite/cases/semantic/01149/01149-sbml-l3v1.xml 2013-06-21 17:57:47 UTC (rev 17946)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
<model>
<listOfParameters>
<parameter id="p8" value="8" constant="false">
Modified: trunk/test-suite/cases/semantic/01150/01150-sbml-l3v1.xml
===================================================================
--- trunk/test-suite/cases/semantic/01150/01150-sbml-l3v1.xml 2013-06-21 17:29:04 UTC (rev 17945)
+++ trunk/test-suite/cases/semantic/01150/01150-sbml-l3v1.xml 2013-06-21 17:57:47 UTC (rev 17946)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
<model>
<listOfParameters>
<parameter id="p8" value="8" constant="false">
Modified: trunk/test-suite/cases/semantic/01151/01151-sbml-l3v1.xml
===================================================================
--- trunk/test-suite/cases/semantic/01151/01151-sbml-l3v1.xml 2013-06-21 17:29:04 UTC (rev 17945)
+++ trunk/test-suite/cases/semantic/01151/01151-sbml-l3v1.xml 2013-06-21 17:57:47 UTC (rev 17946)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
<model>
<listOfParameters>
<parameter id="p8" value="8" constant="false">
Modified: trunk/test-suite/cases/semantic/01162/01162-sbml-l3v1.xml
===================================================================
--- trunk/test-suite/cases/semantic/01162/01162-sbml-l3v1.xml 2013-06-21 17:29:04 UTC (rev 17945)
+++ trunk/test-suite/cases/semantic/01162/01162-sbml-l3v1.xml 2013-06-21 17:57:47 UTC (rev 17946)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
<model>
<listOfParameters>
<parameter id="p8" value="8" constant="false">
Modified: trunk/test-suite/cases/semantic/01163/01163-sbml-l3v1.xml
===================================================================
--- trunk/test-suite/cases/semantic/01163/01163-sbml-l3v1.xml 2013-06-21 17:29:04 UTC (rev 17945)
+++ trunk/test-suite/cases/semantic/01163/01163-sbml-l3v1.xml 2013-06-21 17:57:47 UTC (rev 17946)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
<model>
<listOfParameters>
<parameter id="p8" value="8" constant="false">
Modified: trunk/test-suite/cases/semantic/01166/01166-sbml-l3v1.xml
===================================================================
--- trunk/test-suite/cases/semantic/01166/01166-sbml-l3v1.xml 2013-06-21 17:29:04 UTC (rev 17945)
+++ trunk/test-suite/cases/semantic/01166/01166-sbml-l3v1.xml 2013-06-21 17:57:47 UTC (rev 17946)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
<model id="complexified2">
<listOfCompartments>
<compartment id="comp" spatialDimensions="3" size="1" constant="true">
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <luc...@us...> - 2013-06-21 17:29:07
|
Revision: 17945
http://sourceforge.net/p/sbml/code/17945
Author: luciansmith
Date: 2013-06-21 17:29:04 +0000 (Fri, 21 Jun 2013)
Log Message:
-----------
Change to conform to the errata: the 'required' flag must now always be 'true' for comp. Change rule 20203 to be more restrictive, and make rule 20204 be not applicable (removed), and never try to set the required flag to be false. Also, return an INVALID_ATTRIBUTE_VALUE if someone uses 'setRequired' to set it 'false'. Various tests also updated.
Modified Paths:
--------------
trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompSBMLDocumentPlugin.cpp
trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompSBMLDocumentPlugin.h
trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestCheckConsistency.cpp
trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestExtensionObjects.cpp
trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestMultipleNamespaces.cpp
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/CompFlatteningConverter.cpp
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/CompTest_flat_ports.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/QuorumTrigger.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/exchangetest2_flat_ports.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_definitions.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_ports.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_portsAndDefinitions.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test_transfer_moddef.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test_transfer_moddef2mod.xml
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLError.h
trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLErrorTable.h
Added Paths:
-----------
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/1020203-fail-01-01.xml
Removed Paths:
-------------
trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/1020204-fail-01-01.xml
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompSBMLDocumentPlugin.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompSBMLDocumentPlugin.cpp 2013-06-21 10:42:55 UTC (rev 17944)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompSBMLDocumentPlugin.cpp 2013-06-21 17:29:04 UTC (rev 17945)
@@ -237,7 +237,7 @@
/** @cond doxygen-libsbml-internal */
void
CompSBMLDocumentPlugin::readAttributes (const XMLAttributes& attributes,
- const ExpectedAttributes& expectedAttributes)
+ const ExpectedAttributes& expectedAttributes)
{
// for now don't read the required flag for L2 models
if (getSBMLDocument() != NULL && getSBMLDocument()->getLevel() < 3) return;
@@ -265,6 +265,11 @@
else
{
mIsSetRequired = true;
+ if (mRequired == false)
+ {
+ getErrorLog()->logPackageError("comp", CompAttributeRequiredMustBeTrue,
+ getPackageVersion(), getLevel(), getVersion());
+ }
}
}
/** @endcond */
@@ -554,6 +559,26 @@
}
+int
+CompSBMLDocumentPlugin::setRequired(bool required)
+{
+ //
+ // required attribute is not defined for SBML Level 2 .
+ //
+ if ( getLevel() < 3) {
+ return LIBSBML_UNEXPECTED_ATTRIBUTE;
+ }
+
+ if (required==false) {
+ return LIBSBML_INVALID_ATTRIBUTE_VALUE;
+ }
+
+ mRequired = required;
+ mIsSetRequired = true;
+ return LIBSBML_OPERATION_SUCCESS;
+}
+
+
/** @cond doxygen-libsbml-internal */
void
CompSBMLDocumentPlugin::setSBMLDocument (SBMLDocument* d)
@@ -799,36 +824,12 @@
void
CompSBMLDocumentPlugin::checkRequiredFlagStatus(SBMLDocument * doc)
{
- bool reqd = getRequired();
-
- Model * m = doc->getModel();
- if (m == NULL)
+ if (getRequired() == false)
{
- return;
+ doc->getErrorLog()->logPackageError("comp",
+ CompAttributeRequiredMustBeTrue, getPackageVersion(), getLevel(),
+ getVersion());
}
-
- const CompModelPlugin *mPlugin = static_cast<CompModelPlugin*>(
- m->getPlugin("comp"));
-
- if (mPlugin->getNumSubmodels() == 0)
- {
- if (reqd == true)
- {
- std::string message = "The containing model has no submodels and "
- "thus the required attribute should be false";
- doc->getErrorLog()->logPackageError("comp",
- CompRequiredFalseIfAllElementsReplaced, getPackageVersion(), getLevel(),
- getVersion(), message);
- }
- }
- else
- {
- //TODO: need to llop thru submodels and check whether they
- // contain any Species/Parameter/Compa/React/Event that gets replaced
- // I suspect there might be code in teh flatten stuff that already
- // does this but have not had time to look yet
- }
-
}
/** @endcond */
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompSBMLDocumentPlugin.h
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompSBMLDocumentPlugin.h 2013-06-21 10:42:55 UTC (rev 17944)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompSBMLDocumentPlugin.h 2013-06-21 17:29:04 UTC (rev 17945)
@@ -439,6 +439,25 @@
/**
+ *
+ * Sets the bool value of "required" attribute of corresponding package
+ * in SBMLDocument element. The only legal value is 'true' for the
+ * Hierarchical Model Composition package.
+ *
+ * @param value the bool value of "required" attribute of corresponding
+ * package in SBMLDocument element.
+ *
+ * @return integer value indicating success/failure of the
+ * function. The possible values
+ * returned by this function are:
+ * @li @link OperationReturnValues_t#LIBSBML_OPERATION_SUCCESS LIBSBML_OPERATION_SUCCESS @endlink
+ * @li @link OperationReturnValues_t#LIBSBML_UNEXPECTED_ATTRIBUTE LIBSBML_UNEXPECTED_ATTRIBUTE @endlink
+ * @li @link OperationReturnValues_t#LIBSBML_INVALID_ATTRIBUTE_VALUE LIBSBML_INVALID_ATTRIBUTE_VALUE @endlink
+ */
+ virtual int setRequired(bool value);
+
+
+ /**
* Adds a copy of the given ExternalModelDefinition object to the list of
* ExternalModelDefinitions.
*
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestCheckConsistency.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestCheckConsistency.cpp 2013-06-21 10:42:55 UTC (rev 17944)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestCheckConsistency.cpp 2013-06-21 17:29:04 UTC (rev 17945)
@@ -60,15 +60,15 @@
END_TEST
-START_TEST (test_comp_fail_20204)
+START_TEST (test_comp_fail_20203)
{
string filename(TestDataDirectory);
- string cfile = filename + "1020204-fail-01-01.xml";
+ string cfile = filename + "1020203-fail-01-01.xml";
SBMLDocument* doc = readSBMLFromFile(cfile.c_str());
unsigned int nerrors = doc->checkConsistency();
fail_unless (nerrors == 1);
- fail_unless (doc->getError(0)->getErrorId() == 1020204);
+ fail_unless (doc->getError(0)->getErrorId() == 1020203);
delete doc;
}
@@ -81,7 +81,7 @@
Suite *suite = suite_create("SBMLCompCheckConsistency");
tcase_add_test(tcase, test_comp_pass_all);
- tcase_add_test(tcase, test_comp_fail_20204);
+ tcase_add_test(tcase, test_comp_fail_20203);
suite_add_tcase(suite, tcase);
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestExtensionObjects.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestExtensionObjects.cpp 2013-06-21 10:42:55 UTC (rev 17944)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestExtensionObjects.cpp 2013-06-21 17:29:04 UTC (rev 17945)
@@ -206,7 +206,7 @@
//fail_unless(flatmod != NULL);
//SBMLNamespaces sbmlns(3,1,"comp",1);
//SBMLDocument doc2(&sbmlns);
- //doc2.setPackageRequired("comp", false);
+ //doc2.setPackageRequired("comp", true);
//doc2.setModel(flatmod);
//string newModel = writeSBMLToString(&doc2);
//===========
@@ -257,7 +257,7 @@
//fail_unless(flatmod != NULL);
//CompPkgNamespaces csbmlns(3,1,1,"comp");
//SBMLDocument flatdoc(&csbmlns);
- //flatdoc.setPackageRequired("comp", false);
+ //flatdoc.setPackageRequired("comp", true);
//flatdoc.setModel(flatmod);
//string newModel = writeSBMLToString(&flatdoc);
@@ -310,7 +310,7 @@
//fail_unless(flatmod != NULL);
//CompPkgNamespaces csbmlns(3,1,1,"comp");
//SBMLDocument flatdoc(&csbmlns);
- //flatdoc.setPackageRequired("comp", false);
+ //flatdoc.setPackageRequired("comp", true);
//flatdoc.setModel(flatmod);
//writeSBMLToFile(&flatdoc, "CompTest_flat_ports.xml");
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestMultipleNamespaces.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestMultipleNamespaces.cpp 2013-06-21 10:42:55 UTC (rev 17944)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/test/TestMultipleNamespaces.cpp 2013-06-21 17:29:04 UTC (rev 17945)
@@ -67,6 +67,8 @@
fail_unless(csdp != NULL);
Model* model = doc->getModel();
+ fail_unless(model != NULL);
+ if (model==NULL) return;
SBasePlugin* plugin = model->getPlugin("layout");
if (plugin == NULL)
{
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/CompFlatteningConverter.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/CompFlatteningConverter.cpp 2013-06-21 10:42:55 UTC (rev 17944)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/CompFlatteningConverter.cpp 2013-06-21 17:29:04 UTC (rev 17945)
@@ -190,12 +190,12 @@
}
result = mDocument->setModel(flatmodel);
- mDocument->setPackageRequired("comp", false);
+ mDocument->setPackageRequired("comp", true);
}
else
{
result = mDocument->setModel(flatmodel);
- mDocument->setPackageRequired("comp", false);
+ mDocument->setPackageRequired("comp", true);
}
}
else
@@ -209,7 +209,7 @@
{
flatmodel->disablePackage(CompExtension::getXmlnsL3V1V1(), "comp");
result = mDocument->setModel(flatmodel);
- mDocument->setPackageRequired("comp", false);
+ mDocument->setPackageRequired("comp", true);
}
}
Copied: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/1020203-fail-01-01.xml (from rev 17939, trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/1020204-fail-01-01.xml)
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/1020203-fail-01-01.xml (rev 0)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/1020203-fail-01-01.xml 2013-06-21 17:29:04 UTC (rev 17945)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
+ <model>
+ <listOfParameters>
+ <parameter id="param1" constant="true" units="volt" value="2"/>
+ </listOfParameters>
+ </model>
+</sbml>
Deleted: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/1020204-fail-01-01.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/1020204-fail-01-01.xml 2013-06-21 10:42:55 UTC (rev 17944)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/1020204-fail-01-01.xml 2013-06-21 17:29:04 UTC (rev 17945)
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
- <model>
- <listOfParameters>
- <parameter id="param1" constant="true" units="volt" value="2"/>
- </listOfParameters>
- </model>
-</sbml>
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/CompTest_flat_ports.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/CompTest_flat_ports.xml 2013-06-21 10:42:55 UTC (rev 17944)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/CompTest_flat_ports.xml 2013-06-21 17:29:04 UTC (rev 17945)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
<model metaid="iBioSim1" id="CompTest">
<listOfFunctionDefinitions>
<functionDefinition id="neighborQuantityLeft" name="neighborQuantityLeft">
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/QuorumTrigger.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/QuorumTrigger.xml 2013-06-21 10:42:55 UTC (rev 17944)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/QuorumTrigger.xml 2013-06-21 17:29:04 UTC (rev 17945)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
<model id="QuorumTrigger">
<listOfCompartments>
<compartment id="default" spatialDimensions="3" size="1" constant="true">
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/exchangetest2_flat_ports.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/exchangetest2_flat_ports.xml 2013-06-21 10:42:55 UTC (rev 17944)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/exchangetest2_flat_ports.xml 2013-06-21 17:29:04 UTC (rev 17945)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
<model metaid="iBioSim1" id="exchangetest" name="testmod">
<listOfFunctionDefinitions>
<functionDefinition id="neighborQuantityLeft" name="neighborQuantityLeft">
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_definitions.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_definitions.xml 2013-06-21 10:42:55 UTC (rev 17944)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_definitions.xml 2013-06-21 17:29:04 UTC (rev 17945)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
<model>
<listOfCompartments>
<compartment id="C" spatialDimensions="3" size="10" constant="false"/>
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_ports.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_ports.xml 2013-06-21 10:42:55 UTC (rev 17944)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_ports.xml 2013-06-21 17:29:04 UTC (rev 17945)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
<model>
<listOfCompartments>
<compartment id="C" spatialDimensions="3" size="10" constant="false"/>
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_portsAndDefinitions.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_portsAndDefinitions.xml 2013-06-21 10:42:55 UTC (rev 17944)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test14_flat_portsAndDefinitions.xml 2013-06-21 17:29:04 UTC (rev 17945)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="false">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" level="3" version="1" comp:required="true">
<model>
<listOfCompartments>
<compartment id="C" spatialDimensions="3" size="10" constant="false"/>
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test_transfer_moddef.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test_transfer_moddef.xml 2013-06-21 10:42:55 UTC (rev 17944)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test_transfer_moddef.xml 2013-06-21 17:29:04 UTC (rev 17945)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1" level="3" version="1" comp:required="false" layout:required="false">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1" level="3" version="1" comp:required="true" layout:required="false">
<model/>
<comp:listOfModelDefinitions>
<comp:modelDefinition id="QuorumTrigger">
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test_transfer_moddef2mod.xml
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test_transfer_moddef2mod.xml 2013-06-21 10:42:55 UTC (rev 17944)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/util/test/test-data/test_transfer_moddef2mod.xml 2013-06-21 17:29:04 UTC (rev 17945)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1" level="3" version="1" comp:required="false" layout:required="false">
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:comp="http://www.sbml.org/sbml/level3/version1/comp/version1" xmlns:layout="http://www.sbml.org/sbml/level3/version1/layout/version1" level="3" version="1" comp:required="true" layout:required="false">
<model id="QuorumTrigger">
<listOfCompartments>
<compartment id="default" spatialDimensions="3" size="1" constant="true">
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLError.h
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLError.h 2013-06-21 10:42:55 UTC (rev 17944)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLError.h 2013-06-21 17:29:04 UTC (rev 17945)
@@ -77,7 +77,7 @@
, CompAttributeRequiredMissing = 1020201
, CompAttributeRequiredMustBeBoolean = 1020202
-, CompRequiredTrueIfElementsRemain = 1020203
+, CompAttributeRequiredMustBeTrue = 1020203
, CompRequiredFalseIfAllElementsReplaced= 1020204
, CompOneListOfModelDefinitions = 1020205
, CompEmptyLOModelDefs = 1020206
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLErrorTable.h
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLErrorTable.h 2013-06-21 10:42:55 UTC (rev 17944)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/validator/CompSBMLErrorTable.h 2013-06-21 17:29:04 UTC (rev 17945)
@@ -268,29 +268,23 @@
},
// 1020203
- { CompRequiredTrueIfElementsRemain,
- "The comp:required attribute must be 'true' if math changes",
+ { CompAttributeRequiredMustBeTrue,
+ "The comp:required attribute must be 'true'",
LIBSBML_CAT_GENERAL_CONSISTENCY,
LIBSBML_SEV_ERROR,
"The value of attribute 'comp:required' on the SBML object must "
- "be set to 'true' if the Model object within the SBML object "
- "contains any Submodel with Species, Parameter, Compartment, "
- "Reaction, or Event objects that have not been either directly or "
- "indirectly replaced.",
+ "be set to 'true'.",
{ "L3V1 Comp V1 Section 3.1"
}
},
- // 1020204
+ //1020204 removed, since the new interpretation of the core spec changed at HARMONY 2013.
{ CompRequiredFalseIfAllElementsReplaced,
- "The comp:required attribute must be 'false' if math does not change",
+ "Removed rule about comp:required attribute being 'false' if math does not change",
LIBSBML_CAT_GENERAL_CONSISTENCY,
- LIBSBML_SEV_ERROR,
- "The value of attribute 'comp:required' on the SBML object must be "
- "set to 'false' if the Model object within the SBML object contains "
- "no Submodel objects, or if all Submodel objects that are present "
- "contain no Species, Parameter, Compartment, Reaction, or Event "
- "objects that have not been either directly or indirectly replaced.",
+ LIBSBML_SEV_NOT_APPLICABLE,
+ "(Rule removed because of a change in the interpretation of the required attribute "
+ "by the SBML Editors.)",
{ "L3V1 Comp V1 Section 3.1"
}
},
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sar...@us...> - 2013-06-21 10:42:57
|
Revision: 17944
http://sourceforge.net/p/sbml/code/17944
Author: sarahkeating
Date: 2013-06-21 10:42:55 +0000 (Fri, 21 Jun 2013)
Log Message:
-----------
update copyright
Modified Paths:
--------------
branches/libsbml-packages/qual/src/common/QualExtensionTypes.h
branches/libsbml-packages/qual/src/common/qualfwd.h
Modified: branches/libsbml-packages/qual/src/common/QualExtensionTypes.h
===================================================================
--- branches/libsbml-packages/qual/src/common/QualExtensionTypes.h 2013-06-20 08:57:45 UTC (rev 17943)
+++ branches/libsbml-packages/qual/src/common/QualExtensionTypes.h 2013-06-21 10:42:55 UTC (rev 17944)
@@ -10,24 +10,24 @@
* This file is part of libSBML. Please visit http://sbml.org for more
* information about SBML, and the latest version of libSBML.
*
- * Copyright (C) 2009-2011 jointly by the following organizations:
+ * Copyright (C) 2009-2013 jointly by the following organizations:
* 1. California Institute of Technology, Pasadena, CA, USA
* 2. EMBL European Bioinformatics Institute (EBML-EBI), Hinxton, UK
- *
+ *
* Copyright (C) 2006-2008 by the California Institute of Technology,
* Pasadena, CA, USA
- *
- * Copyright (C) 2002-2005 jointly by the following organizations:
+ *
+ * Copyright (C) 2002-2005 jointly by the following organizations:
* 1. California Institute of Technology, Pasadena, CA, USA
* 2. Japan Science and Technology Agency, Japan
- *
+ *
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation. A copy of the license agreement is provided
* in the file named "LICENSE.txt" included with this software distribution
* and also available online as http://sbml.org/software/libsbml/license.html
- * ---------------------------------------------------------------------- -->*/
-
+ * ------------------------------------------------------------------------ -->
+ */
#ifndef QualExtensionTypes_h
#define QualExtensionTypes_h
Modified: branches/libsbml-packages/qual/src/common/qualfwd.h
===================================================================
--- branches/libsbml-packages/qual/src/common/qualfwd.h 2013-06-20 08:57:45 UTC (rev 17943)
+++ branches/libsbml-packages/qual/src/common/qualfwd.h 2013-06-21 10:42:55 UTC (rev 17944)
@@ -10,17 +10,17 @@
* This file is part of libSBML. Please visit http://sbml.org for more
* information about SBML, and the latest version of libSBML.
*
- * Copyright (C) 2009-2011 jointly by the following organizations:
+ * Copyright (C) 2009-2013 jointly by the following organizations:
* 1. California Institute of Technology, Pasadena, CA, USA
* 2. EMBL European Bioinformatics Institute (EBML-EBI), Hinxton, UK
- *
+ *
* Copyright (C) 2006-2008 by the California Institute of Technology,
* Pasadena, CA, USA
- *
- * Copyright (C) 2002-2005 jointly by the following organizations:
+ *
+ * Copyright (C) 2002-2005 jointly by the following organizations:
* 1. California Institute of Technology, Pasadena, CA, USA
* 2. Japan Science and Technology Agency, Japan
- *
+ *
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation. A copy of the license agreement is provided
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fbe...@us...> - 2013-06-20 08:57:47
|
Revision: 17943
http://sourceforge.net/p/sbml/code/17943
Author: fbergmann
Date: 2013-06-20 08:57:45 +0000 (Thu, 20 Jun 2013)
Log Message:
-----------
- explicitly add a warning if an older version of swig is used
Modified Paths:
--------------
trunk/libsbml/CMakeLists.txt
Modified: trunk/libsbml/CMakeLists.txt
===================================================================
--- trunk/libsbml/CMakeLists.txt 2013-06-20 08:40:42 UTC (rev 17942)
+++ trunk/libsbml/CMakeLists.txt 2013-06-20 08:57:45 UTC (rev 17943)
@@ -252,6 +252,10 @@
/usr/bin
DOC "The file name of the swig executable."
)
+ find_package(SWIG)
+ if (SWIG_FOUND AND SWIG_VERSION VERSION_LESS "2.0.4")
+ message(WARNING "You are using swig version ${SWIG_VERSION} while we recommend at least version 2.0.4.")
+ endif()
set(SWIG_EXTRA_ARGS)
endif(WITH_SWIG)
@@ -825,6 +829,11 @@
if(WITH_SWIG)
message(STATUS " Using SWIG = ${SWIG_EXECUTABLE}")
+
+ if (SWIG_FOUND AND SWIG_VERSION VERSION_LESS "2.0.4")
+ message(WARNING " You are using swig version ${SWIG_VERSION} while we recommend at least version 2.0.4.")
+ endif()
+
endif()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fbe...@us...> - 2013-06-20 08:40:45
|
Revision: 17942
http://sourceforge.net/p/sbml/code/17942
Author: fbergmann
Date: 2013-06-20 08:40:42 +0000 (Thu, 20 Jun 2013)
Log Message:
-----------
- ought to have a C++ example as well
Modified Paths:
--------------
trunk/libsbml/Makefile.in
trunk/libsbml/examples/c++/CMakeLists.txt
trunk/libsbml/examples/csharp/GetAllElementsWithNotes.cs
Added Paths:
-----------
trunk/libsbml/examples/c++/getAllElementsWithNotes.cpp
Modified: trunk/libsbml/Makefile.in
===================================================================
--- trunk/libsbml/Makefile.in 2013-06-20 08:18:48 UTC (rev 17941)
+++ trunk/libsbml/Makefile.in 2013-06-20 08:40:42 UTC (rev 17942)
@@ -97,6 +97,7 @@
examples/c++/convertSBML.cpp \
examples/c++/createExampleSBML.cpp \
examples/c++/echoSBML.cpp \
+ examples/c++/getAllElementsWithNotes.cpp \
examples/c++/inlineFunctionDefintions.cpp \
examples/c++/printAnnotation.cpp \
examples/c++/printMath.cpp \
Modified: trunk/libsbml/examples/c++/CMakeLists.txt
===================================================================
--- trunk/libsbml/examples/c++/CMakeLists.txt 2013-06-20 08:18:48 UTC (rev 17941)
+++ trunk/libsbml/examples/c++/CMakeLists.txt 2013-06-20 08:40:42 UTC (rev 17942)
@@ -26,6 +26,7 @@
createExampleSBML
echoSBML
inlineFunctionDefintions
+ getAllElementsWithNotes
printAnnotation
printMath
printNotes
Added: trunk/libsbml/examples/c++/getAllElementsWithNotes.cpp
===================================================================
--- trunk/libsbml/examples/c++/getAllElementsWithNotes.cpp (rev 0)
+++ trunk/libsbml/examples/c++/getAllElementsWithNotes.cpp 2013-06-20 08:40:42 UTC (rev 17942)
@@ -0,0 +1,114 @@
+/**
+ * @file getAllElementsWithNotes.cpp
+ * @brief Utility program, demontrating how to use the element filter
+ * class to search the model for elements with specific attributes
+ * @author Frank T. Bergmann
+ *
+ *
+ * This file is part of libSBML. Please visit http://sbml.org for more
+ * information about SBML, and the latest version of libSBML.
+ */
+
+
+#include <iostream>
+#include <sstream>
+#include <vector>
+#include <string>
+
+#include <sbml/SBMLTypes.h>
+#include <sbml/common/extern.h>
+#include <sbml/common/operationReturnValues.h>
+#include "util.h"
+
+
+using namespace std;
+LIBSBML_CPP_NAMESPACE_USE
+
+
+/**
+ * This class implements an element filter, that can be used to find elements
+ * with notes
+ */
+class NotesFilter : public ElementFilter
+{
+public:
+ NotesFilter() : ElementFilter()
+ {
+ }
+
+ /**
+ * The function performing the filtering, here we just check
+ * that we have a valid element, and that it has notes.
+ */
+ virtual bool filter(const SBase* element)
+ {
+ // return in case we don't have a valid element
+ if (element == NULL || !element->isSetNotes())
+ return false;
+
+ // otherwise we have notes set and want to keep the element
+ if (element->isSetId())
+ cout << " found : "
+ << element->getId() << endl;
+ else
+ cout << " found : "
+ << "element without id" << endl;
+
+ return true;
+ }
+
+};
+
+
+BEGIN_C_DECLS
+
+int
+main (int argc, char* argv[])
+{
+ if (argc != 2)
+ {
+ cout << endl << "Usage: getAllElementsWithNotes filename" << endl << endl;
+ return 1;
+ }
+
+ const char* filename = argv[1];
+
+
+ SBMLDocument* document;
+ SBMLReader reader;
+ unsigned long long start, stop;
+
+ start = getCurrentMillis();
+ document = reader.readSBML(filename);
+ stop = getCurrentMillis();
+
+ unsigned int errors = document->getNumErrors(LIBSBML_SEV_ERROR);
+
+ cout << endl;
+ cout << " filename: " << filename << endl;
+ cout << " read time (ms): " << stop - start << endl;
+
+ if (errors > 0)
+ {
+ cout << " error(s): " << errors << endl;
+ document->printErrors(cerr);
+ delete document;
+ return errors;
+ }
+
+ start = stop;
+
+ // create the filter we want to use
+ NotesFilter filter;
+ // get a list of all elements with notes
+ cout << " searching ......:" << endl;
+ List* allElements = document->getAllElements(&filter);
+ stop = getCurrentMillis();
+ cout << " search time (ms): " << stop - start << endl;
+ cout << " elements with notes: " << allElements->getSize() << endl;
+
+ delete document;
+ return errors;
+}
+
+END_C_DECLS
Modified: trunk/libsbml/examples/csharp/GetAllElementsWithNotes.cs
===================================================================
--- trunk/libsbml/examples/csharp/GetAllElementsWithNotes.cs 2013-06-20 08:18:48 UTC (rev 17941)
+++ trunk/libsbml/examples/csharp/GetAllElementsWithNotes.cs 2013-06-20 08:40:42 UTC (rev 17942)
@@ -58,8 +58,7 @@
// create the filter we want to use
var filter = new NotesFilter();
- // get a list of all elements, as we will need to know all identifiers
- // so that we don't create duplicates.
+ // get a list of all elements with notes
start = DateTime.Now.Ticks;
Console.WriteLine(" searching ......:");
SBaseList allElements = document.getListOfAllElements(filter);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fbe...@us...> - 2013-06-20 08:18:53
|
Revision: 17941
http://sourceforge.net/p/sbml/code/17941
Author: fbergmann
Date: 2013-06-20 08:18:48 +0000 (Thu, 20 Jun 2013)
Log Message:
-----------
- add examples that show how to use the element filters
Modified Paths:
--------------
trunk/libsbml/Makefile.in
trunk/libsbml/examples/csharp/CMakeLists.txt
trunk/libsbml/examples/csharp/SetIdFromNames.cs
trunk/libsbml/examples/java/CMakeLists.txt
trunk/libsbml/examples/java/setIdFromNames.java
trunk/libsbml/examples/python/setIdFromNames.py
Added Paths:
-----------
trunk/libsbml/examples/csharp/GetAllElementsWithNotes.cs
trunk/libsbml/examples/java/getAllElementsWithNotes.java
trunk/libsbml/examples/python/getAllElementsWithNotes.py
Modified: trunk/libsbml/Makefile.in
===================================================================
--- trunk/libsbml/Makefile.in 2013-06-19 17:42:42 UTC (rev 17940)
+++ trunk/libsbml/Makefile.in 2013-06-20 08:18:48 UTC (rev 17941)
@@ -140,6 +140,7 @@
examples/csharp/unsetNotes.cs \
examples/csharp/validateSBML.cs \
examples/csharp/SetIdFromNames.cs \
+ examples/csharp/GetAllElementsWithNotes.cs \
examples/java/Makefile.in \
examples/java/README.txt \
examples/java/addCustomValidator.java \
@@ -153,6 +154,7 @@
examples/java/createExampleSBML.java \
examples/java/echoSBML.java \
examples/java/evaluateMath.java \
+ examples/java/getAllElementsWithNotes.java \
examples/java/printAnnotation.java \
examples/java/printMath.java \
examples/java/printNotes.java \
@@ -219,8 +221,9 @@
examples/python/callExternalValidator.py \
examples/python/convertSBML.py \
examples/python/createExampleSBML.py \
+ examples/python/getAllElementsWithNotes.py \
examples/python/echoSBML.py \
- examples/python/stripPackage.py \
+ examples/python/stripPackage.py \
examples/python/printAnnotation.py \
examples/python/printMath.py \
examples/python/printNotes.py \
Modified: trunk/libsbml/examples/csharp/CMakeLists.txt
===================================================================
--- trunk/libsbml/examples/csharp/CMakeLists.txt 2013-06-19 17:42:42 UTC (rev 17940)
+++ trunk/libsbml/examples/csharp/CMakeLists.txt 2013-06-20 08:18:48 UTC (rev 17941)
@@ -18,6 +18,7 @@
convertSBML
createExampleSBML
echoSBML
+ GetAllElementsWithNotes
printAnnotation
printMath
printNotes
@@ -27,6 +28,7 @@
printUnits
readSBML
stripPackage
+ SetIdFromNames
translateMath
unsetAnnotation
unsetNotes
Added: trunk/libsbml/examples/csharp/GetAllElementsWithNotes.cs
===================================================================
--- trunk/libsbml/examples/csharp/GetAllElementsWithNotes.cs (rev 0)
+++ trunk/libsbml/examples/csharp/GetAllElementsWithNotes.cs 2013-06-20 08:18:48 UTC (rev 17941)
@@ -0,0 +1,105 @@
+/**
+ * @file GetAllElementsWithNotes.cs
+ * @brief Utility program, demontrating how to use the element filter
+ * class to search the model for elements with specific attributes
+ * in this example, we look for elements with notes
+ *
+ * @author Frank T. Bergmann
+ *
+ *
+ * This file is part of libSBML. Please visit http://sbml.org for more
+ * information about SBML, and the latest version of libSBML.
+ */
+using System;
+using System.Collections.Generic;
+using System.Text;
+using libsbmlcs;
+
+/// <summary>
+/// This class implements an element filter, that can be used to find elements
+/// with notes
+/// </summary>
+public class NotesFilter : ElementFilter
+{
+ /// <summary>
+ /// The program is to be invoked with one argument, the input file.
+ /// </summary>
+ /// <param name="args">command line arguments</param>
+ /// <returns>0 in case of no errors</returns>
+ public static int Main(string[] args)
+ {
+ if (args.Length != 1)
+ {
+ Console.WriteLine("{0}Usage: getAllElementsWithNotes filename{0}{0}", Environment.NewLine);
+ return 1;
+ }
+
+ string filename = args[0];
+
+ // read the document
+ long start = DateTime.Now.Ticks;
+ SBMLDocument document = libsbml.readSBMLFromFile(filename);
+ long stop = DateTime.Now.Ticks;
+
+
+ Console.WriteLine();
+ Console.WriteLine(" filename: {0}", filename);
+ Console.WriteLine(" read time (ms): {0}", TimeSpan.FromTicks(stop - start).TotalMilliseconds);
+
+ // stop in case of serious errors
+ long errors = document.getNumErrors(libsbml.LIBSBML_SEV_ERROR);
+ if (errors > 0)
+ {
+ Console.WriteLine(" error(s): {0}", errors);
+ document.printErrors();
+ return (int)errors;
+ }
+
+
+ // create the filter we want to use
+ var filter = new NotesFilter();
+ // get a list of all elements, as we will need to know all identifiers
+ // so that we don't create duplicates.
+ start = DateTime.Now.Ticks;
+ Console.WriteLine(" searching ......:");
+ SBaseList allElements = document.getListOfAllElements(filter);
+ stop = DateTime.Now.Ticks;
+ Console.WriteLine(" search time (ms): {0}", TimeSpan.FromTicks(stop - start).TotalMilliseconds);
+ Console.WriteLine();
+ Console.WriteLine(" elements with notes: {0}", allElements.getSize());
+ Console.WriteLine();
+
+ // if we got here all went well ...
+ return 0;
+ }
+
+ /// <summary>
+ /// Constructor initializing this element filter
+ /// </summary>
+ public NotesFilter()
+ {
+ }
+
+ /// <summary>
+ /// The function performing the filtering, here we just check
+ /// that we have a valid element, and that it has notes.
+ /// </summary>
+ /// <param name="element">the current element</param>
+ /// <returns><b>true</b> if element is to be included, <b>false</b> otherwise</returns>
+ public override bool filter(SBase element)
+ {
+ // return in case we don't have a valid element
+ if (element == null || !element.isSetNotes())
+ return false;
+
+ // otherwise we have notes set and want to keep the element
+ if (!element.isSetId())
+ Console.WriteLine(" found : {0}", element.getId());
+ else
+ Console.WriteLine(" found element without id");
+
+ return true;
+ }
+
+
+}
Modified: trunk/libsbml/examples/csharp/SetIdFromNames.cs
===================================================================
--- trunk/libsbml/examples/csharp/SetIdFromNames.cs 2013-06-19 17:42:42 UTC (rev 17940)
+++ trunk/libsbml/examples/csharp/SetIdFromNames.cs 2013-06-20 08:18:48 UTC (rev 17941)
@@ -44,7 +44,7 @@
Console.WriteLine();
Console.WriteLine(" filename: {0}", filename);
- Console.WriteLine(" read time (ms): {0}", stop - start);
+ Console.WriteLine(" read time (ms): {0}", TimeSpan.FromTicks(stop - start).TotalMilliseconds);
// stop in case of serious errors
long errors = document.getNumErrors(libsbml.LIBSBML_SEV_ERROR);
@@ -70,13 +70,13 @@
start = DateTime.Now.Ticks;
document.getModel().renameIDs(allElements, trans);
stop = DateTime.Now.Ticks;
- Console.WriteLine(" rename time (ms): {0}", stop - start);
+ Console.WriteLine(" rename time (ms): {0}", TimeSpan.FromTicks(stop - start).TotalMilliseconds);
// write to file
start = DateTime.Now.Ticks;
libsbml.writeSBMLToFile(document, output);
stop = DateTime.Now.Ticks;
- Console.WriteLine(" write time (ms): {0}", stop - start);
+ Console.WriteLine(" write time (ms): {0}", TimeSpan.FromTicks(stop - start).TotalMilliseconds);
Console.WriteLine();
// if we got here all went well ...
Modified: trunk/libsbml/examples/java/CMakeLists.txt
===================================================================
--- trunk/libsbml/examples/java/CMakeLists.txt 2013-06-19 17:42:42 UTC (rev 17940)
+++ trunk/libsbml/examples/java/CMakeLists.txt 2013-06-20 08:18:48 UTC (rev 17941)
@@ -18,6 +18,7 @@
createExampleSBML
echoSBML
evaluateMath
+ getAllElementsWithNotes
printAnnotation
printMath
printNotes
Added: trunk/libsbml/examples/java/getAllElementsWithNotes.java
===================================================================
--- trunk/libsbml/examples/java/getAllElementsWithNotes.java (rev 0)
+++ trunk/libsbml/examples/java/getAllElementsWithNotes.java 2013-06-20 08:18:48 UTC (rev 17941)
@@ -0,0 +1,101 @@
+/**
+ * @file getAllElementsWithNotes.java
+ * @brief Utility program, demontrating how to use the element filter
+ * class to search the model for elements with specific attributes
+ * in this example, we look for elements with notes
+ *
+ * @author Frank T. Bergmann
+ *
+ *
+ * This file is part of libSBML. Please visit http:#sbml.org for more
+ * information about SBML, and the latest version of libSBML.
+ *
+ */
+import java.util.Vector;
+import org.sbml.libsbml.ElementFilter;
+import org.sbml.libsbml.SBMLDocument;
+import org.sbml.libsbml.SBase;
+import org.sbml.libsbml.SBaseList;
+import org.sbml.libsbml.libsbml;
+
+public class getAllElementsWithNotes
+ extends ElementFilter
+{
+
+ /**
+ * @param args
+ */
+ public static void main(String[] args)
+ {
+ System.loadLibrary("sbmlj");
+ System.out.println("Using libSBML : "
+ + libsbml.getLibSBMLDottedVersion());
+ if (args.length != 1)
+ {
+ System.out.format("\nUsage: getAllElementsWithNotes filename\n\n");
+ System.exit(1);
+ }
+
+ String filename = args[0];
+
+ // read the document
+ long start = System.currentTimeMillis();
+ SBMLDocument document = libsbml.readSBMLFromFile(filename);
+ long stop = System.currentTimeMillis();
+
+ System.out.println();
+ System.out.format(" filename: %s\n", filename);
+ System.out.format(" read time (ms): %d\n", (stop - start));
+
+ // stop in case of serious errors
+ long errors = document.getNumErrors(libsbml.LIBSBML_SEV_ERROR);
+ if (errors > 0)
+ {
+ System.out.format(" error(s): %d\n", errors);
+ document.printErrors();
+ System.exit((int) errors);
+ }
+
+ // create the filter to use
+ getAllElementsWithNotes filter = new getAllElementsWithNotes();
+ // get a list of all elements, as we will need to know all identifiers
+ // so that we don't create duplicates.
+ start = System.currentTimeMillis();
+ System.out.println(" searching ......:");
+ SBaseList allElements = document.getListOfAllElements(filter);
+ stop = System.currentTimeMillis();
+ System.out.format(" seaching took (ms): %d\n", (stop - start));
+ System.out.format(" elements with notes: %d\n", (allElements.getSize()));
+
+ // if we got here all went well ...
+
+ }
+
+
+ // <summary>
+ // Constructor initializing this element filter
+ // </summary>
+ public getAllElementsWithNotes()
+ {
+ }
+
+
+ @Override
+ public boolean filter(SBase element)
+ {
+ // return in case we don't have a valid element
+ if (element == null
+ || !element.isSetNotes())
+ return false;
+
+ // otherwise we have notes set and want to keep the element
+ if (element.isSetId())
+ System.out.println(" found : " + element.getId() );
+ else
+ System.out.println(" found element without id");
+
+ return true;
+ }
+
+
+}
Modified: trunk/libsbml/examples/java/setIdFromNames.java
===================================================================
--- trunk/libsbml/examples/java/setIdFromNames.java 2013-06-19 17:42:42 UTC (rev 17940)
+++ trunk/libsbml/examples/java/setIdFromNames.java 2013-06-20 08:18:48 UTC (rev 17941)
@@ -1,3 +1,17 @@
+/**
+ * @file setIdFromNames.java
+ * @brief Utility program, renaming all SIds that also has
+ * names specified. The new id will be derived from
+ * the name, with all invalid characters removed.
+ *
+ * @author Frank T. Bergmann
+ *
+ *
+ * This file is part of libSBML. Please visit http:#sbml.org for more
+ * information about SBML, and the latest version of libSBML.
+ *
+ */
+
import java.util.Vector;
import org.sbml.libsbml.IdentifierTransformer;
import org.sbml.libsbml.SBMLDocument;
Added: trunk/libsbml/examples/python/getAllElementsWithNotes.py
===================================================================
--- trunk/libsbml/examples/python/getAllElementsWithNotes.py (rev 0)
+++ trunk/libsbml/examples/python/getAllElementsWithNotes.py 2013-06-20 08:18:48 UTC (rev 17941)
@@ -0,0 +1,83 @@
+#!/usr/bin/env python
+##
+## @file getAllElementsWithNotes.py
+## @brief Utility program, demontrating how to use the element filter
+## class to search the model for elements with specific attributes
+## in this example, we look for elements with notes
+##
+## @author Frank T. Bergmann
+##
+##
+## This file is part of libSBML. Please visit http:#sbml.org for more
+## information about SBML, and the latest version of libSBML.
+##
+##
+
+import sys
+import os.path
+import time
+import libsbml
+
+# This class implements an element filter, that can be used to find elements
+# with notes
+class NotesFilter(libsbml.ElementFilter):
+ def __init__(self):
+ # call the constructor of the base class
+ libsbml.ElementFilter.__init__(self)
+
+ # The function performing the filtering, here we just check
+ # that we have a valid element, and that it has notes.
+ def filter(self, element):
+ # return in case we don't have a valid element
+ if (element == None or element.isSetNotes() == False):
+ return False;
+ # otherwise we have notes set and want to keep the element
+ if (element.isSetId()):
+ print " found : {0}".format(element.getId())
+ else:
+ print " found element without id"
+ return True
+
+def main (args):
+ """Usage: getAllElementsWithNotes filename
+ """
+ if len(args) != 2:
+ print(main.__doc__)
+ sys.exit(1)
+
+ filename = args[1];
+
+ # read the document
+ start = time.time() * 1000;
+ document = libsbml.readSBMLFromFile(filename);
+ stop = time.time() * 1000;
+
+
+ print ""
+ print " filename: {0}".format( filename);
+ print " read time (ms): {0}".format( stop - start);
+
+ # stop in case of serious errors
+ errors = document.getNumErrors(libsbml.LIBSBML_SEV_ERROR);
+ if (errors > 0):
+ print " error(s): {0}".format(errors);
+ document.printErrors();
+ sys.exit (errors);
+
+
+ # create the filter we want to use
+ filter = NotesFilter()
+
+ # get a list of all elements with notes
+ start = time.time() * 1000;
+ print " searching ......:"
+ allElements = document.getListOfAllElements(filter);
+ stop = time.time() * 1000;
+ print " search time (ms): {0}".format(stop - start);
+
+ print " elements with notes: {0}".format(allElements.getSize())
+
+ # if we got here all went well ...
+
+if __name__ == '__main__':
+ main(sys.argv)
Modified: trunk/libsbml/examples/python/setIdFromNames.py
===================================================================
--- trunk/libsbml/examples/python/setIdFromNames.py 2013-06-19 17:42:42 UTC (rev 17940)
+++ trunk/libsbml/examples/python/setIdFromNames.py 2013-06-20 08:18:48 UTC (rev 17941)
@@ -1,8 +1,8 @@
#!/usr/bin/env python
##
## @file setIdFromNames.py
-## @brief Utility program, renaming all SIds that also ha
-## names specified. The new id will be derived fro
+## @brief Utility program, renaming all SIds that also has
+## names specified. The new id will be derived from
## the name, with all invalid characters removed.
##
## @author Frank T. Bergmann
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <luc...@us...> - 2013-06-19 17:42:45
|
Revision: 17940
http://sourceforge.net/p/sbml/code/17940
Author: luciansmith
Date: 2013-06-19 17:42:42 +0000 (Wed, 19 Jun 2013)
Log Message:
-----------
Fixed a crash in test_sbml_package_layout (TestGraphicalObject, line 362), when libsbml was compiled with render, but when there was no actual render plugin object.
Modified Paths:
--------------
trunk/libsbml/src/sbml/packages/layout/sbml/GraphicalObject.cpp
Modified: trunk/libsbml/src/sbml/packages/layout/sbml/GraphicalObject.cpp
===================================================================
--- trunk/libsbml/src/sbml/packages/layout/sbml/GraphicalObject.cpp 2013-06-19 12:47:23 UTC (rev 17939)
+++ trunk/libsbml/src/sbml/packages/layout/sbml/GraphicalObject.cpp 2013-06-19 17:42:42 UTC (rev 17940)
@@ -283,12 +283,13 @@
#if LIBSBML_HAS_PACKAGE_RENDER
// explicitly read render plugin for now until we sorted this whole reading from
- // XMLNode business
+ // XMLNode business
RenderGraphicalObjectPlugin *rplugin = static_cast<RenderGraphicalObjectPlugin *>(getPlugin("render"));
- ExpectedAttributes expected;
- expected.add("objectRole");
- rplugin->readAttributes(node.getAttributes(), expected);
-
+ if (rplugin != NULL) {
+ ExpectedAttributes expected;
+ expected.add("objectRole");
+ rplugin->readAttributes(node.getAttributes(), expected);
+ }
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fbe...@us...> - 2013-06-19 12:47:27
|
Revision: 17939
http://sourceforge.net/p/sbml/code/17939
Author: fbergmann
Date: 2013-06-19 12:47:23 +0000 (Wed, 19 Jun 2013)
Log Message:
-----------
- enable the identifier transformer that prefixes all elements
Modified Paths:
--------------
trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompModelPlugin.cpp
Modified: trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompModelPlugin.cpp
===================================================================
--- trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompModelPlugin.cpp 2013-06-18 17:48:07 UTC (rev 17938)
+++ trunk/libsbml-packages/comp/src/sbml/packages/comp/extension/CompModelPlugin.cpp 2013-06-19 12:47:23 UTC (rev 17939)
@@ -824,22 +824,37 @@
}
/** @endcond */
+/**
+ * Simple IdentifierTransformer, that prefixes all given
+ * elements with the prefix given to the constructor.
+ *
+ * this will prefix metaids, unitsids and sids.
+ */
class PrefixTransformer : public IdentifierTransformer
{
string mPrefix;
public:
- PrefixTransformer (const string& prefix) : mPrefix(prefix) {}
- virtual int transform(const SBase* element)
+ PrefixTransformer (const string& prefix)
+ : mPrefix(prefix) {}
+
+ virtual int transform(SBase* element)
{
- if (element != NULL && element->isSetMetaId())
+ // if there is nothing to do return ...
+ if (element == NULL)
+ return LIBSBML_OPERATION_SUCCESS;
+
+ // prefix meta id if we have one ...
+ if (element->isSetMetaId())
{
- if (const_cast<SBase*>(element)->setMetaId(mPrefix + element->getMetaId()) != LIBSBML_OPERATION_SUCCESS)
+ if (element->setMetaId(mPrefix + element->getMetaId()) != LIBSBML_OPERATION_SUCCESS)
return LIBSBML_OPERATION_FAILED;
}
- if (element != NULL && element->isSetId() &&
- element->getTypeCode() != SBML_LOCAL_PARAMETER)
+
+ // prefix other ids (unitsid, or sid) ...
+ // skip local parameters
+ if (element->isSetId() && element->getTypeCode() != SBML_LOCAL_PARAMETER)
{
- if (const_cast<SBase*>(element)->setId(mPrefix + element->getId())!= LIBSBML_OPERATION_SUCCESS)
+ if (element->setId(mPrefix + element->getId()) != LIBSBML_OPERATION_SUCCESS)
return LIBSBML_OPERATION_FAILED;
}
return LIBSBML_OPERATION_SUCCESS;
@@ -853,14 +868,14 @@
vector<pair<string, string> > renamedSIds;
vector<pair<string, string> > renamedUnitSIds;
vector<pair<string, string> > renamedMetaIds;
- //PrefixTransformer trans(prefix);
+ PrefixTransformer trans(prefix);
for (unsigned long el=0; el < allElements->getSize(); ++el)
{
SBase* element = static_cast<SBase*>(allElements->get(el));
string id = element->getId();
string metaid = element->getMetaId();
- //element->transformIdentifiers(&trans);
- element->prependStringToAllIdentifiers(prefix);
+ element->transformIdentifiers(&trans);
+ //element->prependStringToAllIdentifiers(prefix);
if (element->getTypeCode() == SBML_LOCAL_PARAMETER) {
element->setId(id); //Change it back. This would perhaps be better served by overriding 'prependStringToAllIdentifiers' but hey.
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <luc...@us...> - 2013-06-18 17:48:11
|
Revision: 17938
http://sourceforge.net/p/sbml/code/17938
Author: luciansmith
Date: 2013-06-18 17:48:07 +0000 (Tue, 18 Jun 2013)
Log Message:
-----------
Sent this out already, but hadn't checked it in: MemberConstraints is now ListOfMemberConstraints, and AttributeConstraint is now MemberConstraint. Slight updates to the rest of the text, including some examples.
Modified Paths:
--------------
trunk/specifications/sbml-level-3/version-1/groups/specification/apdx-validation.tex
trunk/specifications/sbml-level-3/version-1/groups/specification/examples.tex
trunk/specifications/sbml-level-3/version-1/groups/specification/figs/group-uml.pdf
trunk/specifications/sbml-level-3/version-1/groups/specification/figs/speciestype-example.xml
trunk/specifications/sbml-level-3/version-1/groups/specification/macros.tex
trunk/specifications/sbml-level-3/version-1/groups/specification/main.tex
trunk/specifications/sbml-level-3/version-1/groups/specification/syntax.tex
Added Paths:
-----------
trunk/specifications/sbml-level-3/version-1/groups/specification/groups-2013-05-31.pdf
Removed Paths:
-------------
trunk/specifications/sbml-level-3/version-1/groups/specification/groups-2013-04-15.pdf
Modified: trunk/specifications/sbml-level-3/version-1/groups/specification/apdx-validation.tex
===================================================================
--- trunk/specifications/sbml-level-3/version-1/groups/specification/apdx-validation.tex 2013-06-18 14:01:47 UTC (rev 17937)
+++ trunk/specifications/sbml-level-3/version-1/groups/specification/apdx-validation.tex 2013-06-18 17:48:07 UTC (rev 17938)
@@ -44,7 +44,7 @@
\subsection*{General rules about attributes}
-\validRule{groups-10301}{(Extends validation rule \#10301 in the SBML Level~3 Version~1 Core specification.) Within a \Model object, the values of the attributes \token{id} and \token{groups:id} on every instance of the following classes of objects must be unique across the set of all \token{id} and \token{groups:id} attribute values of all such objects in a model: the \Model itself, plus all contained \FunctionDefinition, \Compartment, \Species, \Reaction, \SpeciesReference, \ModifierSpeciesReference, \Event, and \Parameter objects, plus the \Group, \Member, \MemberConstraints, and \AttributeConstraint objects defined by the Groups package, plus any objects defined by any other package with \token{package:id} attributes defined as falling in the 'SId' namespace. (References: \sbmlthreegroups, \sec{group-class}.) }
+\validRule{groups-10301}{(Extends validation rule \#10301 in the SBML Level~3 Version~1 Core specification.) Within a \Model object, the values of the attributes \token{id} and \token{groups:id} on every instance of the following classes of objects must be unique across the set of all \token{id} and \token{groups:id} attribute values of all such objects in a model: the \Model itself, plus all contained \FunctionDefinition, \Compartment, \Species, \Reaction, \SpeciesReference, \ModifierSpeciesReference, \Event, and \Parameter objects, plus the \Group, \Member, \ListOfMemberConstraints, and \MemberConstraint objects defined by the Groups package, plus any objects defined by any other package with \token{package:id} attributes defined as falling in the 'SId' namespace. (References: \sbmlthreegroups, \sec{group-class}.) }
\validRule{groups-10302}{The value of a \token{groups:id} attribute must
always conform to the syntax of the SBML data type \primtype{SId}.
@@ -60,11 +60,11 @@
\validRule{groups-10305}{The value of a \token{groups:metaIdRef} attribute on \Member objects must conform to the syntax of the SBML data type \primtype{IDREF}. (References:\sbmlthreegroups, \sec{member-class}.) }
-\validRule{groups-10306}{The value of a \token{groups:membersShareType} attribute on \MemberConstraints objects must be of the data type \token{boolean}. (References:\sbmlthreegroups, \sec{memberconstraints-class}.) }
+\validRule{groups-10306}{The value of a \token{groups:membersShareType} attribute on \ListOfMemberConstraints objects must be of the data type \token{boolean}. (References:\sbmlthreegroups, \sec{listOfMemberConstraints-class}.) }
-\validRule{groups-10307}{The value of a \token{groups:identicalAttribute} attribute on \AttributeConstraint objects must be of the data type \token{string}. (References:\sbmlthreegroups, \sec{memberconstraints-class}.) }
+\validRule{groups-10307}{The value of a \token{groups:identicalAttribute} attribute on \MemberConstraint objects must be of the data type \token{string}. (References:\sbmlthreegroups, \sec{listOfMemberConstraints-class}.) }
-\validRule{groups-10308}{The value of a \token{groups:distinctAttribute} attribute on \AttributeConstraint objects must be of the data type \token{string}. (References:\sbmlthreegroups, \sec{memberconstraints-class}.) }
+\validRule{groups-10308}{The value of a \token{groups:distinctAttribute} attribute on \MemberConstraint objects must be of the data type \token{string}. (References:\sbmlthreegroups, \sec{listOfMemberConstraints-class}.) }
\subsection*{Rules for extended \class{Model} objects}
@@ -94,7 +94,7 @@
\validRule{groups-20207}{A \ListOfMembers object may have the optional SBML core attributes \token{metaid} and \token{sboTerm}. No other attributes from the SBML Level~3 Core namespace or the Groups namespace are permitted on a \ListOfMembers object. (References: \sbmlthreegroups, \sec{group-class}.) }
-\validRule{groups-20208}{There may be at most one \MemberConstraints object within a \Group object, with the name \val{memberConstraints}. (References: \sbmlthreegroups, \sec{group-class}.) }
+\validRule{groups-20208}{There may be at most one \ListOfMemberConstraints object within a \Group object, with the name \val{listOfMemberConstraints}. (References: \sbmlthreegroups, \sec{group-class}.) }
\consistencyRule{groups-20209}{If multiple \ListOfMembers objects contain \Member elements that reference the same SBML object, the \token{sboterm} and any child \Notes or \Annotation elements set for those \ListOfMembers should be consistent, as they all should apply to the same referenced object. (References: \sbmlthreegroups, \sec{listofmembers-class}.) }
@@ -111,30 +111,26 @@
\validRule{groups-20304}{The value of the \token{groups:metaIdRef} attribute, if set on a given \Member object, must be the value of a meta identifier on an existing object in the parent \Model. (References: \sbmlthreegroups, \sec{member-class}.) }
-\subsection*{Rules for \class{MemberConstraints} objects}
+\subsection*{Rules for \class{ListOfMemberConstraints} objects}
-\validRule{groups-20401}{A \MemberConstraints object may have the optional SBML Level~3 Core attributes \token{metaid} and \token{sboTerm}. No other attributes from the SBML Level~3 Core namespace are permitted on a \Group object. (References: SBML Level~3 Version~1 Core, Section~3.2.) }
+\validRule{groups-20401}{A \ListOfMemberConstraints object may have the optional SBML Level~3 Core attributes \token{metaid} and \token{sboTerm}. No other attributes from the SBML Level~3 Core namespace are permitted on a \Group object. (References: SBML Level~3 Version~1 Core, Section~3.2.) }
-\validRule{groups-20402}{A \MemberConstraints object must have the attribute \token{groups:membersShareType}, and may additionally have the attributes \token{groups:id} and \token{groups:name}. No other attributes from the Groups namespace are permitted on a \MemberConstraints object. (References: \sbmlthreegroups, \sec{memberconstraints-class}.) }
+\validRule{groups-20402}{A \ListOfMemberConstraints object must have the attribute \token{groups:membersShareType}, and may additionally have the attributes \token{groups:id} and \token{groups:name}. No other attributes from the Groups namespace are permitted on a \ListOfMemberConstraints object. (References: \sbmlthreegroups, \sec{listOfMemberConstraints-class}.) }
-\validRule{groups-20403}{The value of the \token{groups:idRef} attribute, if set on a given \MemberConstraints object, must be the value of an \token{id} attribute on an existing object in the SId namespace of the parent \Model. (References: \sbmlthreegroups, \sec{memberconstraints-class}.) }
+\validRule{groups-20403}{A \ListOfMemberConstraints object may contain one or more \MemberConstraint children, named \val{memberConstraint}. (References: \sbmlthreegroups, \sec{listOfMemberConstraints-class}.) }
-\validRule{groups-20404}{The value of the \token{groups:metaIdRef} attribute, if set on a given \MemberConstraints object, must be the value of a meta identifier on an existing object in the parent \Model. (References: \sbmlthreegroups, \sec{memberconstraints-class}.) }
-\validRule{groups-20405}{A \MemberConstraints object may contain one or more \AttributeConstraint children, named \val{attributeConstraint}. (References: \sbmlthreegroups, \sec{memberconstraints-class}.) }
+\subsection*{Rules for \class{MemberConstraint} objects}
+\validRule{groups-20501}{A \MemberConstraint object may have the optional SBML Level~3 Core attributes \token{metaid} and \token{sboTerm}. No other attributes from the SBML Level~3 Core namespace are permitted on a \Group object. (References: SBML Level~3 Version~1 Core, Section~3.2.) }
-\subsection*{Rules for \class{AttributeConstraint} objects}
+\validRule{groups-20502}{A \MemberConstraint object must have a value for one (and exactly one) of the attributes \token{groups:distinctAttribute} and \token{groups:identicalAttribute}, and may additionally have the attributes \token{groups:id} and \token{groups:name}. No other attributes from the Groups namespace are permitted on a \MemberConstraint object. (References: \sbmlthreegroups, \sec{memberConstraint-class}.) }
-\validRule{groups-20501}{An \AttributeConstraint object may have the optional SBML Level~3 Core attributes \token{metaid} and \token{sboTerm}. No other attributes from the SBML Level~3 Core namespace are permitted on a \Group object. (References: SBML Level~3 Version~1 Core, Section~3.2.) }
+\validRule{groups-20503}{The value of the \token{groups:distinctAttribute} attribute, if set on a given \MemberConstraint object, must be the name of an attribute shared by all referenced members of its parent \Group. (References: \sbmlthreegroups, \sec{distinctattribute-attribute}.) }
-\validRule{groups-20502}{An \AttributeConstraint object must have a value for one (and exactly one) of the attributes \token{groups:distinctAttribute} and \token{groups:identicalAttribute}, and may additionally have the attributes \token{groups:id} and \token{groups:name}. No other attributes from the Groups namespace are permitted on a \AttributeConstraint object. (References: \sbmlthreegroups, \sec{attributeconstraint-class}.) }
+\validRule{groups-20504}{The value of the \token{groups:identicalAttribute} attribute, if set on a given \MemberConstraint object, must be the name of an attribute shared by all referenced members of its parent \Group. (References: \sbmlthreegroups, \sec{identicalattribute-attribute}.) }
-\validRule{groups-20503}{The value of the \token{groups:distinctAttribute} attribute, if set on a given \AttributeConstraint object, must be the name of an attribute shared by all referenced members of its parent \Group. (References: \sbmlthreegroups, \sec{distinctattribute-attribute}.) }
+\validRule{groups-20505}{The values of any attribute named by a \token{groups:distinctAttribute} attribute on an \MemberConstraint object must be different across all referenced members of that \MemberConstraint's parent \Group. (References: \sbmlthreegroups, \sec{distinctattribute-attribute}.) }
-\validRule{groups-20504}{The value of the \token{groups:identicalAttribute} attribute, if set on a given \AttributeConstraint object, must be the name of an attribute shared by all referenced members of its parent \Group. (References: \sbmlthreegroups, \sec{identicalattribute-attribute}.) }
+\validRule{groups-20506}{The values of any attribute named by a \token{groups:identicalAttribute} attribute on an \MemberConstraint object must be the same across all referenced members of that \MemberConstraint's parent \Group. (References: \sbmlthreegroups, \sec{identicalattribute-attribute}.) }
-\validRule{groups-20505}{The values of any attribute named by a \token{groups:distinctAttribute} attribute on an \AttributeConstraint object must be different across all referenced members of that \AttributeConstraint's parent \Group. (References: \sbmlthreegroups, \sec{distinctattribute-attribute}.) }
-
-\validRule{groups-20506}{The values of any attribute named by a \token{groups:identicalAttribute} attribute on an \AttributeConstraint object must be the same across all referenced members of that \AttributeConstraint's parent \Group. (References: \sbmlthreegroups, \sec{identicalattribute-attribute}.) }
-
Modified: trunk/specifications/sbml-level-3/version-1/groups/specification/examples.tex
===================================================================
--- trunk/specifications/sbml-level-3/version-1/groups/specification/examples.tex 2013-06-18 14:01:47 UTC (rev 17937)
+++ trunk/specifications/sbml-level-3/version-1/groups/specification/examples.tex 2013-06-18 17:48:07 UTC (rev 17938)
@@ -12,7 +12,7 @@
\exampleFile{figs/speciestype-example.xml}
-In this example, both species \val{ATPc} and \val{ATPm} are intended to be pools of ATP, but located in different compartments. To indicate that they are both conceptually the same kind of molecular entity, the model includes a group definition of the \val{classification} variety. The two species \val{ATPc} and \val{ATPm} are both listed as members of the same group. The \ListOfMembers is given the \token{sboTerm} \val{SBO:0000248} to indicate that both species are small molecules. Four restrictions are set in place by the \MemberConstraints element: both species must be the same type, must be in different \token{compartments}, and must share the same \token{initialConcentration} and \token{constant} values.
+In this example, both species \val{ATPc} and \val{ATPm} are intended to be pools of ATP, but located in different compartments. To indicate that they are both conceptually the same kind of molecular entity, the model includes a group definition of the \val{classification} variety. The two species \val{ATPc} and \val{ATPm} are both listed as members of the same group. The \ListOfMembers is given the \token{sboTerm} \val{SBO:0000248} to indicate that both species are small molecules. Four restrictions are set in place by the \ListOfMemberConstraints element: both species must be the same type, must be in different \token{compartments}, and must share the same \token{initialConcentration} and \token{constant} values.
The group definition could be enhanced further by including an annotation on the \ListOfMembers that references the ChEBI database entry for ATP; we omit that detail here in order to concentrate on the Groups constructs.
@@ -21,6 +21,8 @@
In the next example, a group is used to annotate two rules to annotate the fact that the two rules influence a model for some particular reason.
+\clearpage
+
\exampleFile{figs/rule-example.xml}
The key point of this example is the use of meta identifiers for SBML entities (in particular, rules) that do not have regular identifiers (i.e., \token{id} attributes).
Modified: trunk/specifications/sbml-level-3/version-1/groups/specification/figs/group-uml.pdf
===================================================================
(Binary files differ)
Modified: trunk/specifications/sbml-level-3/version-1/groups/specification/figs/speciestype-example.xml
===================================================================
--- trunk/specifications/sbml-level-3/version-1/groups/specification/figs/speciestype-example.xml 2013-06-18 14:01:47 UTC (rev 17937)
+++ trunk/specifications/sbml-level-3/version-1/groups/specification/figs/speciestype-example.xml 2013-06-18 17:48:07 UTC (rev 17938)
@@ -4,9 +4,9 @@
groups:required="false">
<model>
<listOfSpecies>
- <species id="ATPc" compartment="cytosol" initialConcentration="2" constant="false"
+ <species id="ATPc" compartment="cytosol" substanceUnits="mole" constant="false"
hasOnlySubstanceUnits="false" boundaryCondition="true" />
- <species id="ATPm" compartment="mitochon" initialConcentration="2" constant="false"
+ <species id="ATPm" compartment="mitochon" substanceUnits="mole" constant="false"
hasOnlySubstanceUnits="false" boundaryCondition="true" />
</listOfSpecies>
<listOfCompartments>
@@ -19,11 +19,11 @@
<member idRef="ATPc" />
<member idRef="ATPm" />
</listOfMembers>
- <memberConstraints membersShareType="true">
- <attributeConstraint distinctAttribute="compartment" />
- <attributeConstraint identicalAttribute="initialConcentration" />
- <attributeConstraint identicalAttribute="constant" />
- </memberConstraints>
+ <listOfMemberConstraints membersShareType="true">
+ <memberConstraint distinctAttribute="compartment" />
+ <memberConstraint identicalAttribute="initialConcentration" />
+ <memberConstraint identicalAttribute="constant" />
+ </listOfMemberConstraints>
</group>
</listOfGroups>
</model>
Deleted: trunk/specifications/sbml-level-3/version-1/groups/specification/groups-2013-04-15.pdf
===================================================================
--- trunk/specifications/sbml-level-3/version-1/groups/specification/groups-2013-04-15.pdf 2013-06-18 14:01:47 UTC (rev 17937)
+++ trunk/specifications/sbml-level-3/version-1/groups/specification/groups-2013-04-15.pdf 2013-06-18 17:48:07 UTC (rev 17938)
@@ -1,8241 +0,0 @@
-%PDF-1.4
-%\xD0\xD4\xC5\xD8
-1 0 obj
-<< /S /GoTo /D (section.1) >>
-endobj
-4 0 obj
-(1 Introduction)
-endobj
-5 0 obj
-<< /S /GoTo /D (subsection.1.1) >>
-endobj
-8 0 obj
-(1.1 Proposal corresponding to this package specification)
-endobj
-9 0 obj
-<< /S /GoTo /D (subsection.1.2) >>
-endobj
-12 0 obj
-(1.2 Package dependencies)
-endobj
-13 0 obj
-<< /S /GoTo /D (subsection.1.3) >>
-endobj
-16 0 obj
-(1.3 Document conventions)
-endobj
-17 0 obj
-<< /S /GoTo /D (section.2) >>
-endobj
-20 0 obj
-(2 Background and context)
-endobj
-21 0 obj
-<< /S /GoTo /D (subsection.2.1) >>
-endobj
-24 0 obj
-(2.1 Prior work)
-endobj
-25 0 obj
-<< /S /GoTo /D (section.3) >>
-endobj
-28 0 obj
-(3 Package syntax and semantics)
-endobj
-29 0 obj
-<< /S /GoTo /D (subsection.3.1) >>
-endobj
-32 0 obj
-(3.1 Namespace URI and other declarations necessary for using this package)
-endobj
-33 0 obj
-<< /S /GoTo /D (subsection.3.2) >>
-endobj
-36 0 obj
-(3.2 Primitive data types)
-endobj
-37 0 obj
-<< /S /GoTo /D (subsubsection.3.2.1) >>
-endobj
-40 0 obj
-(3.2.1 Type \040GroupKind)
-endobj
-41 0 obj
-<< /S /GoTo /D (subsection.3.3) >>
-endobj
-44 0 obj
-(3.3 The Group class)
-endobj
-45 0 obj
-<< /S /GoTo /D (subsubsection.3.3.1) >>
-endobj
-48 0 obj
-(3.3.1 The \040id and \040name attributes)
-endobj
-49 0 obj
-<< /S /GoTo /D (subsubsection.3.3.2) >>
-endobj
-52 0 obj
-(3.3.2 The \040kind attribute)
-endobj
-53 0 obj
-<< /S /GoTo /D (subsection.3.4) >>
-endobj
-56 0 obj
-(3.4 The ListOfMembers class)
-endobj
-57 0 obj
-<< /S /GoTo /D (subsection.3.5) >>
-endobj
-60 0 obj
-(3.5 The Member class)
-endobj
-61 0 obj
-<< /S /GoTo /D (subsubsection.3.5.1) >>
-endobj
-64 0 obj
-(3.5.1 The \040id and \040name attributes)
-endobj
-65 0 obj
-<< /S /GoTo /D (subsubsection.3.5.2) >>
-endobj
-68 0 obj
-(3.5.2 The \040idRef attribute)
-endobj
-69 0 obj
-<< /S /GoTo /D (subsubsection.3.5.3) >>
-endobj
-72 0 obj
-(3.5.3 The \040metaIdRef attribute)
-endobj
-73 0 obj
-<< /S /GoTo /D (subsubsection.3.5.4) >>
-endobj
-76 0 obj
-(3.5.4 Members referencing other Groups and Members)
-endobj
-77 0 obj
-<< /S /GoTo /D (subsubsection.3.5.5) >>
-endobj
-80 0 obj
-(3.5.5 Members referencing other namespaces)
-endobj
-81 0 obj
-<< /S /GoTo /D (subsubsection.3.5.6) >>
-endobj
-84 0 obj
-(3.5.6 Example)
-endobj
-85 0 obj
-<< /S /GoTo /D (subsection.3.6) >>
-endobj
-88 0 obj
-(3.6 The MemberConstraints class)
-endobj
-89 0 obj
-<< /S /GoTo /D (subsubsection.3.6.1) >>
-endobj
-92 0 obj
-(3.6.1 The \040id and \040name attributes)
-endobj
-93 0 obj
-<< /S /GoTo /D (subsubsection.3.6.2) >>
-endobj
-96 0 obj
-(3.6.2 The \040membersShareType attribute)
-endobj
-97 0 obj
-<< /S /GoTo /D (subsubsection.3.6.3) >>
-endobj
-100 0 obj
-(3.6.3 The \040membersShareParent attribute)
-endobj
-101 0 obj
-<< /S /GoTo /D (subsection.3.7) >>
-endobj
-104 0 obj
-(3.7 The AttributeConstraint class)
-endobj
-105 0 obj
-<< /S /GoTo /D (subsubsection.3.7.1) >>
-endobj
-108 0 obj
-(3.7.1 The \040id and \040name attributes)
-endobj
-109 0 obj
-<< /S /GoTo /D (subsubsection.3.7.2) >>
-endobj
-112 0 obj
-(3.7.2 The \040distinctAttribute attribute)
-endobj
-113 0 obj
-<< /S /GoTo /D (subsubsection.3.7.3) >>
-endobj
-116 0 obj
-(3.7.3 The \040identicalAttribute attribute)
-endobj
-117 0 obj
-<< /S /GoTo /D (subsubsection.3.7.4) >>
-endobj
-120 0 obj
-(3.7.4 Example)
-endobj
-121 0 obj
-<< /S /GoTo /D (subsection.3.8) >>
-endobj
-124 0 obj
-(3.8 The extended Model class)
-endobj
-125 0 obj
-<< /S /GoTo /D (subsubsection.3.8.1) >>
-endobj
-128 0 obj
-(3.8.1 The list of groups)
-endobj
-129 0 obj
-<< /S /GoTo /D (section.4) >>
-endobj
-132 0 obj
-(4 The semantics of ``groups'')
-endobj
-133 0 obj
-<< /S /GoTo /D (subsection.4.1) >>
-endobj
-136 0 obj
-(4.1 Semantic restrictions)
-endobj
-137 0 obj
-<< /S /GoTo /D (section.5) >>
-endobj
-140 0 obj
-(5 Examples)
-endobj
-141 0 obj
-<< /S /GoTo /D (subsection.5.1) >>
-endobj
-144 0 obj
-(5.1 Simple species typing via annotations)
-endobj
-145 0 obj
-<< /S /GoTo /D (subsection.5.2) >>
-endobj
-148 0 obj
-(5.2 Example using meta identifiers)
-endobj
-149 0 obj
-<< /S /GoTo /D (appendix.A) >>
-endobj
-152 0 obj
-(A Validation of SBML documents using Groups constructs)
-endobj
-153 0 obj
-<< /S /GoTo /D (section*.7) >>
-endobj
-156 0 obj
-(Acknowledgments)
-endobj
-157 0 obj
-<< /S /GoTo /D (section*.8) >>
-endobj
-160 0 obj
-(References )
-endobj
-161 0 obj
-<< /S /GoTo /D [162 0 R /Fit ] >>
-endobj
-170 0 obj <<
-/Length 1691
-/Filter /FlateDecode
->>
-stream
-xڭXYs\xD3H~ϯ\x98G\xA9
-\x8F\xE7>\xF6 \xB2YX\xB6B\xB3\xFB-V\xAC\xB6\xEB6\xFA\xF7I>\xF5\xE0E\x8E\x90\xA6\xBEp\xE5$U\xE09`\xE7\xFB\x8F\x8C\\xC3\xCE_ \xCA\xEF\xE1\xDC"`\xE8>Ր+@oO\x82\xF0\x9E
-\xF6\xF1\x90F$\xDC\xD8\xCA#ZB\x90\x83\xF0\xC7Ȉ\xF9\xB9\x80Ë\xFCJD:\xF6\x9B\x9F\xBE\xA8\+ \xDF\xC3=UNG\xC2!LE1\x9F\xCE \x9C\xAA:E\xE6\x9F%\xED6\xC7ݗ
-F\xD2A\x94^\x96\x9C\xDB\xE9\xBCZ\xE29\xA1++h\xF2+t\x9Cż\x9B\xA5\xC4x`\xD11\xC0\x86p\xCF\xE1\x9C?w\x92pN\xB5\x87\xA4\xF6\x8E\xC0Y\x95\xF1!\x9C\xE0D0w1\xDBB\x9Ex:\xAD\x9A\xAE\x9E\xCEh}\xBD\xBDW\xDD)\xF9\xF6$\xEFGN;U4\xEB/\xFBtK\xBFW\xEDl\xBE\xBC\xEDV\xCBG\x9As\xC8\xD7HAB5j\xEF\xFE\xBF#]\xAB&\xC6@P\x9F\x970\xB8\x8D\xF4U8\xBE\x8Ec\xA0WU\x87\xF4]\xD2D^\xAB&7\x9D\xD7\xF8Ĵna\xC1y\x8FJd\xB1\xC2sX_\xEF-o#\xF1\xD5r_<\xECͲ\xF8i\xD5\xE4>Lܽ
-\xC0\x87pE\x8D\xF7\xC7\xAB\x9A\xF9\xCDjS\x8E\\xB8μ\x8A\x82^\x96<.\xB4\xBD\xFD\xDD\xF0\xFE\xA9b\x83o\xA2\x81\x93\x92\x83g\xD6\xC1\xAD\x97\xABfu\xFB\xA3imE\xBCZ\x82n`3<m\xB1\xA8\xF3\xC52\xEA\xEA\xB6]\x96~\xBFQ\xF2\xA0(\xCDЮU\x90\xB7\xC2\xEA\xF5#\xDCO\x88\x90\xF0\x87\xF7\x832g\x8A\xAA\xAD\xAEsI\xC3\xAB'Q蝗\xE9y8z\xAB,\xE0 \x87\xEA-\xCCE4A\xBCIch\xF6\x92 \xE6\xB8y\xFD"pW1\x8C\xAF7\xA5\xFD\xF5M\xDAu=\x9Dc\x8A@7\x8F7q\xC6 \x8F\x9F\xC3\xFC\xD5e\\xB8\xF9\xFC[\xA9\x8Bz\xD8ʛЮW\xFBm<T\x83\x90\xEB\xEB\xA8\xFC\x83\xF2\x9Eʿ\x877\xE9BH\xC0ё\xC3%o7\x83\x96\xF4~o\xDF\xC3
-\xDE\xE2\x94\xE2Y(V\x90\xFByhW\x83,\xD6$Dv\xA8)\xA8\xDD|˘\x92\x88`7\x97\x9E;\xE2\x94\x8F\xF0\xE5Hʨ\xE5z5\xDD.\xEA%\xE6\xE0\xA4\xE7ui\x8B\x88-\xF3\xA8nG!$3p\xE9}\x84\xDAϋf\xE9|ڀΖ\xB6\xAB\xEDfZC黭鲾_\xF9\x89\xB4sh\xB0\x95\xE8=\x87\x9E\xFC\x94ZG\x97\x90\xE1\xC57\xA7\xA3\xC9-endstream
-endobj
-162 0 obj <<
-/Type /Page
-/Contents 170 0 R
-/Resources 169 0 R
-/MediaBox [0 0 612 792]
-/Parent 178 0 R
-/Annots [ 163 0 R 164 0 R 165 0 R 166 0 R 167 0 R ]
->> endobj
-168 0 obj <<
-/Type /XObject
-/Subtype /Image
-/Width 284
-/Height 123
-/BitsPerComponent 8
-/Length 53611
-/ColorSpace /DeviceRGB
-/Filter /DCTDecode
->>
-stream
-\xFF\xD8\xFF\xE0-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="3.1.1-111">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <dc:format>image/jpeg</dc:format>
- <dc:title>
- <rdf:Alt>
- <rdf:li xml:lang="x-default">official-sbml-supported-for-distribution</rdf:li>
- </rdf:Alt>
- </dc:title>
- <dc:creator>
- <rdf:Seq>
- <rdf:li>Michael Hucka</rdf:li>
- <rdf:li>Yukiko Matsuoka</rdf:li>
- </rdf:Seq>
- </dc:creator>
- <dc:description>
- <rdf:Alt>
- <rdf:li xml:lang="x-default">This is the artwork for the official icon designating support for SBML. Please see the web page http://sbml.org/Logos for more information.</rdf:li>
- </rdf:Alt>
- </dc:description>
- <dc:rights>
- <rdf:Alt>
- <rdf:li xml:lang="x-default">The stylized "SB" insignia, as well as the letters "SBML" used in the context of computer software, are trademarks of the Systems Biology Institute (SBI) in the United States, Japan and European Union.</rdf:li>
- </rdf:Alt>
- </dc:rights>
- </rdf:Description>
- <rdf:Description rdf:about=""
- xmlns:xap="http://ns.adobe.com/xap/1.0/"
- xmlns:xapGImg="http://ns.adobe.com/xap/1.0/g/img/">
- <xap:CreatorTool>Illustrator</xap:CreatorTool>
- <xap:CreateDate>2009-03-13T17:12:17-04:00</xap:CreateDate>
- <xap:ModifyDate>2009-03-13T21:12:25Z</xap:ModifyDate>
- <xap:MetadataDate>2009-03-13T17:12:17-04:00</xap:MetadataDate>
- <xap:Thumbnails>
- <rdf:Alt>
- <rdf:li rdf:parseType="Resource">
- <xapGImg:width>256</xapGImg:width>
- <xapGImg:height>112</xapGImg:height>
- <xapGImg:format>JPEG</xapGImg:format>
- <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAcAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9Aa3rmsX2sv5c8uMkNzA
qvrGryKJFslkHKOOOM/DJcSL8Sg/Ci0ZgaqrKrI/y18ovR9VtDr111e61hjfMT4hJqxR/wCrGir7
Yrap/wAq1/Ln/qVdH/6QLX/qnitu/wCVa/lz/wBSro//AEgWv/VPFbQV75Q/KCxPG90Py/bN/LLa
WSH7ilcux4Mk/piT8HHzazFj+ucY+8gIeHQfySmcJHpXl1nPQfVbIV+VUyctHmG5hL5NMe1NNI0M
kL/rBNE/Lj8tnUMnlbRmU7hhYWpBH/IvMcinNEr3Df8AyrX8uf8AqVdH/wCkC1/6p4E2tl/Lv8tI
Y2kl8saLHGu7O9jaqoHuSmERJNBEpiIsmgkVzafkPbtxk0vQCen7uxt5B96RMMzI9nZzygXXT7Z0
seeSPw3+5WstI/I69cJbaV5eeRvsxm0tEY/JXRSchPRZoc4n5NuLtPT5NozjfvTn/lW35cf9Sro/
/SBa/wDVPMVzbd/yrX8uf+pV0f8A6QLX/qnitu/5Vr+XP/Uq6P8A9IFr/wBU8Vt3/Ktfy5/6lXR/
+kC1/wCqeK27/lWv5c/9Sro//SBa/wDVPFbd/wAq1/Ln/qVdH/6QLX/qnitu/wCVa/lz/wBSro//
AEgWv/VPFbd/yrX8uf8AqVdH/wCkC1/6p4rbv+Va/lz/ANSro/8A0gWv/VPFbd/yrX8uf+pV0f8A
6QLX/qnitu/5Vr+XP/Uq6P8A9IFr/wBU8Vt3/Ktfy5/6lXR/+kC1/wCqeK27/lWv5c/9Sro//SBa
/wDVPFbd/wAq1/Ln/qVdH/6QLX/qnitu/wCVa/lz/wBSro//AEgWv/VPFbd/yrX8uf8AqVdH/wCk
C1/6p4rbv+Va/lz/ANSro/8A0gWv/VPFbd/yrX8uf+pV0f8A6QLX/qnitu/5Vr+XP/Uq6P8A9IFr
/wBU8VtSk/LbyilX0q1Og3XVLrR2NiwPiUhpFJ/qyIy+2K2qaJrusWOsp5c8xsk1zOjPpGrxqI0v
VjHKSOSMbR3Ea/EQvwutWWlCqqqX5bry8oWOpvvc64Dq905G5e/PrgGn8iOsY9lGFSyflihJ/Mvm
vSvL1n9YvpKyPUQWyUMkhH8o8B3PbMrS6SeaVRHx7nB1/aOLSw4pnfoOpeQ6/wDmP5l1l2RJjYWZ
+zb25Kkj/LkFGb8B7Z0+m7LxYuY4pd5/U8Dr/aDUZ9geCPcP0nmxtYiTU7k7k5sXQSmqrFi1mTIv
JvmDVdK1a1it5Xa1nlSOa1JJRg7cdh2bfYjMHX6WGTGSRuBzdx2N2nmwZoxiSYSkAY9N/wBL1zzP
5ltNB01rqYepM3w28FaF3+e9AO5zltHpJZ58I5dS+jdqdpQ0mLjlueg7y8R8weYNY1y4M2oTs6g1
jgWoiT/VTp9PXOv0+lx4RUR8er5jre082pleQ/DoPcPwUgupLaAVnlSIHu7Bf15ktGOMpcgSgvrF
lMaQzxyHwR1Y/gcXI4Jx5gj4J55f89+aPLsi/UrtpLVdjZTkyQkDsFJqn+xIzE1OgxZvqG/eObs9
F2rnwH0y9Pcdx+z4PbvJX5gaR5pt2EFbfUYlDXFi5qwHTkh25pXv27gbZyut0E8B33j0L3PZ/aeP
UjbaY5j9XeGT8swXZIXVbyS00u8uowDJbwSSoGqVLIhYVoRttk8ceKQHeWOSRESe4PnD/oZvz7/y
waX/AMirj/sozqP5Cw98vs/U6D+VsvdH7f1vaPyq89T+cvKiapdJHFfxTSW95HAGWMOpDLxDs7UM
br1PWuaLtDSDBk4Ryqw7bRak5YWedsx5ZguW6uKurirq4q1XFXztr/8Azkn5qt9bv7fS7PTpdOhu
JI7SWWOdneJGKq5ZZkX4gK7DOnxdiYzAGRlxVvy/U6Gfa0+I8IjXT8W9B/Jn8ytd872+qyarBawN
YvCsP1VJEBEocty9SSX+QUpms7T0MMBjwk73zc7QauWbi4q2r9L0iuat2D568r/85D+ddV8y6Tpd
xZaalvf3tvazNHFOHCTSqjFSZ2FaNtUZ0ufsbFDHKQMrAJ6fqdFh7TySmIkR3I7/ANb6FrnNO9dy
xVTuPXa3lW3dI7gowhkkUyIrkfCzIGjLAHqAwr4jFXlh/M/zXppsZ9WOn3NlPrl1pN21tbTW5htr
O4e2kuSz3M43f03O3wryHxdQpplf5cecr3zXpeoX91AlusN9JDZogZSbRoop7Z5ORb43inUt0+WK
lV/MhePlC91NNrnQwNXtXFKh7A+uQK/zojRn2Y4qF35bH/kHflb/ALZFh/1DR4oKa63rNro+l3Go
3R/dW68uI6sx2VR7sdsuwYZZZiA5lxtXqo4MZyS5R/FPn3WdYv8AXNTl1C9blLIaKn7KIPsoo7Af
252+nwRxQEYvleu1s9RkOSfM/YO5GeX/AC9qGs3q2lklW6ySNsiL/MxyOp1MMMeKTDRaHLqsnBjH
vPQe96ton5a+X7CNWu0N/c/tPLtHX/JjBp/wVc5nUdr5Zn0+kfjq97ovZnTYhcx4kvPl8v12njeW
/LrJ6Z0y14joBDGKV8KDMMazNd8cvmXaHsvSkV4cK/qj9SFsfJnluxvhfW1oEnU1SrMyqT3VWJAy
zJ2hmnHhlLZx9P2HpMOTxIQqXvO3uDzrz7qEmp69NRqwWhMEK9vh+2fpaudF2ZhGPEO+W7wntFqj
qNSaPph6R8Of2/oedebdZfSrZI4QPrc9RGTuFUdWp+rNmN3X9n6PxZ+r6YsCKT3EplndpZG6uxJP
45N6S4xFRFBFRWDmlBi0yzBNbOa7iokpMkXTfcj6cXCyxjLcbFNLHUb3S9Qg1GwlMN1bsHikX9R8
QRsR3GV5McZxMZCwUafNLHMSiakH0t5Q8z23mTQbfVIKK7jhcwg19OZftp/EexGcPq9McOQwPw9z
6NodWM+ITHx8iivMJ/3Aan/zCT/8m2yvB9cfeG/N9B9xfDud+8g9m/5xo8w/Vtf1LQpXpHfwi4gU
nb1YDRgB4sjkn/VzR9uYbgJ9x+92vZWSpmPf+h9F1zl3fOrirq4q6uKsb/MbzB+gPJGr6mrcJo7d
o7Y9/Wm/dRn6GcHMrRYfEzRj5uPq8vBjkXxlndPKPf8A/nF3/ePzF/xktf8AiMuc52/zh8f0O57H
/i+H6XuVc553T4s8gf8AKd+XP+2pZf8AUQmd5rP7mf8AVl9zyWm/vY/1h977TrnBvWurirq4qkF1
5F8qXVtLa3FgJIJmvXkjMktC2pktdnZ+shY0/l/Zpim0y0vRdL0oXA0+3Fut3KJ51UsQZFijgBAJ
IX93CgotBtXrXFUp/Mg/8g780/8AbIv/APqGkxUNfluf+Qd+Vv8AtkWH/UNHipYh+cusOZbHR0ai
AG6nHiSSkf3UbOj7DwbSyH3freL9q9UbjiH9Y/cP0vO4UrTOgeIkXvXk/QItE0WG34gXUoEl2/cy
EdPkvQZxOv1RzZCf4RyfVux+zxpcAj/Gd5e/9nJO65hO0dXFWi9ASeg3OGlJp4tdW0/qPI4qXJZj
7k1OdtCQqg+R5sMrMj1eZefIpH16MMPhEC8B82av45l4+TnaCVYz7/0BB2OnVoSMmubOnMGminTA
6+edEfo0U6YLa/HQl3bekoHbfC3Y8ls+/IrW3t9cvdHdv3N5F60SknaWE0NB/lIxr/qjNH25huAn
1B+wvWezuorIYdJD7R+z7nr/AJhb/cBqX/MLP/ybbOcw/XH3h6zN9B9xfHHk7TINU806VplxtBe3
MdvIR1CytwJHyrnc6nIYY5SHQW8nihxSEe8hFeWNSuvKPnqyu5wY5dKvPSvF7hFYxTr/AMAWGQz4
xmwkD+IbfoZ4pnFkBP8ACf7X2YrhgGUgqdwR0IzhaetdyxV3L3xV3LFXiX/OTHmD09O0rQI2+K4k
a8uADT4IhwjB9mZ2P+xzf9hYfVKfds6btbJtGHxePnQBF5BOvSL8dzqa2kBPUJFA7yEezM6j/Y5u
/GvNwd0b+11Xh/u+L+lX2PXP+cXzSz8w/wDGS1/4jLml7e5w+P6Hadj/AMfw/S9xrnPu6fF3kH/l
OvLn/bUsv+ohM7vWf3M/6svueS0397H+sPvfaNc4R611cVdXFXVxV1cVY7+ZB/5B55o/7ZF//wBQ
0mBIWflwf+QeeV/+2RYf9Q0eFS82/NAu3nGfl0WKIJ8uFf1k513Y4HgD3l839pifzZ9wSnQxH+lb
L1P7v14udf5eYrmdnvw5V3F0WkI8eF8uOP3voHlnBvsjuWKu5Yqp3MoS3kc9lJ/DJ4xcgGvLLhgT
5MCurJeJ2zooZHic2AU87896CZDFexirQ1WQf5B3r9Bza6fJezpp/u5HuKSWFqKDbMhwM2RO7azL
dBt45EypxN5FGHTfhr+NMh4jPwDSRa7EIgibVJJI70HTLIm27TxIu0Z+VVR+YelU/wCXiv8A0jSZ
gdrf4vL4feHpuw/8ah8f9yXvXmAn9A6l/wAws/8AybbORw/XH3h7rN9B9xfI/wCW/wDyn3l7/toW
/wDycGdtrf7mf9UvLaf+8j/WH3sh/PfQP0V+YFzcIvG31SNLyOg25t8Eo+ZdCx+eYvZGbjwAdY7N
/aOLgynz3/Hxe7flH5h/TfkDSp2as9rH9TuN6nnb/ACT4sgVvpzne0sPh55Dod/m7rQZePEPLb5f
sZjU5guY6pxV1Tir5K/OXX/01+YWpurcoLFhYwb1oINn++Uuc7TszD4eCPed/n+x5fXZePKfLb5M
z/NXQf0D+UPlTS2XjNDOr3A/4ulhkkkH0O5GYHZ+bxNVkl5fpcvWYuDTwimX/OMR/wBD8w/8ZLX/
AIjLlXb3OHx/Qz7H/j+H6Xt9c593T4y8hf8AKc+Xf+2pZf8AUQmd3rP7mf8AVP3PJab+9j/WH3vs
2ucI9a6uKurirq4q6uKsd/Mc/wDIPPNH/bIv/wDqGkxSFv5ct/yD3yv/ANsmx/6hkxClh/5t6W6a
jaaog/dzJ6EpHQOhLLX/AFlP4Z0vYmYGJh1G7wvtZpSJxyjkRwn3j8fYwqE0oR1zePFSez+UfNEG
sWCK7gX8SgTxk7mm3MeIOcdr9EcM7H0Hl+p9T7E7Xhq8QBP72P1D9Kf8/fMB3budNycVSzUL9JF9
GNqr+0w6H2zN0+Ejcur1epEhwxSS740ObCDpczF9XCkEHcHtmywPOa+mMyadDE/KI8VP7J6D5ZnC
Tp8g80z0oWYkjE8saJSp5Mo++pynMZVsHJ0UYcQ4iK96catrvl2ztSscgup6fDFFuPpf7I/X7ZhY
sOWR32DvNRqNPCNA8R8v18nmupXMlzO80lKt0UdAPAZtoig6WJtmP5LaK8+v3OrOv7myiMcbEf7t
m22+SBq/MZpu289YxDrI/YHq/ZzT8WQ5DyiPtP7LeteYG/3Bal/zCzf8m2znMP1x94evzfQfcXyV
+XP/ACnvl/8A5j7f/k4M7XW/3M/6peW0/wDeR/rD73tH/ORugi78s2WsxrWXTZ/Tlb/im4ou/wAp
FSnzzQ9iZqyGH84fc7jtXFcBLu/Skf8AzjX5g4XOq6BI/wAMqre2y/5S0jl+kgp92ZHbuHaM/h+p
p7Jy7mHxe8cs5x3buQxVLPM+uR6J5d1HVnP+8dvJKoPdwvwL/smoMu0+LxMgj3lqz5OCBl3B8qfl
zo0nmHz5pdrNWRXuPrN2zfFySKssnL/X48fpzsdbl8LDIjuofc8xpcfHkiPN7B/zko1fKul/8x3/
ADJfNH2F/eS/q/pdv2t9A96A/wCcZTS08wf8ZLX/AIjLlvb3OHx/Q1dj/wAfw/S9t55z7unxr5D/
AOU48u/9tOz/AOohM7rWf3M/6p+55LTf3sf6w+99k8s4V613LFW+WKu5Yq1yxVj35it/yD7zP/2y
b7/qGfAUhZ+Xbf8AIPvLH/bJsf8AqGTCEFM9a0m11fTZrC5H7uUfC46ow3Vh8jl+nzyxTEo9HE1u
khqMRxz5H7PN4zqui3+j3rWt4nEivpyD7Lr/ADKc7LT6mGaPFF8p7Q0GTTZDCY9x6H3NWc7wyq8b
FHG6upoQfEEZZOIIouFiyGErBosmtvN/mCNQovGZR/MqMfvZSc10+zsJ/h+96DF29q4iuP7AfvCZ
w69d3QHrzs4PVeg+4UGUHSQhyDsYdp5Mo9UiUYt8OPXKjjcoajZC3V6vE75bDG4+bUCmO31x6r7d
BmwxxoPPanLxFK7l9qVy+IcDLLZASnLGqIQMzdcLkQCXz1Y0G5OwGLlwD6I8taFa6Fo8GnW4H7sV
mk7vK323PzPT22zhtVqDmmZH8B9S0WljgxCA+Pme9V19v9wWo/8AMLN/ybbIYfrj7w3ZvoPuL5O/
Lr/lPPL/APzH2/8AycGdprf7mf8AVLy2n/vI/wBYfe+qvNmjJrvlrUtIYAm8t3jjLdBJSsbf7FwD
nG6bL4eSMu4vT6jH4kDHvH9j5Z/LzXH8veeNLvpT6ccc4guuWwWOWsUhb/VDV+jOx1uHxcMo+Wzz
Omy+HkEn15yzh3rHcsVeUf8AORGvm08q2ukI1JNUnrIPGG3o7f8AJRkzddiYeLIZ/wA0ff8Agur7
Vy1AR7/0JB/zjdoRNzq2vSLtGq2Vu3YliJJfpAVPvzJ7czbRh8f1fpaOyce5l8E6/wCckDXytpn/
ADHf8yXzH7D/ALyX9X9Ld2t9A96A/wCcaDS01/8A4yW3/EZct7e5w+P6Grsj+L4fpe18s593T468
i/8AKb+Xv+2nZ/8AUQmd1q/7mf8AVP3PJ6b+8j/WH3vsTlnCvWO5Yq7liruWKu5Yqx/8xG/5B/5m
/wC2Tff9Qz4lI5rPy8P/ADoHln/tk2P/AFDJiFPNNtU1W00ywlvrtuMEIq1NySdgoHiTtluHDLJI
RjzLj6nUww4zOf0hjVv5w8o+ZALC8iMZc0iW5UCrHYcHUni30jNnLQ6jT+uJ+X6nQx7W0Wu/dZBV
8uL9BHI/JB6h+Wg5F9NuuI6iKcdP9mv9MyMPbfScfl+p1us9jwTeGdeUv1j9SVzeU/MNqCXtjKo/
aiIf8B8X4Zmw7RwT/ir3uny9g6zEN4cX9Xf9v2IFZJYXKmqONmU7EH3BzKoEOuEpQNcirjUZgKZD
wg3jVyUpbuR+p2yUYANU88pISWUAZYA40pUx7WPM2lWDlLiblKP90oOTfTTYfSctAZYdFlzbgbd5
SJvPlgzUFtNw8fhr91f45KnPHY8x/FFGW2s2N8pNvJ8Q+1Gwow+j+mLRk0s8f1BRnem9cLZAPofy
p5it9f0O31GIjmw4XMf8kyj41/iPYjOH1emOHIYn4e59N0OrGfEJjn196I15v9weo/8AMLN/ybOV
Yfrj7w5Gb6D7i+Uvy8/5TvQP+Y+3/wCTgztNb/cz/ql5bT/3kf6w+99ecs4d618p/m3oX6H8+6nE
q8YLt/rkG1Bxn+JqDwEnIfRnZ9m5vEwxPUbfJ5fW4uDKR37/ADfRP5ea/wDp3yZpWos3KZoBFcE9
TLD+7kJ+bLXOW1uHw8so+bv9Jk48YLI+WYrkvmb89de/SfnqW1RuUGlxJarTpzP7yQ/Pk/E/6udb
2Rh4MIPWW7zfaOTiykd2z2r8p9D/AEL5D0yBl4z3KfW7jah5T/GK+6pxX6M0HaWbxM0j0G3ydxoM
fBiHnv8AP9jFP+cjjXyvpn/Md/zJfMzsP+8l/V/S43a30D3oD/nGs0tNf/4yW36pct7d5w+P6Grs
j+L4fpe0cs0Dunx95G/5Tby//wBtKz/5Ppnc6v8AuZ/1T9zyem/vI/1h977BrnDPWOrirq4q6uKu
rirH/wAwz/zoHmb/ALZV9/1DPgKRzWfl63/Og+Wv+2VY/wDUMmIQebGfzf1ORE07T1aiSF55R48a
Kn/EmzoOw8QuUvg8l7U5jwwxjluT+j9LA9Nie7u4LWM0eeRIkPu7BR+vN9kmIRMj0FvGY8ByTjAc
5ED5vf4V9KGOLkW4KF5HqaClTnCSNkl9dhHhiB3L+WRZpdq+i2GqQlZ1Cygfu51+2v8AUe2ZWm1c
8J25dzru0OzMWqjUx6uh6h5lqcFxp17JaTj44z1HRgejD551mDJHLASj1fL9dgnpspxz5j7fNBvd
E9Pvy4RcM5SxTzf5jmtVFlaNS6lFZJB1RD4f5RyYDsuzdEMh45/SPtYVFZs7FmqzMakncknJu/ll
ARiaY5H2cWg6gL1sJoXWSOqupqpGLE5hIUU2a4MkSuRQkbj374HCEKNM8/JPXHh1270l2/c3cPqx
r4SxEdPmjGvyGaXtvDeMT6g/YXpuwMpjkMOkh9o/Y9a15v8AcHqO/wDx7Tf8mznOYfrj7w9Pm+g+
4vlX8vf+U50H/mPt/wDk4M7TW/3M/wCqXl9P/eR/rD731xzzh3rHjP8AzkXoYktNL12NfihdrO4b
vxcGSKvsCr/fm/7Dzbyh8XT9q4uU/h+r9Lv+cdNf5WuqaFI+8TLeWy9+L/u5foBCffj25h3jP4fq
/SvZWXnD4/r/AEPXtR1GDT9Pub+4NILSJ55T/kxqWb8BmjxwMpCI5l205iMST0fJuh2dz5r8620N
x8cuq3nqXbD+V3MkzD5LyOdrmmMOEkfwjb9DyuKJyZADzkf7X1yvFFCqAqqKKo2AA7DOHL1jyj/n
Itq+WNM/5jf+ZT5u+w/7yX9X9Lq+1voHvQH/ADjcaWuvf8ZLb9UuWdu84fH9DV2R/F8P0vZ+WaB3
T5C8j/8AKa+X/wDtpWf/ACfTO51f9zP+qfueT0395H+sPvfXvLOGera5Yq7liruWKu5YqkH5hN/z
oPmX/tlX3/UM+JSOan+Xzf8AOheWv+2VZf8AUOmIU82E/nGrLqemzmvGSF0B7VRgT/xPOl7Dl6JD
zeO9poeuB8j+PtYv5Yvo7bXdPnlNI47iMux2ovIVP0ZtNVAyxSA7i89opDHnhI8hIfe9955w76jb
ueKLdzxW2D/mVbKFs70CjVaFz4j7S/d8Wb/sTJ9UPi8V7X6YEQyDnvE/eP0sEMub94nhYBdh7zVb
mZt+UjAf6qmi/gMmHpsRGPFEeSbWOmCg2wW4WbUJtFpgp0wW4MtQ6XTBTpjax1CRajSGZoxtx6/T
vhDssHqFp9+UYkk8/WTKKiOOdnPgDEy1+9hmu7WP+Dy+H3u97KgfzEfK/wDcl7vrrf7hNQ/5hpv+
TZzlMP1x94etzfQfcXyz+X//ACnGg/8AMdB/ycGdnrf7mf8AVLzGD+8j/WH3vrTmc4h6tjv5g6L+
nPJ2qaeql5mhMluo6mWH95GB/rMtMytFm8PLGXn97j6vHx4yHz1+VmunRvPOmTs3GC5k+qT9hxn+
AE+yvxb6M6ntHD4mGQ6jf5Og0eTgyg/D5vZfzw139H+SJbVGpPqcqWygHfgP3kh+VE4n55oOyMPF
mvpHd2/aWXhx1/OYJ/zj7on1jzBe6xIoKafCIoiR0lnJFQfZEYH55su281YxD+cfucHsvHczL+b+
n8F75yzmXfPKf+chzXyzpv8AzG/8ynzddh/3kv6v6XV9q/QPegf+ccjS117/AF7b9UuW9u84fH9D
V2Tzl8P0vZOWaB3L5H8kf8pnoH/bStP+T6Z3Gr/uZ/1T9zyun/vI/wBYfe+uOecO9U7liruWKtcs
VdyxVIPzAb/nQ/Mn/bKvf+od8BSOa3yA3/Oh+W/+2XZf9Q6YRyU80s/NLR31Hy01xCvK409vXAA3
MdKSD6B8X0ZtOyc/Blo8pbfqdN23pvEwcQ5w3+HX9fweMQz++dY8LKD23yF5vh1nTUtZ5B+krVQs
qk7ug2Eg8f8AK9/nnJdpaI4p8Q+g/inuex+0RnxiMj+8j9vn+tlfLNY7l3LFWB/mhqcQjs7BWBl5
GZx3ApxX76nN/wBiYjcp9OTx/tXmBjDH1vi/QP0vPjP750DxvAkqWQS+lNNnYup9mNcLsDluAZDY
2woNsBdXlmn9npLzCioWPfKJ5QGeHSynyFoTXkh0m1aa5HHtGld3bwGHHk4uTYdDISAqnmV3dPNI
8jH4mJJ+ZzId5jxiIoPU/wAi9CkX69r0qkK4+qWpPcVDyn7woB+ec/23n5Yx7z+h6TsXAd8h9w/T
+h6drjf7hdQ/5hpv+TZzR4frHvDu830H3F8u+Qf+U20L/mOg/wCTgzstZ/cz/ql5jB/eR/rD731f
yziHq3csVfKXnvRW0LzhqVjGPTjjnMttTtFJ+8jof8lWAzt9Hl8TFGXlu8rqMXBkMU4/M/zqvmZ9
F9Nwy21ij3AHa6moZh9HBcx+z9J4PF5y+wcm3V6jxeHyH29Xrn5M6L+i/I9rI60n1F2u5PHi9Fj+
jgoP05ou1c3HmI6R2dv2dj4cV9+7OeWa1znlf/OQhr5a03/mN/5lPm77E/vJf1f0ur7V+ge9A/8A
OOxpba7/AK9t+qTLO3ecPj+hq7J5y+H6XsXLNA7l8l+Sv+Uy0H/to2n/ACfTO41f9zP+qfueV0/9
5H+sPvfWnLOHeqa5Yq7liruWKu5YqkPn9v8AnRPMn/bLvf8AqHfE8kjms8gv/wA6L5c/7Zdl/wBQ
6Yjkp5p6SrAgioOxB6EYUPDvzA8mz6BfteWiFtIuGJQgE+ixP92x7Df4c63s7XjNHhl9Y+3z/W8X
2n2acMuKP0H7PL9THLHU7m0uI7i2laGeM1SRDQg5sJwEhRFguojxQkJRNEPQtH/OC7jjWPVLRbkj
b14j6bH5pQqT8qZpc/YkSbga8ju77T+0M4iskeLzG32cvuRt/wDnBCYyun2J9Qj4ZJ2FAf8AUWtf
+CGV4uwzfrl8mzP7Sbfu4b+f6h+tgV7qt1e3Ul1dSmWeU1d27/0Htm9x44wiIxFAPK5pTySMpm5F
QNx75Nr4FP61xYN1piy8O0zs/MVjFx9VHBHXiAR+sZEhxpaKV2E3T80bTT7YrZWJmnNaPOQqA9jx
XkW+8ZiZNIZnc0Hc6ORxRqrLBNe8xanrN411fzGRzXgg2RB/Ki9AP8zmXjxRgKDcbkbK7yv5Z1Hz
JqqWNmpCCjXNwRVIo67sffwHfKdVqo4YcUvh5uVpdLLLLhj/AGPpHSdNs9J02306yT07a2QJGvfx
LH3Y7n3zi8uWWSRlLmXscWMY4iMeQW62/wDuF1D/AJhpv+TZw4frHvC5voPuL5h8hmnnXQ/+Y6D/
AJODOy1n9zP+qXmMH95H+sPvfVfPOIert3PFbeJ/85AaNxvdN1pF+GZGtZ2H8yHnHX3IZvuzo+xM
3plDu3dJ2rj9Ql37PLtI06bU9UtNOh/vbuZIUPgXYLU+wrXN1lyCETI9A6yETIgDq+uLWCG0tYbW
BeEECLFEg7IgCqPuGcJKRkSTzL1kYiIAHIKvPIsnlv8AzkA1fLenf8xn/Mp83fYn95L+r+l1fav0
D3oH/nHlqW2uf69t+qTLO3ecPj+hq7J5y+H6XsHPNA7l8k+Wr23sPMelX1yxW3tby3nmYAkhI5VZ
jQbnYZ3eogZY5RHMxP3PJ4ZCMwT0Ie/f8rp8gf8ALbJ/yIl/5pzl/wCSc/d9od9/KOLv+x3/ACun
yB/y2yf8iJf+acf5Jz932hf5Rxd/2O/5XT5A/wCW2T/kRL/zTj/JOfu+0L/KOLv+xr/ldPkD/luk
/wCREv8AzTj/ACTn7vtC/wAo4u/7E+8tedNB8ypcPpE7TC1Kibkjx0L14/aAr9k5i6jSTw1xjm34
dTDLfD0Wefm/50XzH/2y73/qHfMY8nIHNZ5QDWWmtoE3w3egSNp0sZ6+lDtbSb78Zbfg4PvgjyWX
NPOeSYqdxDb3MD29xGssEgKyRuAysD2IOSjIxNg0USiJCjuHmHmb8oZA73Pl6UcTubCZqEe0ch/U
335v9L2z0y/MfpH6nndX2J1xfI/oP6/mwLUNH13S2K39jNbhTQuyHgfk4qp+g5ucWox5PpkC6PNp
J4/qBCGgklmcRxI0jnoiAsT9Ay0kDcuP4VmmU6N+X/mrUyGa3+pQH/dt1VD9CUL/AIZr8/aeHH14
j5finPwdj5snThHnt+1kD/k9d+lVNVQy/wAhhIX/AILmT+GYQ7cF/Tt7/wBjsD7Omtp7+79rFtc8
iea9Kqz2huoB/u+1rKv0qBzH0rmfg7Sw5OtHz2dfm7KzYuYsd43/AB8WKSzOrFWBVh1B2IzPcUQW
28F5eTCG0hkuJm6RxKzsfoUE5GcxEWTQboYyTQFlmflz8ofMGoyJLqv+42z6srUadh4Kg2X/AGXT
wOarU9r44bQ9Uvsdrpuysk95ekfb+Pe9h0HQdK0KwWy02ERRDd26u7fzO3c5zmfUTyy4pF6HBp4Y
o8MQmXLKW5D38LXNjc2ykK08Txhj0BdStfxyUJcMge5jONxI73lHl38lNV0rXdP1KTUoJI7OeOdo
1RwWCMGoK/LN7n7YhOBjwncU6nH2bKMgbGxBev8ALNA7h3LFWPee/K48z+XZdMEiwz80lt5nBKo6
HckDxQsPpzL0Wp8HJxdHH1WDxYcPVh/kf8oLnQPMUGrXt7FcrbK5iijVgfUZSgJ5eAY/TmfrO1Rl
xmEQRbh6bs8wmJE8nqHLNK7R3LFWJfmP5NuvNml2tnb3KWzQT+sWkBII4MtPh/1sz9BqxgkSRdhx
NZpzliACh/y18iXnlGLUEubqO5N40RX01YcfTDDfl488l2hrRn4aFVbDRaQ4bs3dfpZryzXOc8Q/
5UDrP/V1t/8AgHzpP5ch/NLo/wCS594d/wAqB1n/AKutv/wD4/y5D+aV/kufeHf8qB1n/q62/wDw
D4/y5D+aV/kufeHf8qB1n/q62/8AwD4/y5D+aV/kufeHf8qB1n/q62//AAD4/wAuQ/mlf5Ln3hnX
5a+RLzyjFqCXN1Hcm8aIr6asOPphhvy8eeaztDWxz8NCqtztFpDhuzd1+lOfNwa901dAh+K71+Rd
OijHX0ptrmTbfjFb83J9s1sjs7CI3ZX5t8mT6jex63otwllrsEfot6oJtruEGqw3IX4vhJJSRd0q
dmBIysGmZFsZbVdXsyItX0DUbWcVBa1t5NShandJLNZmof8ALRT7ZPiDHga/xHB/1btY/wC4Nqv/
AGTY8QRwl3+I4P8Aq3ax/wBwbVf+ybHiC8Jd/iOD/q3ax/3BtV/7JseILwl3+I4P+rdrH/cG1X/s
mx4gvCXf4jg/6t2sf9wbVf8Asmx4gvCXf4jg/wCrdrH/AHBtV/7JseILwl3+I4P+rdrH/cG1X/sm
x4gvCVGfWNNuP7/R9Vl/19E1Nv12uTjlI5GmMsIlzAK+PXrOJeEel6ui/wAq6LqgH3C2yJnfMpGO
uQX/AOI4P+rdrH/cG1X/ALJsHEE8Jd/iOD/q3ax/3BtV/wCybHiC8Jd/iOD/AKt2sf8AcG1X/smx
4gvCXf4jg/6t2sf9wbVf+ybHiC8Jd/iOD/q3ax/3BtV/7JseILwlr/EcH/Vu1j/uDar/ANk2PEF4
S7/EcH/Vu1j/ALg2q/8AZNjxBeEu/wARwf8AVu1j/uDar/2TYeILwl3+I4P+rdrH/cG1X/smx4gv
CXf4jg/6t2sf9wbVf+ybHiC8Jd/iOD/q3ax/3BtV/wCybHiC8Jd/iOD/AKt2sf8AcG1X/smx4gvC
Xf4jg/6t2sf9wbVf+ybHiC8Jd/iOD/q3ax/3BtV/7JseILwl3+I4f+rbrH/cG1T/ALJseILwl3+I
4f8Aq26x/wBwbVP+ybHiC8Jd/iOD/q26x/3BtU/7JseILwl3+I4P+rbrH/cG1T/smx4gvCXf4jg/
6tusf9wbVP8Asmx4gvCW01XWLwmLSNA1G6nNAGureTToVr3eS8WFqD/IRj7YOIJ4Syfyl5Ln068k
1rWrhb3Xp4/RX0gRbWsJPIw2wb4viIHORt3oNlFFECbZgP8A/9k=</xapGImg:image>
- </rdf:li>
- </rdf:Alt>
- </xap:Thumbnails>
- </rdf:Description>
- <rdf:Description rdf:about=""
- xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#">
- <xapMM:DocumentID>uuid:6F65E945118411DE9006D464A6D9D7E6</xapMM:DocumentID>
- <xapMM:InstanceID>uuid:6F65E946118411DE9006D464A6D9D7E6</xapMM:InstanceID>
- <xapMM:DerivedFrom rdf:parseType="Resource">
- <stRef:instanceID>uuid:c925a3b8-4fb3-11dd-afbe-0017f2c8c2cd</stRef:instanceID>
- <stRef:documentID>uuid:614E5F61510B11DDBAD4DD5E91ED0BB3</stRef:documentID>
- </xapMM:DerivedFrom>
- </rdf:Description>
- <rdf:Description rdf:about=""
- xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/">
- <photoshop:AuthorsPosition>Official "SBML Supported" Icon</photoshop:AuthorsPosition>
- <photoshop:CaptionWriter>Michael Huca</photoshop:CaptionWriter>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<?xpacket end="w"?>\xFF\xE2XICC_PROFILE--
-'
-=
-T
-j
-\x81
-\x98
-\xAE
-\xC5
-\xDC
-\xF3"9Qi\x80\x98\xB0\xC8\xE1\xF9*C\u\x8E\xA7\xC0\xD9\xF3
-
-
-&
-@
-Z
-t
-\x8E
-\xA9
-\xC3
-\xDE
-\xF8.Id\x9B\xB6\xD2\xEE %A^z\x96\xB3\xCF\xEC &Ca~\x9B\xB9\xD7\xF51Om\x8C\xAA\xC9\xE8&Ed\x84\xA3\xC3\xE3#Cc\x83\xA4\xC5\xE5'Ij\x8B\xAD\xCE\xF04Vx\x9B\xBD\xE0&Il\x8F\xB2\xD6\xFAAe\x89\xAE\xD2\xF7@e\x8A\xAF\xD5\xFA Ek\x91\xB7\xDD*Qw\x9E\xC5\xEC;c\x8A\xB2\xDA*R{\xA3\xCC\xF5Gp\x99\xC3\xEC@j\x94\xBE\xE9>i\x94\xBF\xEA A l \x98 \xC4 \xF0!!H!u!\xA1!\xCE!\xFB"'"U"\x82"\xAF"\xDD#
-#8#f#\x94#\xC2#\xF0$$M$|$\xAB$\xDA% %8%h%\x97%\xC7%\xF7&'&W&\x87&\xB7&\xE8''I'z'\xAB'\xDC(
-(?(q(\xA2(\xD4))8)k)\x9D)\xD0**5*h*\x9B*\xCF++6+i+\x9D+\xD1,,9,n,\xA2,\xD7--A-v-\xAB-\xE1..L.\x82.\xB7.\xEE/$/Z/\x91/\xC7/\xFE050l0\xA40\xDB11J1\x821\xBA1\xF22*2c2\x9B2\xD43
-3F33\xB83\xF14+4e4\x9E4\xD855M5\x875\xC25\xFD676r6\xAE6\xE97$7`7\x9C7\xD788P8\x8C8\xC899B99\xBC9\xF9:6:t:\xB2:\xEF;-;k;\xAA;\xE8<'<e<\xA4<\xE3="=a=\xA1=\xE0> >`>\xA0>\xE0?!?a?\xA2?\xE2@#@d@\xA6@\xE7A)AjA\xACA\xEEB0BrB\xB5B\xF7C:C}C\xC0DDGD\x8AD\xCEEEUE\x9AE\xDEF"FgF\xABF\xF0G5G{G\xC0HHKH\x91H\xD7IIcI\xA9I\xF0J7J}J\xC4KKSK\x9AK\xE2L*LrL\xBAMMJM\x93M\xDCN%NnN\xB7O-\x81k\x81͂0\x82\x92\x82\xF4\x83W\x83\xBA\x84\x84\x80\x84\xE3\x85G\x85\xAB\x86\x86r\x86ׇ;\x87\x9F\x88\x88i\x88Ή3\x89\x99\x89\xFE\x8Ad\x8Aʋ0\x8B\x96\x8B\xFC\x8Cc\x8Cʍ1\x8D\x98\x8D\xFF\x8Ef\x8EΏ6\x8F\x9E\x90\x90n\x90֑?\x91\xA8\x92\x92z\x92\xE3\x93M\x93\xB6\x94 \x94\x8A\x94\xF4\x95_\x95ɖ4\x96\x9F\x97
-\x97u\x97\xE0\x98L\x98\xB8\x99$\x99\x90\x99\xFC\x9Ah\x9A՛B\x9B\xAF\x9C\x9C\x89\x9C\xF7\x9Dd\x9DҞ@\x9E\xAE\x9F\x9F\x8B\x9F\xFA\xA0i\xA0ءG\xA1\xB6\xA2&\xA2\x96\xA3\xA3v\xA3\xE6\xA4V\xA4ǥ8\xA5\xA9\xA6\xA6\x8B\xA6\xFD\xA7n\xA7\xE0\xA8R\xA8ĩ7\xA9\xA9\xAA\xAA\x8F\xAB\xABu\xAB\xE9\xAC\\xACЭD\xAD\xB8\xAE-\xAE\xA1\xAF\xAF\x8B\xB0-\xBE\x84\xBE\xFF\xBFz\xBF\xF5\xC0p\xC0\xEC\xC1g\xC1\xE3\xC2_\xC2\xDB\xC3X\xC3\xD4\xC4Q\xC4\xCE\xC5K\xC5\xC8\xC6F\xC6\xC3\xC7Aǿ\xC8=ȼ\xC9:ɹ\xCA8ʷ\xCB6˶\xCC5̵\xCD5͵\xCE6ζ\xCF7ϸ\xD09к\xD1<Ѿ\xD2?\xD2\xC1\xD3D\xD3\xC6\xD4I\xD4\xCB\xD5N\xD5\xD1\xD6U\xD6\xD8\xD7\\xD7\xE0\xD8d\xD8\xE8\xD9l\xD9\xF1\xDAv\xDA\xFBۀ\xDC܊\xDDݖ\xDEޢ\xDF)߯\xE06\xE0\xBD\xE1D\xE1\xCC\xE2S\xE2\xDB\xE3c\xE3\xEB\xE4s\xE4\xFC\xE5\x84\xE6
-\xE6\x96\xE7\xE7\xA9\xE82\xE8\xBC\xE9F\xE9\xD0\xEA[\xEA\xE5\xEBp\xEB\xFB\xEC\x86\xED\xED\x9C\xEE(\xEE\xB4\xEF@\xEF\xCC\xF0X\xF0\xE5\xF1r\xF1\xFF\xF2\x8C\xF3\xF3\xA7\xF44\xF4\xC2\xF5P\xF5\xDE\xF6m\xF6\xFB\xF7\x8A\xF8\xF8\xA8\xF98\xF9\xC7\xFAW\xFA\xE7\xFBw\xFC\xFC\x98\xFD)\xFD\xBA\xFEK\xFE\xDC\xFFm\xFF\xFF\xFF\xEE---\xC1\xD15'\xE1S6\x82\xF1\x92\xA2DTsEF7Gc(UVW\xB2\xC2\xD2\xE2\xF2d\x83t\x93\x84e\xA3\xB3\xC3\xD3\xE3)8f\xF3u*9:HIJXYZghijvwxyz\x85\x86\x87\x88\x89\x8A\x94\x95\x96\x97\x98\x99\x9A\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xF4\xF5\xF6\xF7\xF8\xF9\xFA-s\x83\x93Ft\xC2\xD2\xE2\xF2UeuV7\x84\x85\xA3\xB3\xC3\xD3\xE3\xF3)\x94\xA4\xB4\xC4\xD4\xE4\x{115975}\xC5\xD5\xE5\xF5(GWf8v\x86\x96\xA6\xB6\xC6\xD6\xE6\xF6gw\x87\x97\xA7\xB7\xC7\xD7\xE7\xF7HXhx\x88\x98\xA8\xB8\xC8\xD8\xE8\xF89IYiy\x89\x99\xA9\xB9\xC9\xD9\xE9\xF9*:JZjz\x8A\x9A\xAA\xBA\xCA\xDA\xEA\xFA\xFF\xDA-\xFD\xB3O*\xBAj\_\x9Fb+NO\xE6\xDD\xC2?\xC3k\xDCg\x88\x8A\xD6;i\x9CP\xF9\xD5P\x8E\x82w\xDE\xE0\xF2N\xD9)\x83r\xABy\x81 \xAC\xB7\x90F\xD5E@j<\xFAq\xDA\xFFភ|to\xFA=\xDE\xB54\xAE\x9A\xA1\x92:\xE5\x92\xCCc*Y\xAF\xED{[\xFA\xF4\xEE\x97| \xA7\xA9\xDFu\xBB\xF7\xB0~V\xFC8\xC3\xC1\xFD\x85\x89\xDF\xEE7w\xC9ߎ{z \xF1\xC4\xDB\xE3\x8F\xA7\xCC|\x84\xEAͱB^\xAB;\x8A\xCFGU\xBD\xA8ha\x96\xBA\x93+\x951m#>]XQ\xB1\xC1\xBA\xB1\xAF\xEF\xCE\xCB\xFE\xE4\xA4\xBF\xEFf\xDC\xFF-@\xF9u\x86\xDC\xCF\\xE4\xECw\xED\xD6\xE9\xED\x9B\xFD
-6\xF0a\xA7\xA7\x85\x844\xF2,\xBDMI\xE85\xA4\xC1G\xF4\xFC{\xB4\xDD-\x81!\x909t\x80\xE9:\x96Bv\xB0r\xE5\x81\xEB\xBD{\xEFjt>\xD3;\x83>_#\x96\xAF3S\x{DB73}I$q\xE43ձ,fP\x8E\xE8\xEBI\x8E\xA2\xA3TԲ\xB2Ĭ\xAA\xC8\xF1\xC6\xF1G$rF\xE9\xCF\xAF\xD0X\xD6:\xA6aT\x89Mi_\xE2v\xA1\x80\x82\xD4$\x90\xA1\x98O\xE5\xFB\x9B\xB1\xFBe\xB1\xFE\xF4\xDDI\x96\xF6RV\xDE\xDDHL╥k\xA64\xA82HA
--KZ\xC8\xC0\xF8\x9AEY\xAD\xE4\xA0\xA8*BȠP\xA0\xD6l\xCC?\xD5\xFF-<\x91ؚ\x9AP
-g\xA8\xAB\xDDt\xAC}\xB2\xB7\xB4\x92\xE6\xD9\xEE\xEE/¢\xC8#\xA2\xC6\xB3U\xFC\xDD-b\xFF-\xD5\xFA\xBF\x87\xC3<z^\xEC_\x9A\xDDY\xD8\xFD\xB9\xD3\xDDG\xB4\xB1\xBB\xAB%Y\xDC\xFF-\xC1\xB3+Q\xAE\xA6%b\xA8\xE2\xA9@ZWa\x858vJ\x8E\xACsk/\xB2\xC6ү\xF7\xA7w\xEE\xCD\xC1_\xA0|P\xC5\xED\xFCxc\xCB\xA4\x96\x937XH\xFAjmk\xDDy\xC7\xED\xCF\xEF̓\xCB\xFE\xEA\xED--\xE0\xAF\xD7+\xFF-\xEE-\xC3Q\x8F\x9A\x82*\xF3@1X\xEC6 \xBCu5\x9E(d\xAA\xACw\xA9\xA84\xCAd\x99\x9DBF\xBA@.X;\xCF\xFE\xE8\xDFs\xDC\xED6\xB6\xE6\xDBoY\xD5\xE2<\x92d-HU-\x9A(\xA4ԜE2]6[\x80[\xB8\xE9\xEB-D\xDF*\x99\xD2SOB+Ǯ\x8D\xFB\xCCg\x98=\xB8\xB3IU݁kW\xAF\xA4T1~B\x8C}\xA0\xFAun\x9EO\xF1?\xEF\xF1_pwS%O\xAF^\xF2\x89\xFF-{\xFF\xDDΦwf%\x99ݍ\xC9<\x93\xEF\xA1\xB0Q\xA5h`N\xB9F*\xCC]\x89,MI9$\xF9\x9E\x8F\x97ğ\x8Fù\xF7ƌ\xBAM\xC8\xDA\xC9M\x92\xDD3\xC4\xCD\xD6y\xA4\x93\xF8n\x9Ed\xE2\x9B-$ku\xB1\x8E\x9A)J\xB2\xC9\xE3\xBCC\xEE\xA7>R\xF6-V\x84\xEE蔀\x85\xA0\xE5#\x81\x82(
-j젂\xBA\xBA\x9B\xFD\x8F\xF6\xB8\xFB\x93\xCD/\xC3/-\x92偡z\x93\xE1\xC0\xA7\x882\x95j\x91B\xB1\xAB\x90Ci\xAD\xF7\xE2\xE8q\x98Lu#AI\x8C\xC5\xE3\xA9⤠\xC7\xD0\xC15%%4*()\xE0\x858\xA3E-H\xD0DQ\x80\xAA\xA2\x80\xE8:\x9F\xE6_\xF7\xC7\xFE5\xED\x8At\xAB\xAFy\x97\xFD\xF1\xFF-?\xF0!b?\xFB
-\xF7Ǽ\xAB\xFB\xA3
-s\xAE\xE5\xFF-\xA3\xF0=\xE3W\xDEז\xEF-m\xFC\xD7
-\xD6k+\x93\x84\xBE\xA7Vc\xE8\x92ƪ>r\x9E\xB2\xEE\xC1\xCC_I\xCCܳ3R\xCBq2T\xFF-\x95ӎ3\xD1%\xD4KԐ\xA5t$\x8C\xA2\xBCh \xBF>\xBE\xAD\xDEc\xFE\xFA\xDF\xF1O|W\xA7]u\xC7T\x89\xFF-\x90\xB7\xF2\xE8܀\xFF-\xFA\x80\xBB\xBD\x9F\xEF=`\xC7\xDFu\x94\xDCl\x9B\xD4@\xE2v\xF4f&8\xD3\xF3P$\xF2\xFC}V\xD6\x94Y8\xFE\x9E\xF2Vf=az\xAF\xE7\xE1ץ\xDB=
-\x83Ȥq\xADn\xEE\xC9\xE6s\xF5\xD2w"*\xF9\xB0\xB41\xB3\x82} E\x8AG\xF4V\x91\xB8\xB9>\xF0_\xDE\xCD\xDAMǞ\xE7\xB5$\x98l\xE2\x8E%YA#\xB7T\x84W\xCC\xE5N\xBAk\xF7iء\xDA=\xAD\xB6\xBDP\xCE\xE1<ӹ\xF3Ć\xF4 y>d\xF4n\xBC\xDF\xEB\xB6>\xE2:\xFC\xBA\x9F\xFA\xF7\x9B\xFDo\xF6\xC7߫\xF2\xEB\xDDu\xE5\xFF-!\xA4\x96ME\x88\xB0 \xA6\xF7\xFC{[ez\xC6t\x89a\xFE\x98\x9A\xA0\x9F\x97U\x87\xBB\xE9E\xA5\xE3\xFA\xFB\x90\xED[\x87A\xF9G[\x8B\xFFF2w\xBE/w\xA8u\xD7\xA9+\xFE&\xAF\xE5\xEF\xFF-\xA0
-\xF4\x84I!\xA6F\xB1\xFEב\xFD\xFEG\xB9\xDB\xFB7\x8EywF\xD3\xE1\xAFΤ?\x95-\xA0?mX\xD3\xE4\xA7\xCCtP76:0\x92zG\xD0\xFE?\xDB\xFB\x9Dv˖\xA8\xEB7\xDB
-\xD8\xE8\x88|\x81\xEAlWe\xE1\x97R#\xA7\xCBc*[!\x80Ⱥ\xFF-\xFF-\xB8\xD9F\x92\xA0\xEF\xBD'2\xFE\xF8\xF7=\x8A\xAD\xB6\xD7j\xA8@\xE1\xE3MId\xCF\xFAOH\xF2e \xE7d\xFB\xB6\xF2\xF7\xEE\xAEG}\xE6e\xA5\xC6\xE5r\xCE\xFC**\xC7?\xD3\xF8\xAC\x98`F2t\xAE\xDF\xF1\xFCo/\xFC:\xF7\xFE\xED\xEB=\xF4l\xFF-\xF5J\xCF\xFA]_˿q\x8B\xCDV\xEA\xFF-\x85\xFBI\xA8\xFE\x80\xBB\x9B`\xD8O\xD5\xDD
-Ŀ:\x9A3\xFD\x8A4\x9F\xE3\xF5 \xB29\xF7\xAEy\xAA\xAA\xA6\xF2\xCF;%\x91\x88\xB9'\x8B-\xB4\xF48\xECu4tt4p)$\xAC4\xD4Ъ(\xB9\xB2\xA8\xF7\xCBۛ\x89\xEF.$\xBB\xB9f{\x99]\x9D\xD8\xF1fbY\x98\xFC\xC9$\x9E\xBBkoock\x95\xA2\xEDa\x8DQpT@T|\x80-\xCB \xF4\xAC\x80y\xF4\xC2n\xFB\xF9\xB1\xFB\x9B\xBF~3\xE4\xEB#J|\xEE3\xDC\xFB>\x9EIVd\xF0\xB3Ql\xED\xF3A\xDA\xD5UYvC "\xA2
-k\xAEu(%\xBE\xF6\xFC\xB3\xE2Y\xED|\xE1
-\x92ѻZJ@\xAFk\x83,$\xFAe\x98T⮣\x8F\x9F\xBA\xF71\x98\xEE\xB7U\x94\x8D2"\xDDF+N\xE5")~\xD2\xCA\xD1$'\x87
-\xB1\xBE\xE0\xFF-$*ƚ\xA6\x93\xFD\xB3s\xF6\x9E\xB9c\xCC\x9D\xDF9\xF3}\xD6\xE5\x96\xBA\xDC/Xƾ\xA8\xFAbO\xF6\xAB\xA5\xD9\xD7ѓ\xA2z\xC7\xD1]/\xD5}5\xB7\xDE3\x89\xEB\x83\xB5vM4\xF1\xA9\x8F\xEF\x9Fo\xE1\xE91\xD5YIWH&\xA7-Y\x9531\xF5<\xB2\xB3I\xF7\xC9\xDEeޮy\x93\x98ow\xFB\xA0|{˩&#\xF8u\xB9`\xA3䠅\x80\xD7Nyh\x87\x97\xF6+=\x8Eڞ
-\xA5\xB4q\xEB\xA1B\x96\xFBX\x82\xC7\xE6O_3m\xF5\xFFJ\xEF#\x9B\xB3O\xFB\xEF\xF0\xF6*\x8D(Q\xC0u\xCD+J\xE5߉\xE9'\x90\xA8n}\xAAA\xD2v=\xF9\x9A\x91g\xE7\xFA\xFB_\xF4Þ\x81\xAD\xC3T,\xFC\xFF-\x9A\xE7\xEF\xDC\xF7j\xB2\x8F\x94wM\xF5UyM\xB9xب\x8A"\x91-ւ\x96\xEB\xE6\xFFF7\x9C\xAA\xFF-\xE3]3\xD1Ƌmtw\xC9M\xB9I\xBD\xE91\x90ך\xC0\xD4͛\xA2I0\xBB\x96\x82\xB6\x8F͎\xCB<\xAA胨 P*"\xD2\xC1\xE2,\x8E\xAE\xD1(\xFB\xDA\xDD\xCD\xF67\x99\xA3 \xDD\xE15%\x81\xD4֏<\xA8r\x9A\xA0\x86\xA3\xE6\xFC\xB1\xED?\xBE[,|̖\xE91\x92\xAB\xE3\xC6Q\xBA\x81\xAA9J\xFCN\x95\xB2 \x842UX1\xB3
-\xE3\x89\xDEM\xAD\xBD\xE5X\xB9\xF1\xD1\xEEj\xC9 \xD9ג\xC7K\xB1\xFE\xB6\xA5\xF1\xE4
-\xBB\xDF\xC6*yہo6\x86J\xCA7\xFE\xAEuo_t\xA8\xF54\x9C\xB9\xBC\x9EIsOʲ\xC4W\xF9B=~]\xFB\x9B\xA1;Ch\xC7%D\xD8T\xCEPB\xA5\xA4\xAEۓ6IQV\xE4\xB3Q4t\xF9UEQ\xA8\xB7\xDB\xE8Q\xF5>\xE4]\x93\xDD.M\xDFbK\x83mtƁ'~ǫG_ 5\xD4\xF9\xA1nh\xF6ܮV\x8D\xAE$\xB3\xD6(*d\xB4c0-9\xADJEV\x91\x84\xF7\x89\xE4 7\xFEZNm\xDB\xC1;\x86֍\xE2(\xFCv\xCCAs\xF6\xC2S\xC8xfRru\x94urc\xE5\xAEj~Jܘ
-\xB3xu\xF0\x98\xFF-\xAE\xEDRAg\xFF-\xFB\xC5Ӷ\x97\xFE{ \xFF-V\x90\x9B\x85\xF4\x8B\xFF-\xBA*\xFA)\x92\xA6\x92\xAE\x96x\xCA\xC9
-E5DJ\xE8\xEAAVPG\xB7\x92\xCE\x98Z\xDE\xE1\xC1"\x95e"\xA1\x95\x85H\xE0A\x82\x8E\x9BK\xA9\xADgK\x9Bgh\xEEcp\xE8\xCAh\xCA\xCAj\xAC\xA4d@ \x8E\xAD\xE1:\xB5"\xEE^\x90\xEAn\xD4_\x9Bu\xF6\xD5\xDC\xF5\xF1S\xD2e\xF2xzI\xF3T8_\xE1\xF9s<\\xD8\xC6G\xBEJ\xF3\x8E\xC4ܱ\xCD{\x8F/\x9A鳼\x96%'\x89Dr\xBF\xDB&\x96\xFC\xFA\xEDG$\xF3\xE6\xBEO\xDB9\x93\xB7]\xED\x8C30\xDE52/\xFBWԿ\x97T\xA7\xFF-$\x94I\xF1\x8B\xA4@\xBF\xF1\xE7\xFF-\xFA \x94\xBF\xE1;]\xEEjv\xBF{\xFCo\xC9\xD53K\x83\xCBb\xFB\x8BhӼ\x8A\xEEh3pQ\xED\xEDa\xDB\xCB
-%v/"\xA2\x96\xBAV:Y\x89ro\xBD\x9F,\xF8w\xBBg7\xC2;eF\xB4\x94\xFF-\xB98';/}\xC0\xFE\x87\xFD\xBF\xFCk\xDE\xFE}e~\xAE\xBEx?=;\xB2o\x92_1\xBB۳\xE8j*2x\x9C\xE6\xFF-c{\x8F\xCC
-\xCD\\xF3\xB8\xEE\xF1\x92\xF0\xC9rR/:\xC5"\x8A\x80\xA8j2x\x93S\xBDg\xC3ޜ\x8B\xE3\xAF\xC5\xFE\x8E\xE9\x81
-\xC3]\xB1\xBA\xFB G\xB8j\x91\xA4\x9B\xBF'緥J$e\x95R\xB3v\xE5keS\x9B?,\xC6\xECy\x97\xCF\xFC\xC4\xDC\xDBΛ\x971V\xB1\ݹ\x8F\x8E"^\xC8G\xE5\xA0\xF2\xE1\xC0p\xEB\xA1\xFC\x8F\xB1W\xE5\xBFa\xA5$\xB7\xB6@\xFF-\xB5\xBEd\xDB\xDF\xFE?M\xDF\xFF-\xF0\xEA\xA4\xFE\xF1\xACƹryv%\x8F\xD7\xDF7=\xD0\xDB\xE5۽\xC0ݠ\xB8[^<\x82\xA7\xF0\xCD\xFA\xABO\x96\x97-\x83\xE6z!{\x970g\x91\xD077\xE7\xFDc8c\xB5讆G\xA0\xE1\xD6\xE9?\xCBv\x96?\xE0\xE7\xC72o3\xD4I\xB1\xBA#/\x99Xc\xB2y\xFC\xCEK\x80L\xA8\xFE8\xF15p\xAA4-\xFAZ]\xF63\x99?\xAB\xE6m\xD76\x97RY<\x86\x9B\x8A"T\xF9\x9B\xC2rN
@@ Diff output truncated at 100000 characters. @@
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|