This repository has been archived on 2023-10-09. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
blender-archive/extern/mantaflow/preprocessed/fileio/ioutil.cpp
Sebastián Barschkis 0cdc75ccd2 Fluid: Cleanup build system for extern mantaflow
No longer including unused dependencies. Should numpy IO be needed at some point, the Manta source update script can be configured so that the required dependencies are included again.
2020-07-17 15:58:13 +02:00

118 lines
2.4 KiB
C++

// DO NOT EDIT !
// This file is generated using the MantaFlow preprocessor (prep generate).
/******************************************************************************
*
* MantaFlow fluid solver framework
* Copyright 2011-2020 Tobias Pfaff, Nils Thuerey
*
* This program is free software, distributed under the terms of the
* Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
* Helper functions to handle file IO
*
******************************************************************************/
#include "mantaio.h"
#if OPENVDB == 1
# include "openvdb/openvdb.h"
#endif
#if NO_ZLIB != 1
extern "C" {
# include <zlib.h>
}
#endif
#if defined(WIN32) || defined(_WIN32)
# include <windows.h>
# include <string>
#endif
using namespace std;
namespace Manta {
#if defined(WIN32) || defined(_WIN32)
static wstring stringToWstring(const char *str)
{
const int length_wc = MultiByteToWideChar(CP_UTF8, 0, str, strlen(str), NULL, 0);
wstring strWide(length_wc, 0);
MultiByteToWideChar(CP_UTF8, 0, str, strlen(str), &strWide[0], length_wc);
return strWide;
}
#endif // WIN32==1
void *safeGzopen(const char *filename, const char *mode)
{
#if NO_ZLIB != 1
gzFile gzfile;
# if defined(WIN32) || defined(_WIN32)
wstring filenameWide = stringToWstring(filename);
gzfile = gzopen_w(filenameWide.c_str(), mode);
# else
gzfile = gzopen(filename, mode);
# endif
return gzfile;
#else
debMsg("safeGzopen not supported without zlib", 1);
return nullptr;
#endif // NO_ZLIB != 1
}
#if defined(OPENVDB)
// Convert from OpenVDB value to Manta value.
template<class S, class T> void convertFrom(S &in, T *out)
{
errMsg("OpenVDB convertFrom Warning: Unsupported type conversion");
}
template<> void convertFrom(int &in, int *out)
{
(*out) = in;
}
template<> void convertFrom(float &in, Real *out)
{
(*out) = (Real)in;
}
template<> void convertFrom(openvdb::Vec3s &in, Vec3 *out)
{
(*out).x = in.x();
(*out).y = in.y();
(*out).z = in.z();
}
// Convert to OpenVDB value from Manta value.
template<class S, class T> void convertTo(S *out, T &in)
{
errMsg("OpenVDB convertTo Warning: Unsupported type conversion");
}
template<> void convertTo(int *out, int &in)
{
(*out) = in;
}
template<> void convertTo(float *out, Real &in)
{
(*out) = (float)in;
}
template<> void convertTo(openvdb::Vec3s *out, Vec3 &in)
{
(*out).x() = in.x;
(*out).y() = in.y;
(*out).z() = in.z;
}
#endif // OPENVDB==1
} // namespace Manta