A list for the developers of CellML tools

Text archives Help


[cellml-dev] [Fwd: Re: [cellmlteam] FW: r2098 - in CellML_DOM_API/trunk: MaLaES/sources VACSS/sources VACSS/tests]


Chronological Thread 
  • From: ak.miller at auckland.ac.nz (Andrew Miller)
  • Subject: [cellml-dev] [Fwd: Re: [cellmlteam] FW: r2098 - in CellML_DOM_API/trunk: MaLaES/sources VACSS/sources VACSS/tests]
  • Date: Fri, 15 Feb 2008 11:36:05 +1300

This is probably a better list to send this to - sorry for those who get
it twice.

-------- Original Message --------
Subject: Re: [cellmlteam] FW: r2098 - in CellML_DOM_API/trunk:
MaLaES/sources VACSS/sources VACSS/tests
Date: Fri, 15 Feb 2008 11:31:29 +1300
From: Andrew Miller <ak.miller at auckland.ac.nz>
Reply-To: team at cellml.org
To: team at cellml.org
References: <013501c86f57$c8a9aca0$59fd05e0$@britten at auckland.ac.nz>



Randall Britten wrote:
> Hi
>
> The log comment does not mention the validation code (a few new methods).
> Could perhaps make an additional "dummy" check-in with the log comment for
> that, or perhaps there is a better way of retrospectively putting a log
> comment on it?
>
Hi Randall,

Thanks for catching this, those changes were not supposed to have been
committed yet (a good reminder of why one should always do svn diff
before committing even for minor changes!).

I don't think it is worth backing this out - it passes the tests (mainly
because there aren't any that check the semantics validation is working,
which isn't yet the case) and at some stage I would have had to commit
it so Justin can continue work on the validation service.

Making empty checkins is not particularly helpful in the history - it
usually just confuses things more. I have instead edited the svn:log
revprop on revision 2098 to mention the validation changes.

Best regards,
Andrew

> Regards,
> Randall
>
>
>> -----Original Message-----
>> From: automated-notifications-bounces at cellml.org [mailto:automated-
>> notifications-bounces at cellml.org] On Behalf Of CellML Automated
>> Notifications
>> Sent: Thursday, 14 February 2008 4:43 p.m.
>> To: automated-notifications at cellml.org
>> Subject: r2098 - in CellML_DOM_API/trunk: MaLaES/sources VACSS/sources
>> VACSS/tests
>>
>> Author: amil082
>> Date: 2008-02-14 16:43:05 +1300 (Thu, 14 Feb 2008)
>> New Revision: 2098
>>
>> Modified:
>> CellML_DOM_API/trunk/MaLaES/sources/MaLaESImpl.cpp
>> CellML_DOM_API/trunk/VACSS/sources/VACSSImpl.cpp
>> CellML_DOM_API/trunk/VACSS/sources/VACSSImpl.hpp
>> CellML_DOM_API/trunk/VACSS/tests/ValidateCellML.cpp
>> Log:
>> Default degree for root should be 2. There might be a need to make the
>> degree context-sensitive if we are ever going to use degree from diff,
>> where it does default to 1, but we don't use this at present anyway.
>>
>> Modified: CellML_DOM_API/trunk/MaLaES/sources/MaLaESImpl.cpp
>> ===================================================================
>> --- CellML_DOM_API/trunk/MaLaES/sources/MaLaESImpl.cpp 2008-02-14
>> 01:08:40 UTC (rev 2097)
>> +++ CellML_DOM_API/trunk/MaLaES/sources/MaLaESImpl.cpp 2008-02-14
>> 03:43:05 UTC (rev 2098)
>> @@ -539,7 +539,7 @@
>> )
>> {
>> if (degree == NULL)
>> - mActive += L"1";
>> + mActive += L"2";
>> else
>> mTransform->RunTransformOnOperator(this, degree);
>> }
>>
>> Modified: CellML_DOM_API/trunk/VACSS/sources/VACSSImpl.cpp
>> ===================================================================
>> --- CellML_DOM_API/trunk/VACSS/sources/VACSSImpl.cpp 2008-02-14
>> 01:08:40 UTC (rev 2097)
>> +++ CellML_DOM_API/trunk/VACSS/sources/VACSSImpl.cpp 2008-02-14
>> 03:43:05 UTC (rev 2098)
>> @@ -1,6 +1,7 @@
>> #include "VACSSImpl.hpp"
>> #include "VACSSBootstrap.hpp"
>> #include <string>
>> +#include <set>
>>
>> /* The code special cases this to match the CellML namespace
>> * corresponding to the appropriate CellML version...
>> @@ -1697,8 +1698,156 @@
>> }
>>
>> void
>> +ModelValidation::validateNameUniqueness(iface::cellml_api::Model*
>> aModel)
>> +{
>> + // Firstly, we will validate the uniqueness of component names...
>> + RETURN_INTO_OBJREF(mc, iface::cellml_api::CellMLComponentSet,
>> + aModel->modelComponents());
>> + RETURN_INTO_OBJREF(cci, iface::cellml_api::CellMLComponentIterator,
>> + mc->iterateComponents());
>> +
>> + std::set<std::wstring> allNames;
>> +
>> + while (true)
>> + {
>> + RETURN_INTO_OBJREF(comp, iface::cellml_api::CellMLComponent,
>> + cci->nextComponent());
>> + if (comp == NULL)
>> + break;
>> +
>> + RETURN_INTO_WSTRING(n, comp->name());
>> +
>> + if (allNames.count(n) != 0)
>> + {
>> + SEMANTIC_ERROR(L"More than one component in the model named " +
>> n, comp);
>> + }
>> + allNames.insert(n);
>> + }
>> +
>> + allNames.clear();
>> +
>> + // Next, the uniqueness of all units names...
>> + RETURN_INTO_OBJREF(mu, iface::cellml_api::UnitsSet,
>> + aModel->modelUnits());
>> + RETURN_INTO_OBJREF(cui, iface::cellml_api::UnitsIterator,
>> + mu->iterateUnits());
>> +
>> + while (true)
>> + {
>> + RETURN_INTO_OBJREF(u, iface::cellml_api::Units,
>> + cui->nextUnits());
>> + if (u == NULL)
>> + break;
>> +
>> + RETURN_INTO_WSTRING(n, u->name());
>> +
>> + if (allNames.count(n) != 0)
>> + {
>> + SEMANTIC_ERROR(L"More than one component in the model named " +
>> n, u);
>> + }
>> + allNames.insert(n);
>> + }
>> +}
>> +
>> +void
>> +ModelValidation::validatePerModel(iface::cellml_api::Model* aModel)
>> +{
>> + validateNameUniqueness(aModel);
>> + // validateComponentRefs(aModel);
>> + // validateUnitsRefs(aModel);
>> +
>> + RETURN_INTO_OBJREF(cis, iface::cellml_api::CellMLImportSet, aModel-
>>
>>> imports());
>>>
>> + RETURN_INTO_OBJREF(cii, iface::cellml_api::CellMLImportIterator,
>> cis->iterateImports());
>> + while (true)
>> + {
>> + RETURN_INTO_OBJREF(ci, iface::cellml_api::CellMLImport, cii-
>>
>>> nextImport());
>>>
>> + if (ci == NULL)
>> + break;
>> +
>> + validatePerImport(ci);
>> +
>> + RETURN_INTO_OBJREF(m, iface::cellml_api::Model, ci-
>>
>>> importedModel());
>>>
>> + if (m != NULL)
>> + validatePerModel(m);
>> + }
>> +}
>> +
>> +void
>> +ModelValidation::validatePerImport(iface::cellml_api::CellMLImport*
>> aImport)
>> +{
>> + validateComponentRefs(aImport);
>> + validateUnitsRefs(aImport);
>> +}
>> +
>> +void
>> +ModelValidation::validateComponentRefs(iface::cellml_api::CellMLImport
>> * aImport)
>> +{
>> + RETURN_INTO_OBJREF(ics, iface::cellml_api::ImportComponentSet,
>> + aImport->components());
>> + RETURN_INTO_OBJREF(ici, iface::cellml_api::ImportComponentIterator,
>> + ics->iterateImportComponents());
>> + RETURN_INTO_OBJREF(m, iface::cellml_api::Model, aImport-
>>
>>> importedModel());
>>>
>> + if (m == NULL)
>> + return;
>> +
>> + RETURN_INTO_OBJREF(ccs, iface::cellml_api::CellMLComponentSet,
>> + m->modelComponents());
>> +
>> + while (true)
>> + {
>> + RETURN_INTO_OBJREF(ic, iface::cellml_api::ImportComponent,
>> + ici->nextImportComponent());
>> + if (ic == NULL)
>> + return;
>> +
>> + RETURN_INTO_WSTRING(cr, ic->componentRef());
>> + RETURN_INTO_OBJREF(rc, iface::cellml_api::CellMLComponent,
>> + ccs->getComponent(cr.c_str()));
>> + if (rc == NULL)
>> + {
>> + SEMANTIC_ERROR(L"component_ref " + cr + "refers to component
>> which "
>> + L"doesn't exist", ic);
>> + }
>> + }
>> +}
>> +
>> +void
>> +ModelValidation::validateUnitsRefs(iface::cellml_api::CellMLImport*
>> aImport)
>> +{
>> + RETURN_INTO_OBJREF(ius, iface::cellml_api::ImportUnitsSet,
>> + aImport->units());
>> + RETURN_INTO_OBJREF(iui, iface::cellml_api::ImportUnitsIterator,
>> + ius->iterateImportUnits());
>> + RETURN_INTO_OBJREF(m, iface::cellml_api::Model, aImport-
>>
>>> importedModel());
>>>
>> + if (m == NULL)
>> + return;
>> +
>> + RETURN_INTO_OBJREF(cus, iface::cellml_api::UnitsSet,
>> + m->modelUnits());
>> +
>> + while (true)
>> + {
>> + RETURN_INTO_OBJREF(iu, iface::cellml_api::ImportUnits,
>> + iui->nextImportUnits());
>> + if (iu == NULL)
>> + return;
>> +
>> + RETURN_INTO_WSTRING(ur, iu->unitsRef());
>> + RETURN_INTO_OBJREF(ru, iface::cellml_api::Units,
>> + cus->getUnits(ur.c_str()));
>> + if (ru == NULL)
>> + {
>> + SEMANTIC_ERROR(L"units_ref " + ur + "refers to units which "
>> + L"don't exist", iu);
>> + }
>> + }
>> +}
>> +
>> +void
>> ModelValidation::validateSemantics()
>> {
>> + // Firstly do things that are done per import...
>> + validatePerModel(mModel);
>> }
>>
>> iface::cellml_services::CellMLValidityErrorSet*
>>
>> Modified: CellML_DOM_API/trunk/VACSS/sources/VACSSImpl.hpp
>> ===================================================================
>> --- CellML_DOM_API/trunk/VACSS/sources/VACSSImpl.hpp 2008-02-14
>> 01:08:40 UTC (rev 2097)
>> +++ CellML_DOM_API/trunk/VACSS/sources/VACSSImpl.hpp 2008-02-14
>> 03:43:05 UTC (rev 2098)
>> @@ -199,6 +199,11 @@
>>
>> void validateRepresentation(iface::dom::Element* aTop);
>> void validateSemantics();
>> + void validatePerModel(iface::cellml_api::Model* aModel);
>> + void validatePerImport(iface::cellml_api::CellMLImport* aImport);
>> + void validateNameUniqueness(iface::cellml_api::Model* aModel);
>> + void validateComponentRefs(iface::cellml_api::CellMLImport* aImport);
>> + void validateUnitsRefs(iface::cellml_api::CellMLImport* aImport);
>>
>> struct ReprValidationAttribute;
>> struct ReprValidationElement
>>
>> Modified: CellML_DOM_API/trunk/VACSS/tests/ValidateCellML.cpp
>> ===================================================================
>> --- CellML_DOM_API/trunk/VACSS/tests/ValidateCellML.cpp 2008-02-14
>> 01:08:40 UTC (rev 2097)
>> +++ CellML_DOM_API/trunk/VACSS/tests/ValidateCellML.cpp 2008-02-14
>> 03:43:05 UTC (rev 2098)
>> @@ -43,7 +43,16 @@
>> iface::cellml_services::CellMLSemanticValidityError* csve
>> )
>> {
>> - return L"";
>> + RETURN_INTO_OBJREF(ee, iface::cellml_api::CellMLElement, csve-
>>
>>> errorElement());
>>>
>> + DECLARE_QUERY_INTERFACE_OBJREF(eede, ee,
>> cellml_api::CellMLDOMElement);
>> + RETURN_INTO_OBJREF(de, iface::dom::Element, eede->domElement());
>> +
>> + uint32_t col;
>> + uint32_t row = vacss->getPositionInXML(de, 0, &col);
>> + wchar_t buf[40];
>> + swprintf(buf, 40, L"line %u, column %u", row, col);
>> +
>> + return buf;
>> }
>>
>> void
>> @@ -71,6 +80,8 @@
>>
>> if (csve != NULL)
>> location = ConvertSemanticValidityError(vacss, model, csve);
>> + else
>> + location = L"*unknown - can't QI to
>> CellMLSemanticValidityError*";
>> }
>>
>> printf("%S%S at %S\n",
>>
>> _______________________________________________
>> automated-notifications mailing list
>> automated-notifications at cellml.org
>> http://www.cellml.org/mailman/listinfo/automated-notifications
>>
>
>

_______________________________________________
team mailing list
team at cellml.org
http://www.cellml.org/mailman/listinfo/team





Archive powered by MHonArc 2.6.18.

Top of page