]> git.stg.codes - stg.git/blobdiff - stargazer/plugins/other/smux/types.h
Port to CMake, get rid of os_int.h.
[stg.git] / stargazer / plugins / other / smux / types.h
diff --git a/stargazer/plugins/other/smux/types.h b/stargazer/plugins/other/smux/types.h
new file mode 100644 (file)
index 0000000..2b54f2a
--- /dev/null
@@ -0,0 +1,57 @@
+#ifndef __TYPES_H__
+#define __TYPES_H__
+
+#include <string>
+#include <vector>
+#include <iostream>
+
+#include "stg/OBJECT_IDENTIFIER.h"
+
+class OID {
+    public:
+        explicit OID(const std::string & str);
+        OID(const char * str, size_t length);
+        explicit OID(const std::vector<unsigned> & arcs);
+        OID(const unsigned * arcs, size_t length);
+        explicit OID(OBJECT_IDENTIFIER_t * oid);
+        OID(const OID & rvalue);
+        ~OID();
+
+        bool addSuffix(const char * suffix, size_t length);
+        bool addSuffix(const std::string & suffix);
+        bool addSuffix(const unsigned * suffix, size_t length);
+        bool addSuffix(const std::vector<unsigned> & suffix);
+        bool addSuffix(unsigned a, unsigned b);
+
+        OID copyWithSuffix(const char * suffix, size_t length) const;
+        OID copyWithSuffix(const std::string & suffix) const;
+        OID copyWithSuffix(const unsigned * suffix, size_t length) const;
+        OID copyWithSuffix(const std::vector<unsigned> & suffix) const;
+        OID copyWithSuffix(unsigned a, unsigned b) const;
+
+        std::string ToString() const;
+        const std::vector<unsigned> & ToVector() const { return arcs; }
+        void ToOID(OBJECT_IDENTIFIER_t * oid) const;
+
+        OID & operator=(const OID & rvalue);
+        bool operator==(const OID & rvalue) const;
+        bool operator!=(const OID & rvalue) const { return !operator==(rvalue); }
+        bool operator<(const OID & rvalue) const;
+        bool operator>(const OID & rvalue) const
+        { return !operator==(rvalue) && !operator<(rvalue); }
+
+        bool PrefixLess(const OID & rvalue) const;
+
+        friend std::ostream & operator<<(std::ostream & stream, const OID & oid);
+
+    private:
+        std::vector<unsigned> arcs;
+};
+
+inline
+bool PrefixLess(const OID & a, const OID & b)
+{
+return a.PrefixLess(b);
+}
+
+#endif