00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "BasicXMLable.hxx"
00023 #include <iostream>
00024
00025 using namespace CLAM;
00026
00027 BasicXMLable::BasicXMLable (const char * name, bool isXMLElement)
00028 {
00029 CLAM_BEGIN_CHECK
00030 if (name) {
00031 CLAM_ASSERT(*name, "Empty XML label.");
00032 for (const char * c=name; *c; c++) {
00033 if (isalpha(*c)) continue;
00034
00035 CLAM_ASSERT (c!=name, "Illegal start for an XML label, it needs a letter.");
00036
00037 if (isdigit(*c)) continue;
00038 if (*c=='-') continue;
00039 if (*c=='_') continue;
00040 if (*c==':') continue;
00041
00042 CLAM_ASSERT (false, "XML label defined with illegal character");
00043 }
00044 }
00045 CLAM_END_CHECK
00046 amIXMLElement=isXMLElement;
00047 myXMLName=name;
00048 }
00049
00050
00051 bool BasicXMLable::FulfilsInvariant()
00052 {
00053 if (myXMLName || !amIXMLElement) {
00054 std::cerr << "BasicXMLable Invariant failed: An element without name." << std::endl;
00055 return false;
00056 }
00057 return true;
00058 };
00059