YSTest  PreAlpha_b400_20130424
The YSLib Test Project
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义  
ybasemac.h 文件参考

通用基础设施:宏定义。 更多...

此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

宏定义

#define yJOIN(x, y)   x ## y
 
#define YSL_BEGIN   namespace YSLib {
 
#define YSL_END   }
 
#define YSL_BEGIN_NAMESPACE(_n)   namespace _n {
 
#define YSL_END_NAMESPACE(_n)   }
 
#define _yInterface   struct
 
#define implements   public
 
#define _yInterfaceHead(_n)
 定义接口类型头部。
 
#define FwdDeclI(_n)   _yInterface _n;
 
#define DeclI(_attr, _n)
 
#define DeclDerivedI(_attr, _n,...)
 
#define ImplI(...)   virtual
 
#define ImplA(...)
 
#define DeclIEntry(_sig)   virtual _sig = 0;
 
#define EndDecl   };
 
#define DeclSEntry(...)
 静态接口。
 
#define ImplS(...)
 静态接口实现。
 
#define DefExtendClass(_attr, _n,...)
 定义直接派生类。
 
#define PDefH(_t, _n,...)   _t _n(__VA_ARGS__)
 
#define PDefHOp(_t, _op,...)   PDefH(_t, operator _op, __VA_ARGS__)
 
#define PDefCvt(_t)   operator _t()
 
#define ImplExpr(...)
 
#define ImplRet(...)
 
#define ImplUnseq(...)
 
#define ImplBodyBase(_b, _n,...)   ImplRet(_b::_n(__VA_ARGS__))
 
#define ImplBodyMem(_m, _n,...)   ImplRet((_m)._n(__VA_ARGS__))
 
#define DefEmptyDtor(_t)
 定义空析构函数。
 
#define ImplEmptyDtor(_t)   inline _t::DefEmptyDtor(_t)
 
#define DefDeCtor(_t)   _t() = default;
 
#define DefDelCtor(_t)   _t() = delete;
 
#define DefDeCopyCtor(_t)   _t(const _t&) = default;
 
#define DefDelCopyCtor(_t)   _t(const _t&) = delete;
 
#define DefDeMoveCtor(_t)   _t(_t&&) = default;
 
#define DefDelMoveCtor(_t)   _t(_t&&) = delete;
 
#define DefDeDtor(_t)   ~_t() = default;
 
#define DefDelDtor(_t)   ~_t() = delete;
 
#define DefDeCopyAssignment(_t)   _t& operator=(const _t&) = default;
 
#define DefDelCopyAssignment(_t)   _t& operator=(const _t&) = delete;
 
#define DefDeMoveAssignment(_t)   _t& operator=(_t&&) = default;
 
#define DefDelMoveAssignment(_t)   _t& operator=(_t&&) = delete;
 
#define DefCvt(_q, _t,...)
 
#define DefCvtBase(_q, _t, _b)   DefCvt(_q, _t, _b::operator _t())
 
#define DefCvtMem(_q, _t, _m)   DefCvt(_q, _t, (_m).operator _t())
 
#define DefPred(_q, _n,...)
 
#define DefPredBase(_q, _n, _b)   DefPred(_q, _n, _b::yJOIN(Is, _n)())
 
#define DefPredMem(_q, _n, _m)   DefPred(_q, _n, (_m).yJOIN(Is, _n)())
 
#define DefGetter(_q, _t, _n,...)
 
#define DefGetterBase(_q, _t, _n, _b)   DefGetter(_q, _t, _n, _b::yJOIN(Get, _n)())
 
#define DefGetterMem(_q, _t, _n, _m)   DefGetter(_q, _t, _n, (_m).yJOIN(Get, _n)())
 
#define DefSetter(_t, _n, _m)
 
#define DefSetterDe(_t, _n, _m, _defv)
 
#define DefSetterBase(_t, _n, _b)
 
#define DefSetterBaseDe(_t, _n, _b, _defv)
 
#define DefSetterMem(_t, _n, _m)
 
#define DefSetterMemDe(_t, _n, _m, _defv)
 
#define DefSetterEx(_t, _n, _m,...)
 
#define DefSetterDeEx(_t, _n, _m, _defv,...)
 
#define DefClone(_q, _t, _n)
 动态复制。
 
#define DefFwdFn(_q, _t, _n,...)
 传递函数。
 
#define DefFwdTmpl(_q, _t, _n,...)
 传递模板。
 
#define DefBitmaskAnd(_tBitmask, _tInt)
 位掩码类型操作。
 
#define DefBitmaskOr(_tBitmask, _tInt)
 
#define DefBitmaskXor(_tBitmask, _tInt)
 
#define DefBitmaskNot(_tBitmask, _tInt)
 
#define DefBitmaskAndAssignment(_tBitmask, _tInt)
 
#define DefBitmaskOrAssignment(_tBitmask, _tInt)
 
#define DefBitmaskXorAssignment(_tBitmask, _tInt)
 
#define DefBitmaskOperations(_tBitmask, _tInt)
 

详细描述

通用基础设施:宏定义。

版本
r2399
作者
FrankHB frank.nosp@m.hb19.nosp@m.89@gm.nosp@m.ail..nosp@m.com
自从
build 204
创建时间:
2010-10-09 09:25:27 +0800
修改时间:
2013-03-23 20:33 +0800
文本编码:
UTF-8
模块名称:
YSLib::Core::YBaseMacro

在文件 ybasemac.h 中定义.

宏定义说明

#define _yInterface   struct

在文件 ybasemac.h102 行定义.

#define _yInterfaceHead (   _n)
值:
{ \
virtual ~_n() {}

定义接口类型头部。

参见
DefEmptyDtor

在文件 ybasemac.h111 行定义.

#define DeclDerivedI (   _attr,
  _n,
  ... 
)
值:

在文件 ybasemac.h133 行定义.

#define DeclI (   _attr,
  _n 
)
值:

在文件 ybasemac.h121 行定义.

#define DeclIEntry (   _sig)    virtual _sig = 0;

在文件 ybasemac.h144 行定义.

#define DeclSEntry (   ...)

静态接口。

自从
build 266

在文件 ybasemac.h153 行定义.

#define DefBitmaskAnd (   _tBitmask,
  _tInt 
)
值:
yconstfn _tBitmask operator&(_tBitmask _x, _tBitmask _y) \
ImplRet(static_cast<_tBitmask>( \
static_cast<_tInt>(_x) & static_cast<_tInt>(_y)))

位掩码类型操作。

注解
参见 ISO C++2011 17.5.2.1.3[bitmask.types] 。
自从
build 270

在文件 ybasemac.h354 行定义.

#define DefBitmaskAndAssignment (   _tBitmask,
  _tInt 
)
值:
inline _tBitmask& operator&=(_tBitmask& _x, _tBitmask _y) \
ImplRet(_x = _x & _y)

在文件 ybasemac.h373 行定义.

#define DefBitmaskNot (   _tBitmask,
  _tInt 
)
值:
yconstfn _tBitmask operator~(_tBitmask _x) \
ImplRet(static_cast<_tBitmask>(~static_cast<_tInt>(_x)))

在文件 ybasemac.h369 行定义.

#define DefBitmaskOperations (   _tBitmask,
  _tInt 
)
值:
DefBitmaskAnd(_tBitmask, _tInt) \
DefBitmaskOr(_tBitmask, _tInt) \
DefBitmaskXor(_tBitmask, _tInt) \
DefBitmaskNot(_tBitmask, _tInt) \
DefBitmaskAndAssignment(_tBitmask, _tInt) \
DefBitmaskOrAssignment(_tBitmask, _tInt) \
DefBitmaskXorAssignment(_tBitmask, _tInt)

在文件 ybasemac.h385 行定义.

#define DefBitmaskOr (   _tBitmask,
  _tInt 
)
值:
yconstfn _tBitmask operator|(_tBitmask _x, _tBitmask _y) \
ImplRet(static_cast<_tBitmask>( \
static_cast<_tInt>(_x) | static_cast<_tInt>(_y)))

在文件 ybasemac.h359 行定义.

#define DefBitmaskOrAssignment (   _tBitmask,
  _tInt 
)
值:
inline _tBitmask& operator|=(_tBitmask& _x, _tBitmask _y) \
ImplRet(_x = _x | _y)

在文件 ybasemac.h377 行定义.

#define DefBitmaskXor (   _tBitmask,
  _tInt 
)
值:
yconstfn _tBitmask operator^(_tBitmask _x, _tBitmask _y) \
ImplRet(static_cast<_tBitmask>( \
static_cast<_tInt>(_x) ^ static_cast<_tInt>(_y)))

在文件 ybasemac.h364 行定义.

#define DefBitmaskXorAssignment (   _tBitmask,
  _tInt 
)
值:
inline _tBitmask& operator^=(_tBitmask& _x, _tBitmask _y) \
ImplRet(_x = _x ^ _y)

在文件 ybasemac.h381 行定义.

#define DefClone (   _q,
  _t,
  _n 
)
值:
_t* \
_n() _q \
{ \
return new _t(*this); \
}

动态复制。

注解
需要在满足 CopyConstructible 的类的定义内。
如需要多态复制,需要显示前置 virtual 或加入 override 等指示符。
自从
build 384

在文件 ybasemac.h313 行定义.

#define DefCvt (   _q,
  _t,
  ... 
)
值:
operator _t() _q \
ImplRet(__VA_ARGS__)

在文件 ybasemac.h256 行定义.

#define DefCvtBase (   _q,
  _t,
  _b 
)    DefCvt(_q, _t, _b::operator _t())

在文件 ybasemac.h259 行定义.

#define DefCvtMem (   _q,
  _t,
  _m 
)    DefCvt(_q, _t, (_m).operator _t())

在文件 ybasemac.h261 行定义.

#define DefDeCopyAssignment (   _t)    _t& operator=(const _t&) = default;

在文件 ybasemac.h246 行定义.

#define DefDeCopyCtor (   _t)    _t(const _t&) = default;

在文件 ybasemac.h231 行定义.

#define DefDeCtor (   _t)    _t() = default;

在文件 ybasemac.h226 行定义.

#define DefDeDtor (   _t)    ~_t() = default;

在文件 ybasemac.h241 行定义.

#define DefDelCopyAssignment (   _t)    _t& operator=(const _t&) = delete;

在文件 ybasemac.h248 行定义.

#define DefDelCopyCtor (   _t)    _t(const _t&) = delete;

在文件 ybasemac.h233 行定义.

#define DefDelCtor (   _t)    _t() = delete;

在文件 ybasemac.h228 行定义.

#define DefDelDtor (   _t)    ~_t() = delete;

在文件 ybasemac.h243 行定义.

#define DefDelMoveAssignment (   _t)    _t& operator=(_t&&) = delete;

在文件 ybasemac.h253 行定义.

#define DefDelMoveCtor (   _t)    _t(_t&&) = delete;

在文件 ybasemac.h238 行定义.

#define DefDeMoveAssignment (   _t)    _t& operator=(_t&&) = default;

在文件 ybasemac.h251 行定义.

#define DefDeMoveCtor (   _t)    _t(_t&&) = default;

在文件 ybasemac.h236 行定义.

#define DefEmptyDtor (   _t)
值:
~_t() \
{}

定义空析构函数。

注解
与显式 default 不同,允许虚函数。
C++11 不需要显式使用异常规范,可自动推导(参见 ISO C++11 12.4/3 )。 显式异常规范导致使用隐式继承需要保证成员函数的异常规范限制。

在文件 ybasemac.h220 行定义.

#define DefExtendClass (   _attr,
  _n,
  ... 
)
值:
class _attr _n : __VA_ARGS__ \
{ \
public: \
_n(); \
};

定义直接派生类。

注解
仅构造函数。不定义成员,避免对象切片或其它成员存储泄漏问题。
自从
build 352

在文件 ybasemac.h166 行定义.

#define DefFwdFn (   _q,
  _t,
  _n,
  ... 
)
值:
inline _t \
_n() _q \
{ \
return (__VA_ARGS__); \
}

传递函数。

自从
build 266

在文件 ybasemac.h328 行定义.

#define DefFwdTmpl (   _q,
  _t,
  _n,
  ... 
)
值:
template<typename... _tParams> \
inline _t \
_n(_tParams&&... args) _q \
{ \
return (__VA_ARGS__); \
}

传递模板。

自从
build 266

在文件 ybasemac.h339 行定义.

#define DefGetter (   _q,
  _t,
  _n,
  ... 
)
值:
_t yJOIN(Get, _n)() _q \
ImplRet(__VA_ARGS__)

在文件 ybasemac.h272 行定义.

#define DefGetterBase (   _q,
  _t,
  _n,
  _b 
)    DefGetter(_q, _t, _n, _b::yJOIN(Get, _n)())

在文件 ybasemac.h275 行定义.

#define DefGetterMem (   _q,
  _t,
  _n,
  _m 
)    DefGetter(_q, _t, _n, (_m).yJOIN(Get, _n)())

在文件 ybasemac.h277 行定义.

#define DefPred (   _q,
  _n,
  ... 
)
值:
bool yJOIN(Is, _n)() _q \
ImplRet(__VA_ARGS__)

在文件 ybasemac.h264 行定义.

#define DefPredBase (   _q,
  _n,
  _b 
)    DefPred(_q, _n, _b::yJOIN(Is, _n)())

在文件 ybasemac.h267 行定义.

#define DefPredMem (   _q,
  _n,
  _m 
)    DefPred(_q, _n, (_m).yJOIN(Is, _n)())

在文件 ybasemac.h269 行定义.

#define DefSetter (   _t,
  _n,
  _m 
)
值:
void yJOIN(Set, _n)(_t _tempArgName) \
ImplExpr((_m) = _tempArgName)

在文件 ybasemac.h280 行定义.

#define DefSetterBase (   _t,
  _n,
  _b 
)
值:
void yJOIN(Set, _n)(_t _tempArgName) \
ImplExpr(_b::yJOIN(Set, _n)(_tempArgName))

在文件 ybasemac.h286 行定义.

#define DefSetterBaseDe (   _t,
  _n,
  _b,
  _defv 
)
值:
void yJOIN(Set, _n)(_t _tempArgName = _defv) \
ImplExpr(_b::yJOIN(Set, _n)(_tempArgName))

在文件 ybasemac.h289 行定义.

#define DefSetterDe (   _t,
  _n,
  _m,
  _defv 
)
值:
void yJOIN(Set, _n)(_t _tempArgName = _defv) \
ImplExpr((_m) = _tempArgName)

在文件 ybasemac.h283 行定义.

#define DefSetterDeEx (   _t,
  _n,
  _m,
  _defv,
  ... 
)
值:
void yJOIN(Set, _n)(_t _tempArgName = _defv) \
ImplExpr((_m) = (__VA_ARGS__))

在文件 ybasemac.h301 行定义.

#define DefSetterEx (   _t,
  _n,
  _m,
  ... 
)
值:
void yJOIN(Set, _n)(_t _tempArgName) \
ImplExpr((_m) = (__VA_ARGS__))

在文件 ybasemac.h298 行定义.

#define DefSetterMem (   _t,
  _n,
  _m 
)
值:
void yJOIN(Set, _n)(_t _tempArgName) \
ImplExpr((_m).yJOIN(Set, _n)(_tempArgName))

在文件 ybasemac.h292 行定义.

#define DefSetterMemDe (   _t,
  _n,
  _m,
  _defv 
)
值:
void yJOIN(Set, _n)(_t _tempArgName = _defv) \
ImplExpr((_m).yJOIN(Set, _n)(_tempArgName))

在文件 ybasemac.h295 行定义.

#define EndDecl   };

在文件 ybasemac.h146 行定义.

#define FwdDeclI (   _n)    _yInterface _n;

在文件 ybasemac.h114 行定义.

#define ImplA (   ...)

在文件 ybasemac.h142 行定义.

#define ImplBodyBase (   _b,
  _n,
  ... 
)    ImplRet(_b::_n(__VA_ARGS__))

在文件 ybasemac.h205 行定义.

#define ImplBodyMem (   _m,
  _n,
  ... 
)    ImplRet((_m)._n(__VA_ARGS__))

在文件 ybasemac.h207 行定义.

#define implements   public

在文件 ybasemac.h104 行定义.

#define ImplEmptyDtor (   _t)    inline _t::DefEmptyDtor(_t)

在文件 ybasemac.h223 行定义.

#define ImplExpr (   ...)
值:
{ \
(__VA_ARGS__), void(); \
}

在文件 ybasemac.h188 行定义.

#define ImplI (   ...)    virtual

在文件 ybasemac.h138 行定义.

#define ImplRet (   ...)
值:
{ \
return (__VA_ARGS__); \
}

在文件 ybasemac.h192 行定义.

#define ImplS (   ...)

静态接口实现。

自从
build 266

在文件 ybasemac.h158 行定义.

#define ImplUnseq (   ...)
值:
{ \
static_cast<void>(yunseq(__VA_ARGS__)); \
}

在文件 ybasemac.h198 行定义.

#define PDefCvt (   _t)    operator _t()

在文件 ybasemac.h182 行定义.

#define PDefH (   _t,
  _n,
  ... 
)    _t _n(__VA_ARGS__)

在文件 ybasemac.h177 行定义.

#define PDefHOp (   _t,
  _op,
  ... 
)    PDefH(_t, operator _op, __VA_ARGS__)

在文件 ybasemac.h179 行定义.

#define yJOIN (   x,
 
)    x ## y
待办事项:
检查语言实现的必要支持:可变参数宏。

在文件 ybasemac.h44 行定义.

#define YSL_BEGIN   namespace YSLib {

在文件 ybasemac.h49 行定义.

#define YSL_BEGIN_NAMESPACE (   _n)    namespace _n {

在文件 ybasemac.h52 行定义.

#define YSL_END   }

在文件 ybasemac.h50 行定义.

#define YSL_END_NAMESPACE (   _n)    }

在文件 ybasemac.h53 行定义.