BVB Source Codes

CRYENGINE Show ISharedParams.h Source code

Return Download CRYENGINE: download ISharedParams.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. /*************************************************************************
  4.    -------------------------------------------------------------------------
  5.    $Id$
  6.    $DateTime$
  7.    Description: Shared parameters type information.
  8.  
  9.    -------------------------------------------------------------------------
  10.    History:
  11.    - 15:07:2010: Created by Paul Slinger
  12.  
  13. *************************************************************************/
  14.  
  15. #ifndef __ISHAREDPARAMSTYPE_H__
  16. #define __ISHAREDPARAMSTYPE_H__
  17.  
  18. #if _MSC_VER > 1000
  19.         #pragma once
  20. #endif
  21.  
  22. #include "ISharedParamsManager.h"
  23. #include "SharedParamsTypeInfo.h"
  24.  
  25. ////////////////////////////////////////////////////////////////////////////////////////////////////
  26. // Shared parameters interface class.
  27. ////////////////////////////////////////////////////////////////////////////////////////////////////
  28. class ISharedParams
  29. {
  30. public:
  31.  
  32.         virtual ~ISharedParams()
  33.         {
  34.         }
  35.  
  36.         ////////////////////////////////////////////////////////////////////////////////////////////////////
  37.         // Clone.
  38.         ////////////////////////////////////////////////////////////////////////////////////////////////////
  39.         virtual ISharedParams* Clone() const = 0;
  40.  
  41.         ////////////////////////////////////////////////////////////////////////////////////////////////////
  42.         // Get type information.
  43.         ////////////////////////////////////////////////////////////////////////////////////////////////////
  44.         virtual const CSharedParamsTypeInfo& GetTypeInfo() const = 0;
  45. };
  46.  
  47. ///////////////////////////////////////////////////////////////////////////////////////////////////
  48. // Begin shared parameters.
  49. ////////////////////////////////////////////////////////////////////////////////////////////////////
  50. #define BEGIN_SHARED_PARAMS(name)                            \
  51.   struct name;                                               \
  52.                                                              \
  53.   DECLARE_SHARED_POINTERS(name);                             \
  54.                                                              \
  55.   struct name : public ISharedParams                         \
  56.   {                                                          \
  57.     virtual ISharedParams* Clone() const                     \
  58.     {                                                        \
  59.       return new name(*this);                                \
  60.     }                                                        \
  61.                                                              \
  62.     virtual const CSharedParamsTypeInfo& GetTypeInfo() const \
  63.     {                                                        \
  64.       return s_typeInfo;                                     \
  65.     }                                                        \
  66.                                                              \
  67.     static const CSharedParamsTypeInfo s_typeInfo;
  68.  
  69. ////////////////////////////////////////////////////////////////////////////////////////////////////
  70. // End shared parameters.
  71. ////////////////////////////////////////////////////////////////////////////////////////////////////
  72. #define END_SHARED_PARAMS };
  73.  
  74. ////////////////////////////////////////////////////////////////////////////////////////////////////
  75. // Define shared parameters type information.
  76. ////////////////////////////////////////////////////////////////////////////////////////////////////
  77. #define DEFINE_SHARED_PARAMS_TYPE_INFO(name) const CSharedParamsTypeInfo name::s_typeInfo(sizeof(name), # name, __FILE__, __LINE__);
  78.  
  79. ////////////////////////////////////////////////////////////////////////////////////////////////////
  80. // Cast shared parameters pointer.
  81. ////////////////////////////////////////////////////////////////////////////////////////////////////
  82. template<typename TO> inline std::shared_ptr<TO> CastSharedParamsPtr(ISharedParamsPtr pSharedParams)
  83. {
  84.         if (pSharedParams && (pSharedParams->GetTypeInfo() == TO::s_typeInfo))
  85.         {
  86.                 return std::static_pointer_cast<TO>(pSharedParams);
  87.         }
  88.         else
  89.         {
  90.                 return std::shared_ptr<TO>();
  91.         }
  92. };
  93.  
  94. ////////////////////////////////////////////////////////////////////////////////////////////////////
  95. // Cast shared parameters pointer.
  96. ////////////////////////////////////////////////////////////////////////////////////////////////////
  97. template<typename TO> inline std::shared_ptr<const TO> CastSharedParamsPtr(ISharedParamsConstPtr pSharedParams)
  98. {
  99.         if (pSharedParams && (pSharedParams->GetTypeInfo() == TO::s_typeInfo))
  100.         {
  101.                 return std::static_pointer_cast<const TO>(pSharedParams);
  102.         }
  103.         else
  104.         {
  105.                 return std::shared_ptr<const TO>();
  106.         }
  107. };
  108.  
  109. #endif //__ISHAREDPARAMSTYPE_H__
  110.  
downloadISharedParams.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