Merge pull request #4967 from assimp/kimkulling/add_missing_metadatatypes_issue-4959
Add missing pod types.pull/4965/head^2
commit
c8a0119e45
|
@ -84,10 +84,6 @@ OPTION( ASSIMP_NO_EXPORT
|
|||
"Disable Assimp's export functionality."
|
||||
OFF
|
||||
)
|
||||
OPTION( ASSIMP_BUILD_ZLIB
|
||||
"Build your own zlib"
|
||||
OFF
|
||||
)
|
||||
OPTION( ASSIMP_BUILD_ASSIMP_TOOLS
|
||||
"If the supplementary tools for Assimp are built in addition to the library."
|
||||
OFF
|
||||
|
@ -134,6 +130,18 @@ OPTION ( ASSIMP_IGNORE_GIT_HASH
|
|||
OFF
|
||||
)
|
||||
|
||||
IF (WIN32)
|
||||
OPTION( ASSIMP_BUILD_ZLIB
|
||||
"Build your own zlib"
|
||||
ON
|
||||
)
|
||||
ELSE()
|
||||
OPTION( ASSIMP_BUILD_ZLIB
|
||||
"Build your own zlib"
|
||||
OFF
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
IF (WIN32)
|
||||
# Use subset of Windows.h
|
||||
ADD_DEFINITIONS( -DWIN32_LEAN_AND_MEAN )
|
||||
|
|
|
@ -56,6 +56,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
#include <assimp/quaternion.h>
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
/**
|
||||
* Enum used to distinguish data types
|
||||
|
@ -70,7 +72,9 @@ typedef enum aiMetadataType {
|
|||
AI_AISTRING = 5,
|
||||
AI_AIVECTOR3D = 6,
|
||||
AI_AIMETADATA = 7,
|
||||
AI_META_MAX = 8,
|
||||
AI_INT64 = 8,
|
||||
AI_UINT32 = 9,
|
||||
AI_META_MAX = 10,
|
||||
|
||||
#ifndef SWIG
|
||||
FORCE_32BIT = INT_MAX
|
||||
|
@ -133,6 +137,12 @@ inline aiMetadataType GetAiType(const aiVector3D &) {
|
|||
inline aiMetadataType GetAiType(const aiMetadata &) {
|
||||
return AI_AIMETADATA;
|
||||
}
|
||||
inline aiMetadataType GetAiType(int64_t) {
|
||||
return AI_INT64;
|
||||
}
|
||||
inline aiMetadataType GetAiType(uint32_t) {
|
||||
return AI_UINT32;
|
||||
}
|
||||
|
||||
#endif // __cplusplus
|
||||
|
||||
|
@ -215,6 +225,16 @@ struct aiMetadata {
|
|||
rhs.Get<aiMetadata>(static_cast<unsigned int>(i), v);
|
||||
mValues[i].mData = new aiMetadata(v);
|
||||
} break;
|
||||
case AI_INT64: {
|
||||
int64_t v;
|
||||
::memcpy(&v, rhs.mValues[i].mData, sizeof(int64_t));
|
||||
mValues[i].mData = new int64_t(v);
|
||||
} break;
|
||||
case AI_UINT32: {
|
||||
uint32_t v;
|
||||
::memcpy(&v, rhs.mValues[i].mData, sizeof(uint32_t));
|
||||
mValues[i].mData = new uint32_t(v);
|
||||
} break;
|
||||
#ifndef SWIG
|
||||
case FORCE_32BIT:
|
||||
#endif
|
||||
|
@ -267,6 +287,12 @@ struct aiMetadata {
|
|||
case AI_AIMETADATA:
|
||||
delete static_cast<aiMetadata *>(data);
|
||||
break;
|
||||
case AI_INT64:
|
||||
delete static_cast<int64_t *>(data);
|
||||
break;
|
||||
case AI_UINT32:
|
||||
delete static_cast<uint32_t *>(data);
|
||||
break;
|
||||
#ifndef SWIG
|
||||
case FORCE_32BIT:
|
||||
#endif
|
||||
|
@ -510,6 +536,16 @@ struct aiMetadata {
|
|||
return false;
|
||||
}
|
||||
} break;
|
||||
case AI_INT64: {
|
||||
if (*static_cast<int64_t *>(lhs.mValues[i].mData) != *static_cast<int64_t *>(rhs.mValues[i].mData)) {
|
||||
return false;
|
||||
}
|
||||
} break;
|
||||
case AI_UINT32: {
|
||||
if (*static_cast<uint32_t *>(lhs.mValues[i].mData) != *static_cast<uint32_t *>(rhs.mValues[i].mData)) {
|
||||
return false;
|
||||
}
|
||||
} break;
|
||||
#ifndef SWIG
|
||||
case FORCE_32BIT:
|
||||
#endif
|
||||
|
|
|
@ -5,8 +5,6 @@ Open Asset Import Library (assimp)
|
|||
|
||||
Copyright (c) 2006-2022, assimp team
|
||||
|
||||
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use of this software in source and binary forms,
|
||||
|
@ -84,7 +82,7 @@ TEST_F( utMetadata, allocTest ) {
|
|||
}
|
||||
|
||||
TEST_F( utMetadata, get_set_pod_Test ) {
|
||||
m_data = aiMetadata::Alloc( 5 );
|
||||
m_data = aiMetadata::Alloc( 7 );
|
||||
|
||||
// int, 32 bit
|
||||
unsigned int index( 0 );
|
||||
|
@ -137,6 +135,28 @@ TEST_F( utMetadata, get_set_pod_Test ) {
|
|||
EXPECT_TRUE( success );
|
||||
EXPECT_DOUBLE_EQ( 3.0, result_double );
|
||||
|
||||
// int64_t
|
||||
index++;
|
||||
const std::string key_int64 = "test_int64";
|
||||
int64_t val_int64 = 64;
|
||||
success = m_data->Set(index, key_int64, val_int64);
|
||||
EXPECT_TRUE(success);
|
||||
int64_t result_int64(0);
|
||||
success = m_data->Get(key_int64, result_int64);
|
||||
EXPECT_TRUE(success);
|
||||
EXPECT_EQ(result_int64, val_int64);
|
||||
|
||||
// uint32
|
||||
index++;
|
||||
const std::string key_uint32 = "test_uint32";
|
||||
int64_t val_uint32 = 32;
|
||||
success = m_data->Set(index, key_uint32, val_uint32);
|
||||
EXPECT_TRUE(success);
|
||||
int64_t result_uint32(0);
|
||||
success = m_data->Get(key_uint32, result_uint32);
|
||||
EXPECT_TRUE(success);
|
||||
EXPECT_EQ(result_uint32, val_uint32);
|
||||
|
||||
// error
|
||||
int result;
|
||||
success = m_data->Get( "bla", result );
|
||||
|
@ -181,6 +201,7 @@ TEST_F( utMetadata, get_set_aiVector3D_Test ) {
|
|||
EXPECT_TRUE( success );
|
||||
}
|
||||
|
||||
|
||||
TEST_F( utMetadata, copy_test ) {
|
||||
m_data = aiMetadata::Alloc( AI_META_MAX );
|
||||
bool bv = true;
|
||||
|
@ -199,9 +220,12 @@ TEST_F( utMetadata, copy_test ) {
|
|||
m_data->Set( 6, "aiVector3D", vecVal );
|
||||
aiMetadata metaVal;
|
||||
m_data->Set( 7, "aiMetadata", metaVal );
|
||||
|
||||
int64_t i64 = 64;
|
||||
m_data->Set(8, "int64_t", i64);
|
||||
uint32_t ui32 = 32;
|
||||
m_data->Set(9, "uint32_t", ui32);
|
||||
aiMetadata copy(*m_data);
|
||||
EXPECT_EQ( 8u, copy.mNumProperties );
|
||||
EXPECT_EQ( 10u, copy.mNumProperties );
|
||||
|
||||
// bool test
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue