ctr64.h
上传用户:czjinwang
上传日期:2007-01-12
资源大小:2484k
文件大小:5k
源码类别:

SNMP编程

开发平台:

Visual C++

  1. /*===================================================================
  2.         
  3.   Copyright (c) 1999
  4.   Hewlett-Packard Company
  5.   ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
  6.   Permission to use, copy, modify, distribute and/or sell this software 
  7.   and/or its documentation is hereby granted without fee. User agrees 
  8.   to display the above copyright notice and this license notice in all 
  9.   copies of the software and any documentation of the software. User 
  10.   agrees to assume all liability for the use of the software; Hewlett-Packard 
  11.   makes no representations about the suitability of this software for any 
  12.   purpose. It is provided "AS-IS without warranty of any kind,either express 
  13.   or implied. User hereby grants a royalty-free license to any and all 
  14.   derivatives based upon this software code base. 
  15.   SNMP++ C O U N T E R 6 4 . H   
  16.       
  17.   COUNTER64 CLASSES DEFINITION
  18.       
  19.   VERSION:
  20.   2.8
  21.   RCS INFO:
  22.   $Header: ctr64.h,v 1.17 96/09/11 14:01:23 hmgr Exp $
  23.        
  24.   DESIGN:
  25.   Peter E Mellquist
  26.                 
  27.   AUTHOR:      
  28.   Peter E Mellquist
  29.               
  30.   LANGUAGE:
  31.   ANSI C++ 
  32.       
  33.   OPERATING SYSTEMS:
  34.   MS-Windows Win32
  35.   BSD UNIX
  36.       
  37.   DESCRIPTION:
  38.   SNMP Counter64 class definition.
  39.       
  40. =====================================================================*/  
  41. #ifndef _CTR64
  42. #define _CTR64
  43. #include "smival.h"
  44. #define CTR64OUTBUF 30  // maximum ascii string for a 64-bit ctr
  45.                 
  46. //---------[ 64 bit Counter Class ]--------------------------------
  47. // Counter64 Class encapsulates two unsigned integers into a
  48. // a single entity. This type has is available in SNMPv2 but
  49. // may be used anywhere where needed.
  50. //
  51. class DLLOPT Counter64: public  SnmpSyntax
  52.    protected:
  53.       char output_buffer[CTR64OUTBUF];
  54.       
  55.       
  56.    public:
  57.    
  58.      // convert a Counter 64 to a long double
  59.      long double c64_to_ld( Counter64 &c64);
  60.       
  61.      // convert a long double to a Counter64
  62.      Counter64 ld_to_c64( long double ld);
  63.      
  64.      // constructor, no values
  65.      Counter64( void);
  66.         
  67.      // constructor with values   
  68.      Counter64( unsigned long hiparm, unsigned long loparm);
  69.         
  70.      // constructor with only one arg, defaults to lower
  71.      Counter64( unsigned long loparm);
  72.      
  73.      // copy constructor
  74.      Counter64( const Counter64 &ctr64);
  75.      
  76.      // destructor (ensure that SnmpSyntax::~SnmpSyntax() is overridden)
  77.      ~Counter64();
  78.      // syntax type
  79.      SmiUINT32 get_syntax();
  80.      // return the high part   
  81.      unsigned long int high() const;  
  82.         
  83.      // return the low part   
  84.      unsigned long int low() const;
  85.         
  86.      // set the high part   
  87.      void set_high( const unsigned long int h);
  88.         
  89.      // set the low part   
  90.      void set_low( const unsigned long int l);
  91.         
  92.      //------[ overloaded assignment ]-------------------
  93.      
  94.      // assign a Counter64 to a Counter64 
  95.      Counter64& operator=( const Counter64 &ctr64);
  96.         
  97.      // assign a ul to a ctr64, clears the high part
  98.      // and assugns the low part
  99.      Counter64& operator=( const unsigned long int i);
  100.         
  101.      //------[ overloaded addition ]---------------------
  102.      
  103.      // add two Counter64s
  104.      Counter64 operator+( const Counter64 &c); 
  105.      
  106.      // add a unsigned long and a Counter64
  107.      DLLOPT friend Counter64 operator+( unsigned long ul, const Counter64 &c64);
  108.         
  109.      
  110.      //------[ overloaded subtraction ]------------------
  111.      
  112.      // subtract two Counter64s
  113.      Counter64 operator-( const Counter64 &c);
  114.      
  115.      // subtract a unsigned long and a Counter64
  116.      DLLOPT friend Counter64 operator-( unsigned long ul, const Counter64 &c64);
  117.         
  118.      //-------[ overloaded multiply ]---------------------
  119.      
  120.      // multiply two Counter64s
  121.      Counter64 operator*( const Counter64 &c); 
  122.      
  123.      // multiply a unsigned long and a Counter64
  124.      DLLOPT friend Counter64 operator*( unsigned long ul, const Counter64 &c64);
  125.      
  126.      //-------[ overloaded division ]---------------------
  127.      
  128.      // divide two Counter64s
  129.      Counter64 operator/( const Counter64 &c); 
  130.      
  131.      // divide a unsigned long and a Counter64
  132.      DLLOPT friend Counter64 operator/( unsigned long ul, const Counter64 &c64);
  133.      
  134.      //-------[ overloaded equivlence test ]--------------
  135.      DLLOPT friend int operator==( Counter64 &lhs, Counter64 &rhs);
  136.      
  137.      //-------[ overloaded not equal test ]----------------
  138.      DLLOPT friend int operator!=( Counter64 &lhs, Counter64 &rhs);
  139.      
  140.      //--------[ overloaded less than ]--------------------
  141.      DLLOPT friend int operator<( Counter64 &lhs, Counter64 &rhs);
  142.      
  143.      //---------[ overloaded less than or equal ]----------
  144.      DLLOPT friend int operator<=( Counter64 &lhs, Counter64 &rhs);
  145.      
  146.      //---------[ overloaded greater than ]----------------
  147.      DLLOPT friend int operator>( Counter64 &lhs, Counter64 &rhs);
  148.      
  149.      //----------[ overloaded greater than or equal ]------
  150.      DLLOPT friend int operator>=( Counter64 &lhs, Counter64 &rhs);
  151.      
  152.      // get a printable ASCII value
  153.      char *get_printable();
  154.      // create a new instance of this Value
  155.      SnmpSyntax *clone() const; 
  156.      // copy an instance of this Value
  157.      SnmpSyntax& operator=( SnmpSyntax &val);
  158.      // general validity test, always true 
  159.      int valid() const;
  160. }; 
  161. #endif