
#pragma once


#include "Core/Base/CPL_Core_Define.h"



#ifdef CPL_DEBUG

#define CPL_DBGFLAG(flag) (flag)

// CorePLiのデバッグ拡張アロケータ機能のON/OFF
#define CPL_DBGSW_ALLOCATOR

// 拡張アロケータが呼ばれた際、メッセージを出力するかどうか。
//#define CPL_DBGSW_DUMP_NEW

// 拡張デアロケータが呼ばれた際、メッセージを出力するかどうか。
//#define CPL_DBGSW_DUMP_DEL

// newバッファ範囲チェック付memcpy
//#define CPL_DBGSW_MEMCPY

// ComPtr<>のAddRef/Release時にメッセージを表示するかどうか。
//#define CPL_DBGSW_DUMP_COMPTR_COUNT

//
#define CPL_DBGSW_CATCH_WINMAIN_EXCEPTION

// WinSock connect
//#define CPL_DBGSW_WINSOCK_connect

// WinSock send
//#define CPL_DBGSW_WINSOCK_send

// WinSock recv
//#define CPL_DBGSW_WINSOCK_recv

// WinSock event
//#define CPL_DBGSW_WINSOCK_event

// 動的シェーダコードを出力するかどうか。
#define CPL_DBG_OUTPUT_SHADER


// ThreadExクラスに名前を保持させる。
#define CPL_DBGSW_THREAD_NAME


// OggVorbisを有効化する場合、次の変数をtrueにしてください。
//#define CPL_USE_OGG_VORBIS


// JPEG2000(OpenJPEG)を有効化する場合、次のマクロを定義してください。
//#define CPL_USE_JPEG2000


#else
#define CPL_DBGFLAG(flag) false
#endif

namespace CPL {
namespace Config {

  //constexpr bool DebugExAllocator = CPL_DBGFLAG(false);

namespace Mutex {
  constexpr bool ShowMsg_lock           = CPL_DBGFLAG(false);
  constexpr bool ShowMsg_try_lock       = CPL_DBGFLAG(false);
  constexpr bool ShowMsg_unlock         = CPL_DBGFLAG(false);
  constexpr bool ShowMsg_try_lock_for   = CPL_DBGFLAG(false);
  constexpr bool ShowMsg_try_lock_until = CPL_DBGFLAG(false);
}

namespace Communicator {
  constexpr bool ShowMsg_CacheStore  = CPL_DBGFLAG(false);
  constexpr bool ShowMsg_CacheFlush  = CPL_DBGFLAG(false);

  constexpr bool ShowMsg_Send        = CPL_DBGFLAG(false);
  constexpr bool ShowMsg_Send_UBtoSC = CPL_DBGFLAG(false) & ShowMsg_Send; // user buffer to send cache
  constexpr bool ShowMsg_Send_SCtoSB = CPL_DBGFLAG(false) & ShowMsg_Send; // send cache to shared buffer
  constexpr bool ShowMsg_Send_UBtoSB = CPL_DBGFLAG(false) & ShowMsg_Send; // user buffer to shared buffer(direct write for cache over)

  constexpr bool ShowMsg_Recv        = CPL_DBGFLAG(false);
  constexpr bool ShowMsg_Recv_SBtoRC = CPL_DBGFLAG(false) & ShowMsg_Recv; // shared buffer to recv cache
  constexpr bool ShowMsg_Recv_RCtoUB = CPL_DBGFLAG(false) & ShowMsg_Recv; // recv cache to user buffer
}

} // namespace Config
} // namespace CPL
