//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / 
//
//File: convert.h
//
//Version: $Revision: 1.9 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/07/06 08:07:48 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Sami Raatikainen
//
//Description:
//      Class for converting strings into different AsnTypes and
//      vice versa.
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 

#ifndef __MIB_CONVERT_H__
#define __MIB_CONVERT_H__

class VarBind;

#include <typeinfo>
#include <string>
#include "pf/types.h"
#include "mibexception.h"


//
//Class: convert
//
//Description:
//      Base class offers interface to inherited classes.
//

class convert
{
    public:
        virtual ~convert(void);
        
        virtual string getStringValue(VarBind *varBind_) = 0;
        virtual void setStringValue(VarBind *varBind_,
                                    const string &string_) = 0;
    protected:
        convert(void);
};


//
//Class: asnIntConvert
//
//Description:
//      Encodes an AsnInt (long integer) from a varBind to a string
//      and vice versa.
//

class asnIntConvert : public convert
{
    public:
        asnIntConvert(void);
        virtual ~asnIntConvert(void);
        
        string getStringValue(VarBind *varBind_);
        void setStringValue(VarBind *varBind_, const string &string_);
};

//
//Class: convert
//
//Description:
//      Encodes an AsnOcts (string) from a varBind to a string
//      and vice versa.
//

class asnOctsConvert : public convert
{
    public:
        asnOctsConvert(void);
        virtual ~asnOctsConvert(void);

        string getStringValue(VarBind *varBind_);
        void setStringValue(VarBind *varBind_, const string &string_);
};

//
//Class: convert
//
//Description:
//      Encodes an AsnOid (Object identifier eg. 1.2.3.) from a
//      varBind to a string (eg. "1.2.3") and vice versa.
//

class asnOidConvert : public convert
{
    public:
        asnOidConvert(void);
        virtual ~asnOidConvert(void);

        string getStringValue(VarBind *varBind_);
        void setStringValue(VarBind *varBind_, const string &string_);
};

#endif // __MIB_CONVERT_H__
