///////////////////////////////////////////////////////////////////////////////
// TnCore.h

#pragma once
#ifndef TN_CORE_INCLUDED
#define TN_CORE_INCLUDED

#include <stdint.h>
#include <string>
#include <vector>
#include <set>

#include <boost/config.hpp> //is this necessary?  Compiles without it
#include <foundation/SharedPtr.h>
#include <foundation/WeakPtr.h>
#include <foundation/SharedArray.h>
#include <foundation/Mutex.h>
#include <foundation/Locks.h>

#include <foundation/Log.hpp>
#include <RenderEngine/TnDeprecate.h>

namespace Tn
{
    typedef Tn::Foundation::shared_array<uint8_t> BytesPtr;
} // namespace Tn


#if NDEBUG
	#define TnAssert(x, message)
#else
	#define TnAssert(x, message)															\
	{                                                                                       \
		if (!(x))                                                                           \
		{                                                                                   \
            TN_LOGT(TnError, Tn::Foundation::Topic("TnRenderInterfaceAssert"))              \
            << (message) << std::endl;                                                      \
        }                                                                                   \
	}
#endif // !NDEBUG

#endif // TN_CORE_INCLUDED
