asn1decode.h

Go to the documentation of this file.
00001 // OSB library ************************************************ -*- C++ -*-
00006 /*
00007   AUTHOR(S): Stephan Broennimann (vb)
00008 
00009   RCS information
00010    $Name: OSB_060808 $
00011    $Revision: 1.1 $
00012 
00013   License
00014    OSB rating and billing library for communication networks
00015    Copyright (C) 2004, 2005, 2006  OSB systems
00016 
00017    This file may be distributed and/or modify under the terms of the
00018    GNU General Public License (GPL) as published by the Free Software
00019    Foundation which is provided in the file LICENSE.GPL included in the
00020    packaging of this file.
00021 
00022    The file is distributed in the hope that it will be useful, but WITHOUT
00023    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00024    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
00025    for more details.
00026 
00027    Holders of a OSB Commercial License may use this file under the terms
00028    and conditions of this commercial license.
00029  */
00030 #ifndef _ASN1DECODE_H_
00031 #define _ASN1DECODE_H_
00032 
00033 // ************************************************************************
00034 // included header files
00035 // + standard includes
00036 
00037 // + libraries
00038 
00039 // + local headers
00040 #include "asn1reader.h"
00041 
00042 // + class declarations
00043 
00044 // ************************************************************************
00045 // namespace extensions
00046 namespace OSB_LIB {
00047 
00048 // ************************************************************************
00049 // forward declarations
00050 
00051 // ************************************************************************
00052 // type definitions
00053 
00054 // ************************************************************************
00055 // class definitions
00059     class Asn1Decoder {
00060     public:
00062         virtual ~Asn1Decoder() {}
00071         virtual size_t operator()(
00072             Asn1Info&  src,
00073             OsbErrors& errors
00074         ) = 0;
00075     };                                  // class Asn1Decoder
00076 
00080     class Asn1DataDecoder {
00081     public:
00083         virtual ~Asn1DataDecoder() {}
00084 
00092         virtual int operator()(const Asn1Info& src) = 0;
00093     };                                  // class Asn1DataDecoder
00094 
00098     class Asn1Int2Long : public Asn1DataDecoder {
00099     public:
00109         int operator()(const Asn1Info& src);
00110 
00121         int operator()(
00122             const Asn1Byte* data,
00123             const size_t    size
00124         );
00125 
00132         long value() const { return value_; }
00133     private:
00139         long value_;
00140     };                                  // class Asn1Int2Long
00141 
00145     class Asn1String2String : public Asn1DataDecoder {
00146     public:
00148         explicit Asn1String2String(std::string& dest)
00149           : dest_(dest)
00150         {
00151             // empty
00152         }
00153 
00162         int operator()(const Asn1Info& src);
00172         int operator()(
00173             const Asn1Byte* data,
00174             const size_t    size
00175         );
00176     private:
00178         std::string& dest_;
00179     };                                  // class Asn1String2String
00180 
00181 }                                       // namespace OSB_LIB
00182 
00183 // ************************************************************************
00184 // inline definitions
00185 namespace OSB_LIB {
00186 }                                       // namespace OSB_LIB
00187 #endif                                  // #ifndef _ASN1DECODE_H_

Generated on Sat Sep 2 14:06:31 2006 for OSB Library by  doxygen 1.4.7