mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-08 01:39:36 +00:00
1
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
#ifndef IMPORTKEYVALUEBASE_H
|
||||
#define IMPORTKEYVALUEBASE_H
|
||||
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "datamodel/idatamodel.h"
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Forward declarations
|
||||
//-----------------------------------------------------------------------------
|
||||
class CUtlBuffer;
|
||||
class KeyValues;
|
||||
class CDmElement;
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Serialization class for Key Values
|
||||
//-----------------------------------------------------------------------------
|
||||
abstract_class CImportKeyValueBase : public IDmSerializer
|
||||
{
|
||||
public:
|
||||
// Inherited from IDMSerializer
|
||||
virtual bool StoresVersionInFile() const { return false; }
|
||||
virtual bool IsBinaryFormat() const { return false; }
|
||||
virtual bool Serialize( CUtlBuffer &buf, CDmElement *pRoot );
|
||||
virtual bool Unserialize( CUtlBuffer &buf, const char *pEncodingName, int nEncodingVersion,
|
||||
const char *pSourceFormatName, int nSourceFormatVersion,
|
||||
DmFileId_t fileid, DmConflictResolution_t idConflictResolution, CDmElement **ppRoot );
|
||||
|
||||
protected:
|
||||
// Main entry point for derived classes to implement unserialization
|
||||
virtual CDmElement* UnserializeFromKeyValues( KeyValues *pKeyValues ) = 0;
|
||||
|
||||
// Returns the file name associated with the unserialization
|
||||
const char *FileName() const;
|
||||
|
||||
// Creates new elements
|
||||
CDmElement* CreateDmElement( const char *pElementType, const char *pElementName, DmObjectId_t *pId );
|
||||
|
||||
// Recursively resolves all attributes pointing to elements
|
||||
void RecursivelyResolveElement( CDmElement* pElement );
|
||||
|
||||
// Used to add typed attributes from keyvalues
|
||||
bool AddBoolAttribute( CDmElement* pElement, KeyValues *pKeyValue, const char *pKeyName, bool *pDefault = NULL );
|
||||
bool AddIntAttribute( CDmElement* pElement, KeyValues *pKeyValue, const char *pKeyName, int *pDefault = NULL );
|
||||
bool AddFloatAttribute( CDmElement* pElement, KeyValues *pKeyValue, const char *pKeyName, float *pDefault = NULL );
|
||||
bool AddStringAttribute( CDmElement* pElement, KeyValues *pKeyValue, const char *pKeyName, const char *pDefault = NULL );
|
||||
|
||||
// Used to add typed attributes from keyvalues
|
||||
bool AddBoolAttributeFlags( CDmElement* pElement, KeyValues *pKeyValue, const char *pKeyName, int nFlags, bool *pDefault = NULL );
|
||||
bool AddIntAttributeFlags( CDmElement* pElement, KeyValues *pKeyValue, const char *pKeyName, int nFlags, int *pDefault = NULL );
|
||||
bool AddFloatAttributeFlags( CDmElement* pElement, KeyValues *pKeyValue, const char *pKeyName, int nFlags, float *pDefault = NULL );
|
||||
bool AddStringAttributeFlags( CDmElement* pElement, KeyValues *pKeyValue, const char *pKeyName, int nFlags, const char *pDefault = NULL );
|
||||
|
||||
// Used to output typed attributes to keyvalues
|
||||
void PrintBoolAttribute( CDmElement* pElement, CUtlBuffer &outBuf, const char *pKeyName );
|
||||
void PrintIntAttribute( CDmElement* pElement, CUtlBuffer &outBuf, const char *pKeyName );
|
||||
void PrintFloatAttribute( CDmElement* pElement, CUtlBuffer &outBuf, const char *pKeyName );
|
||||
void PrintStringAttribute( CDmElement* pElement, CUtlBuffer &outBuf, const char *pKeyName, bool bSkipEmptryStrings = false, bool bPrintValueOnly = false );
|
||||
|
||||
private:
|
||||
const char *m_pFileName;
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Returns the file name associated with the unserialization
|
||||
//-----------------------------------------------------------------------------
|
||||
inline const char *CImportKeyValueBase::FileName() const
|
||||
{
|
||||
return m_pFileName;
|
||||
}
|
||||
|
||||
|
||||
#endif // IMPORTKEYVALUEBASE_H
|
||||
Reference in New Issue
Block a user