change std::make_unique to mmd::make_unique

pull/1212/head
aoowweenn 2017-03-27 22:16:19 +08:00
parent ccf2bce2b0
commit 8cd0d3b3c7
4 changed files with 35 additions and 34 deletions

View File

@ -1,19 +1,20 @@
#pragma once
#ifndef MMD_CPP14_H
#define MMD_CPP14_H
#include <cstddef>
#include <memory>
#include <type_traits>
#include <utility>
namespace std {
namespace mmd {
template<class T> struct _Unique_if {
typedef unique_ptr<T> _Single_object;
typedef std::unique_ptr<T> _Single_object;
};
template<class T> struct _Unique_if<T[]> {
typedef unique_ptr<T[]> _Unknown_bound;
typedef std::unique_ptr<T[]> _Unknown_bound;
};
template<class T, size_t N> struct _Unique_if<T[N]> {
@ -23,14 +24,14 @@ namespace std {
template<class T, class... Args>
typename _Unique_if<T>::_Single_object
make_unique(Args&&... args) {
return unique_ptr<T>(new T(std::forward<Args>(args)...));
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}
template<class T>
typename _Unique_if<T>::_Unknown_bound
make_unique(size_t n) {
typedef typename remove_extent<T>::type U;
return unique_ptr<T>(new U[n]());
typedef typename std::remove_extent<T>::type U;
return std::unique_ptr<T>(new U[n]());
}
template<class T, class... Args>

View File

@ -454,7 +454,7 @@ namespace pmd
/// ファイルからPmdModelを生成する
static std::unique_ptr<PmdModel> LoadFromStream(std::ifstream *stream)
{
auto result = std::make_unique<PmdModel>();
auto result = mmd::make_unique<PmdModel>();
char buffer[100];
// magic

View File

@ -163,19 +163,19 @@ namespace pmx
switch (this->skinning_type)
{
case PmxVertexSkinningType::BDEF1:
this->skinning = std::make_unique<PmxVertexSkinningBDEF1>();
this->skinning = mmd::make_unique<PmxVertexSkinningBDEF1>();
break;
case PmxVertexSkinningType::BDEF2:
this->skinning = std::make_unique<PmxVertexSkinningBDEF2>();
this->skinning = mmd::make_unique<PmxVertexSkinningBDEF2>();
break;
case PmxVertexSkinningType::BDEF4:
this->skinning = std::make_unique<PmxVertexSkinningBDEF4>();
this->skinning = mmd::make_unique<PmxVertexSkinningBDEF4>();
break;
case PmxVertexSkinningType::SDEF:
this->skinning = std::make_unique<PmxVertexSkinningSDEF>();
this->skinning = mmd::make_unique<PmxVertexSkinningSDEF>();
break;
case PmxVertexSkinningType::QDEF:
this->skinning = std::make_unique<PmxVertexSkinningQDEF>();
this->skinning = mmd::make_unique<PmxVertexSkinningQDEF>();
break;
default:
throw "invalid skinning type";
@ -254,7 +254,7 @@ namespace pmx
stream->read((char*) &ik_loop, sizeof(int));
stream->read((char*) &ik_loop_angle_limit, sizeof(float));
stream->read((char*) &ik_link_count, sizeof(int));
this->ik_links = std::make_unique<PmxIkLink []>(ik_link_count);
this->ik_links = mmd::make_unique<PmxIkLink []>(ik_link_count);
for (int i = 0; i < ik_link_count; i++) {
ik_links[i].Read(stream, setting);
}
@ -325,28 +325,28 @@ namespace pmx
switch (this->morph_type)
{
case MorphType::Group:
group_offsets = std::make_unique<PmxMorphGroupOffset []>(this->offset_count);
group_offsets = mmd::make_unique<PmxMorphGroupOffset []>(this->offset_count);
for (int i = 0; i < offset_count; i++)
{
group_offsets[i].Read(stream, setting);
}
break;
case MorphType::Vertex:
vertex_offsets = std::make_unique<PmxMorphVertexOffset []>(this->offset_count);
vertex_offsets = mmd::make_unique<PmxMorphVertexOffset []>(this->offset_count);
for (int i = 0; i < offset_count; i++)
{
vertex_offsets[i].Read(stream, setting);
}
break;
case MorphType::Bone:
bone_offsets = std::make_unique<PmxMorphBoneOffset []>(this->offset_count);
bone_offsets = mmd::make_unique<PmxMorphBoneOffset []>(this->offset_count);
for (int i = 0; i < offset_count; i++)
{
bone_offsets[i].Read(stream, setting);
}
break;
case MorphType::Matrial:
material_offsets = std::make_unique<PmxMorphMaterialOffset []>(this->offset_count);
material_offsets = mmd::make_unique<PmxMorphMaterialOffset []>(this->offset_count);
for (int i = 0; i < offset_count; i++)
{
material_offsets[i].Read(stream, setting);
@ -357,7 +357,7 @@ namespace pmx
case MorphType::AdditionalUV2:
case MorphType::AdditionalUV3:
case MorphType::AdditionalUV4:
uv_offsets = std::make_unique<PmxMorphUVOffset []>(this->offset_count);
uv_offsets = mmd::make_unique<PmxMorphUVOffset []>(this->offset_count);
for (int i = 0; i < offset_count; i++)
{
uv_offsets[i].Read(stream, setting);
@ -386,7 +386,7 @@ namespace pmx
this->frame_english_name = ReadString(stream, setting->encoding);
stream->read((char*) &this->frame_flag, sizeof(uint8_t));
stream->read((char*) &this->element_count, sizeof(int));
this->elements = std::make_unique<PmxFrameElement []>(this->element_count);
this->elements = mmd::make_unique<PmxFrameElement []>(this->element_count);
for (int i = 0; i < this->element_count; i++)
{
this->elements[i].Read(stream, setting);
@ -505,7 +505,7 @@ namespace pmx
// 頂点
stream->read((char*) &vertex_count, sizeof(int));
this->vertices = std::make_unique<PmxVertex []>(vertex_count);
this->vertices = mmd::make_unique<PmxVertex []>(vertex_count);
for (int i = 0; i < vertex_count; i++)
{
vertices[i].Read(stream, &setting);
@ -513,7 +513,7 @@ namespace pmx
// 面
stream->read((char*) &index_count, sizeof(int));
this->indices = std::make_unique<int []>(index_count);
this->indices = mmd::make_unique<int []>(index_count);
for (int i = 0; i < index_count; i++)
{
this->indices[i] = ReadIndex(stream, setting.vertex_index_size);
@ -521,7 +521,7 @@ namespace pmx
// テクスチャ
stream->read((char*) &texture_count, sizeof(int));
this->textures = std::make_unique<std::string []>(texture_count);
this->textures = mmd::make_unique<std::string []>(texture_count);
for (int i = 0; i < texture_count; i++)
{
this->textures[i] = ReadString(stream, setting.encoding);
@ -529,7 +529,7 @@ namespace pmx
// マテリアル
stream->read((char*) &material_count, sizeof(int));
this->materials = std::make_unique<PmxMaterial []>(material_count);
this->materials = mmd::make_unique<PmxMaterial []>(material_count);
for (int i = 0; i < material_count; i++)
{
this->materials[i].Read(stream, &setting);
@ -537,7 +537,7 @@ namespace pmx
// ボーン
stream->read((char*) &this->bone_count, sizeof(int));
this->bones = std::make_unique<PmxBone []>(this->bone_count);
this->bones = mmd::make_unique<PmxBone []>(this->bone_count);
for (int i = 0; i < this->bone_count; i++)
{
this->bones[i].Read(stream, &setting);
@ -545,7 +545,7 @@ namespace pmx
// モーフ
stream->read((char*) &this->morph_count, sizeof(int));
this->morphs = std::make_unique<PmxMorph []>(this->morph_count);
this->morphs = mmd::make_unique<PmxMorph []>(this->morph_count);
for (int i = 0; i < this->morph_count; i++)
{
this->morphs[i].Read(stream, &setting);
@ -553,7 +553,7 @@ namespace pmx
// 表示枠
stream->read((char*) &this->frame_count, sizeof(int));
this->frames = std::make_unique<PmxFrame []>(this->frame_count);
this->frames = mmd::make_unique<PmxFrame []>(this->frame_count);
for (int i = 0; i < this->frame_count; i++)
{
this->frames[i].Read(stream, &setting);
@ -561,7 +561,7 @@ namespace pmx
// 剛体
stream->read((char*) &this->rigid_body_count, sizeof(int));
this->rigid_bodies = std::make_unique<PmxRigidBody []>(this->rigid_body_count);
this->rigid_bodies = mmd::make_unique<PmxRigidBody []>(this->rigid_body_count);
for (int i = 0; i < this->rigid_body_count; i++)
{
this->rigid_bodies[i].Read(stream, &setting);
@ -569,7 +569,7 @@ namespace pmx
// ジョイント
stream->read((char*) &this->joint_count, sizeof(int));
this->joints = std::make_unique<PmxJoint []>(this->joint_count);
this->joints = mmd::make_unique<PmxJoint []>(this->joint_count);
for (int i = 0; i < this->joint_count; i++)
{
this->joints[i].Read(stream, &setting);
@ -579,7 +579,7 @@ namespace pmx
//if (this->version == 2.1f)
//{
// stream->read((char*) &this->soft_body_count, sizeof(int));
// this->soft_bodies = std::make_unique<PmxSoftBody []>(this->soft_body_count);
// this->soft_bodies = mmd::make_unique<PmxSoftBody []>(this->soft_body_count);
// for (int i = 0; i < this->soft_body_count; i++)
// {
// this->soft_bodies[i].Read(stream, &setting);
@ -601,7 +601,7 @@ namespace pmx
//std::unique_ptr<PmxModel> ReadFromStream(std::istream *stream)
//{
// auto pmx = std::make_unique<PmxModel>();
// auto pmx = mmd::make_unique<PmxModel>();
// pmx->Read(stream);
// return pmx;
//}

View File

@ -220,7 +220,7 @@ namespace vmd
{
char buffer[30];
auto result = std::make_unique<VmdMotion>();
auto result = mmd::make_unique<VmdMotion>();
// magic and version
stream->read((char*) buffer, 30);