eathread_global.h 1.5 KB

1234567891011121314151617181920212223242526272829303132
  1. ///////////////////////////////////////////////////////////////////////////////
  2. // Copyright (c) Electronic Arts Inc. All rights reserved.
  3. ///////////////////////////////////////////////////////////////////////////////
  4. #if defined(EA_PRAGMA_ONCE_SUPPORTED)
  5. #pragma once // Some compilers (e.g. VC++) benefit significantly from using this. We've measured 3-4% build speed improvements in apps as a result.
  6. #endif
  7. /////////////////////////////////////////////////////////////////////////////
  8. // NOTE(rparolin): Provides a unified method of access to EAThread global
  9. // variables that (when specified by the user) can become DLL safe by adding a
  10. // dependency on EAStdC EAGlobal implementation.
  11. /////////////////////////////////////////////////////////////////////////////
  12. #ifndef EATHREAD_INTERNAL_GLOBAL_H
  13. #define EATHREAD_INTERNAL_GLOBAL_H
  14. #if EATHREAD_GLOBAL_VARIABLE_DLL_SAFETY
  15. #include <EAStdC/EAGlobal.h>
  16. #define EATHREAD_GLOBALVARS (*EA::StdC::AutoStaticOSGlobalPtr<EA::Thread::EAThreadGlobalVars, 0xdabbad00>().get())
  17. #define EATHREAD_GLOBALVARS_CREATE_INSTANCE EA::StdC::AutoStaticOSGlobalPtr<EA::Thread::EAThreadGlobalVars, 0xdabbad00> gGlobalVarsInstance;
  18. #define EATHREAD_GLOBALVARS_EXTERN_INSTANCE
  19. #else
  20. #define EATHREAD_GLOBALVARS gEAThreadGlobalVars
  21. #define EATHREAD_GLOBALVARS_CREATE_INSTANCE EA::Thread::EAThreadGlobalVars gEAThreadGlobalVars
  22. #define EATHREAD_GLOBALVARS_EXTERN_INSTANCE extern EA::Thread::EAThreadGlobalVars gEAThreadGlobalVars
  23. #endif
  24. #endif