Changes

Jump to navigation Jump to search
Added basic data types
Line 1: Line 1:  
This page details the technical '''inner workings of ManiaPlanet''' (and the original TrackMania). It describes the game's classes, data structures and functions, and is as such geared towards reverse engineers and programmers.
 
This page details the technical '''inner workings of ManiaPlanet''' (and the original TrackMania). It describes the game's classes, data structures and functions, and is as such geared towards reverse engineers and programmers.
 +
 +
== Basic data types ==
 +
Nadeo uses its own primitive data types in its game engine. Since they can't be reversed, they are not used on this page and are listed here only for the sake of completeness.
 +
 +
typedef int Integer;
 +
typedef unsigned int Bool;
 +
typedef unsigned char Nat8;
 +
typedef unsigned short Nat16;
 +
typedef unsigned int Natural, Nat32;
 +
typedef unsigned __int64 Nat64;
 +
typedef float Real, Real32;
    
== Basic data structures ==
 
== Basic data structures ==
Line 81: Line 92:  
* If bits 30 and 31 are set, the Id is empty (null). Typically ''value'' is -1 in this case.
 
* If bits 30 and 31 are set, the Id is empty (null). Typically ''value'' is -1 in this case.
   −
<div class="mw-collapsible mw-collapsed">
   
Ids are managed by the class CMwId:
 
Ids are managed by the class CMwId:
<div class="mw-collapsible-content">
   
  class CMwId
 
  class CMwId
 
  {
 
  {
 
  public:
 
  public:
     __thiscall CMwId(void);  // Initializes the ID with the value -1 (Unassigned).
+
     CMwId(void);  // Initializes the ID with the value -1 (Unassigned).
     __thiscall CMwId(class CMwId const &);  // Initializes the id with the ID of the passed class.
+
     CMwId(CMwId const &);  // Initializes the id with the ID of the passed class.
     __thiscall ~CMwId(void);
+
     ~CMwId(void);
 
   
 
   
     static class CMwId * Unassigned;  // Points to the first entry in the table (Unassigned).
+
     static CMwId * Unassigned;  // Points to the first entry in the table (Unassigned).
     static void __cdecl StaticInit(void);  // Called from CGbxApp::Init. Creates the name table. Creates a first ID with the value -1 (Unassigned) and adds it to the table.
+
     static void StaticInit(void);  // Called from CGbxApp::Init. Creates the name table. Creates a first ID with the value -1 (Unassigned) and adds it to the table.
     static void __cdecl StaticRelease(void);  // Called from CGbxApp::Destroy. Releases the name table.
+
     static void StaticRelease(void);  // Called from CGbxApp::Destroy. Releases the name table.
 
   
 
   
     static class CMwId __cdecl CreateFromLocalIndex(unsigned long); // Calls CMwId::CMwId and sets the ID to the passed index.
+
     static CMwId CreateFromLocalIndex(unsigned long);   // Calls CMwId::CMwId and sets the ID to the passed index.
     static class CMwId __cdecl CreateFromTypeAndIndex(unsigned long); // Calls CMwId::CMwId and sets the ID to the passed index.
+
     static CMwId CreateFromTypeAndIndex(unsigned long); // Calls CMwId::CMwId and sets the ID to the passed index.
     static class CMwId __cdecl CreateFromLocalName(char const *); // Calls CMwId::CMwId and adds the passed name to the name table using SetLocalName (bit 30 of the ID is set).
+
     static CMwId CreateFromLocalName(char const *);     // Calls CMwId::CMwId and adds the passed name to the name table using SetLocalName (bit 30 of the ID is set).
     static class CMwId __cdecl CreateFromUUIdName(char const *); // Calls CMwId::CMwId and adds the passed name to the name table using AddName (bit 31 of the ID is set).
+
     static CMwId CreateFromUUIdName(char const *);     // Calls CMwId::CMwId and adds the passed name to the name table using AddName (bit 31 of the ID is set).
 
   
 
   
     void __thiscall SetLocalName(char const *);  // Sets the ID to -1 if the name is "Unassigned"; otherwise, adds the name to the table using AddName and sets bit 30 of the ID.
+
     void SetLocalName(char const *);  // Sets the ID to -1 if the name is "Unassigned"; otherwise, adds the name to the table using AddName and sets bit 30 of the ID.
     void __thiscall SetLocalName(class CFastStringInt const &);  // Calls CFastStringInt::GetUtf8 and then SetLocalName.
+
     void SetLocalName(CFastStringInt const &);  // Calls CFastStringInt::GetUtf8 and then SetLocalName.
 
   
 
   
     char const * __thiscall GetString(void)const;  // Gets the string of the ID if bit 30 or 31 is set; otherwise, NULL is returned.
+
     char const * GetString(void)const;  // Gets the string of the ID if bit 30 or 31 is set; otherwise, NULL is returned.
 
   
 
   
     void __thiscall GetName(class CFastString &)const;  // Returns either the name of the ID using GetString, "Unassigned" if the ID is -1 or "Id<number>" if ID represents a number.
+
     void GetName(CFastString &)const;  // Returns either the name of the ID using GetString, "Unassigned" if the ID is -1 or "Id<number>" if ID represents a number.
     void __thiscall GetName(class CFastStringInt &)const;
+
     void GetName(CFastStringInt &)const;
     class CFastString const __thiscall GetName(void)const;
+
     class CFastString const GetName(void)const;
 
   
 
   
     void __thiscall Archive(class CClassicArchive &);  // Serializes the ID. See "[[GBX#Primitives|lookbackstring]]" on the [[GBX]] page for some details.
+
     void Archive(CClassicArchive &);  // Serializes the ID. See "[[GBX#Primitives|lookbackstring]]" on the [[GBX]] page for some details.
 
   
 
   
 
  private:
 
  private:
     static struct SMwIdInternal * s_NameTable;  // Points to the name table.
+
     static SMwIdInternal * s_NameTable;  // Points to the name table.
     static unsigned long __cdecl AddName(char const *);  // Adds the name to the name table.
+
     static unsigned long AddName(char const *);  // Adds the name to the name table.
     static void __cdecl DeleteArchiveUserData(class CClassicArchive *);
+
     static void DeleteArchiveUserData(CClassicArchive *);
 
  };
 
  };
</div>
  −
</div>
      
===Identifier===
 
===Identifier===
Line 129: Line 136:  
  };
 
  };
   −
<div class="mw-collapsible mw-collapsed">
   
Identifiers are managed by the class SGameCtnIdentifier:
 
Identifiers are managed by the class SGameCtnIdentifier:
<div class="mw-collapsible-content">
   
  struct SGameCtnIdentifier
 
  struct SGameCtnIdentifier
 
  {
 
  {
 
  public:
 
  public:
     __thiscall SGameCtnIdentifier(void);  // Calls CMwId::CMwId for all three IDs of the Ident.
+
     SGameCtnIdentifier(void);  // Calls CMwId::CMwId for all three IDs of the Ident.
     __thiscall SGameCtnIdentifier(struct SGameCtnIdentifier const &);  // Calls CMwId::CMwId(class CMwId const &) for all three IDs of the Ident.
+
     SGameCtnIdentifier(SGameCtnIdentifier const &);  // Calls CMwId::CMwId(class CMwId const &) for all three IDs of the Ident.
     __thiscall ~SGameCtnIdentifier(void);
+
     ~SGameCtnIdentifier(void);
 
   
 
   
     int __thiscall operator==(struct SGameCtnIdentifier const &)const;  // Compares the first two IDs of the Ident.
+
     int operator==(SGameCtnIdentifier const &)const;  // Compares the first two IDs of the Ident.
     static int __cdecl sCompareCollectionAndId(struct SGameCtnIdentifier const *, struct SGameCtnIdentifier const *);  // Compares the names of the first two IDs of the Ident using CMwId::GetName.
+
     static int sCompareCollectionAndId(SGameCtnIdentifier const *, SGameCtnIdentifier const *);  // Compares the names of the first two IDs of the Ident using CMwId::GetName.
 
   
 
   
     void __thiscall Archive(class CClassicArchive &);  // Serializes the Ident. See "[[GBX#Primitives|meta]]" on the [[GBX]] page for details.
+
     void Archive(CClassicArchive &);  // Serializes the Ident. See "[[GBX#Primitives|meta]]" on the [[GBX]] page for details.
 
  };
 
  };
</div>
  −
</div>
      
===Delegate===
 
===Delegate===
Line 161: Line 164:  
  struct Color
 
  struct Color
 
  {
 
  {
     int r;
+
     float r;
     int g;
+
     float g;
     int b;
+
     float b;
 
  };
 
  };
   Line 249: Line 252:  
  {
 
  {
 
  public:
 
  public:
     CMwNod();
+
     CMwNod(void);
     virtual ~CMwNod();
+
    CMwNod(CMwNod const &);
     virtual CMwClassInfo* MwGetClassInfo(); // Gets information about the object's class
+
     virtual ~CMwNod(void);
     virtual int GetMwClassId();
+
     virtual CMwClassInfo const * MwGetClassInfo(void)const; // Gets information about the object's class
     virtual bool MwIsKindOf(int classID);   // Returns true if the object's class is equal to or derives from the specified class
+
     virtual unsigned long GetMwClassId(void)const;
     virtual CMwId* MwGetId();              // Returns meta information about the object, like name and author
+
     virtual bool MwIsKindOf(unsigned long classID)const;   // Returns true if the object's class is equal to or derives from the specified class
     virtual void SetIdName(char* psz);     // Sets the name of the object (affects MwGetId())
+
     virtual CMwId const * MwGetId(void)const;              // Returns meta information about the object, like name and author
     virtual void MwIsKilled(CMwNod*);
+
     virtual void SetIdName(char const * psz);               // Sets the name of the object (affects MwGetId())
     virtual void MwIsUnreferenced(CMwNod*);
+
     virtual void MwIsKilled(CMwNod *);
     virtual void VirtualParam_Get(CMwStack* pStack, CMwValueStd* ppValue); // Gets the value of a property
+
     virtual void MwIsUnreferenced(CMwNod *);
     virtual void VirtualParam_Set(CMwStack* pStack, void* pValue);        // Calls a method or sets a property
+
     virtual unsigned long VirtualParam_Get(CMwStack * pStack, CMwValueStd * ppValue); // Gets the value of a property
     virtual void VirtualParam_Add(CMwStack* pStack, void* pValue);
+
     virtual unsigned long VirtualParam_Set(CMwStack * pStack, void * pValue);        // Calls a method or sets a property
     virtual void VirtualParam_Sub(CMwStack* pStack, void* pValue);
+
     virtual unsigned long VirtualParam_Add(CMwStack * pStack, void * pValue);
     virtual void Archive(CClassicArchive* pArchive);                       // (De)serializes the [[GBX#Reading_the_body|nod]] from a stream
+
     virtual unsigned long VirtualParam_Sub(CMwStack * pStack, void * pValue);
     virtual void Chunk(CClassicArchive* pArchive, int chunkID);           // (De)serializes a single chunk from a stream
+
     virtual CMwNod * Archive(CClassicArchive & pArchive);                   // (De)serializes the [[GBX#Reading_the_body|nod]] from a stream
     virtual int GetChunkInfo(int chunkID);        // Gets chunk-specific flags, e.g. if it is skippable
+
     virtual void Chunk(CClassicArchive & pArchive, unsigned long chunkID); // (De)serializes a single chunk from a stream
     virtual int GetUidChunkFromIndex(int index);  // Used during serialization: which chunk to write next
+
     virtual unsigned long GetChunkInfo(unsigned long chunkID)const;        // Gets chunk-specific flags, e.g. if it is skippable
     virtual int GetChunkCount();                   // Used during serialization: how many chunks to write
+
     virtual unsigned long GetUidChunkFromIndex(unsigned long index)const;  // Used during serialization: which chunk to write next
     virtual void OnNodLoaded();                   // Called after the last chunk has been read/written
+
     virtual unsigned long GetChunkCount(void)const; // Used during serialization: how many chunks to write
     virtual void CreateDefaultData();
+
     virtual void OnNodLoaded(void);                 // Called after the last chunk has been read/written
     virtual void OnPackAvailable(CSystemFid*, CSystemFid*);
+
     virtual void CreateDefaultData(void);
     virtual void ApplyFidParameters(CSystemFidParameters*, CSystemFidParameters*, CFastBuffer<SManuallyLoadedFid>*);
+
     virtual void OnPackAvailable(CSystemFid *, CSystemFid *);
     virtual void OnCrashDump(CFastString*);
+
     virtual void ApplyFidParameters(CSystemFidParameters const *, CSystemFidParameters *, CFastBuffer<SManuallyLoadedFid> &);
     virtual void CopyFrom(CMwNod*);
+
     virtual int OnCrashDump(CFastString &);
     virtual void HeaderChunk(CClassicArchive* pArchive, int* pHeaderChunkID, bool* pbLight); // Writes a header chunk to a stream
+
     virtual void CopyFrom(CMwNod *);
     virtual int GetUidHeaderChunkFromIndex(int index); // Used during serialization: which header chunk to write next
+
     virtual void HeaderChunk(CClassicArchive & pArchive, unsigned long & pHeaderChunkID, bool & pbLight); // Writes a header chunk to a stream
     virtual int GetHeaderChunkCount();                 // Used during serialization: how many header chunks to write
+
     virtual unsigned long GetUidHeaderChunkFromIndex(unsigned long index)const; // Used during serialization: which header chunk to write next
     virtual int GetUidMessageFromIndex(int index);
+
     virtual unsigned long GetHeaderChunkCount(void)const;                       // Used during serialization: how many header chunks to write
     virtual int GetMessageCount();
+
     virtual unsigned long GetUidMessageFromIndex(unsigned long index)const;
     virtual void MwReceiveMessage(int*, CMwNod*, int*);
+
     virtual unsigned long GetMessageCount(void)const;
 +
     virtual void MwReceiveMessage(unsigned long const &, CMwNod *, unsigned long *);
 
   
 
   
     int Param_Get(CMwStack* pStack, CMwValueStd* ppValue);
+
     unsigned long Param_Get(CMwStack * pStack, CMwValueStd * ppValue);
     int Param_Set(CMwStack* pStack, void* pValue);
+
     unsigned long Param_Set(CMwStack * pStack, void * pValue);
     int Param_Add(CMwStack* pStack, void* pValue);
+
     unsigned long Param_Add(CMwStack * pStack, void * pValue);
     int Param_Sub(CMwStack* pStack, void* pValue);
+
     unsigned long Param_Sub(CMwStack * pStack, void * pValue);
     int Param_Check(CMwStack* pStack);
+
     unsigned long Param_Check(CMwStack * pStack);
     int Param_Set(CFastString*, CFastStringInt*);
+
     unsigned long Param_Set(CFastString const &, CFastStringInt const &);
 
   
 
   
     int MwAddRef();                   // Increments countRef
+
     unsigned long MwAddRef(void);     // Increments countRef
     int MwRelease();                   // Decrements countRef. If zero, the object and all dependants are destroyed.
+
     unsigned long MwRelease(void);     // Decrements countRef. If zero, the object and all dependants are destroyed.
 
   
 
   
     void MwAddDependant(CMwNod*);
+
     void MwAddDependant(CMwNod *)const;
     void MwAddReceiver(CMwNod*);
+
     void MwAddReceiver(CMwNod *);
     void MwSubDependant(CMwNod*);
+
     void MwSubDependant(CMwNod *)const;
     void MwSubDependantSafe(CMwNod*);
+
     void MwSubDependantSafe(CMwNod *)const;
     void MwFinalSubDependant(CMwNod*);
+
     void MwFinalSubDependant(CMwNod *)const;
     void DependantSendMwIsKilled();
+
     void DependantSendMwIsKilled(void);
 
   
 
   
 
  private:
 
  private:
Line 686: Line 690:  
  class CSystemFid : public CMwNod          // Base class for files
 
  class CSystemFid : public CMwNod          // Base class for files
 
  {
 
  {
 +
public:
 +
    int ArchiveHeaderUserData(CClassicArchive *);        // Reads or writes header user data
 +
    void BuildHeaderUserData(CSystemArchiveNod const &);  // Prepares the header chunk data for writing
 +
 +
private:
 +
    int HeaderUserDataCreateFromArchive(CClassicArchive *, unsigned long size);  // Reads the header chunk data
 +
 
  private:
 
  private:
 
     int unknown0;
 
     int unknown0;
Line 748: Line 759:  
  {
 
  {
 
  public:
 
  public:
     virtual CClassicBuffer* OpenBuffer(CSystemFid* pFid, enum EMode, int);  // EMode: 1 = read, 2 = write
+
     virtual CClassicBuffer * OpenBuffer(CSystemFid const * pFid, enum EMode, int)const;  // EMode: 1 = read, 2 = write
     virtual void CloseBuffer(CSystemFid* pFid, CClassicBuffer* pBuffer);
+
     virtual void CloseBuffer(CSystemFid const * pFid, CClassicBuffer * pBuffer)const;
 
  };
 
  };
   Line 761: Line 772:  
  {
 
  {
 
  public:
 
  public:
     CClassicBuffer();
+
     CClassicBuffer(void);
     virtual ~CClassicBuffer();
+
     virtual ~CClassicBuffer(void);
     virtual int IsStoringSecured();
+
     virtual int IsStoringSecured(void)const;
     virtual int IsSeekable();
+
     virtual int IsSeekable(void)const;
     virtual void SetCurOffset(int);
+
     virtual void SetCurOffset(unsigned long);
     virtual CFastStringInt* GetFileName();
+
     virtual CFastStringInt const * GetFileName(void);
 
   
 
   
     int ReadAll(void*, int);
+
     int ReadAll(void * data, unsigned long size);       // Reads the specified number of bytes
     int WriteAll(void*, int);
+
     int WriteAll(void const * data, unsigned long size); // Writes the specified number of bytes
 
   
 
   
     CClassicBufferMemory* CreateUncompressedBlock();
+
     CClassicBufferMemory * CreateUncompressedBlock(void);
     void AddCompressedBlock(CClassicBufferMemory&);
+
     void AddCompressedBlock(CClassicBufferMemory const &);
 
   
 
   
     int Skip(int);
+
     unsigned long Skip(unsigned long);
     int IsEqualBuffer(CClassicBuffer&);
+
     int IsEqualBuffer(CClassicBuffer &);
     int CopyFrom(CClassicBuffer*);
+
     int CopyFrom(CClassicBuffer *);
 
   
 
   
 
     static int s_IsBufferExceptions;
 
     static int s_IsBufferExceptions;
Line 805: Line 816:  
  {
 
  {
 
  public:
 
  public:
     CClassicBufferMemory();
+
     CClassicBufferMemory(void);
     virtual ~CClassicBufferMemory();
+
     virtual ~CClassicBufferMemory(void);
     virtual int Read(void* pTargetBuffer, int length);
+
     virtual unsigned long Read(void * pTargetBuffer, unsigned long length);
     virtual int Write(void* pData, int length);
+
     virtual unsigned long Write(void const * pData, unsigned long length);
     virtual void Close();
+
     virtual int Close(void);
     virtual void m10()
+
     virtual unsigned long m10(); // Stub that returns 0
     virtual int GetCurOffset();
+
     virtual unsigned long GetCurOffset(void)const;
     virtual int GetActualSize();
+
     virtual unsigned long GetActualSize(void)const;
     virtual bool IsSeekable();
+
     virtual bool IsSeekable(void)const;
     virtual void SetCurOffset(int position);
+
     virtual void SetCurOffset(unsigned long position);
     virtual void m24();
+
     virtual unsigned long m24(); // Stub that returns 0
     virtual void AdvanceOffset(int offset); // SetCurOffset(GetCurOffset() + offset);
+
     virtual void AdvanceOffset(unsigned long offset); // SetCurOffset(GetCurOffset() + offset);
     virtual int GetAllocatedSize();
+
     virtual unsigned long GetAllocatedSize(void)const;
 
   
 
   
     void PreAlloc(int);
+
     void PreAlloc(unsigned long);
     void Attach(void*, int);
+
     void Attach(void *, unsigned long);
     void CopyAndDetachBufferMemory(CClassicBufferMemory&);
+
     void CopyAndDetachBufferMemory(CClassicBufferMemory &);
     void Reset();
+
     void Reset(void);
     void Empty();
+
     void Empty(void);
     void EmptyAndFreeMemory();
+
     void EmptyAndFreeMemory(void);
     int IsEqualBuffer(CClassicBufferMemory&);
+
     int IsEqualBuffer(CClassicBufferMemory const &)const;
     int WriteVoid(int);
+
     unsigned long WriteVoid(unsigned long);
     int WriteCopy(CClassicBuffer*, int);
+
     unsigned long WriteCopy(CClassicBuffer *, unsigned long);
 
   
 
   
 
  private:
 
  private:
Line 919: Line 930:  
  {
 
  {
 
  public:
 
  public:
     __thiscall CClassicArchive(void);
+
     CClassicArchive(void);
     virtual __thiscall ~CClassicArchive(void);
+
     virtual ~CClassicArchive(void);
     virtual void __thiscall DoNodPtr(class CMwNod * &);
+
     virtual void DoNodPtr(CMwNod * &);
     virtual void __thiscall DoFid(class CSystemFidFile * &);
+
     virtual void DoFid(CSystemFidFile * &);
     virtual void __thiscall DoFolder(class CSystemFidsFolder * &, int, class CSystemFidsFolder *);
+
     virtual void DoFolder(CSystemFidsFolder * &, int, CSystemFidsFolder *);
     virtual int __thiscall GetArchivingFileName(class CFastStringInt &)const;
+
     virtual int GetArchivingFileName(CFastStringInt &)const;
 
   
 
   
     void __thiscall AttachBuffer(class CClassicBuffer *);
+
     void AttachBuffer(CClassicBuffer *);
     class CClassicBuffer * __thiscall DetachBuffer(int);
+
     CClassicBuffer * DetachBuffer(int);
 
   
 
   
     void __thiscall ReadData(void *, unsigned long);
+
     void ReadData(void *, unsigned long);
     void __thiscall ReadBool(int *, unsigned long);
+
     void ReadBool(bool *, unsigned long);
     void __thiscall ReadMask(unsigned long *, unsigned long);
+
     void ReadMask(unsigned long *, unsigned long);
     void __thiscall ReadNat8(unsigned char *, unsigned long, int);
+
     void ReadNat8(unsigned char *, unsigned long, int);
     void __thiscall ReadNat16(unsigned short *, unsigned long, int);
+
     void ReadNat16(unsigned short *, unsigned long, int);
     void __thiscall ReadNat32(unsigned long *, unsigned long, int);
+
     void ReadNat32(unsigned long *, unsigned long, int);
     void __thiscall ReadNatural(unsigned long *, unsigned long, int);
+
     void ReadNatural(unsigned long *, unsigned long, int);
     void __thiscall ReadNat64(unsigned __int64 *, unsigned long, int);
+
     void ReadNat64(unsigned __int64 *, unsigned long, int);
     void __thiscall ReadInteger(int *, unsigned long, int);
+
     void ReadInteger(int *, unsigned long, int);
     void __thiscall ReadReal(float *, unsigned long);
+
     void ReadReal(float *, unsigned long);
     void __thiscall ReadString(class CFastString *, unsigned long);
+
     void ReadString(CFastString *, unsigned long);
     void __thiscall ReadString(class CFastStringInt *, unsigned long);
+
     void ReadString(CFastStringInt *, unsigned long);
 
   
 
   
     void __thiscall WriteData(void const *, unsigned long);
+
     void WriteData(void const *, unsigned long);
     void __thiscall WriteBool(int const *, unsigned long);
+
     void WriteBool(bool const *, unsigned long);
     void __thiscall WriteMask(unsigned long const *, unsigned long);
+
     void WriteMask(unsigned long const *, unsigned long);
     void __thiscall WriteNat8(unsigned char const *, unsigned long, int);
+
     void WriteNat8(unsigned char const *, unsigned long, int);
     void __thiscall WriteNat16(unsigned short const *, unsigned long, int);
+
     void WriteNat16(unsigned short const *, unsigned long, int);
     void __thiscall WriteNat32(unsigned long const *, unsigned long, int);
+
     void WriteNat32(unsigned long const *, unsigned long, int);
     void __thiscall WriteNatural(unsigned long const *, unsigned long, int);
+
     void WriteNatural(unsigned long const *, unsigned long, int);
     void __thiscall WriteNat64(unsigned __int64 const *, unsigned long, int);
+
     void WriteNat64(unsigned __int64 const *, unsigned long, int);
     void __thiscall WriteInteger(int const *, unsigned long, int);
+
     void WriteInteger(int const *, unsigned long, int);
     void __thiscall WriteReal(float const *, unsigned long);
+
     void WriteReal(float const *, unsigned long);
     void __thiscall WriteString(class CFastString const *, unsigned long);
+
     void WriteString(CFastString const *, unsigned long);
     void __thiscall WriteString(class CFastStringInt const *, unsigned long);
+
     void WriteString(CFastStringInt const *, unsigned long);
 
   
 
   
     void __thiscall DoMarker(char const *); // Reads or writes markup, like <Thumbnail.jpg> or </Thumbnail.jpg>
+
     void DoMarker(char const *); // Reads or writes markup, like <Thumbnail.jpg> or </Thumbnail.jpg>
     void __thiscall DoData(void *, unsigned long count); // Reads or writes the specified number of bytes
+
     void DoData(void *, unsigned long count); // Reads or writes the specified number of bytes
     void __thiscall DoBool(int *, unsigned long count); // Reads or writes a truth value
+
     void DoBool(bool *, unsigned long count); // Reads or writes a truth value
     void __thiscall DoMask(unsigned long *, unsigned long count); // Reads or writes a hex value (class ID)
+
     void DoMask(unsigned long *, unsigned long count); // Reads or writes a hex value (typically a class ID)
     void __thiscall DoNat8(unsigned char *, unsigned long count, int isHex);
+
     void DoNat8(unsigned char *, unsigned long count, int isHex);
     void __thiscall DoNat16(unsigned short *, unsigned long count, int isHex);
+
     void DoNat16(unsigned short *, unsigned long count, int isHex);
     void __thiscall DoNat32(unsigned long *, unsigned long count, int isHex);
+
     void DoNat32(unsigned long *, unsigned long count, int isHex);
     void __thiscall DoNatural(unsigned long *, unsigned long count, int isHex);
+
     void DoNatural(unsigned long *, unsigned long count, int isHex);
     void __thiscall DoNat64(unsigned __int64 *, unsigned long count, int isHex);
+
     void DoNat64(unsigned __int64 *, unsigned long count, int isHex);
     void __thiscall DoNat128(struct SNat128 *, unsigned long count);
+
     void DoNat128(struct SNat128 *, unsigned long count);
     void __thiscall DoInteger(int *, unsigned long count, int isHex);
+
     void DoInteger(int *, unsigned long count, int isHex);
     void __thiscall DoReal(float *, unsigned long count);
+
     void DoReal(float *, unsigned long count);
     void __thiscall DoString(class CFastString *, unsigned long count);
+
     void DoString(CFastString *, unsigned long count);
     void __thiscall DoString(class CFastStringInt *, unsigned long count);
+
     void DoString(CFastStringInt *, unsigned long count);
     void __thiscall DoStringI18nComment(class CFastStringInt *, char const *);
+
     void DoStringI18nComment(CFastStringInt *, char const *);
 
   
 
   
     void __thiscall SkipData(unsigned long);
+
     void SkipData(unsigned long); // Writes the specified number of zeros, or calls CClassicBuffer::Skip() while reading
 
   
 
   
 
     static void (__cdecl* s_ThrowCorruptedArchive)(void);
 
     static void (__cdecl* s_ThrowCorruptedArchive)(void);
Line 977: Line 988:  
   
 
   
 
  protected:
 
  protected:
     int __thiscall ReadLine(void);
+
     int ReadLine(void);   // Reads data from a .gbx file in text format
     void __thiscall WriteLine(void);
+
     void WriteLine(void); // Writes data to a .gbx file in text format
 
   
 
   
     static void (__cdecl* s_DeleteMwIdUserDataCallBack)(class CClassicArchive *);
+
     static void (__cdecl* s_DeleteMwIdUserDataCallBack)(CClassicArchive *);
 
   
 
   
 
  private:
 
  private:
Line 996: Line 1,007:  
  {
 
  {
 
  public:
 
  public:
     __thiscall CSystemArchiveNod(void);
+
     CSystemArchiveNod(void);
     virtual __thiscall ~CSystemArchiveNod(void);
+
     virtual ~CSystemArchiveNod(void);
     virtual void __thiscall DoNodPtr(class CMwNod * &); // Reads or writes a reference to an object. If this is the first time the object is encountered, it is (de)serialized at this point.
+
     virtual void DoNodPtr(CMwNod * &); // Reads or writes a reference to an object. If this is the first time the object is encountered, it is (de)serialized at this point.
     virtual void __thiscall DoFid(class CSystemFidFile * &);
+
     virtual void DoFid(CSystemFidFile * &);
     virtual void __thiscall DoFolder(class CSystemFidsFolder * &, int, class CSystemFidsFolder *);
+
     virtual void DoFolder(CSystemFidsFolder * &, int, CSystemFidsFolder *);
     virtual int __thiscall GetArchivingFileName(class CFastStringInt &)const;
+
     virtual int GetArchivingFileName(CFastStringInt &)const;
 
   
 
   
     void __thiscall DoDecode(unsigned long);
+
     void DoDecode(unsigned long);
     int __thiscall DoFindNod(class CMwNod * &, class CSystemFid *);
+
     int DoFindNod(CMwNod * &, CSystemFid *);
     int __thiscall DoIsFileSame(class CSystemFid *, class CClassicBufferMemory &)
+
     int DoIsFileSame(CSystemFid *, CClassicBufferMemory &)
     void __thiscall DoFormatFromFid(void);
+
     void DoFormatFromFid(void);
     int __thiscall AddInternalRef(class CMwNod *, unsigned long &, char const *);
+
     int AddInternalRef(CMwNod *, unsigned long &, char const *);
     int __thiscall InsertExternalLocations(class CSystemFids *, class CFastBuffer<class CSystemFids *> *);
+
     int InsertExternalLocations(CSystemFids *, CFastBuffer<CSystemFids *> *);
     int __thiscall ExtractExternalLocations(class CFastBuffer<class CSystemFids *> * &, class CSystemFidsDrive *);
+
     int ExtractExternalLocations(CFastBuffer<CSystemFids *> * &, CSystemFidsDrive *);
     int __thiscall LoadCurrentHeader(enum EVersion);
+
     int LoadCurrentHeader(enum EVersion); // Reads the file header of a .gbx file
     int __thiscall DoLoadHeader(void);
+
     int DoLoadHeader(void);     // Reads the magic 'GBX' and version of a .gbx file, and then calls LoadCurrentHeader()
     int __thiscall DoSaveHeader(void);
+
     int DoSaveHeader(void);     // Writes the header of a .gbx file
     int __thiscall DoLoadRef(void);
+
     int DoLoadRef(void);         // Reads the reference table of a .gbx file
     int __thiscall DoSaveRef(void);
+
     int DoSaveRef(void);         // Writes the reference table of a .gbx file
     int __thiscall DoLoadAllRef(void);
+
     int DoLoadAllRef(void);     // Reads the header and the reference table of a .gbx file
     int __thiscall DoLoadBody(class CMwNod * &);
+
     int DoLoadBody(CMwNod * &); // Reads the body of a .gbx file
     int __thiscall DoSaveBody(void);
+
     int DoSaveBody(void);       // Writes the body of a .gbx file
     int __thiscall DoSaveBodyMemory(class CMwNod *);
+
     int DoLoadAll(CMwNod * &);   // Reads the header, the reference table and the body of a .gbx file
     int __thiscall DoLoadAll(class CMwNod * &);
+
     int DoSaveAll(void);         // Writes the header, the reference table and the body of a .gbx file
     int __thiscall DoSaveAll(void);
+
     int DoSaveBodyMemory(CMwNod *);
     int __thiscall DoSave(class CMwNod *, unsigned long, enum EArchive, int);
+
     int DoSave(CMwNod *, unsigned long, enum EArchive, int);
     int __thiscall DoLoadResource(unsigned long, class CMwNod * &);
+
     int DoLoadResource(unsigned long, CMwNod * &);
     int __thiscall DoFidLoadFile(class CMwNod * &);
+
     int DoFidLoadFile(CMwNod * &);
     int __thiscall DoFidSaveFile(class CMwNod *);
+
     int DoFidSaveFile(CMwNod *);
     int __thiscall DoFidSaveFileSafe(class CMwNod *, unsigned long);
+
     int DoFidSaveFileSafe(CMwNod *, unsigned long);
     int __thiscall DoFidLoadRefs(enum EArchive, class CClassicBuffer *);
+
     int DoFidLoadRefs(enum EArchive, CClassicBuffer *);
     int __thiscall DoFidLoadMemory(class CMwNod * &);
+
     int DoFidLoadMemory(CMwNod * &);
     int __thiscall DoFidSaveMemory(class CMwNod *);
+
     int DoFidSaveMemory(CMwNod *);
     int __thiscall DoLoadFile(class CFastStringInt const &, class CMwNod * &, class CSystemFids *, enum EArchive);
+
     int DoLoadFile(CFastStringInt const &, CMwNod * &, CSystemFids *, enum EArchive);
     int __thiscall DoSaveFile(class CFastStringInt const &, class CMwNod *, class CSystemFids *, unsigned long, enum EArchive, int);
+
     int DoSaveFile(CFastStringInt const &, CMwNod *, CSystemFids *, unsigned long, enum EArchive, int);
     int __thiscall DoLoadFromFid(class CMwNod * &);
+
     int DoLoadFromFid(CMwNod * &);
     int __thiscall DoLoadMemory(class CClassicBufferMemory *, class CMwNod * &);
+
     int DoLoadMemory(CClassicBufferMemory *, CMwNod * &);
     int __thiscall DoSaveMemory(class CClassicBufferMemory *, class CMwNod *, unsigned long);
+
     int DoSaveMemory(CClassicBufferMemory *, CMwNod *, unsigned long);
     int __thiscall DoLoadMemoryTemp(class CClassicBufferMemory *, class CMwNod * &);
+
     int DoLoadMemoryTemp(CClassicBufferMemory *, CMwNod * &);
     int __thiscall DoSaveMemoryTemp(class CClassicBufferMemory *, class CMwNod *, unsigned long, int);
+
     int DoSaveMemoryTemp(CClassicBufferMemory *, CMwNod *, unsigned long, int);
 
   
 
   
     static void __cdecl DoFolder(class CClassicArchive &, class CSystemFidsFolder * &, class CSystemFidsFolder *);
+
     static void DoFolder(CClassicArchive &, CSystemFidsFolder * &, CSystemFidsFolder *);
     static int __cdecl SaveFile(class CFastStringInt const &, class CMwNod *, class CSystemFids *, unsigned long, enum EArchive, int);
+
     static int SaveFile(CFastStringInt const &, CMwNod *, CSystemFids *, unsigned long, enum EArchive, int);
     static int __cdecl LoadFromFid(class CMwNod * &, class CSystemFid *, enum EArchive);
+
     static int LoadFromFid(CMwNod * &, CSystemFid *, enum EArchive);
     static int __cdecl SaveToFid(class CSystemFid *, class CMwNod *, unsigned long, int);
+
     static int SaveToFid(CSystemFid *, CMwNod *, unsigned long, int);
     static int __cdecl LoadFileFrom(class CFastStringInt const &, class CMwNod * &, class CSystemFids *, enum EArchive);
+
     static int LoadFileFrom(CFastStringInt const &, CMwNod * &, CSystemFids *, enum EArchive);
     static int __cdecl LoadFileToMemory(class CSystemFid *, class CClassicBufferMemory *)
+
     static int LoadFileToMemory(CSystemFid *, CClassicBufferMemory *)
     static int __cdecl SaveMemoryToFile(class CSystemFid *, class CClassicBufferMemory *);
+
     static int SaveMemoryToFile(CSystemFid *, CClassicBufferMemory *);
     static int __cdecl SaveMemory(class CClassicBufferMemory *, class CMwNod *, unsigned long);
+
     static int SaveMemory(CClassicBufferMemory *, CMwNod *, unsigned long);
     static int __cdecl LoadMemoryTemp(class CClassicBufferMemory *, class CMwNod * &);
+
     static int LoadMemoryTemp(CClassicBufferMemory *, CMwNod * &);
     static int __cdecl SaveMemoryTemp(class CClassicBufferMemory *, class CMwNod *, unsigned long, int);
+
     static int SaveMemoryTemp(CClassicBufferMemory *, CMwNod *, unsigned long, int);
     static int __cdecl LoadResource(unsigned long, class CMwNod * &);
+
     static int LoadResource(unsigned long, CMwNod * &);
     static int __cdecl Save(class CMwNod *, unsigned long, int);
+
     static int Save(CMwNod *, unsigned long, int);
     static int __cdecl Compare(class CMwNod *, class CMwNod *, int &);
+
     static int Compare(CMwNod *, CMwNod *, int &);
     static int __cdecl Duplicate(class CMwNod * &, int);
+
     static int Duplicate(CMwNod * &, int);
     static void __cdecl ComputeCrcNat32(class CMwNod *, unsigned long &);
+
     static void ComputeCrcNat32(CMwNod *, unsigned long &);
     static void __cdecl ComputeCrcString(class CMwNod *, class CFastString &);
+
     static void ComputeCrcString(CMwNod *, CFastString &);
 
   
 
   
 
  private:
 
  private:
     void __thiscall ParametrizedFinalization(class CMwNod *);
+
     void ParametrizedFinalization(CMwNod *);
     void __thiscall ParametrizedFindOrAddFid(class CSystemFid *, class CMwNod *);
+
     void ParametrizedFindOrAddFid(CSystemFid *, CMwNod *);
 
   
 
   
 
  private:
 
  private:

Navigation menu