BVB Source Codes

CRYENGINE Show SerializeReaderXMLCPBin.h Source code

Return Download CRYENGINE: download SerializeReaderXMLCPBin.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #ifndef __SERIALIZEXMLREADER_H__
  4. #define __SERIALIZEXMLREADER_H__
  5.  
  6. #pragma once
  7.  
  8. #include <CryNetwork/SimpleSerialize.h>
  9. #include <stack>
  10. #include <CrySystem/ITimer.h>
  11. #include <CrySystem/IValidator.h>
  12. #include <CrySystem/ISystem.h>
  13. #include "XMLCPBin/Reader/XMLCPB_ReaderInterface.h"
  14.  
  15. class CSerializeReaderXMLCPBin : public CSimpleSerializeImpl<true, eST_SaveGame>
  16. {
  17. public:
  18.         CSerializeReaderXMLCPBin(XMLCPB::CNodeLiveReaderRef nodeRef, XMLCPB::CReaderInterface& binReader);
  19.  
  20.         template<class T_Value>
  21.         bool Value(const char* name, T_Value& value)
  22.         {
  23.                 DefaultValue(value); // Set input value to default.
  24.                 if (m_nErrors)
  25.                         return false;
  26.  
  27.                 if (!GetAttr(CurNode(), name, value))
  28.                 {
  29.                         // the attrs are not saved if they already had the default value
  30.                         return false;
  31.                 }
  32.                 return true;
  33.         }
  34.  
  35.         bool Value(const char* name, ScriptAnyValue& value);
  36.         bool Value(const char* name, int8& value);
  37.         bool Value(const char* name, string& value);
  38.         bool Value(const char* name, CTimeValue& value);
  39.         bool Value(const char* name, XmlNodeRef& value);
  40.         bool ValueByteArray(const char* name, uint8*& rdata, uint32& outSize);
  41.  
  42.         template<class T_Value, class T_Policy>
  43.         bool Value(const char* name, T_Value& value, const T_Policy& policy)
  44.         {
  45.                 return Value(name, value);
  46.         }
  47.  
  48.         void        BeginGroup(const char* szName);
  49.         bool        BeginOptionalGroup(const char* szName, bool condition);
  50.         void        EndGroup();
  51.         const char* GetStackInfo() const;
  52.  
  53. private:
  54.         template<class T_Value>
  55.         ILINE bool GetAttr(XMLCPB::CNodeLiveReaderRef& node, const char* name, T_Value& value)
  56.         {
  57.                 bool found = node->ReadAttr(name, value);
  58.                 return found;
  59.         }
  60.         ILINE bool GetAttr(XMLCPB::CNodeLiveReaderRef& node, const char* name, SSerializeString& value)
  61.         {
  62.                 const char* pVal = NULL;
  63.                 bool found = node->ReadAttr(name, pVal);
  64.                 if (found)
  65.                         value = pVal;
  66.                 return found;
  67.         }
  68.         ILINE bool GetAttr(XMLCPB::CNodeLiveReaderRef& node, const char* name, const string& value)
  69.         {
  70.                 assert(false);
  71.                 return false;
  72.         }
  73.         ILINE bool GetAttr(XMLCPB::CNodeLiveReaderRef& node, const char* name, SNetObjectID& value)
  74.         {
  75.                 assert(false);
  76.                 return false;
  77.         }
  78.  
  79.         void RecursiveReadIntoXmlNodeRef(XMLCPB::CNodeLiveReaderRef BNode, XmlNodeRef& xmlNode);
  80.  
  81. private:
  82.         //CTimeValue m_curTime;
  83.         XMLCPB::CNodeLiveReaderRef& CurNode() { assert(!m_nodeStack.empty()); return m_nodeStack.back(); }
  84.  
  85.         int                                     m_nErrors;
  86.         std::vector<XMLCPB::CNodeLiveReaderRef> m_nodeStack;
  87.         XMLCPB::CReaderInterface&               m_binReader;
  88.  
  89.         bool ReadScript(XMLCPB::CNodeLiveReaderRef node, ScriptAnyValue& value);
  90.  
  91.         //////////////////////////////////////////////////////////////////////////
  92.         // Set Defaults.
  93.         //////////////////////////////////////////////////////////////////////////
  94.         void DefaultValue(bool& v) const               { v = false; };
  95.         void DefaultValue(float& v) const              { v = 0; };
  96.         void DefaultValue(int8& v) const               { v = 0; };
  97.         void DefaultValue(uint8& v) const              { v = 0; };
  98.         void DefaultValue(int16& v) const              { v = 0; };
  99.         void DefaultValue(uint16& v) const             { v = 0; };
  100.         void DefaultValue(int32& v) const              { v = 0; };
  101.         void DefaultValue(uint32& v) const             { v = 0; };
  102.         void DefaultValue(int64& v) const              { v = 0; };
  103.         void DefaultValue(uint64& v) const             { v = 0; };
  104.         void DefaultValue(Vec2& v) const               { v.x = 0; v.y = 0; };
  105.         void DefaultValue(Vec3& v) const               { v.x = 0; v.y = 0; v.z = 0; };
  106.         void DefaultValue(Ang3& v) const               { v.x = 0; v.y = 0; v.z = 0; };
  107.         void DefaultValue(Quat& v) const               { v.w = 1.0f; v.v.x = 0; v.v.y = 0; v.v.z = 0; };
  108.         void DefaultValue(ScriptAnyValue& v) const     {};
  109.         void DefaultValue(CTimeValue& v) const         { v.SetValue(0); };
  110.         //void DefaultValue( char *str ) const { if (str) str[0] = 0; };
  111.         void DefaultValue(string& str) const           { str = ""; };
  112.         void DefaultValue(const string& str) const     {};
  113.         void DefaultValue(SNetObjectID& id) const      {};
  114.         void DefaultValue(SSerializeString& str) const {};
  115.         void DefaultValue(uint8*& rdata, uint32& outSize) const;
  116.         //////////////////////////////////////////////////////////////////////////
  117. };
  118.  
  119. #endif
  120.  
downloadSerializeReaderXMLCPBin.h Source code - Download CRYENGINE Source code
Related Source Codes/Software:
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top