4#include <system/object.h>
5#include <system/smart_ptr.h>
6#include <system/weak_ptr.h>
7#include <system/convert.h>
8#include <system/decimal.h>
9#include <system/nullable.h>
10#include <system/int32.h>
11#include <system/int64.h>
12#include <system/void.h>
14#include <initializer_list>
36 return obj->GetType();
58 return obj.Get()->GetType();
67 static inline typename std::enable_if<std::is_fundamental<T>::value || std::is_enum<T>::value,
const System::TypeInfo&>::type
GetType(
const T obj)
80 if (!obj.get_HasValue())
83 Details::ThrowNullableNullReference();
86 return GetType<typename T::ValueType>();
94 static inline typename std::enable_if<std::is_fundamental<T>::value && !std::is_enum<T>::value,
const System::TypeInfo&>::type
GetType()
96 return TypeInfo::BoxedValueType<T>();
103 template <
typename T>
106 return TypeInfo::BoxedValueType<T>();
113 template <
typename T>
123 template <
typename T>
133 template <
typename T>
143 template <
typename T>
144 static inline typename std::enable_if<
145 !std::is_fundamental<T>::value &&
146 !std::is_enum<T>::value &&
152 return TypeInfo::BoxedValueType<T>();
162 return System::String::Type();
171 return System::Byte::Type();
179 return System::Char::Type();
187 return System::Int32::Type();
195 return System::Int64::Type();
203 return System::Boolean::Type();
211 return System::String::Type();
227 return System::Void::Type();
static const TypeInfo & Type()
Returns a TypeInfo object that contains information about this class.
Definition: date_time.h:654
Provides static methods that implement object type getters. This is a static type with no instance se...
Definition: object_type.h:26
static std::enable_if< std::is_enum< T >::value, constSystem::TypeInfo & >::type GetType()
Implements typeof() translation. Overload for enum types.
Definition: object_type.h:104
static std::enable_if< detail::is_a< T, MulticastDelegate >::value, constSystem::TypeInfo & >::type GetType()
Implements typeof() translation. Overload for MutlicastDelegate.
Definition: object_type.h:134
static std::enable_if< std::is_fundamental< T >::value||std::is_enum< T >::value, constSystem::TypeInfo & >::type GetType(const T obj)
Implements typeof() translation. Overload for primitive types.
Definition: object_type.h:67
static std::enable_if<!std::is_fundamental< T >::value &&!std::is_enum< T >::value &&IsBoxable< T >::value &&!detail::is_a< T, MulticastDelegate >::value &&!IsNullable< T >::value, constSystem::TypeInfo & >::type GetType()
Implements typeof() translation. Overload for structures and pointers.
Definition: object_type.h:150
static std::enable_if< IsNullable< T >::value, constSystem::TypeInfo & >::type GetType(const T obj)
Implements typeof() translation. Overload for Nullable types.
Definition: object_type.h:78
static const System::TypeInfo & GetType(const String &obj)
Implements typeof() translation. Overload for string type.
Definition: object_type.h:159
static std::enable_if< std::is_fundamental< T >::value &&!std::is_enum< T >::value, constSystem::TypeInfo & >::type GetType()
Implements typeof() translation. Overload for primitive types.
Definition: object_type.h:94
static std::enable_if<(!std::is_fundamental< T >::value &&!std::is_enum< T >::value &&!IsBoxable< T >::value)||IsExceptionWrapper< T >::value, constSystem::TypeInfo & >::type GetType()
Implements typeof() translation. Overload for structures and pointers.
Definition: object_type.h:114
static std::enable_if< IsNullable< T >::value, constSystem::TypeInfo & >::type GetType()
Implements typeof() translation. Overload for Nullable.
Definition: object_type.h:124
static std::enable_if<!IsExceptionWrapper< T >::value &&!IsSmartPtr< T >::value &&!std::is_fundamental< T >::value &&!std::is_enum< T >::value &&!IsNullable< T >::value, constSystem::TypeInfo & >::type GetType(const T &obj)
Implements typeof() translation. Overload for structures.
Definition: object_type.h:45
static std::enable_if< IsExceptionWrapper< T >::value, constSystem::TypeInfo & >::type GetType(const T &obj)
Implements typeof() translation. Overload for exceptions.
Definition: object_type.h:56
static std::enable_if< IsSmartPtr< T >::value, constSystem::TypeInfo & >::type GetType(const T &obj)
Implements typeof() translation. Overload for smart pointers.
Definition: object_type.h:34
String class used across the library. Is a substitute for C# System.String when translating code....
Definition: string.h:122
Represents a particular type and provides information about it.
Definition: type_info.h:109
Definition: db_command.h:9
Template predicate that checks if boxing of the specified type is supported.
Definition: boxable_traits.h:16
A template predicate that determines if the specified type is a Exception class or its descendant.
Definition: object.h:405
A template predicate that determines if its template argument T in Nullable or its subclass.
Definition: nullable.h:23
Trait class to check if a type is a specialization of SmartPtr class.
Definition: smart_ptr.h:1499
Tests if specific type is a specialization of specific template. If it is, inherits std::true_type,...
Definition: detail.h:80