TypeInfo CreateTypeInfo(char const* typeName) { TypeInfo newInfo = TypeManager::GetInst().CreateTypeInfo(); newInfo.SetSize(sizeof(T)); newInfo.SetName(typeName); newInfo.SetReferenceType( !boost::is_pointer<T>::value ? newInfo.GetId() : StaticTypeInfo< typename boost::remove_pointer< typename boost::remove_pointer<T>::type>::type >::GetTypeId() ); for_each_type< BaseTypes >( AddBase<T> (newInfo) ); newInfo.SetCreationFunctions(&Alloc::create, &Alloc::clone, &Alloc::destruct, &Alloc::destroy ); newInfo.SetVariables( MemberVariableList<T>::GetVariablePtrs() ); return newInfo; }