83 lines
1.8 KiB
C++
83 lines
1.8 KiB
C++
// file : xsd/cxx/xml/qualified-name.hxx
|
|
// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
|
|
|
|
#ifndef XSD_CXX_XML_QUALIFIED_NAME_HXX
|
|
#define XSD_CXX_XML_QUALIFIED_NAME_HXX
|
|
|
|
#include <string>
|
|
|
|
namespace xsd
|
|
{
|
|
namespace cxx
|
|
{
|
|
namespace xml
|
|
{
|
|
template <typename C>
|
|
struct qualified_name
|
|
{
|
|
qualified_name (const C* name,
|
|
const C* namespace_)
|
|
: name_ (name), namespace__ (namespace_)
|
|
{
|
|
}
|
|
|
|
qualified_name (const std::basic_string<C>& name,
|
|
const std::basic_string<C>& namespace_)
|
|
: name_ (name), namespace__ (namespace_)
|
|
{
|
|
}
|
|
|
|
qualified_name (const C* name)
|
|
: name_ (name)
|
|
{
|
|
}
|
|
|
|
qualified_name (const std::basic_string<C>& name)
|
|
: name_ (name)
|
|
{
|
|
}
|
|
|
|
const std::basic_string<C>&
|
|
name () const
|
|
{
|
|
return name_;
|
|
}
|
|
|
|
const std::basic_string<C>&
|
|
namespace_ () const
|
|
{
|
|
return namespace__;
|
|
}
|
|
|
|
private:
|
|
std::basic_string<C> name_;
|
|
std::basic_string<C> namespace__;
|
|
};
|
|
|
|
template <typename C>
|
|
inline bool
|
|
operator== (const qualified_name<C>& x, const qualified_name<C>& y)
|
|
{
|
|
return x.name () == y.name () && x.namespace_ () == y.namespace_ ();
|
|
}
|
|
|
|
template <typename C>
|
|
inline bool
|
|
operator!= (const qualified_name<C>& x, const qualified_name<C>& y)
|
|
{
|
|
return !(x == y);
|
|
}
|
|
|
|
template <typename C>
|
|
inline bool
|
|
operator< (const qualified_name<C>& x, const qualified_name<C>& y)
|
|
{
|
|
int r (x.name ().compare (y.name ()));
|
|
return (r < 0) || (r == 0 && x.namespace_ () < y.namespace_ ());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif // XSD_CXX_XML_QUALIFIED_NAME_HXX
|