fix the build - add misisng forward declaration for aiVector3t.

pull/3012/head
kimkulling 2020-03-16 10:50:07 +01:00
parent 27c125ef4d
commit a9e8f65941
2 changed files with 28 additions and 37 deletions

View File

@ -44,26 +44,25 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <assimp/StringComparison.h> #include <assimp/StringComparison.h>
#include <assimp/DefaultIOSystem.h>
#include <assimp/DefaultIOStream.h> #include <assimp/DefaultIOStream.h>
#include <assimp/DefaultLogger.hpp> #include <assimp/DefaultIOSystem.h>
#include <assimp/ai_assert.h> #include <assimp/ai_assert.h>
#include <stdlib.h> #include <stdlib.h>
#include <assimp/DefaultLogger.hpp>
#ifdef __unix__ #ifdef __unix__
#include <sys/param.h> # include <stdlib.h>
#include <stdlib.h> # include <sys/param.h>
#endif #endif
#ifdef _WIN32 #ifdef _WIN32
#include <windows.h> # include <windows.h>
#endif #endif
using namespace Assimp; using namespace Assimp;
#ifdef _WIN32 #ifdef _WIN32
static std::wstring Utf8ToWide(const char* in) static std::wstring Utf8ToWide(const char *in) {
{
int size = MultiByteToWideChar(CP_UTF8, 0, in, -1, nullptr, 0); int size = MultiByteToWideChar(CP_UTF8, 0, in, -1, nullptr, 0);
// size includes terminating null; std::wstring adds null automatically // size includes terminating null; std::wstring adds null automatically
std::wstring out(static_cast<size_t>(size) - 1, L'\0'); std::wstring out(static_cast<size_t>(size) - 1, L'\0');
@ -71,8 +70,7 @@ static std::wstring Utf8ToWide(const char* in)
return out; return out;
} }
static std::string WideToUtf8(const wchar_t* in) static std::string WideToUtf8(const wchar_t *in) {
{
int size = WideCharToMultiByte(CP_UTF8, 0, in, -1, nullptr, 0, nullptr, nullptr); int size = WideCharToMultiByte(CP_UTF8, 0, in, -1, nullptr, 0, nullptr, nullptr);
// size includes terminating null; std::string adds null automatically // size includes terminating null; std::string adds null automatically
std::string out(static_cast<size_t>(size) - 1, '\0'); std::string out(static_cast<size_t>(size) - 1, '\0');
@ -83,52 +81,51 @@ static std::string WideToUtf8(const wchar_t* in)
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Tests for the existence of a file at the given path. // Tests for the existence of a file at the given path.
bool DefaultIOSystem::Exists(const char* pFile) const bool DefaultIOSystem::Exists(const char *pFile) const {
{
#ifdef _WIN32 #ifdef _WIN32
struct __stat64 filestat; struct __stat64 filestat;
if (_wstat64(Utf8ToWide(pFile).c_str(), &filestat) != 0) { if (_wstat64(Utf8ToWide(pFile).c_str(), &filestat) != 0) {
return false; return false;
} }
#else #else
FILE* file = ::fopen(pFile, "rb"); FILE *file = ::fopen(pFile, "rb");
if (!file) if (!file) {
return false; return false;
}
::fclose(file); ::fclose(file);
#endif #endif
return true; return true;
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Open a new file with a given path. // Open a new file with a given path.
IOStream* DefaultIOSystem::Open(const char* strFile, const char* strMode) IOStream *DefaultIOSystem::Open(const char *strFile, const char *strMode) {
{
ai_assert(strFile != nullptr); ai_assert(strFile != nullptr);
ai_assert(strMode != nullptr); ai_assert(strMode != nullptr);
FILE* file; FILE *file;
#ifdef _WIN32 #ifdef _WIN32
file = ::_wfopen(Utf8ToWide(strFile).c_str(), Utf8ToWide(strMode).c_str()); file = ::_wfopen(Utf8ToWide(strFile).c_str(), Utf8ToWide(strMode).c_str());
#else #else
file = ::fopen(strFile, strMode); file = ::fopen(strFile, strMode);
#endif #endif
if (!file) if (!file) {
return nullptr; return nullptr;
}
return new DefaultIOStream(file, strFile); return new DefaultIOStream(file, strFile);
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Closes the given file and releases all resources associated with it. // Closes the given file and releases all resources associated with it.
void DefaultIOSystem::Close(IOStream* pFile) void DefaultIOSystem::Close(IOStream *pFile) {
{
delete pFile; delete pFile;
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Returns the operation specific directory separator // Returns the operation specific directory separator
char DefaultIOSystem::getOsSeparator() const char DefaultIOSystem::getOsSeparator() const {
{
#ifndef _WIN32 #ifndef _WIN32
return '/'; return '/';
#else #else
@ -138,25 +135,23 @@ char DefaultIOSystem::getOsSeparator() const
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// IOSystem default implementation (ComparePaths isn't a pure virtual function) // IOSystem default implementation (ComparePaths isn't a pure virtual function)
bool IOSystem::ComparePaths(const char* one, const char* second) const bool IOSystem::ComparePaths(const char *one, const char *second) const {
{
return !ASSIMP_stricmp(one, second); return !ASSIMP_stricmp(one, second);
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Convert a relative path into an absolute path // Convert a relative path into an absolute path
inline static std::string MakeAbsolutePath(const char* in) inline static std::string MakeAbsolutePath(const char *in) {
{
ai_assert(in); ai_assert(in);
std::string out; std::string out;
#ifdef _WIN32 #ifdef _WIN32
wchar_t* ret = ::_wfullpath(nullptr, Utf8ToWide(in).c_str(), 0); wchar_t *ret = ::_wfullpath(nullptr, Utf8ToWide(in).c_str(), 0);
if (ret) { if (ret) {
out = WideToUtf8(ret); out = WideToUtf8(ret);
free(ret); free(ret);
} }
#else #else
char* ret = realpath(in, nullptr); char *ret = realpath(in, nullptr);
if (ret) { if (ret) {
out = ret; out = ret;
free(ret); free(ret);
@ -173,8 +168,7 @@ inline static std::string MakeAbsolutePath(const char* in)
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// DefaultIOSystem's more specialized implementation // DefaultIOSystem's more specialized implementation
bool DefaultIOSystem::ComparePaths(const char* one, const char* second) const bool DefaultIOSystem::ComparePaths(const char *one, const char *second) const {
{
// chances are quite good both paths are formatted identically, // chances are quite good both paths are formatted identically,
// so we can hopefully return here already // so we can hopefully return here already
if (!ASSIMP_stricmp(one, second)) if (!ASSIMP_stricmp(one, second))
@ -187,8 +181,7 @@ bool DefaultIOSystem::ComparePaths(const char* one, const char* second) const
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
std::string DefaultIOSystem::fileName(const std::string& path) std::string DefaultIOSystem::fileName(const std::string &path) {
{
std::string ret = path; std::string ret = path;
std::size_t last = ret.find_last_of("\\/"); std::size_t last = ret.find_last_of("\\/");
if (last != std::string::npos) ret = ret.substr(last + 1); if (last != std::string::npos) ret = ret.substr(last + 1);
@ -196,8 +189,7 @@ std::string DefaultIOSystem::fileName(const std::string& path)
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
std::string DefaultIOSystem::completeBaseName(const std::string& path) std::string DefaultIOSystem::completeBaseName(const std::string &path) {
{
std::string ret = fileName(path); std::string ret = fileName(path);
std::size_t pos = ret.find_last_of('.'); std::size_t pos = ret.find_last_of('.');
if (pos != std::string::npos) ret = ret.substr(0, pos); if (pos != std::string::npos) ret = ret.substr(0, pos);
@ -205,8 +197,7 @@ std::string DefaultIOSystem::completeBaseName(const std::string& path)
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
std::string DefaultIOSystem::absolutePath(const std::string& path) std::string DefaultIOSystem::absolutePath(const std::string &path) {
{
std::string ret = path; std::string ret = path;
std::size_t last = ret.find_last_of("\\/"); std::size_t last = ret.find_last_of("\\/");
if (last != std::string::npos) ret = ret.substr(0, last); if (last != std::string::npos) ret = ret.substr(0, last);

View File

@ -58,6 +58,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
template <typename T> class aiMatrix4x4t; template <typename T> class aiMatrix4x4t;
template <typename T> class aiVector2t; template <typename T> class aiVector2t;
template <typename T> class aiVector3t;
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
/** @brief Represents a row-major 3x3 matrix /** @brief Represents a row-major 3x3 matrix
@ -136,8 +137,7 @@ public:
* @param axis Axis to rotate around * @param axis Axis to rotate around
* @param out To be filled * @param out To be filled
*/ */
static aiMatrix3x3t& Rotation( TReal a, static aiMatrix3x3t& Rotation( TReal a, const aiVector3t<TReal>& axis, aiMatrix3x3t& out);
const aiVector3t<TReal>& axis, aiMatrix3x3t& out);
// ------------------------------------------------------------------- // -------------------------------------------------------------------
/** @brief Returns a translation matrix /** @brief Returns a translation matrix