19 #include <xercesc/sax2/Attributes.hpp> 
   20 #include <xercesc/sax2/DefaultHandler.hpp> 
   21 #include <xercesc/util/XMLString.hpp> 
   30   class ControlledVocabulary;
 
   32   class MetaInfoInterface;
 
   33   class ProteinIdentification;
 
   38     #define CONST_XMLCH(s) reinterpret_cast<const ::XMLCh*>(u ## s) 
   40     static_assert(
sizeof(::
XMLCh) == 
sizeof(char16_t),
 
   41                   "XMLCh is not sized correctly for UTF-16.");
 
   55         if (
nullptr == item->getOwnerDocument())
 
   69           : item_(item, doRelease_ )
 
   85         item_.reset(item, doRelease_ );
 
   99         return (
nullptr == item_.get());
 
  103     template <
typename T>
 
  113         if (
nullptr == item->getOwnerDocument())
 
  149         std::swap(item_, other.item_);
 
  193         return (
nullptr == item_);
 
  222         return fromNative_(str.c_str());
 
  234         return toNative_(str.
get());
 
  248         return fromNative_(str).get();
 
  254         return fromNative_(str.c_str()).get();
 
  260         return fromNative_(str.c_str()).get();
 
  266         return fromNative_(str);
 
  272         return fromNative_(str.c_str());
 
  278         return fromNative_(str.c_str());
 
  284         return toNative_(str);
 
  301       public xercesc::DefaultHandler
 
  311           Exception::BaseException(file, line, function)
 
  328         LD_COUNTS_WITHOPTIONS 
 
  412         if (type == 
"xsd:double" || type == 
"xsd:float" || type == 
"xsd:decimal")
 
  417         else if (type == 
"xsd:byte" ||          
 
  419                  type == 
"xsd:unsignedShort" || 
 
  420                  type == 
"xsd:short" ||         
 
  421                  type == 
"xsd:unsignedByte" || type == 
"xsd:unsignedInt")
 
  426         else if (type == 
"xsd:long" || type == 
"xsd:unsignedLong" ||       
 
  427                  type == 
"xsd:integer" || type == 
"xsd:negativeInteger" || 
 
  428                  type == 
"xsd:nonNegativeInteger" || type == 
"xsd:nonPositiveInteger" || type == 
"xsd:positiveInteger")
 
  455                                const String& unit_accession) 
const;
 
  495         return xercesc::XMLString::compareString(a, b) == 0;
 
  531           error(LOAD, 
String(
"Int conversion error of \"") + in + 
"\"");
 
  539         return xercesc::XMLString::parseInt(in);
 
  557           error(LOAD, 
String(
"UInt conversion error of \"") + in + 
"\"");
 
  572           error(LOAD, 
String(
"Double conversion error of \"") + in + 
"\"");
 
  587           error(LOAD, 
String(
"Float conversion error of \"") + in + 
"\"");
 
  601         if (in == 
"true" || in == 
"TRUE" || in == 
"True" || in == 
"1")
 
  605         else if (in == 
"false" || in == 
"FALSE" || in == 
"False" || in == 
"0")
 
  611           error(LOAD, 
String(
"Boolean conversion error of \"") + in + 
"\"");
 
  620         if (!date_string.empty())
 
  626             date_string = date_string.
substr(0, 19);
 
  627             date_time.
set(date_string);
 
  631             error(LOAD, 
String(
"DateTime conversion error of \"") + date_string + 
"\"");
 
  646         if (val == 
nullptr) fatalError(LOAD, 
String(
"Required attribute '") + name + 
"' not present!");
 
  654         if (val == 
nullptr) fatalError(LOAD, 
String(
"Required attribute '") + name + 
"' not present!");
 
  655         return xercesc::XMLString::parseInt(val);
 
  662         if (val == 
nullptr) fatalError(LOAD, 
String(
"Required attribute '") + name + 
"' not present!");
 
  669         String tmp(expectList_(attributeAsString_(a, name)));
 
  670         return ListUtils::create<double>(tmp.
substr(1, tmp.size() - 2));
 
  676         String tmp(expectList_(attributeAsString_(a, name)));
 
  677         return ListUtils::create<Int>(tmp.
substr(1, tmp.size() - 2));
 
  683         String tmp(expectList_(attributeAsString_(a, name)));         
 
  684         StringList tmp_list = ListUtils::create<String>(tmp.
substr(1, tmp.size() - 2)); 
 
  688           for (
String& s : tmp_list)
 
  690             s.substitute(
"\\|", 
",");
 
  722           value = xercesc::XMLString::parseInt(val);
 
  738           value = xercesc::XMLString::parseInt(val);
 
  770           value = attributeAsDoubleList_(a, name);
 
  786           value = attributeAsStringList_(a, name);
 
  802           value = attributeAsIntList_(a, name);
 
  811         const XMLCh * val = a.getValue(name);
 
  812         if (val == 
nullptr) fatalError(LOAD, 
String(
"Required attribute '") + sm_.
convert(name) + 
"' not present!");
 
  819         const XMLCh * val = a.getValue(name);
 
  820         if (val == 
nullptr) fatalError(LOAD, 
String(
"Required attribute '") + sm_.
convert(name) + 
"' not present!");
 
  821         return xercesc::XMLString::parseInt(val);
 
  827         const XMLCh * val = a.getValue(name);
 
  828         if (val == 
nullptr) fatalError(LOAD, 
String(
"Required attribute '") + sm_.
convert(name) + 
"' not present!");
 
  829         return sm_.
convert(val).toDouble();
 
  835         String tmp(expectList_(attributeAsString_(a, name)));
 
  836         return ListUtils::create<double>(tmp.
substr(1, tmp.size() - 2));
 
  842         String tmp(expectList_(attributeAsString_(a, name)));
 
  843         return ListUtils::create<Int>(tmp.
substr(1, tmp.size() - 2));
 
  849         String tmp(expectList_(attributeAsString_(a, name)));
 
  850         StringList tmp_list = ListUtils::create<String>(tmp.
substr(1, tmp.size() - 2)); 
 
  854           for (
String& s : tmp_list)
 
  856             s.substitute(
"\\|", 
",");
 
  865         const XMLCh * val = a.getValue(name);
 
  869           return !value.empty();
 
  877         const XMLCh * val = a.getValue(name);
 
  880           value = xercesc::XMLString::parseInt(val);
 
  889         const XMLCh * val = a.getValue(name);
 
  892           value = xercesc::XMLString::parseInt(val);
 
  901         const XMLCh * val = a.getValue(name);
 
  904           value = sm_.
convert(val).toDouble();
 
  917         const XMLCh * val = a.getValue(name);
 
  920           value = attributeAsDoubleList_(a, name);
 
  933         const XMLCh * val = a.getValue(name);
 
  936           value = attributeAsIntList_(a, name);
 
  949         const XMLCh * val = a.getValue(name);
 
  952           value = attributeAsStringList_(a, name);
 
  968           fatalError(LOAD, 
String(
"List argument is not a string representation of a list!"));
 
char16_t XMLCh
Definition: ClassTest.h:28
 
Representation of controlled vocabulary term.
Definition: CVTerm.h:27
 
Definition: ControlledVocabulary.h:29
 
Class to hold strings, numeric values, lists of strings and lists of numeric values.
Definition: DataValue.h:33
 
DateTime Class.
Definition: DateTime.h:33
 
void set(UInt month, UInt day, UInt year, UInt hour, UInt minute, UInt second)
sets data from six integers
 
Exception base class.
Definition: Exception.h:63
 
Invalid conversion exception.
Definition: Exception.h:330
 
Parse Error exception.
Definition: Exception.h:592
 
Definition: XMLHandler.h:209
 
static unique_xerces_ptr< XMLCh > convertPtr(const String &str)
Transcode the supplied OpenMS string to a xerces string pointer.
Definition: XMLHandler.h:276
 
static XercesString convert(const String &str)
Transcode the supplied OpenMS string to a xerces string.
Definition: XMLHandler.h:258
 
static unique_xerces_ptr< XMLCh > convertPtr(const char *str)
Transcode the supplied C string to a xerces string pointer.
Definition: XMLHandler.h:264
 
static unique_xerces_ptr< XMLCh > fromNative_(const String &str)
Definition: XMLHandler.h:220
 
static String convert(const XMLCh *str)
Transcode the supplied XMLCh* to a String.
Definition: XMLHandler.h:282
 
static String toNative_(const XMLCh *str)
Definition: XMLHandler.h:226
 
std::basic_string< XMLCh > XercesString
Definition: XMLHandler.h:211
 
static unique_xerces_ptr< XMLCh > fromNative_(const char *str)
Definition: XMLHandler.h:214
 
~StringManager()
Destructor.
 
static XercesString convert(const std::string &str)
Transcode the supplied C++ string to a xerces string.
Definition: XMLHandler.h:252
 
static XercesString convert(const char *str)
Transcode the supplied C string to a xerces string.
Definition: XMLHandler.h:246
 
static String toNative_(const unique_xerces_ptr< XMLCh > &str)
Definition: XMLHandler.h:232
 
StringManager()
Constructor.
 
static void appendASCII(const XMLCh *str, const XMLSize_t length, String &result)
Transcodes the supplied XMLCh* and appends it to the OpenMS String.
 
static unique_xerces_ptr< XMLCh > convertPtr(const std::string &str)
Transcode the supplied C++ string to a xerces string pointer.
Definition: XMLHandler.h:270
 
Exception that is thrown if the parsing is ended by some event (e.g. if only a prefix of the XML file...
Definition: XMLHandler.h:308
 
EndParsingSoftly(const char *file, int line, const char *function)
Definition: XMLHandler.h:310
 
Base class for XML handlers.
Definition: XMLHandler.h:302
 
IntList attributeAsIntList_(const xercesc::Attributes &a, const XMLCh *name) const
Converts an attribute to a IntList.
Definition: XMLHandler.h:840
 
virtual LOADDETAIL getLoadDetail() const
handler which support partial loading, implement this method
 
std::vector< String > open_tags_
Stack of open XML tags.
Definition: XMLHandler.h:486
 
void startElement(const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const xercesc::Attributes &attrs) override
Parsing method for opening tags.
 
void warning(const xercesc::SAXParseException &exception) override
 
bool optionalAttributeAsInt_(Int &value, const xercesc::Attributes &a, const XMLCh *name) const
Assigns the attribute content to the Int value if the attribute is present.
Definition: XMLHandler.h:875
 
XMLHandler(const String &filename, const String &version)
Default constructor.
 
bool optionalAttributeAsStringList_(StringList &value, const xercesc::Attributes &a, const char *name) const
Assigns the attribute content to the StringList value if the attribute is present.
Definition: XMLHandler.h:781
 
LOADDETAIL load_detail_
parse only until total number of scans and chroms have been determined from attributes
Definition: XMLHandler.h:489
 
Int asInt_(const String &in) const
Conversion of a String to an integer value.
Definition: XMLHandler.h:522
 
bool optionalAttributeAsString_(String &value, const xercesc::Attributes &a, const XMLCh *name) const
Assigns the attribute content to the String value if the attribute is present.
Definition: XMLHandler.h:863
 
StringList attributeAsStringList_(const xercesc::Attributes &a, const XMLCh *name) const
Converts an attribute to a StringList.
Definition: XMLHandler.h:847
 
DoubleList attributeAsDoubleList_(const xercesc::Attributes &a, const XMLCh *name) const
Converts an attribute to a DoubleList.
Definition: XMLHandler.h:833
 
bool optionalAttributeAsUInt_(UInt &value, const xercesc::Attributes &a, const char *name) const
Assigns the attribute content to the UInt value if the attribute is present.
Definition: XMLHandler.h:733
 
virtual void setLoadDetail(const LOADDETAIL d)
handler which support partial loading, implement this method
 
void checkUniqueIdentifiers_(const std::vector< ProteinIdentification > &prot_ids) const
 
XMLHandler()
Not implemented.
 
void endElement(const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname) override
Parsing method for closing tags.
 
bool asBool_(const String &in) const
Conversion of a string to a boolean value.
Definition: XMLHandler.h:599
 
String file_
File name.
Definition: XMLHandler.h:473
 
static DataValue fromXSDString(const String &type, const String &value)
Convert an XSD type (e.g. 'xsd:double') to a DataValue.
Definition: XMLHandler.h:408
 
void fatalError(ActionMode mode, const String &msg, UInt line=0, UInt column=0) const
Fatal error handler. Throws a ParseError exception.
 
bool optionalAttributeAsIntList_(IntList &value, const xercesc::Attributes &a, const XMLCh *name) const
Assigns the attribute content to the IntList value if the attribute is present.
Definition: XMLHandler.h:931
 
String version_
Schema version.
Definition: XMLHandler.h:476
 
LOADDETAIL
Definition: XMLHandler.h:325
 
@ LD_RAWCOUNTS
Definition: XMLHandler.h:327
 
@ LD_ALLDATA
Definition: XMLHandler.h:326
 
bool equal_(const XMLCh *a, const XMLCh *b) const
Returns if two Xerces strings are equal.
Definition: XMLHandler.h:493
 
UInt asUInt_(const String &in) const
Conversion of a String to an unsigned integer value.
Definition: XMLHandler.h:543
 
String attributeAsString_(const xercesc::Attributes &a, const char *name) const
Converts an attribute to a String.
Definition: XMLHandler.h:643
 
bool optionalAttributeAsStringList_(StringList &value, const xercesc::Attributes &a, const XMLCh *name) const
Assigns the attribute content to the StringList value if the attribute is present.
Definition: XMLHandler.h:947
 
StringList attributeAsStringList_(const xercesc::Attributes &a, const char *name) const
Converts an attribute to an StringList.
Definition: XMLHandler.h:681
 
void warning(ActionMode mode, const String &msg, UInt line=0, UInt column=0) const
Warning handler.
 
std::vector< std::vector< String > > cv_terms_
Array of CV term lists (one sublist denotes one term and it's children)
Definition: XMLHandler.h:510
 
ActionMode
Action to set the current mode (for error messages)
Definition: XMLHandler.h:319
 
@ LOAD
Loading a file.
Definition: XMLHandler.h:320
 
DoubleList attributeAsDoubleList_(const xercesc::Attributes &a, const char *name) const
Converts an attribute to a DoubleList.
Definition: XMLHandler.h:667
 
bool optionalAttributeAsDouble_(double &value, const xercesc::Attributes &a, const XMLCh *name) const
Assigns the attribute content to the double value if the attribute is present.
Definition: XMLHandler.h:899
 
Int attributeAsInt_(const xercesc::Attributes &a, const XMLCh *name) const
Converts an attribute to a Int.
Definition: XMLHandler.h:817
 
void writeUserParam_(const String &tag_name, std::ostream &os, const MetaInfoInterface &meta, UInt indent) const
Writes the content of MetaInfoInterface to the file.
 
Int asInt_(const XMLCh *in) const
Conversion of a Xerces string to an integer value.
Definition: XMLHandler.h:537
 
Int attributeAsInt_(const xercesc::Attributes &a, const char *name) const
Converts an attribute to a Int.
Definition: XMLHandler.h:651
 
bool optionalAttributeAsUInt_(UInt &value, const xercesc::Attributes &a, const XMLCh *name) const
Assigns the attribute content to the UInt value if the attribute is present.
Definition: XMLHandler.h:887
 
bool optionalAttributeAsDoubleList_(DoubleList &value, const xercesc::Attributes &a, const XMLCh *name) const
Assigns the attribute content to the DoubleList value if the attribute is present.
Definition: XMLHandler.h:915
 
DataValue cvParamToValue(const ControlledVocabulary &cv, const String &parent_tag, const String &accession, const String &name, const String &value, const String &unit_accession) const
Convert the value of a <cvParam value=.> (as commonly found in PSI schemata) to the DataValue with th...
 
IntList attributeAsIntList_(const xercesc::Attributes &a, const char *name) const
Converts an attribute to an IntList.
Definition: XMLHandler.h:674
 
StringManager sm_
Helper class for string conversion.
Definition: XMLHandler.h:479
 
void fatalError(const xercesc::SAXParseException &exception) override
 
static String writeXMLEscape(const String &to_escape)
Escapes a string and returns the escaped string.
Definition: XMLHandler.h:382
 
double attributeAsDouble_(const xercesc::Attributes &a, const char *name) const
Converts an attribute to a double.
Definition: XMLHandler.h:659
 
SignedSize cvStringToEnum_(const Size section, const String &term, const char *message, const SignedSize result_on_error=0)
 
~XMLHandler() override
Destructor.
 
bool optionalAttributeAsDouble_(double &value, const xercesc::Attributes &a, const char *name) const
Assigns the attribute content to the double value if the attribute is present.
Definition: XMLHandler.h:749
 
DataValue cvParamToValue(const ControlledVocabulary &cv, const CVTerm &raw_term) const
Convert the value of a <cvParam value=.> (as commonly found in PSI schemata) to the DataValue with th...
 
virtual void writeTo(std::ostream &)
Writes the contents to a stream.
 
bool optionalAttributeAsDoubleList_(DoubleList &value, const xercesc::Attributes &a, const char *name) const
Assigns the attribute content to the DoubleList value if the attribute is present.
Definition: XMLHandler.h:765
 
String attributeAsString_(const xercesc::Attributes &a, const XMLCh *name) const
Converts an attribute to a String.
Definition: XMLHandler.h:809
 
void reset()
Release internal memory used for parsing (call.
 
const String & expectList_(const String &str) const
Definition: XMLHandler.h:964
 
void characters(const XMLCh *const chars, const XMLSize_t length) override
Parsing method for character data.
 
void error(ActionMode mode, const String &msg, UInt line=0, UInt column=0) const
Error handler for recoverable errors.
 
DateTime asDateTime_(String date_string) const
Conversion of a xs:datetime string to a DateTime value.
Definition: XMLHandler.h:617
 
double attributeAsDouble_(const xercesc::Attributes &a, const XMLCh *name) const
Converts an attribute to a double.
Definition: XMLHandler.h:825
 
bool optionalAttributeAsString_(String &value, const xercesc::Attributes &a, const char *name) const
Assigns the attribute content to the String value if the attribute is present.
Definition: XMLHandler.h:701
 
bool optionalAttributeAsIntList_(IntList &value, const xercesc::Attributes &a, const char *name) const
Assigns the attribute content to the IntList value if the attribute is present.
Definition: XMLHandler.h:797
 
bool optionalAttributeAsInt_(Int &value, const xercesc::Attributes &a, const char *name) const
Assigns the attribute content to the Int value if the attribute is present.
Definition: XMLHandler.h:717
 
double asDouble_(const String &in) const
Conversion of a String to a double value.
Definition: XMLHandler.h:563
 
void error(const xercesc::SAXParseException &exception) override
 
float asFloat_(const String &in) const
Conversion of a String to a float value.
Definition: XMLHandler.h:578
 
Definition: XMLHandler.h:49
 
std::shared_ptr< T > item_
Definition: XMLHandler.h:63
 
static void doRelease_(char *item)
 
shared_xerces_ptr(T *item)
Definition: XMLHandler.h:68
 
static void doRelease_(XMLCh *item)
 
bool is_released() const
Definition: XMLHandler.h:97
 
static void doRelease_(U *item)
Definition: XMLHandler.h:52
 
T * get()
Definition: XMLHandler.h:88
 
const T * get() const
Definition: XMLHandler.h:92
 
void assign(T *item)
Definition: XMLHandler.h:83
 
shared_xerces_ptr()=default
 
void reset()
Definition: XMLHandler.h:78
 
shared_xerces_ptr & operator=(T *item)
Definition: XMLHandler.h:72
 
Definition: XMLHandler.h:105
 
T * item_
Definition: XMLHandler.h:120
 
unique_xerces_ptr & operator=(const unique_xerces_ptr< T > &)=delete
 
void operator=(T *i)
Definition: XMLHandler.h:153
 
void xerces_release()
Definition: XMLHandler.h:159
 
unique_xerces_ptr(T *i)
Definition: XMLHandler.h:132
 
void swap(unique_xerces_ptr< T > &other) noexcept
Definition: XMLHandler.h:147
 
void assign(T *i)
Definition: XMLHandler.h:178
 
static void doRelease_(XMLCh *&item)
 
bool is_released() const
Definition: XMLHandler.h:191
 
T * get() const
Definition: XMLHandler.h:185
 
unique_xerces_ptr()
Definition: XMLHandler.h:128
 
unique_xerces_ptr(unique_xerces_ptr< T > &&other) noexcept
Definition: XMLHandler.h:141
 
unique_xerces_ptr(const unique_xerces_ptr< T > &)=delete
 
static void doRelease_(char *&item)
 
~unique_xerces_ptr()
Definition: XMLHandler.h:136
 
T * yield()
Definition: XMLHandler.h:170
 
static void doRelease_(U *&item)
Definition: XMLHandler.h:109
 
A more convenient string class.
Definition: String.h:34
 
String substr(size_t pos=0, size_t n=npos) const
Wrapper for the STL substr() method. Returns a String object with its contents initialized to a subst...
 
bool hasPrefix(const String &string) const
true if String begins with string, false otherwise
 
bool hasSubstring(const String &string) const
true if String contains the string, false otherwise
 
Int64 toInt64() const
Conversion to Int64.
 
bool has(Byte byte) const
true if String contains the byte, false otherwise
 
Int toInt() const
Conversion to Int.
 
double toDouble() const
Conversion to double.
 
Int32 toInt32() const
Conversion to Int32.
 
String & trim()
removes whitespaces (space, tab, line feed, carriage return) at the beginning and the end of the stri...
 
String & substitute(char from, char to)
Replaces all occurrences of the character from by the character to.
 
bool hasSuffix(const String &string) const
true if String ends with string, false otherwise
 
float toFloat() const
Conversion to float.
 
int Int
Signed integer type.
Definition: Types.h:72
 
unsigned int UInt
Unsigned integer type.
Definition: Types.h:64
 
ptrdiff_t SignedSize
Signed Size type e.g. used as pointer difference.
Definition: Types.h:104
 
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:97
 
std::vector< Int > IntList
Vector of signed integers.
Definition: ListUtils.h:29
 
std::vector< String > StringList
Vector of String.
Definition: ListUtils.h:44
 
std::vector< double > DoubleList
Vector of double precision real types.
Definition: ListUtils.h:36
 
int exception
(Used by various macros. Indicates a rough category of the exception being caught....
 
Main OpenMS namespace.
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19