68 #ifdef SNMP_PP_NAMESPACE
107 smival.value.oid.len = 0;
108 smival.value.oid.ptr = 0;
127 Oid(
const char *oid_string,
const bool is_dotted_oid_string =
true);
140 smival.value.oid.len = 0;
141 smival.value.oid.ptr = 0;
148 if (smival.value.oid.ptr)
159 Oid(
const unsigned long *raw_oid,
int oid_len)
165 smival.value.oid.len = 0;
166 smival.value.oid.ptr = 0;
168 if (raw_oid && (oid_len > 0))
170 smival.value.oid.ptr = (
SmiLPUINT32)
new unsigned long[oid_len];
171 if (smival.value.oid.ptr)
173 smival.value.oid.len = oid_len;
174 for (
int i=0; i < oid_len; i++)
175 smival.value.oid.ptr[i] = raw_oid[i];
186 if (iv_str)
delete [] iv_str;
187 if (iv_part_str)
delete [] iv_part_str;
202 virtual Oid& operator=(
const char *dotted_oid_string);
209 if (
this == &oid)
return *
this;
219 if (smival.value.oid.ptr)
227 int get_asn1_length()
const;
232 bool operator == (
const Oid &rhs)
const
235 if (len() != rhs.
len())
237 return (nCompare(rhs) == 0);
243 bool operator != (
const Oid &rhs)
const
244 {
return (!(*
this == rhs)); }
249 bool operator < (
const Oid &rhs)
const
254 if((result = nCompare(rhs))<0)
return 1;
255 if (result > 0)
return 0;
258 return (len() < rhs.
len());
264 bool operator <= (
const Oid &rhs)
const
265 {
return ((*
this < rhs) || (*
this == rhs)); }
270 bool operator > (
const Oid &rhs)
const
271 {
return (!(*
this <= rhs)); }
276 bool operator >= (
const Oid &rhs)
const
277 {
return (!(*
this < rhs)); }
283 DLLOPT friend bool operator==(
const Oid &lhs,
const Oid &rhs);
288 DLLOPT friend bool operator!=(
const Oid &lhs,
const Oid &rhs)
289 {
return (!(lhs == rhs)); }
294 DLLOPT friend bool operator<(
const Oid &lhs,
const Oid &rhs);
299 DLLOPT friend bool operator<=(
const Oid &lhs,
const Oid &rhs)
300 {
return ((lhs < rhs) || (lhs == rhs)); };
305 DLLOPT friend bool operator>(
const Oid &lhs,
const Oid &rhs)
306 {
return (!(lhs <= rhs)); };
311 DLLOPT friend bool operator>=(
const Oid &lhs,
const Oid &rhs)
312 {
return (!(lhs < rhs)); };
317 DLLOPT friend bool operator==(
const Oid &lhs,
const char *rhs);
322 DLLOPT friend bool operator!=(
const Oid &lhs,
const char *rhs);
327 DLLOPT friend bool operator<(
const Oid &lhs,
const char *rhs);
332 DLLOPT friend bool operator<=(
const Oid &lhs,
char *rhs);
337 DLLOPT friend bool operator>(
const Oid &lhs,
const char *rhs);
342 DLLOPT friend bool operator>=(
const Oid &lhs,
const char *rhs);
349 {
Oid tmp(lhs); tmp += rhs;
return tmp;}
356 Oid& operator+=(
const char *a);
389 if (smival.value.oid.ptr)
393 (
size_t) (smival.value.oid.len*
sizeof(
SmiUINT32)));
395 delete [] smival.value.oid.ptr;
399 smival.value.oid.ptr = new_oid;
421 { m_changed =
true;
return smival.value.oid.ptr[index]; }
433 {
return (index >= len()) ? 0 : smival.value.oid.ptr[index]; }
450 void set_data(
const unsigned long *raw_oid,
const unsigned int oid_len);
458 void set_data(
const char *str,
const unsigned int str_len);
463 unsigned long len()
const {
return smival.value.oid.len; }
470 void trim(
const unsigned long n = 1)
473 if ((n <= smival.value.oid.len) && (n > 0))
475 smival.value.oid.len -= n;
476 if (smival.value.oid.len == 0)
492 unsigned long length = n;
493 bool reduced_len =
false;
499 if (length == 0)
return 0;
502 if (length > smival.value.oid.len)
504 length = smival.value.oid.len;
542 unsigned long length;
543 bool reduced_len =
false;
547 if (length == 0)
return 0;
550 if (length > smival.value.oid.len)
552 length = smival.value.oid.len;
583 bool valid()
const {
return (smival.value.oid.ptr ?
true :
false); }
591 {
return get_printable(1, smival.value.oid.len, (
char*&)iv_str); };
601 {
return get_printable(smival.value.oid.len - n + 1, n, (
char*&)iv_part_str); };
616 const char *get_printable(
const unsigned long start,
617 const unsigned long n,
618 char *&buffer)
const;
629 const unsigned long n)
const
630 {
return get_printable(start, n, (
char*&)iv_part_str); };
656 virtual int StrToOid(
const char *
string,
SmiLPOID dstOid)
const;
667 if (srcOid->
len == 0)
return -1;
675 dstOid->
len = srcOid->
len;
676 return (
int) srcOid->
len;
686 virtual int OidToStr(
const SmiOID *srcOid,
693 inline void delete_oid_ptr();
710 if (smival.value.oid.ptr)
712 delete [] smival.value.oid.ptr;
713 smival.value.oid.ptr = 0;
715 smival.value.oid.len = 0;
719 #ifdef SNMP_PP_NAMESPACE
void delete_oid_ptr()
Free the internal oid pointer and set the pointer and the length to zero.
Oid(const unsigned long *raw_oid, int oid_len)
Constructor from array.
void clear()
Clear the Oid.
int nCompare(const Oid &o) const
Compare two Oids from the left in direction left-to-right.
SmiUINT32 get_syntax() const
Return the current syntax.
const char * get_printable(const unsigned long start, const unsigned long n) const
Get a printable ASCII string of a part of the value.
const char * get_printable() const
Get a printable ASCII string of the whole value.
bool valid() const
Return validity of the object.
unsigned long operator[](const unsigned int index) const
Allows element access as an array for const objects.
void trim(const unsigned long n=1)
Trim off the rightmost values of an oid.
SNMP_PP_MUTABLE char * iv_part_str
virtual int OidCopy(SmiLPOID srcOid, SmiLPOID dstOid) const
Clone an smi oid.
The Object Identifier Class.
SnmpCollection< Oid > OidCollection
SNMP_PP_MUTABLE char * iv_str
Oid(const Oid &oid)
Constructor using another oid object (copy constructor).
unsigned long WINFAR * SmiLPUINT32
int nCompare(const unsigned long n, const Oid &o) const
Compare two Oids from the left in direction left-to-right.
Oid & operator+=(const Oid &o)
Appends an Oid.
unsigned long len() const
Get the length of the oid.
Oid()
Construct an invalid Oid.
SNMP_PP_MUTABLE bool m_changed
unsigned char WINFAR * SmiLPBYTE
SmiLPOID oidval()
Get the WinSnmp oid part.
virtual ~Oid()
Destructor.
unsigned long & operator[](const unsigned int index)
Allows element access as an array.
virtual Oid & operator=(const Oid &oid)
Assign one Oid to another.
An "abstract" (pure virtual) class that serves as the base class for all specific SNMP syntax types...
const char * get_printable(const unsigned long n) const
Get a printable ASCII string of the right part of the value.
Oid & operator+=(const unsigned long i)
Appends an int.
SnmpSyntax * clone() const
Clone this object.