aboutsummaryrefslogtreecommitdiff
path: root/libxsde/xsde/cxx/qname.ixx
diff options
context:
space:
mode:
Diffstat (limited to 'libxsde/xsde/cxx/qname.ixx')
-rw-r--r--libxsde/xsde/cxx/qname.ixx125
1 files changed, 125 insertions, 0 deletions
diff --git a/libxsde/xsde/cxx/qname.ixx b/libxsde/xsde/cxx/qname.ixx
new file mode 100644
index 0000000..6772556
--- /dev/null
+++ b/libxsde/xsde/cxx/qname.ixx
@@ -0,0 +1,125 @@
+// file : xsde/cxx/qname.ixx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <string.h> // strcmp
+
+namespace xsde
+{
+ namespace cxx
+ {
+ // c-tors, d-tor and swap
+ //
+ inline qname::
+ ~qname ()
+ {
+ delete[] prefix_;
+ delete[] name_;
+ }
+
+ inline qname::
+ qname ()
+ : prefix_ (0), name_ (0)
+ {
+ }
+
+ inline qname::
+ qname (char* n)
+ : prefix_ (0), name_ (n)
+ {
+ }
+
+ inline qname::
+ qname (char* p, char* n)
+ : prefix_ (p), name_ (n)
+ {
+ }
+
+ inline void qname::
+ swap (qname& x)
+ {
+ char* p = prefix_;
+ char* n = name_;
+
+ prefix_ = x.prefix_;
+ name_ = x.name_;
+
+ x.prefix_ = p;
+ x.name_ = n;
+ }
+
+ // preix
+ //
+ inline char* qname::
+ prefix ()
+ {
+ return prefix_;
+ }
+
+ inline const char* qname::
+ prefix () const
+ {
+ return prefix_;
+ }
+
+ inline void qname::
+ prefix (char* prefix)
+ {
+ delete[] prefix_;
+ prefix_ = prefix;
+ }
+
+ inline char* qname::
+ prefix_detach ()
+ {
+ char* r = prefix_;
+ prefix_ = 0;
+ return r;
+ }
+
+ // name
+ //
+ inline char* qname::
+ name ()
+ {
+ return name_;
+ }
+
+ inline const char* qname::
+ name () const
+ {
+ return name_;
+ }
+
+ inline void qname::
+ name (char* name)
+ {
+ delete[] name_;
+ name_ = name;
+ }
+
+ inline char* qname::
+ name_detach ()
+ {
+ char* r = name_;
+ name_ = 0;
+ return r;
+ }
+
+ //
+ //
+ inline bool
+ operator== (const qname& x, const qname& y)
+ {
+ return strcmp (x.name (), y.name ()) == 0 &&
+ strcmp (x.prefix (), y.prefix ()) == 0;
+ }
+
+ inline bool
+ operator!= (const qname& x, const qname& y)
+ {
+ return !(x == y);
+ }
+ }
+}