77 lines
1.4 KiB
C++
77 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include "os/ErrorCodes.h"
|
|
|
|
#if IL2CPP_SUPPORT_THREADS || IL2CPP_TINY
|
|
|
|
#if IL2CPP_THREADS_WIN32
|
|
#include "os/Win32/ThreadLocalValueImpl.h"
|
|
#elif IL2CPP_THREADS_PTHREAD
|
|
#include "os/Posix/ThreadLocalValueImpl.h"
|
|
#else
|
|
#include "os/ThreadLocalValueImpl.h"
|
|
#endif
|
|
|
|
#endif
|
|
|
|
namespace il2cpp
|
|
{
|
|
namespace os
|
|
{
|
|
class ThreadLocalValueImpl;
|
|
|
|
class ThreadLocalValue
|
|
{
|
|
#if IL2CPP_SUPPORT_THREADS || IL2CPP_TINY
|
|
public:
|
|
inline ThreadLocalValue()
|
|
: m_ThreadLocalValue(new ThreadLocalValueImpl())
|
|
{
|
|
}
|
|
|
|
inline ~ThreadLocalValue()
|
|
{
|
|
delete m_ThreadLocalValue;
|
|
}
|
|
|
|
inline ErrorCode SetValue(void* value)
|
|
{
|
|
return m_ThreadLocalValue->SetValue(value);
|
|
}
|
|
|
|
inline ErrorCode GetValue(void** value)
|
|
{
|
|
return m_ThreadLocalValue->GetValue(value);
|
|
}
|
|
|
|
private:
|
|
ThreadLocalValueImpl * m_ThreadLocalValue;
|
|
#else
|
|
public:
|
|
inline ThreadLocalValue()
|
|
{
|
|
}
|
|
|
|
inline ~ThreadLocalValue()
|
|
{
|
|
}
|
|
|
|
inline ErrorCode SetValue(void* value)
|
|
{
|
|
m_ThreadLocalValue = value;
|
|
return kErrorCodeSuccess;
|
|
}
|
|
|
|
inline ErrorCode GetValue(void** value)
|
|
{
|
|
*value = m_ThreadLocalValue;
|
|
return kErrorCodeSuccess;
|
|
}
|
|
|
|
private:
|
|
void* m_ThreadLocalValue;
|
|
#endif
|
|
};
|
|
}
|
|
}
|