www.pudn.com > BTSERVER.rar > atom.h
//
// Copyright (C) 2003 Trevor Hogan
//
#ifndef ATOM_H
#define ATOM_H
class CAtom
{
public:
virtual ~CAtom( ) { }
virtual bool isInt( ) { return false; }
virtual bool isLong( ) { return false; }
virtual bool isList( ) { return false; }
virtual bool isDicti( ) { return false; }
virtual int EncodedLength( ) = 0;
virtual int Length( ) = 0;
virtual string toString( ) = 0;
};
class CAtomInt : public CAtom
{
public:
CAtomInt( );
CAtomInt( int iInt );
CAtomInt( const CAtomInt &c );
virtual ~CAtomInt( );
virtual bool isInt( ) { return true; }
virtual int EncodedLength( );
virtual int Length( );
virtual string toString( );
int getValue( ) const;
void setValue( int iInt );
private:
int m_iInt;
};
class CAtomLong : public CAtom
{
public:
CAtomLong( );
CAtomLong( int64 iLong );
CAtomLong( const CAtomLong &c );
virtual ~CAtomLong( );
virtual bool isLong( ) { return true; }
virtual int EncodedLength( );
virtual int Length( );
virtual string toString( );
int64 getValue( ) const;
void setValue( int64 iLong );
private:
int64 m_iLong;
};
class CAtomString : public CAtom
{
public:
CAtomString( );
CAtomString( string strString );
CAtomString( const CAtomString &c );
virtual ~CAtomString( );
virtual int EncodedLength( );
virtual int Length( );
virtual string toString( );
string getValue( ) const;
void setValue( string strString );
private:
string m_strString;
};
class CAtomList : public CAtom
{
public:
CAtomList( );
CAtomList( vector vecList );
CAtomList( const CAtomList &c );
virtual ~CAtomList( );
virtual bool isList( ) { return true; }
virtual int EncodedLength( );
virtual int Length( );
virtual string toString( );
virtual bool isEmpty( );
virtual void clear( );
virtual void Randomize( );
vector getValue( ) const;
vector *getValuePtr( );
void setValue( vector vecList );
void delItem( CAtom *atmItem );
void addItem( CAtom *atmItem );
private:
vector m_vecList;
};
class CAtomDicti : public CAtom
{
public:
CAtomDicti( );
CAtomDicti( const CAtomDicti &c );
virtual ~CAtomDicti( );
virtual bool isDicti( ) { return true; }
virtual int EncodedLength( );
virtual int Length( );
virtual string toString( );
virtual bool isEmpty( );
virtual void clear( );
map getValue( ) const;
map *getValuePtr( );
void setValue( map mapDicti );
void delItem( string strKey );
CAtom *getItem( string strKey );
CAtom *getItem( string strKey, CAtom *pReturn );
void setItem( string strKey, CAtom *pValue );
private:
map m_mapDicti;
};
#endif