diff options
author | Gard Spreemann <gspreemann@gmail.com> | 2018-10-25 13:37:02 +0200 |
---|---|---|
committer | Gard Spreemann <gspreemann@gmail.com> | 2018-10-25 13:37:02 +0200 |
commit | 639ade38182887fbf77319d4b97eca4a310db55f (patch) | |
tree | 6b6cbf359711ee48cf573d8d151271f4bbd7428d /include/gudhi_laplacian/misc.hpp | |
parent | bf20ea8c8ff1e272436839f74ae50ad6913e6a95 (diff) |
Rename files for namespacing reasons.
Diffstat (limited to 'include/gudhi_laplacian/misc.hpp')
-rw-r--r-- | include/gudhi_laplacian/misc.hpp | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/include/gudhi_laplacian/misc.hpp b/include/gudhi_laplacian/misc.hpp new file mode 100644 index 0000000..614f30f --- /dev/null +++ b/include/gudhi_laplacian/misc.hpp @@ -0,0 +1,68 @@ +#pragma once + +#include <cstdint> +#include <istream> +#include <ostream> +#include <string> + +#include <glob.h> + +namespace Gudhi_laplacian +{ + // FIXME: Read from PETSc headers. + static const int32_t PETSC_MAT_FILE_CLASSID = 1211216; + static const int32_t PETSC_VEC_FILE_CLASSID = 1211214; + + bool preexisting_files(const std::string & prefix, const std::string & postfix) + { + glob_t globbuf; + std::string pattern = prefix + std::string(".*.") + postfix; + bool ret = (glob(pattern.c_str(), GLOB_ERR | GLOB_NOSORT, NULL, &globbuf) != GLOB_NOMATCH); + globfree(&globbuf); + return ret; + } + + + template <typename T> inline void reverse_endianness(T & x) + { + uint8_t * p = reinterpret_cast<uint8_t *>(&x); + std::reverse(p, p + sizeof(T)); + } + + template <typename T> inline T read_le(std::istream & s) + { + T result; + s.read(reinterpret_cast<char *>(&result), sizeof(T)); + #ifdef BIGENDIAN + reverse_endianness(result); + #endif + return result; + } + + template <typename T> inline void write_le(std::ostream & s, T value) + { + #ifdef BIGENDIAN + reverse_endianness(value); + #endif + s.write(reinterpret_cast<char *>(&value), sizeof(T)); + } + + template <typename T> inline T read_be(std::istream & s) + { + T result; + s.read(reinterpret_cast<char *>(&result), sizeof(T)); + #ifndef BIGENDIAN + reverse_endianness(result); + #endif + return result; + } + + template <typename T> inline void write_be(std::ostream & s, T value) + { + #ifndef BIGENDIAN + reverse_endianness(value); + #endif + s.write(reinterpret_cast<char *>(&value), sizeof(T)); + } +} + |