#ifndef _MSCOBJECT_H_
#define _MSCOBJECT_H_
#include "MscWrappers.h"
#include "MscTokenConnection.h"
#include <PCSC/musclecard.h>
class MscObject
{
NOCOPY(MscObject)
public:
MscObject(const char *objectID,MscTokenConnection *connection);
MscObject(const MSCObjectInfo& info,MscTokenConnection *connection);
virtual ~MscObject();
virtual void create(const char *objectID,u_int32_t objectSize,const MscObjectACL& objectACL=MscObjectACL());
virtual void deleteobj(const char *objectID,bool zeroFlag);
virtual void write(const char *dataToWrite,size_t dataSize);
virtual void read();
virtual const void *data() { if (!mDataLoaded) read(); return reinterpret_cast<const void *>(mData); }
virtual uint32 size() const { return mInfo.size(); }
virtual const char *objid() const { return mInfo.objid(); }
#ifdef _DEBUG_OSTREAM
friend std::ostream& operator << (std::ostream& strm, const MscObject& obj);
#endif
protected:
MscObjectInfo mInfo;
MscTokenConnection *mConnection;
char *mData;
mutable bool mDataLoaded;
mutable bool mAttributesLoaded;
void getAttributes(bool refresh=false);
};
#ifdef _DEBUG_OSTREAM
std::ostream& operator << (std::ostream& strm, const MscObject& ee);
#endif
#endif