diff -r 000000000000 -r 42188c7ea2d9 Orb/Doxygen/src/marshal.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Orb/Doxygen/src/marshal.h Thu Jan 21 17:29:01 2010 +0000 @@ -0,0 +1,132 @@ +#ifndef MARSHAL_H +#define MARSHAL_H + +#include +#include +#include "sortdict.h" +#include "store.h" + +class ArgumentList; +struct BaseInfo; +struct Grouping; +struct SectionInfo; +struct ListItemInfo; +class QCString; +class QGString; +class SectionDict; +class MemberSDict; +class GroupList; +struct BodyInfo; +struct DocInfo; +struct BriefInfo; +class MemberList; +class ExampleSDict; +class Entry; + +#define NULL_LIST 0xffffffff + +class FileStorage : public QFile, public StorageIntf +{ + public: + FileStorage() : QFile() {} + FileStorage( const QString &name) : QFile(name) {} + int read(char *buf,uint size) { return QFile::readBlock(buf,size); } + int write(const char *buf,uint size) { return QFile::writeBlock(buf,size); } +}; + +class StreamStorage : public StorageIntf +{ + public: + StreamStorage() + { + m_data=0; + m_offset=0; + m_len=0; + } + ~StreamStorage() + { + delete m_data; + } + StreamStorage(char *data,uint len) + { + m_data=data; + m_offset=0; + m_len=len; + } + int read(char *buf,uint size) + { + int bytesLeft = QMIN((int)size,m_len-m_offset); + if (bytesLeft>0) memcpy(buf,m_data,bytesLeft); + m_offset+=bytesLeft; + return bytesLeft; + } + int write(const char *buf,uint size) + { + m_data=(char *)realloc(m_data,m_offset+size); + memcpy(m_data+m_offset,buf,size); + m_offset+=size; + m_len+=size; + return size; + } + void rewind() { m_offset=0; } + char *data() const { return m_data; } + int size() { return m_len; } + private: + char *m_data; + int m_offset; + int m_len; +}; + +//----- marshaling function: datatype -> byte stream -------------------- + +void marshalInt(StorageIntf *s,int v); +void marshalUInt(StorageIntf *s,uint v); +void marshalBool(StorageIntf *s,bool b); +void marshalQCString(StorageIntf *s,const QCString &str); +void marshalQGString(StorageIntf *s,const QGString &str); +void marshalArgumentList(StorageIntf *s,ArgumentList *argList); +void marshalArgumentLists(StorageIntf *s,QList *argLists); +void marshalBaseInfoList(StorageIntf *s, QList *baseList); +void marshalGroupingList(StorageIntf *s, QList *groups); +void marshalSectionInfoList(StorageIntf *s, QList *anchors); +void marshalItemInfoList(StorageIntf *s, QList *sli); +void marshalObjPointer(StorageIntf *s,void *obj); +void marshalSectionDict(StorageIntf *s,SectionDict *sections); +void marshalMemberSDict(StorageIntf *s,MemberSDict *memberSDict); +void marshalDocInfo(StorageIntf *s,DocInfo *docInfo); +void marshalBriefInfo(StorageIntf *s,BriefInfo *briefInfo); +void marshalBodyInfo(StorageIntf *s,BodyInfo *bodyInfo); +void marshalGroupList(StorageIntf *s,GroupList *groupList); +void marshalMemberList(StorageIntf *s,MemberList *ml); +void marshalExampleSDict(StorageIntf *s,ExampleSDict *ed); +void marshalMemberLists(StorageIntf *s,SDict *mls); +void marshalEntry(StorageIntf *s,Entry *e); +void marshalEntryTree(StorageIntf *s,Entry *e); + +//----- unmarshaling function: byte stream -> datatype ------------------ + +int unmarshalInt(StorageIntf *s); +uint unmarshalUInt(StorageIntf *s); +bool unmarshalBool(StorageIntf *s); +QCString unmarshalQCString(StorageIntf *s); +QGString unmarshalQGString(StorageIntf *s); +ArgumentList * unmarshalArgumentList(StorageIntf *s); +QList *unmarshalArgumentLists(StorageIntf *s); +QList * unmarshalBaseInfoList(StorageIntf *s); +QList * unmarshalGroupingList(StorageIntf *s); +QList * unmarshalSectionInfoList(StorageIntf *s); +QList *unmarshalItemInfoList(StorageIntf *s); +void * unmarshalObjPointer(StorageIntf *s); +SectionDict * unmarshalSectionDict(StorageIntf *s); +MemberSDict * unmarshalMemberSDict(StorageIntf *s); +DocInfo * unmarshalDocInfo(StorageIntf *s); +BriefInfo * unmarshalBriefInfo(StorageIntf *s); +BodyInfo * unmarshalBodyInfo(StorageIntf *s); +GroupList * unmarshalGroupList(StorageIntf *s); +MemberList * unmarshalMemberList(StorageIntf *s); +ExampleSDict * unmarshalExampleSDict(StorageIntf *s); +SDict * unmarshalMemberLists(StorageIntf *s); +Entry * unmarshalEntry(StorageIntf *s); +Entry * unmarshalEntryTree(StorageIntf *s); + +#endif