//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / ILMI/ASN
//
//File: asnutil.h
//
//Version: $Revision: 1.5 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/07/07 15:01:53 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Timo Pärnänen
//      Sami Raatikainen
//
//Description:
//      AsnUtil class includes methods to convert AsnOid to
//      string/list and vice versa. The AsnOid may include
//      items with zero (0) values (IP-/ATM-address/port etc.).
//      STL deque is used as oidList container. 
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 

#ifndef __ILMI_ASN_ASNUTIL_H__
#define __ILMI_ASN_ASNUTIL_H__

#include <typeinfo>
#include <string>
#include <deque>
#include <asn-incl.h>

#include "pf/types.h"

class asnUtil
{
    public:
        // Typedefs for oidList. OidList is STL deque !!
        typedef deque<pfUlong> oidList;
        typedef oidList::iterator oidListIterator;
        typedef oidList::const_iterator oidListConstIterator;

        // AsnOid - string conversion.
        static AsnOid stringToAsnOid(const string &string_);
        static string asnOidToString(const AsnOid &oid_);

        // AsnOid - list conversion.
        static AsnOid listToAsnOid(const oidList &list_);
        static void asnOidToList(const AsnOid &oid_, oidList &list_);

        // String - list conversion.
        static string listToString(const oidList &list_);
        static void stringToList(const string &string_, oidList &list_);
        
    private:
        static void decode(const AsnOid &oid_, oidList &list_);
        static AsnOid encode(const oidList &list_);
};

#endif // __ILMI_ASN_ASNUTIL_H__
