nlib
miscライブラリのマクロ

miscライブラリで定義されているマクロです。 [詳解]

マクロ定義

#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
 TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。 [詳解]
 
#define NLIB_NOEMPTYFILE()
 何らかの理由で空となるファイルに記述することで、MSVCのLinker warning 4221を抑制することができます。
 
#define NLIB_FINAL   final
 利用可能であればfinalが定義されます。そうでない場合は空文字列です。
 
#define NLIB_OVERRIDE   override
 利用可能であればoverrideが定義されます。そうでない場合は空文字列です。
 
#define NLIB_STATIC_ASSERT(exp)   static_assert((exp), "NLIB_STATIC_ASSERT error: " #exp)
 静的アサートが定義されます。利用可能であればstatic_assertを利用します。 [詳解]
 
#define NLIB_ALIGNAS(x)   alignas(x)
 alignas(x)又は同等の定義がされます。 [詳解]
 
#define NLIB_ALIGNOF(tp)   alignof(tp)
 alignof(tp)又は同等の定義がされます。 [詳解]
 
#define NLIB_CEXPR   constexpr
 利用可能であればconstexprが定義されます。そうでない場合は空文字列です。
 
#define NLIB_CEXPR14   constexpr
 C++14のconstexprが利用可能であればconstexprが定義されます。そうでない場合は空文字列です。
 
#define NLIB_TRY   if (true)
 例外が有効なときはtry, そうでなければif (true)が定義されます。
 
#define NLIB_CATCH(x)   if (false)
 例外が有効なときはcatch(x), そうでなければif (true)が定義されます。 [詳解]
 
#define NLIB_THROW
 例外が有効なときはthrow, そうでなければ空白が定義されます。
 
#define NLIB_SAFE_BOOL(class_name, exp)
 クラス内に安全なoperator bool()を定義します。 可能であればC++11のexplicit boolを利用します。 [詳解]
 
#define NLIB_NOEXCEPT   noexcept
 環境に合わせてnoexcept 又は同等の定義がされます。 [詳解]
 

Nflagsで利用するマクロ

利用方法については nn::nlib::Nflagsを参考にしてください。

#define NLIB_FLAGS_DEFINE_bool(opt_name, def_value, desc)
 bool値を持つコマンドラインオプションを定義します。 [詳解]
 
#define NLIB_FLAGS_DEFINE_int32(opt_name, def_value, desc)
 bool値を持つコマンドラインオプションを定義します。 [詳解]
 
#define NLIB_FLAGS_DEFINE_double(opt_name, def_value, desc)
 bool値を持つコマンドラインオプションを定義します。 [詳解]
 
#define NLIB_FLAGS_DEFINE_string(opt_name, def_value, desc)
 bool値を持つコマンドラインオプションを定義します。 [詳解]
 
#define NLIB_FLAGS_DECLARE_bool(opt_name)   extern bool NLIB_FLAGS_##opt_name
 別の場所で定義された、NLIB_FLAGS_オプション名、を利用できるようにします。 [詳解]
 
#define NLIB_FLAGS_DECLARE_int32(opt_name)   extern int32_t NLIB_FLAGS_##opt_name
 別の場所で定義された、NLIB_FLAGS_オプション名、を利用できるようにします。 [詳解]
 
#define NLIB_FLAGS_DECLARE_double(opt_name)   extern double NLIB_FLAGS_##opt_name
 別の場所で定義された、NLIB_FLAGS_オプション名、を利用できるようにします。 [詳解]
 
#define NLIB_FLAGS_DECLARE_string(opt_name)   extern const char* NLIB_FLAGS_##opt_name
 別の場所で定義された、NLIB_FLAGS_オプション名、を利用できるようにします。 [詳解]
 

詳解

miscライブラリで定義されているマクロです。

説明
Nflags.h を利用する場合に利用するマクロが主に定義されています。

マクロ定義詳解

◆ NLIB_ALIGNAS

NLIB_ALIGNAS (   x)    alignas(x)

alignas(x)又は同等の定義がされます。

引数
[in]xバイト数
説明
Platform Definition
Win32 __declspec(align(x))
Linux alignas(x) or __attribute__((aligned(x)))
FreeBSD alignas(x)
OS X alignas(x)
CAFE __attribute__((aligned(x)))
CTR __align(x)
各種例:
heap/cachedheap/cachedheap.cpp, heap/nmalloc_leakcheck/nmalloc_leakcheck.cpp, heap/nmalloc_simple/nmalloc_simple.cpp, heap/nmalloc_withstl/nmalloc_withstl.cpp, heap/replace_malloc/replace_malloc.cpp, oss/binarypatch/binarypatch.cpp, oss/readsqldb/readsqldb.cpp, oss/sqlfromc/sqlfromc.cpp.

Config.h255 行目に定義があります。

◆ NLIB_ALIGNOF

NLIB_ALIGNOF (   tp)    alignof(tp)

alignof(tp)又は同等の定義がされます。

引数
[in]tp
説明
Platform Definition
Win32 __alignof(tp)
Linux alignof(tp) or __alignof__(tp)
FreeBSD alignof(tp)
OS X alignof(tp)
CAFE __alignof__(tp)
CTR __alignof__(tp)
各種例:
heap/gameheap/gameheap_appcode.cpp.

Config.h256 行目に定義があります。

◆ NLIB_CATCH

NLIB_CATCH (   x)    if (false)

例外が有効なときはcatch(x), そうでなければif (true)が定義されます。

引数
[in]xcatchの引数

Config.h143 行目に定義があります。

◆ NLIB_DISALLOW_COPY_AND_ASSIGN

NLIB_DISALLOW_COPY_AND_ASSIGN (   TypeName)
値:
TypeName(const TypeName&) = delete; \
void operator=(const TypeName&) = delete

TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。

引数
[in]TypeNameクラス名
各種例:
heap/gameheap/gameheap_appcode.cpp, heap/nmalloc_simple/nmalloc_simple.cpp, misc/threading/simpleringbuffer/simpleringbuffer.cpp, misc/threading/threadpool/threadpool.cpp.

Config.h179 行目に定義があります。

◆ NLIB_FLAGS_DECLARE_bool

NLIB_FLAGS_DECLARE_bool (   opt_name)    extern bool NLIB_FLAGS_##opt_name

別の場所で定義された、NLIB_FLAGS_オプション名、を利用できるようにします。

引数
[in]opt_nameオプション名

Nflags.h164 行目に定義があります。

◆ NLIB_FLAGS_DECLARE_double

NLIB_FLAGS_DECLARE_double (   opt_name)    extern double NLIB_FLAGS_##opt_name

別の場所で定義された、NLIB_FLAGS_オプション名、を利用できるようにします。

引数
[in]opt_nameオプション名v

Nflags.h166 行目に定義があります。

◆ NLIB_FLAGS_DECLARE_int32

NLIB_FLAGS_DECLARE_int32 (   opt_name)    extern int32_t NLIB_FLAGS_##opt_name

別の場所で定義された、NLIB_FLAGS_オプション名、を利用できるようにします。

引数
[in]opt_nameオプション名

Nflags.h165 行目に定義があります。

◆ NLIB_FLAGS_DECLARE_string

NLIB_FLAGS_DECLARE_string (   opt_name)    extern const char* NLIB_FLAGS_##opt_name

別の場所で定義された、NLIB_FLAGS_オプション名、を利用できるようにします。

引数
[in]opt_nameオプション名

Nflags.h167 行目に定義があります。

◆ NLIB_FLAGS_DEFINE_bool

NLIB_FLAGS_DEFINE_bool (   opt_name,
  def_value,
  desc 
)
値:
bool NLIB_FLAGS_##opt_name; \
class NLIB_FLAGS_CL_##opt_name { \
public: /* NOLINT */ \
NLIB_FLAGS_CL_##opt_name() { \
::nlib_ns::nflags::AddDefOptBool(#opt_name, def_value, desc, &NLIB_FLAGS_##opt_name); \
} \
} NLIB_FLAGS_CL_##opt_name##_

bool値を持つコマンドラインオプションを定義します。

引数
[in]opt_nameオプション名
[in]def_valueコマンドラインオプションのデフォルト値(bool型の値)
[in]descオプションの説明が記述された文字列リテラル
説明
このマクロを利用するとNLIB_FLAGS_オプション名、という変数が定義されます。--opt_value, --opt_value=[true/false] 等でブール値を指定することができます。
各種例:
misc/nflags/nflags.cpp.

Nflags.h125 行目に定義があります。

◆ NLIB_FLAGS_DEFINE_double

NLIB_FLAGS_DEFINE_double (   opt_name,
  def_value,
  desc 
)
値:
double NLIB_FLAGS_##opt_name; \
class NLIB_FLAGS_CL_##opt_name { \
public: /* NOLINT */ \
NLIB_FLAGS_CL_##opt_name() { \
::nlib_ns::nflags::AddDefOptDouble(#opt_name, def_value, desc, \
&NLIB_FLAGS_##opt_name); \
} \
} NLIB_FLAGS_CL_##opt_name##_

bool値を持つコマンドラインオプションを定義します。

引数
[in]opt_nameオプション名
[in]def_valueコマンドラインオプションのデフォルト値(double型の値)
[in]descオプションの説明が記述された文字列リテラル
説明
このマクロを利用するとNLIB_FLAGS_オプション名、という変数が定義されます。--opt_value=1.1 等で倍精度浮動小数型の値を指定することができます。

Nflags.h144 行目に定義があります。

◆ NLIB_FLAGS_DEFINE_int32

NLIB_FLAGS_DEFINE_int32 (   opt_name,
  def_value,
  desc 
)
値:
int32_t NLIB_FLAGS_##opt_name; \
class NLIB_FLAGS_CL_##opt_name { \
public: /* NOLINT */ \
NLIB_FLAGS_CL_##opt_name() { \
::nlib_ns::nflags::AddDefOptInt32(#opt_name, def_value, desc, \
&NLIB_FLAGS_##opt_name); \
} \
} NLIB_FLAGS_CL_##opt_name##_

bool値を持つコマンドラインオプションを定義します。

引数
[in]opt_nameオプション名
[in]def_valueコマンドラインオプションのデフォルト値(int32_t型の値)
[in]descオプションの説明が記述された文字列リテラル
説明
このマクロを利用するとNLIB_FLAGS_オプション名、という変数が定義されます。--opt_value=1 等で整数値を指定することができます。
各種例:
misc/nflags/nflags.cpp.

Nflags.h134 行目に定義があります。

◆ NLIB_FLAGS_DEFINE_string

NLIB_FLAGS_DEFINE_string (   opt_name,
  def_value,
  desc 
)
値:
const char* NLIB_FLAGS_##opt_name; \
class NLIB_FLAGS_CL_##opt_name { \
public: /* NOLINT */ \
NLIB_FLAGS_CL_##opt_name() { \
::nlib_ns::nflags::AddDefOptString(#opt_name, def_value, desc, \
&NLIB_FLAGS_##opt_name); \
} \
} NLIB_FLAGS_CL_##opt_name##_

bool値を持つコマンドラインオプションを定義します。

引数
[in]opt_nameオプション名
[in]def_valueコマンドラインオプションのデフォルト値(文字列リテラル)
[in]descオプションの説明が記述された文字列リテラル

このマクロを利用するとNLIB_FLAGS_オプション名、という変数が定義されます。--opt_value=A,B,C 等で文字列を指定することができます。

各種例:
misc/nflags/nflags.cpp.

Nflags.h154 行目に定義があります。

◆ NLIB_NOEXCEPT

NLIB_NOEXCEPT   noexcept

環境に合わせてnoexcept 又は同等の定義がされます。

説明
以下の様になります。
Platform Definition
Win32 throw()
Linux noexcept or throw()
FreeBSD noexcept
OS X noexcept
CAFE 空文字列
CTR 空文字列
各種例:
heap/gameheap/gameheap.cpp, heap/gameheap/gameheap.h, heap/gameheap/gameheap_appcode.cpp, heap/replace_malloc/replace_malloc.cpp, misc/threading/threadpool/threadpool.cpp.

Config.h105 行目に定義があります。

◆ NLIB_SAFE_BOOL

NLIB_SAFE_BOOL (   class_name,
  exp 
)
値:
public: \
explicit NLIB_ALWAYS_INLINE operator bool() const NLIB_NOEXCEPT { return (exp); }
#define NLIB_ALWAYS_INLINE
コンパイラに関数をインライン展開するように強く示します。
Definition: Platform_unix.h:97
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
Definition: Config.h:105

クラス内に安全なoperator bool()を定義します。 可能であればC++11のexplicit boolを利用します。

引数
[in]class_nameクラス名
[in]exp評価式

Config.h194 行目に定義があります。

◆ NLIB_STATIC_ASSERT

NLIB_STATIC_ASSERT (   exp)    static_assert((exp), "NLIB_STATIC_ASSERT error: " #exp)

静的アサートが定義されます。利用可能であればstatic_assertを利用します。

引数
[in]exp評価式
各種例:
heap/gameheap/gameheap.cpp, misc/threading/simpleringbuffer/simpleringbuffer.cpp.

Config.h170 行目に定義があります。