# HG changeset patch # User Peter D. Barnes, Jr. # Date 1370994493 25200 # Node ID 126d9cf86d7180538ae58fb7ceb6faea0b7edc3f # Parent ce6f889c7c1cdfc8ac95ffa9e18c28cca992d204 doxygenate type-traits diff -r ce6f889c7c1c -r 126d9cf86d71 src/core/model/type-traits.h --- a/src/core/model/type-traits.h Tue Jun 11 16:45:49 2013 -0700 +++ b/src/core/model/type-traits.h Tue Jun 11 16:48:13 2013 -0700 @@ -1,294 +1,296 @@ #ifndef TYPE_TRAITS_H #define TYPE_TRAITS_H +/** Type trait reference values */ template struct TypeTraits { private: - struct NullType {}; - template struct UnConst + struct NullType {}; //!< Null value type traits + template struct UnConst //!< Non-const type { - typedef U Result; + typedef U Result; //!< Non-const result type }; - template struct UnConst + template struct UnConst //!< Non-const template type traits { - typedef U Result; + typedef U Result; //!< Non-const result type }; - template struct ReferenceTraits + template struct ReferenceTraits //!< Non-reference type traits { - enum { IsReference = 0}; - typedef U ReferencedType; + enum { IsReference = 0 /**< Non-reference value */ }; + typedef U ReferencedType; //!< Non-referenced result type }; - template struct ReferenceTraits + template struct ReferenceTraits//!< Reference type traits { - enum { IsReference = 1}; - typedef U ReferencedType; + enum { IsReference = 1 /**< Reference value */ }; + typedef U ReferencedType; //!< Referenced result type }; - template struct PointerTraits + template struct PointerTraits //!< Non-pointer type traits { - enum { IsPointer = 0}; - typedef U PointeeType; + enum { IsPointer = 0}; //!< Non-pointer value + typedef U PointeeType; //!< Non-pointer result type }; - template struct PointerTraits + template struct PointerTraits //!< Pointer type traits { - enum { IsPointer = 1}; - typedef U PointeeType; + enum { IsPointer = 1}; //!< Pointer value + typedef U PointeeType; //!< Pointer result type }; - template struct FunctionPtrTraits + template struct FunctionPtrTraits //!< Non-function pointer type traits { - enum { IsFunctionPointer = 0}; + enum { IsFunctionPointer = 0}; //!< Non-function pointer value + typedef NullType ReturnType; //!< Non-function pointer result type }; template - struct FunctionPtrTraits + struct FunctionPtrTraits //!< Function pointer type traits { - enum { IsFunctionPointer = 1}; - enum { nArgs = 0}; - typedef U ReturnType; + enum { IsFunctionPointer = 1}; //!< Function pointer value + enum { nArgs = 0}; //!< Number of arguments + typedef U ReturnType; //!< Return type }; template - struct FunctionPtrTraits - { - enum { IsFunctionPointer = 1}; - enum { nArgs = 1}; - typedef U ReturnType; - typedef V1 Arg1Type; + struct FunctionPtrTraits //!< Function pointer type traits + { + enum { IsFunctionPointer = 1}; //!< Function pointer value + enum { nArgs = 1}; //!< Number of arguments + typedef U ReturnType; //!< Return type + typedef V1 Arg1Type; //!< First argument type }; template - struct FunctionPtrTraits - { - enum { IsFunctionPointer = 1}; - enum { nArgs = 2}; - typedef U ReturnType; - typedef V1 Arg1Type; - typedef V2 Arg2Type; + struct FunctionPtrTraits //!< Function pointer type traits + { + enum { IsFunctionPointer = 1}; //!< Function pointer value + enum { nArgs = 2}; //!< Number of arguments + typedef U ReturnType; //!< Return type + typedef V1 Arg1Type; //!< First argument type + typedef V2 Arg2Type; //!< Second argument type }; template - struct FunctionPtrTraits - { - enum { IsFunctionPointer = 1}; - enum { nArgs = 3}; - typedef U ReturnType; - typedef V1 Arg1Type; - typedef V2 Arg2Type; - typedef V3 Arg3Type; + struct FunctionPtrTraits //!< Function pointer type traits + { + enum { IsFunctionPointer = 1}; //!< Function pointer value + enum { nArgs = 3}; //!< Number of arguments + typedef U ReturnType; //!< Return type + typedef V1 Arg1Type; //!< First argument type + typedef V2 Arg2Type; //!< Second argument type + typedef V3 Arg3Type; //!< Third argument type }; template - struct FunctionPtrTraits - { - enum { IsFunctionPointer = 1}; - enum { nArgs = 4}; - typedef U ReturnType; - typedef V1 Arg1Type; - typedef V2 Arg2Type; - typedef V3 Arg3Type; - typedef V4 Arg4Type; + struct FunctionPtrTraits //!< Function pointer type traits + { + enum { IsFunctionPointer = 1}; //!< Function pointer value + enum { nArgs = 4}; //!< Number of arguments + typedef U ReturnType; //!< Return type + typedef V1 Arg1Type; //!< First argument type + typedef V2 Arg2Type; //!< Second argument type + typedef V3 Arg3Type; //!< Third argument type + typedef V4 Arg4Type; //!< Fourth argument type }; template - struct FunctionPtrTraits - { - enum { IsFunctionPointer = 1}; - enum { nArgs = 5}; - typedef U ReturnType; - typedef V1 Arg1Type; - typedef V2 Arg2Type; - typedef V3 Arg3Type; - typedef V4 Arg4Type; - typedef V5 Arg5Type; + struct FunctionPtrTraits //!< Function pointer type traits + { + enum { IsFunctionPointer = 1}; //!< Function pointer value + enum { nArgs = 5}; //!< Number of arguments + typedef U ReturnType; //!< Return type + typedef V1 Arg1Type; //!< First argument type + typedef V2 Arg2Type; //!< Second argument type + typedef V3 Arg3Type; //!< Third argument type + typedef V4 Arg4Type; //!< Fourth argument type + typedef V5 Arg5Type; //!< Fifth argument type }; template - struct FunctionPtrTraits + struct FunctionPtrTraits //!< Function pointer type traits + { + enum { IsFunctionPointer = 1}; //!< Function pointer value + enum { nArgs = 6}; //!< Number of arguments + typedef U ReturnType; //!< Return type + typedef V1 Arg1Type; //!< First argument type + typedef V2 Arg2Type; //!< Second argument type + typedef V3 Arg3Type; //!< Third argument type + typedef V4 Arg4Type; //!< Fourth argument type + typedef V5 Arg5Type; //!< Fifth argument type + typedef V6 Arg6Type; //!< Sixth argument type + }; + template struct PtrToMemberTraits //!< Pointer to member type traits { - enum { IsFunctionPointer = 1}; - enum { nArgs = 6}; - typedef U ReturnType; - typedef V1 Arg1Type; - typedef V2 Arg2Type; - typedef V3 Arg3Type; - typedef V4 Arg4Type; - typedef V5 Arg5Type; - typedef V6 Arg6Type; - }; - template struct PtrToMemberTraits - { - enum { IsPointerToMember = 0}; + enum { IsPointerToMember = 0}; //!< Non-pointer to member value }; template - struct PtrToMemberTraits + struct PtrToMemberTraits //!< Pointer to member type traits { - enum { IsPointerToMember = 1}; - enum { nArgs = 0}; - typedef U ReturnType; + enum { IsPointerToMember = 1}; //!< Pointer to member value + enum { nArgs = 0}; //!< Number of arguments + typedef U ReturnType; //!< Return type }; template - struct PtrToMemberTraits - { - enum { IsPointerToMember = 1}; - enum { nArgs = 0}; - typedef U ReturnType; + struct PtrToMemberTraits //!< Pointer to const member type traits + { + enum { IsPointerToMember = 1}; //!< Pointer to member value + enum { nArgs = 0}; //!< Number of arguments + typedef U ReturnType; //!< Return type }; template - struct PtrToMemberTraits - { - enum { IsPointerToMember = 1}; - enum { nArgs = 1}; - typedef U ReturnType; - typedef W1 Arg1Type; + struct PtrToMemberTraits //!< Pointer to member type traits + { + enum { IsPointerToMember = 1}; //!< Pointer to member value + enum { nArgs = 1}; //!< Number of arguments + typedef U ReturnType; //!< Return type + typedef W1 Arg1Type; //!< First argument type }; template - struct PtrToMemberTraits - { - enum { IsPointerToMember = 1}; - enum { nArgs = 1}; - typedef U ReturnType; - typedef W1 Arg1Type; + struct PtrToMemberTraits //!< Pointer to const member type traits + { + enum { IsPointerToMember = 1}; //!< Pointer to member value + enum { nArgs = 1}; //!< Number of arguments + typedef U ReturnType; //!< Return type + typedef W1 Arg1Type; //!< First argument type }; template - struct PtrToMemberTraits - { - enum { IsPointerToMember = 1}; - enum { nArgs = 2}; - typedef U ReturnType; - typedef W1 Arg1Type; - typedef W2 Arg2Type; + struct PtrToMemberTraits //!< Pointer to member type traits + { + enum { IsPointerToMember = 1}; //!< Pointer to member value + enum { nArgs = 2}; //!< Number of arguments + typedef U ReturnType; //!< Return type + typedef W1 Arg1Type; //!< First argument type + typedef W2 Arg2Type; //!< Second argument type }; template - struct PtrToMemberTraits - { - enum { IsPointerToMember = 1}; - enum { nArgs = 2}; - typedef U ReturnType; - typedef W1 Arg1Type; - typedef W2 Arg2Type; + struct PtrToMemberTraits //!< Pointer to const member type traits + { + enum { IsPointerToMember = 1}; //!< Pointer to member value + enum { nArgs = 2}; //!< Number of arguments + typedef U ReturnType; //!< Return type + typedef W1 Arg1Type; //!< First argument type + typedef W2 Arg2Type; //!< Second argument type }; template - struct PtrToMemberTraits - { - enum { IsPointerToMember = 1}; - enum { nArgs = 3}; - typedef U ReturnType; - typedef W1 Arg1Type; - typedef W2 Arg2Type; - typedef W3 Arg3Type; + struct PtrToMemberTraits //!< Pointer to member type traits + { + enum { IsPointerToMember = 1}; //!< Pointer to member value + enum { nArgs = 3}; //!< Number of arguments + typedef U ReturnType; //!< Return type + typedef W1 Arg1Type; //!< First argument type + typedef W2 Arg2Type; //!< Second argument type + typedef W3 Arg3Type; //!< Third argument type }; template - struct PtrToMemberTraits - { - enum { IsPointerToMember = 1}; - enum { nArgs = 3}; - typedef U ReturnType; - typedef W1 Arg1Type; - typedef W2 Arg2Type; - typedef W3 Arg3Type; + struct PtrToMemberTraits //!< Pointer to const member type traits + { + enum { IsPointerToMember = 1}; //!< Pointer to member value + enum { nArgs = 3}; //!< Number of arguments + typedef U ReturnType; //!< Return type + typedef W1 Arg1Type; //!< First argument type + typedef W2 Arg2Type; //!< Second argument type + typedef W3 Arg3Type; //!< Third argument type }; template - struct PtrToMemberTraits - { - enum { IsPointerToMember = 1}; - enum { nArgs = 4}; - typedef U ReturnType; - typedef W1 Arg1Type; - typedef W2 Arg2Type; - typedef W3 Arg3Type; - typedef W4 Arg4Type; + struct PtrToMemberTraits //!< Pointer to member type traits + { + enum { IsPointerToMember = 1}; //!< Pointer to member value + enum { nArgs = 4}; //!< Number of arguments + typedef U ReturnType; //!< Return type + typedef W1 Arg1Type; //!< First argument type + typedef W2 Arg2Type; //!< Second argument type + typedef W3 Arg3Type; //!< Third argument type + typedef W4 Arg4Type; //!< Fourth argument type }; template - struct PtrToMemberTraits - { - enum { IsPointerToMember = 1}; - enum { nArgs = 4}; - typedef U ReturnType; - typedef W1 Arg1Type; - typedef W2 Arg2Type; - typedef W3 Arg3Type; - typedef W4 Arg4Type; + struct PtrToMemberTraits //!< Pointer to const member type traits + { + enum { IsPointerToMember = 1}; //!< Pointer to member value + enum { nArgs = 4}; //!< Number of arguments + typedef U ReturnType; //!< Return type + typedef W1 Arg1Type; //!< First argument type + typedef W2 Arg2Type; //!< Second argument type + typedef W3 Arg3Type; //!< Third argument type + typedef W4 Arg4Type; //!< Fourth argument type }; template - struct PtrToMemberTraits - { - enum { IsPointerToMember = 1}; - enum { nArgs = 5}; - typedef U ReturnType; - typedef W1 Arg1Type; - typedef W2 Arg2Type; - typedef W3 Arg3Type; - typedef W4 Arg4Type; - typedef W5 Arg5Type; + struct PtrToMemberTraits //!< Pointer to member type traits + { + enum { IsPointerToMember = 1}; //!< Pointer to member value + enum { nArgs = 5}; //!< Number of arguments + typedef U ReturnType; //!< Return type + typedef W1 Arg1Type; //!< First argument type + typedef W2 Arg2Type; //!< Second argument type + typedef W3 Arg3Type; //!< Third argument type + typedef W4 Arg4Type; //!< Fourth argument type + typedef W5 Arg5Type; //!< Fifth argument type }; template - struct PtrToMemberTraits - { - enum { IsPointerToMember = 1}; - enum { nArgs = 5}; - typedef U ReturnType; - typedef W1 Arg1Type; - typedef W2 Arg2Type; - typedef W3 Arg3Type; - typedef W4 Arg4Type; - typedef W5 Arg5Type; + struct PtrToMemberTraits //!< Pointer to const member type traits + { + enum { IsPointerToMember = 1}; //!< Pointer to member value + enum { nArgs = 5}; //!< Number of arguments + typedef U ReturnType; //!< Return type + typedef W1 Arg1Type; //!< First argument type + typedef W2 Arg2Type; //!< Second argument type + typedef W3 Arg3Type; //!< Third argument type + typedef W4 Arg4Type; //!< Fourth argument type + typedef W5 Arg5Type; //!< Fifth argument type }; template - struct PtrToMemberTraits - { - enum { IsPointerToMember = 1}; - enum { nArgs = 6}; - typedef U ReturnType; - typedef W1 Arg1Type; - typedef W2 Arg2Type; - typedef W3 Arg3Type; - typedef W4 Arg4Type; - typedef W5 Arg5Type; - typedef W6 Arg6Type; + struct PtrToMemberTraits //!< Pointer to member type traits + { + enum { IsPointerToMember = 1}; //!< Pointer to member value + enum { nArgs = 6}; //!< Number of arguments + typedef U ReturnType; //!< Return type + typedef W1 Arg1Type; //!< First argument type + typedef W2 Arg2Type; //!< Second argument type + typedef W3 Arg3Type; //!< Third argument type + typedef W4 Arg4Type; //!< Fourth argument type + typedef W5 Arg5Type; //!< Fifth argument type + typedef W6 Arg6Type; //!< Sixth argument type }; template - struct PtrToMemberTraits - { - enum { IsPointerToMember = 1}; - enum { nArgs = 6}; - typedef U ReturnType; - typedef W1 Arg1Type; - typedef W2 Arg2Type; - typedef W3 Arg3Type; - typedef W4 Arg4Type; - typedef W5 Arg5Type; - typedef W6 Arg6Type; + struct PtrToMemberTraits //!< Pointer to const member type traits + { + enum { IsPointerToMember = 1}; //!< Pointer to member value + enum { nArgs = 6}; //!< Number of arguments + typedef U ReturnType; //!< Return type + typedef W1 Arg1Type; //!< First argument type + typedef W2 Arg2Type; //!< Second argument type + typedef W3 Arg3Type; //!< Third argument type + typedef W4 Arg4Type; //!< Fourth argument type + typedef W5 Arg5Type; //!< Fifth argument type + typedef W6 Arg6Type; //!< Sixth argument type }; public: - typedef typename UnConst::Result NonConstType; - typedef typename ReferenceTraits::ReferencedType ReferencedType; - typedef typename PointerTraits::PointeeType PointeeType; - enum { IsPointerToMember = PtrToMemberTraits::IsPointerToMember}; - enum { IsPointer = PointerTraits::IsPointer}; - enum { IsReference = ReferenceTraits::IsReference}; - enum { IsFunctionPointer = FunctionPtrTraits::IsFunctionPointer}; - typedef PtrToMemberTraits PointerToMemberTraits; - typedef FunctionPtrTraits FunctionPointerTraits; + typedef typename UnConst::Result NonConstType; //!< Non-const type + typedef typename ReferenceTraits::ReferencedType ReferencedType; //!< Referenced type + typedef typename PointerTraits::PointeeType PointeeType; //!< Pointee type + enum { IsPointerToMember = PtrToMemberTraits::IsPointerToMember}; //!< Pointer to member predicate + enum { IsPointer = PointerTraits::IsPointer}; //!< Pointer predicate + enum { IsReference = ReferenceTraits::IsReference}; //!< Reference predicate + enum { IsFunctionPointer = FunctionPtrTraits::IsFunctionPointer}; //!< Function pointer predicate + typedef PtrToMemberTraits PointerToMemberTraits; //!< Pointer to member traits type + typedef FunctionPtrTraits FunctionPointerTraits; //!< Function pointer traits };