mirror of
https://github.com/tfussell/xlnt.git
synced 2024-03-22 13:11:17 +08:00
87 lines
2.0 KiB
Plaintext
87 lines
2.0 KiB
Plaintext
|
// file : xml/qname -*- C++ -*-
|
||
|
// copyright : Copyright (c) 2013-2017 Code Synthesis Tools CC
|
||
|
// license : MIT; see accompanying LICENSE file
|
||
|
|
||
|
#ifndef XML_QNAME
|
||
|
#define XML_QNAME
|
||
|
|
||
|
#include <xml/details/pre.hxx>
|
||
|
|
||
|
#include <string>
|
||
|
#include <iosfwd>
|
||
|
|
||
|
#include <xml/forward>
|
||
|
|
||
|
#include <xml/details/export.hxx>
|
||
|
|
||
|
namespace xml
|
||
|
{
|
||
|
// Note that the optional prefix is just a "syntactic sugar". In
|
||
|
// particular, it is ignored by the comparison operators and the
|
||
|
// std::ostream insertion operator.
|
||
|
//
|
||
|
class LIBSTUDXML_EXPORT qname
|
||
|
{
|
||
|
public:
|
||
|
qname () {}
|
||
|
qname (const std::string& name): name_ (name) {}
|
||
|
qname (const std::string& ns, const std::string& name)
|
||
|
: ns_ (ns), name_ (name) {}
|
||
|
qname (const std::string& ns,
|
||
|
const std::string& name,
|
||
|
const std::string& prefix)
|
||
|
: ns_ (ns), name_ (name), prefix_ (prefix) {}
|
||
|
|
||
|
const std::string& namespace_ () const {return ns_;}
|
||
|
const std::string& name () const {return name_;}
|
||
|
const std::string& prefix () const {return prefix_;}
|
||
|
|
||
|
std::string& namespace_ () {return ns_;}
|
||
|
std::string& name () {return name_;}
|
||
|
std::string& prefix () {return prefix_;}
|
||
|
|
||
|
bool
|
||
|
empty () const {return name_.empty () && ns_.empty ();}
|
||
|
|
||
|
// String representation in the [<namespace>#]<name> form.
|
||
|
//
|
||
|
std::string
|
||
|
string () const;
|
||
|
|
||
|
// Note that comparison operators ignore prefixes.
|
||
|
//
|
||
|
public:
|
||
|
friend bool
|
||
|
operator< (const qname& x, const qname& y)
|
||
|
{
|
||
|
return x.ns_ < y.ns_ || (x.ns_ == y.ns_ && x.name_ < y.name_);
|
||
|
}
|
||
|
|
||
|
friend bool
|
||
|
operator== (const qname& x, const qname& y)
|
||
|
{
|
||
|
return x.ns_ == y.ns_ && x.name_ == y.name_;
|
||
|
}
|
||
|
|
||
|
friend bool
|
||
|
operator!= (const qname& x, const qname& y)
|
||
|
{
|
||
|
return !(x == y);
|
||
|
}
|
||
|
|
||
|
private:
|
||
|
std::string ns_;
|
||
|
std::string name_;
|
||
|
std::string prefix_;
|
||
|
};
|
||
|
|
||
|
// Print the string representation ([<namespace>#]<name>).
|
||
|
//
|
||
|
LIBSTUDXML_EXPORT std::ostream&
|
||
|
operator<< (std::ostream&, const qname&);
|
||
|
}
|
||
|
|
||
|
#include <xml/details/post.hxx>
|
||
|
|
||
|
#endif // XML_QNAME
|