summaryrefslogtreecommitdiff
path: root/ASNMP/asnmp/oid.h
diff options
context:
space:
mode:
authorschmidt <douglascraigschmidt@users.noreply.github.com>1997-08-04 08:25:27 +0000
committerschmidt <douglascraigschmidt@users.noreply.github.com>1997-08-04 08:25:27 +0000
commiteab3a23e5a82fa2aab98adb50b6737f88e1f143a (patch)
treec8f6ac63d26985c0b40ef84e7611871cfffb0b4b /ASNMP/asnmp/oid.h
parent6bcb442b5346b6db079657a7ab7b85406219648e (diff)
downloadATCD-eab3a23e5a82fa2aab98adb50b6737f88e1f143a.tar.gz
*** empty log message ***
Diffstat (limited to 'ASNMP/asnmp/oid.h')
-rw-r--r--ASNMP/asnmp/oid.h164
1 files changed, 164 insertions, 0 deletions
diff --git a/ASNMP/asnmp/oid.h b/ASNMP/asnmp/oid.h
new file mode 100644
index 00000000000..5c416a72399
--- /dev/null
+++ b/ASNMP/asnmp/oid.h
@@ -0,0 +1,164 @@
+/* -*-C++-*- */
+#ifndef OID_CLS_
+#define OID_CLS_
+// ============================================================================
+//
+// = LIBRARY
+// asnmp
+//
+// = FILENAME
+// oid.h
+//
+// = DESCRIPTION
+// This class is fully contained and does not rely on or any other
+// SNMP libraries. This class is portable across any platform
+// which supports C++. Ported to ACE by Mike MacFaden mrm@cisco.com
+// and modified for MT. Some API cleanup: collapse constructors,
+// add suboid() method remove unnecessary overload, and update a few
+// names and types to improve clarity.
+//
+// = AUTHOR
+// Peter E Mellquist
+//
+// ============================================================================
+/*===================================================================
+ Copyright (c) 1996
+ Hewlett-Packard Company
+
+ ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
+ Permission to use, copy, modify, distribute and/or sell this software
+ and/or its documentation is hereby granted without fee. User agrees
+ to display the above copyright notice and this license notice in all
+ copies of the software and any documentation of the software. User
+ agrees to assume all liability for the use of the software; Hewlett-Packard
+ makes no representations about the suitability of this software for any
+ purpose. It is provided "AS-IS without warranty of any kind,either express
+ or implied. User hereby grants a royalty-free license to any and all
+ derivatives based upon this software code base.
+=====================================================================*/
+
+//----------[ extern C libraries Needed ]---------------------------------
+#include "ace/OS.h"
+#include "asnmp/smival.h" // derived class for all values
+
+class ACE_Export Oid: public SnmpSyntax
+ // = TITLE
+ // Implement RFC 1155 Object Identifier (OID) datatype
+{
+public:
+ Oid( const char * dotted_oid_string = "", size_t size = -1);
+ // constructor using a dotted string
+
+ Oid ( const Oid &oid);
+ // constructor using another oid object
+
+ Oid(const unsigned long *raw_oid, size_t oid_len);
+ // constructor from raw form
+
+ ~Oid();
+ // destructor
+
+ SmiUINT32 get_syntax();
+ // syntax type
+
+ Oid& operator=( const Oid &oid);
+ // assignment to another oid object overloaded
+
+ friend int operator==( const Oid &lhs,const Oid &rhs);
+ // equal operator overloaded
+
+ friend int operator!=( const Oid &lhs,const Oid &rhs);
+ // not equal operator overloaded
+
+ friend int operator<( const Oid &lhs,const Oid &rhs);
+ // less than < overloaded
+
+ friend int operator<=( const Oid &lhs,const Oid &rhs);
+ // less than <= overloaded
+
+ friend int operator>( const Oid &lhs,const Oid &rhs);
+ // greater than > overloaded
+
+ friend int operator>=( const Oid &lhs,const Oid &rhs);
+ // greater than >= overloaded
+
+ Oid& operator+=( const char *a);
+ // append operator, appends a string
+
+ Oid& operator+=( const unsigned long i);
+ // appends an int
+
+ Oid& operator+=( const Oid &o);
+ // appends an Oid
+
+ unsigned long & operator[]( size_t position);
+ // allows element access
+
+ SmiLPOID oidval();
+ // return the WinSnmp oid part
+
+ void set_data( const char *dotted_oid_string);
+ // reset the data from raw 1 byte format
+
+ void set_data( const unsigned long *raw_oid, const size_t oid_len);
+ // reset the data from raw 4byte integer format
+
+ size_t length() const;
+ // return the len of the oid
+
+ void trim( const size_t how_many = 1);
+ // trim off the n rightmost values of an oid
+
+ int suboid(Oid& oid, size_t start = 0, size_t how_many = -1);
+ // the equivalent of a substr(new_str, 0, 1)
+
+ int left_comparison( const unsigned long n, const Oid &o) const;
+ // compare the n leftmost bytes (left-to-right)
+ // returns 0, equal
+ // returns -1, <
+ // returns 1 , >
+
+
+ int right_comparison( const unsigned long n, const Oid &o) const;
+ // compare the n rightmost bytes (right-to-left)
+ // returns 0, equal
+ // returns -1, <
+ // returns 1 , >
+
+ int valid() const;
+ // is the Oid object valid
+
+ char *to_string();
+ // return dotted string value from the right
+ // where the user specifies how many positions to print
+
+ SnmpSyntax *clone() const;
+ // create a new instance of this Value
+
+ SnmpSyntax& operator=( SnmpSyntax &val);
+ // copy an instance of this Value
+
+protected:
+ char *iv_str;
+ // used for returning oid string
+
+ int StrToOid( const char *string, SmiLPOID dstOid, size_t& how_many_bytes);
+ // convert a string to an smi oid
+
+ int OidCopy( SmiLPOID srcOid, SmiLPOID dstOid, size_t& how_many_bytes);
+ // clone an smi oid
+
+ int OidToStr(SmiLPOID srcOid, SmiUINT32 size, char *string, size_t& how_many_bytes);
+ // convert an smi oid to its string representation
+
+ private:
+ void set_invalid();
+ // release memory, re-init data members
+
+ void set_null();
+ // initialize object data members
+ void init_value( const SmiLPOID srcOid, size_t len);
+ void init_value(const unsigned long *raw_oid, size_t oid_len);
+};
+
+#endif //OID_CLS_