peiyongz 2003/11/12 12:31:34
Modified: c/src/xercesc/validators/datatype
ENTITYDatatypeValidator.cpp IDDatatypeValidator.cpp
IDREFDatatypeValidator.cpp
Log:
Using ValidationContext to validate()
Revision Changes Path
1.8 +9 -25
xml-xerces/c/src/xercesc/validators/datatype/ENTITYDatatypeValidator.cpp
Index: ENTITYDatatypeValidator.cpp
===================================================================
RCS file:
/home/cvs/xml-xerces/c/src/xercesc/validators/datatype/ENTITYDatatypeValidator.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- ENTITYDatatypeValidator.cpp 30 Sep 2003 18:17:53 -0000 1.7
+++ ENTITYDatatypeValidator.cpp 12 Nov 2003 20:31:33 -0000 1.8
@@ -57,6 +57,9 @@
/*
* $Id$
* $Log$
+ * Revision 1.8 2003/11/12 20:31:33 peiyongz
+ * Using ValidationContext to validate()
+ *
* Revision 1.7 2003/09/30 18:17:53 peiyongz
* Implementation of Serialization/Deserialization
*
@@ -115,7 +118,6 @@
// ---------------------------------------------------------------------------
ENTITYDatatypeValidator::ENTITYDatatypeValidator(MemoryManager* const manager)
:StringDatatypeValidator(0, 0, 0, DatatypeValidator::ENTITY, manager)
-,fEntityDeclPool(0)
{}
ENTITYDatatypeValidator::ENTITYDatatypeValidator(
@@ -125,7 +127,6 @@
, const int finalSet
, MemoryManager* const manager)
:StringDatatypeValidator(baseValidator, facets, finalSet,
DatatypeValidator::ENTITY, manager)
-,fEntityDeclPool(0)
{
init(enums);
}
@@ -153,40 +154,23 @@
return ( XMLString::equals(lValue, rValue)? 0 : -1);
}
-void ENTITYDatatypeValidator::validate(const XMLCh* const content)
+void ENTITYDatatypeValidator::validate(const XMLCh* const content
+ , ValidationContext* const context)
{
// use StringDatatypeValidator (which in turn, invoke
// the baseValidator) to validate content against
// facets if any.
//
- StringDatatypeValidator::validate(content);
+ StringDatatypeValidator::validate(content, context);
//
// parse the entity iff an EntityDeclPool is provided
//
- if (fEntityDeclPool)
+ if (context)
{
- DTDEntityDecl* decl = fEntityDeclPool->getByKey(content);
-
- if (!decl ||
- (!decl->isUnparsed()) )
- {
- ThrowXML1(InvalidDatatypeValueException
- , XMLExcepts::VALUE_ENTITY_Invalid
- , content);
- }
-
- }
- else {
- ThrowXML1
- (
- InvalidDatatypeValueException
- , XMLExcepts::VALUE_ENTITY_Invalid
- , content
- );
+ context->checkEntity(content);
}
- return;
}
void ENTITYDatatypeValidator::checkValueSpace(const XMLCh* const content)
1.7 +9 -30
xml-xerces/c/src/xercesc/validators/datatype/IDDatatypeValidator.cpp
Index: IDDatatypeValidator.cpp
===================================================================
RCS file:
/home/cvs/xml-xerces/c/src/xercesc/validators/datatype/IDDatatypeValidator.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- IDDatatypeValidator.cpp 30 Sep 2003 18:17:53 -0000 1.6
+++ IDDatatypeValidator.cpp 12 Nov 2003 20:31:33 -0000 1.7
@@ -57,6 +57,9 @@
/*
* $Id$
* $Log$
+ * Revision 1.7 2003/11/12 20:31:33 peiyongz
+ * Using ValidationContext to validate()
+ *
* Revision 1.6 2003/09/30 18:17:53 peiyongz
* Implementation of Serialization/Deserialization
*
@@ -110,7 +113,6 @@
// ---------------------------------------------------------------------------
IDDatatypeValidator::IDDatatypeValidator(MemoryManager* const manager)
:StringDatatypeValidator(0, 0, 0, DatatypeValidator::ID, manager)
-,fIDRefList(0)
{}
IDDatatypeValidator::IDDatatypeValidator(
@@ -120,7 +122,6 @@
, const int finalSet
, MemoryManager* const manager)
:StringDatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::ID,
manager)
-,fIDRefList(0)
{
init(enums);
}
@@ -146,47 +147,25 @@
, const ValidatorType type
, MemoryManager* const manager)
:StringDatatypeValidator(baseValidator, facets, finalSet, type, manager)
-,fIDRefList(0)
{
// do not invoke init() here!!!
}
-void IDDatatypeValidator::validate(const XMLCh* const content)
+void IDDatatypeValidator::validate(const XMLCh* const content
+ , ValidationContext* const context)
{
// use StringDatatypeValidator (which in turn, invoke
// the baseValidator) to validate content against
// facets if any.
//
- StringDatatypeValidator::validate(content);
+ StringDatatypeValidator::validate(content, context);
// storing IDs to the global ID table
- if (fIDRefList)
- addId(content);
-}
-
-void IDDatatypeValidator::addId(const XMLCh * const content)
-{
-
- XMLRefInfo* find = fIDRefList->get(content);
- if (find)
+ if (context)
{
- if (find->getDeclared())
- {
- ThrowXML1(InvalidDatatypeValueException
- , XMLExcepts::VALUE_ID_Not_Unique
- , content);
- }
- }
- else
- {
- find = new (fMemoryManager) XMLRefInfo(content, false, false,
fMemoryManager);
- fIDRefList->put((void*)find->getRefName(), find);
+ context->addId(content);
}
- //
- // Mark it declared
- //
- find->setDeclared(true);
}
void IDDatatypeValidator::checkValueSpace(const XMLCh* const content)
1.7 +9 -23
xml-xerces/c/src/xercesc/validators/datatype/IDREFDatatypeValidator.cpp
Index: IDREFDatatypeValidator.cpp
===================================================================
RCS file:
/home/cvs/xml-xerces/c/src/xercesc/validators/datatype/IDREFDatatypeValidator.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- IDREFDatatypeValidator.cpp 30 Sep 2003 18:17:53 -0000 1.6
+++ IDREFDatatypeValidator.cpp 12 Nov 2003 20:31:33 -0000 1.7
@@ -57,6 +57,9 @@
/*
* $Id$
* $Log$
+ * Revision 1.7 2003/11/12 20:31:33 peiyongz
+ * Using ValidationContext to validate()
+ *
* Revision 1.6 2003/09/30 18:17:53 peiyongz
* Implementation of Serialization/Deserialization
*
@@ -108,7 +111,6 @@
// ---------------------------------------------------------------------------
IDREFDatatypeValidator::IDREFDatatypeValidator(MemoryManager* const manager)
:StringDatatypeValidator(0, 0, 0, DatatypeValidator::IDREF, manager)
-,fIDRefList(0)
{}
IDREFDatatypeValidator::IDREFDatatypeValidator(
@@ -118,7 +120,6 @@
, const int
finalSet
, MemoryManager* const
manager)
:StringDatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::IDREF,
manager)
-,fIDRefList(0)
{
init(enums);
}
@@ -144,42 +145,27 @@
, const ValidatorType type
, MemoryManager* const manager)
:StringDatatypeValidator(baseValidator, facets, finalSet, type, manager)
-,fIDRefList(0)
{
// do not invoke init() here!!!
}
-void IDREFDatatypeValidator::validate(const XMLCh* const content)
+void IDREFDatatypeValidator::validate(const XMLCh* const content
+ , ValidationContext* const context)
{
// use StringDatatypeValidator (which in turn, invoke
// the baseValidator) to validate content against
// facets if any.
//
- StringDatatypeValidator::validate(content);
+ StringDatatypeValidator::validate(content, context);
// this is different from java, since we always add, while
// in java, it is done as told. REVISIT.
//
- if (fIDRefList)
- addIdRef(content);
-}
-
-//
-// Add an IDREF to the fIDRefList
-//
-void IDREFDatatypeValidator::addIdRef(const XMLCh* const content)
-{
- XMLRefInfo* find = fIDRefList->get(content);
- if (!find)
+ if (context)
{
- find = new (fMemoryManager) XMLRefInfo(content, false, false,
fMemoryManager);
- fIDRefList->put((void*)find->getRefName(), find);
+ context->addIdRef(content);
}
- //
- // Mark it used
- //
- find->setUsed(true);
}
void IDREFDatatypeValidator::checkValueSpace(const XMLCh* const content)
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]