diff --git a/cmake/examples/hobu-windows.bat b/cmake/examples/hobu-windows.bat index 52512962c7..19129a07c9 100644 --- a/cmake/examples/hobu-windows.bat +++ b/cmake/examples/hobu-windows.bat @@ -19,16 +19,6 @@ set PDAL_DIR=. :: Where is your OSGeo4W installed (recommended basic way to satisfy dependent libs) set OSGEO4W_DIR=C:\OSGeo4W64 -set BOOST=%OSGEO4W_DIR% - -:: Where is boost installed? -rem set BOOST_DIR=c:\utils\boost_1_49_0 -REM set BOOST_DIR=%PDAL_DIR%\boost - -:: CARIS -REM set CARIS_ENABLED=ON -set CARIS_INCLUDE_DIR=%CARIS_DIR%\include -set CARIS_LIBRARY=%CARIS_DIR%\caris.lib :: GDAL set GDAL_ENABLED=ON @@ -63,39 +53,42 @@ set LIBXML2_LIBRARIES=%OSGEO4W_DIR%\lib\libxml2.lib :: Python set PYTHON_ENABLED=ON -REM set PYTHON_EXECUTABLE=%OSGEO4W_DIR\bin\python27.exe -REM set PYTHON_INCLUDE_DIR=%OSGEO4W_DIR\apps\python27\include -REM set PYTHON_LIBRARY=%OSGEO4W_DIR\apps\python27\libs\python27.lib +set PYTHON_EXECUTABLE=%OSGEO4W_DIR\bin\python27.exe +set PYTHON_INCLUDE_DIR=%OSGEO4W_DIR\apps\python27\include +set PYTHON_LIBRARY=%OSGEO4W_DIR\apps\python27\libs\python27.lib if EXIST CMakeCache.txt del CMakeCache.txt -del /S /Q CMakeFiles -cd %PDAL_DIR%/build -cmake -G %GENERATOR% ^ - -DBOOST_INCLUDEDIR=%BOOST%\include\boost-1_56 -DCMAKE_INSTALL_PREFIX=C:\dev\PDAL\built ^ - -DBOOST_LIBRARYDIR=%BOOST%\lib -DCMAKE_BUILD_TYPE=Release -DBoost_DEBUG=ON -DBoost_COMPILER="-vc110" ^ - -DWITH_GEOTIFF=%GEOTIFF_ENABLED% ^ - -DBUILD_PLUGIN_OCI=%ORACLE_ENABLED% ^ + +cmake -G "Visual Studio 14 2015 Win64" ^ + -DBUILD_PLUGIN_CPD=OFF ^ + -DBUILD_PLUGIN_GREYHOUND=OFF ^ + -DBUILD_PLUGIN_HEXBIN=ON ^ + -DBUILD_PLUGIN_ICEBRIDGE=OFF ^ + -DBUILD_PLUGIN_MRSID=OFF ^ + -DBUILD_PLUGIN_NITF=ON ^ + -DBUILD_PLUGIN_OCI=ON ^ + -DBUILD_PLUGIN_P2G=ON ^ + -DBUILD_PLUGIN_PCL=OFF ^ -DBUILD_PLUGIN_PGPOINTCLOUD=ON ^ - -DWITH_LASZIP=%LASZIP_ENABLED% ^ - -DWITH_LIBXML2=%LIBXML2_ENABLED% ^ - -DWITH_PYTHON=%PYTHON_ENABLED% ^ - -DBUILD_PLUGIN_NITF=ON ^ - -DBUILD_PLUGIN_HEXBIN=ON ^ + -DBUILD_PLUGIN_SQLITE=ON ^ + -DBUILD_PLUGIN_RIVLIB=OFF ^ + -DBUILD_PLUGIN_PYTHON=ON ^ + -DENABLE_CTEST=OFF ^ + -DWITH_APPS=ON ^ + -DWITH_LAZPERF=%PDAL_OPTIONAL_COMPONENTS% ^ + -DWITH_GEOTIFF=ON ^ + -DWITH_LASZIP=ON ^ + -DWITH_TESTS=ON ^ -DPYTHON_EXECUTABLE=%OSGEO4W_DIR%\bin\python.exe ^ -DPYTHON_INCLUDE_DIR=%OSGEO4W_DIR%\apps\python27\include ^ -DPYTHON_LIBRARY=%OSGEO4W_DIR%\apps\python27\libs\python27.lib ^ -DNUMPY_INCLUDE_DIR=%OSGEO4W_DIR%\apps\python27\lib\site-packages\numpy\core\include ^ - -DNUMPY_VERSION=1.8.1 ^ + -DNUMPY_VERSION=1.11.1 ^ + -Dgtest_force_shared_crt=ON ^ + -DCMAKE_INSTALL_PREFIX=C:\pdalbin ^ -DCMAKE_BUILD_TYPE=%BUILD_TYPE% ^ -DCMAKE_VERBOSE_MAKEFILE=OFF ^ - -DBUILD_PLUGIN_SQLITE=ON ^ - -DBUILD_PLUGIN_PCL=ON ^ - .. -cd .. - -rem -DBOOST_INCLUDEDIR=%BOOST_DIR% ^ -rem -DNUMPY_INCLUDE_DIR=%OSGEO4W_DIR%\apps\python27\lib\site-packages\numpy\core\include ^ -rem -DPYTHONPATH=%OSGEO4W_DIR%\apps\python27\lib\site-packages ^ -rem -DPYTHON_LIBRARY=%PYTHON_LIBRARY% ^ + . + diff --git a/cmake/modules/FindJSONCPP.cmake b/cmake/modules/FindJSONCPP.cmake index 39ab630dca..8dc0d7cbf0 100644 --- a/cmake/modules/FindJSONCPP.cmake +++ b/cmake/modules/FindJSONCPP.cmake @@ -35,7 +35,7 @@ set(_pathsuffixes msvc80 msvc90 linux-gcc) -if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") +if(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion diff --git a/filters/chipper/ChipperFilter.cpp b/filters/chipper/ChipperFilter.cpp index 5e01c359e7..ab67176f4b 100644 --- a/filters/chipper/ChipperFilter.cpp +++ b/filters/chipper/ChipperFilter.cpp @@ -143,6 +143,22 @@ void ChipperFilter::load(PointView& view, ChipRefList& xvec, ChipRefList& yvec, } + + +#ifdef _WIN32 +inline long lround(double d) +{ + long l; + + if (d < 0) + l = (long)ceil(d - .5); + else + l = (long)floor(d + .5); + return l; +} +#endif + + // Build a list of partitions. The partition is the size of each block in // the x and y directions in number of points. void ChipperFilter::partition(point_count_t size) diff --git a/filters/transformation/TransformationFilter.cpp b/filters/transformation/TransformationFilter.cpp index 7ff369bc79..dbbffa3046 100644 --- a/filters/transformation/TransformationFilter.cpp +++ b/filters/transformation/TransformationFilter.cpp @@ -54,7 +54,7 @@ std::string TransformationFilter::getName() const { return s_info.name; } TransformationMatrix transformationMatrixFromString(const std::string& s) { std::istringstream iss(s); - TransformationMatrix matrix; + TransformationMatrix matrix{ 0 }; double entry; TransformationMatrix::size_type i = 0; while (iss >> entry) diff --git a/include/pdal/PDALUtils.hpp b/include/pdal/PDALUtils.hpp index 09f3091fc9..4ee0c1d383 100644 --- a/include/pdal/PDALUtils.hpp +++ b/include/pdal/PDALUtils.hpp @@ -46,6 +46,11 @@ #include #endif +#ifdef PDAL_COMPILER_MSVC +//# pragma warning(disable: 4127) // conditional expression is constant +#endif + + namespace pdal { class Options; @@ -106,7 +111,7 @@ inline Everything extractDim(Extractor& ext, Dimension::Type type) { using Type = Dimension::Type; - Everything e; + Everything e; switch (type) { case Type::Unsigned8: diff --git a/include/pdal/PointLayout.hpp b/include/pdal/PointLayout.hpp index 905a27285b..8ecdd10f89 100644 --- a/include/pdal/PointLayout.hpp +++ b/include/pdal/PointLayout.hpp @@ -45,27 +45,27 @@ namespace pdal { -class PDAL_DLL PointLayout +class PointLayout { public: /** Default constructor. */ - PointLayout(); - virtual ~PointLayout() {} + PDAL_DLL PointLayout(); + PDAL_DLL virtual ~PointLayout() {} /** Mark a layout as finalized. Dimensions can't be added to a finalized PointLayout. */ - void finalize(); + PDAL_DLL void finalize(); /** Determine if the PointLayout is finalized. \return Whether the PointLayout is finalized. */ - bool finalized() const + PDAL_DLL bool finalized() const { return m_finalized; } /** @@ -73,7 +73,7 @@ class PDAL_DLL PointLayout \param ids Vector of IDs to register. */ - void registerDims(std::vector ids); + PDAL_DLL void registerDims(std::vector ids); /** Register a list of dimensions. @@ -81,7 +81,7 @@ class PDAL_DLL PointLayout \param id Pointer to list of IDs to register. The last ID in the list must have the value Unknown. */ - void registerDims(Dimension::Id *id); + PDAL_DLL void registerDims(Dimension::Id *id); /** Register use of a standard dimension (declare that a point will contain @@ -89,7 +89,7 @@ class PDAL_DLL PointLayout \param id ID of dimension to be registered. */ - void registerDim(Dimension::Id id); + PDAL_DLL void registerDim(Dimension::Id id); /** Register use of a standard dimension (declare that a point will contain @@ -100,7 +100,7 @@ class PDAL_DLL PointLayout \param id ID of dimension to be registered. \param type Minimum type to assign to the dimension. */ - void registerDim(Dimension::Id id, Dimension::Type type); + PDAL_DLL void registerDim(Dimension::Id id, Dimension::Type type); /** Assign a non-existing (proprietary) dimension with the given name and @@ -114,7 +114,7 @@ class PDAL_DLL PointLayout \param type Minimum type to assign to the dimension. \return ID of the new or existing dimension, or Unknown on failure. */ - Dimension::Id assignDim( const std::string& name, + PDAL_DLL Dimension::Id assignDim( const std::string& name, Dimension::Type type); /** @@ -126,7 +126,7 @@ class PDAL_DLL PointLayout accomodate values of this type. \return ID of dimension registered or assigned. */ - Dimension::Id registerOrAssignDim(const std::string name, + PDAL_DLL Dimension::Id registerOrAssignDim(const std::string name, Dimension::Type type); /** @@ -134,7 +134,7 @@ class PDAL_DLL PointLayout \return A list of DimType objects. */ - DimTypeList dimTypes() const; + PDAL_DLL DimTypeList dimTypes() const; /** Get a DimType structure for a named dimension. @@ -143,7 +143,7 @@ class PDAL_DLL PointLayout \return A DimType associated with the named dimension. Returns a DimType with an Unknown ID if the dimension isn't part of the layout. */ - DimType findDimType(const std::string& name) const; + PDAL_DLL DimType findDimType(const std::string& name) const; /** Get the ID of a dimension (standard or proprietary) given its name. @@ -151,7 +151,7 @@ class PDAL_DLL PointLayout \param name Name of the dimension. \return ID of the dimension or Unknown. */ - Dimension::Id findDim(const std::string& name) const; + PDAL_DLL Dimension::Id findDim(const std::string& name) const; /** Get the ID of a proprietary dimension given its name. @@ -159,7 +159,7 @@ class PDAL_DLL PointLayout \param name Name of the dimension. \return ID of the dimension or Unknown. */ - Dimension::Id findProprietaryDim(const std::string& name) const; + PDAL_DLL Dimension::Id findProprietaryDim(const std::string& name) const; /** Get the name of a dimension give its ID. A dimension may have more @@ -168,7 +168,7 @@ class PDAL_DLL PointLayout \param id ID of the dimension. \return A name associated with the dimension, or a NULL string. */ - std::string dimName(Dimension::Id id) const; + PDAL_DLL std::string dimName(Dimension::Id id) const; /** Determine if the PointLayout uses the dimension with the given ID. @@ -176,14 +176,14 @@ class PDAL_DLL PointLayout \param id ID of the dimension to check. \return \c true if the layout uses the dimension, \c false otherwise. */ - bool hasDim(Dimension::Id id) const; + PDAL_DLL bool hasDim(Dimension::Id id) const; /** Get a reference to vector of the IDs of currently used dimensions. \return Vector of IDs of dimensions that are part of the layout. */ - const Dimension::IdList& dims() const; + PDAL_DLL const Dimension::IdList& dims() const; /** Get the type of a dimension. @@ -191,7 +191,7 @@ class PDAL_DLL PointLayout \param id ID of the dimension. \return Type of the dimension. */ - Dimension::Type dimType(Dimension::Id id) const; + PDAL_DLL Dimension::Type dimType(Dimension::Id id) const; /** Get the current size in bytes of the dimension. @@ -199,7 +199,7 @@ class PDAL_DLL PointLayout \param id ID of the dimension. \return Size of the dimension in bytes. */ - size_t dimSize(Dimension::Id id) const; + PDAL_DLL size_t dimSize(Dimension::Id id) const; /** Get the offset of the dimension in the layout. @@ -207,7 +207,7 @@ class PDAL_DLL PointLayout \param id ID of the dimension. \return Offset of the dimension in bytes. */ - size_t dimOffset(Dimension::Id id) const; + PDAL_DLL size_t dimOffset(Dimension::Id id) const; /** Get number of bytes that make up a point. Returns the sum of the dimSize @@ -215,7 +215,7 @@ class PDAL_DLL PointLayout \return Size of a point in bytes. */ - size_t pointSize() const; + PDAL_DLL size_t pointSize() const; /** Get a pointer to a dimension's detail information. @@ -223,10 +223,10 @@ class PDAL_DLL PointLayout \param id ID of the dimension. \return A pointer a dimension's detail. */ - const Dimension::Detail *dimDetail(Dimension::Id id) const; + PDAL_DLL const Dimension::Detail *dimDetail(Dimension::Id id) const; private: - virtual bool update(Dimension::Detail dd, const std::string& name); + PDAL_DLL virtual bool update(Dimension::Detail dd, const std::string& name); Dimension::Type resolveType( Dimension::Type t1, Dimension::Type t2); diff --git a/include/pdal/pdal_macros.hpp b/include/pdal/pdal_macros.hpp index 9830d5fa7f..b9ef9a5535 100644 --- a/include/pdal/pdal_macros.hpp +++ b/include/pdal/pdal_macros.hpp @@ -107,16 +107,3 @@ struct PluginInfo return 0; \ } -#ifdef _WIN32 -inline long lround(double d) -{ - long l; - - if (d < 0) - l = (long)ceil(d - .5); - else - l = (long)floor(d + .5); - return l; -} -#endif - diff --git a/include/pdal/plang/Redirector.hpp b/include/pdal/plang/Redirector.hpp index 60ef65a8cd..40d1ed11ed 100644 --- a/include/pdal/plang/Redirector.hpp +++ b/include/pdal/plang/Redirector.hpp @@ -11,6 +11,12 @@ #pragma once #include +#include + +#ifdef PDAL_COMPILER_MSVC +# pragma warning(disable: 4127) // conditional expression is constant +#define HAVE_ROUND // inconsistent dll linkage otherwise +#endif #include diff --git a/io/ilvis2/Ilvis2MetadataReader.cpp b/io/ilvis2/Ilvis2MetadataReader.cpp index e4fe7b7d0f..88a0f87fe5 100644 --- a/io/ilvis2/Ilvis2MetadataReader.cpp +++ b/io/ilvis2/Ilvis2MetadataReader.cpp @@ -63,7 +63,7 @@ void Ilvis2MetadataReader::parseGranuleMetaDataFile(xmlNodePtr node, MetadataNod xmlNodePtr child = getFirstChildElementNode(node); assertElementIs(child, "DTDVersion"); - m->add("DTDVersion", extractDouble(child)); + m->add("DTDVersion", extractDouble(child)); child = getNextElementNode(child); assertElementIs(child, "DataCenterId"); @@ -81,7 +81,7 @@ void Ilvis2MetadataReader::parseGranuleURMetaData(xmlNodePtr node, MetadataNode* { assertElementIs(node, "GranuleURMetaData"); - xmlNodePtr child, subchild; + xmlNodePtr child; child = getFirstChildElementNode(node); assertElementIs(child, "GranuleUR"); diff --git a/io/las/SummaryData.hpp b/io/las/SummaryData.hpp index d7570fcd21..ef43831d93 100644 --- a/io/las/SummaryData.hpp +++ b/io/las/SummaryData.hpp @@ -50,7 +50,7 @@ class PDAL_DLL SummaryData SummaryData(); void addPoint(double x, double y, double z, int returnNumber); - uint32_t getTotalNumPoints() const + point_count_t getTotalNumPoints() const { return m_totalNumPoints; } BOX3D getBounds() const; point_count_t getReturnCount(int returnNumber) const; diff --git a/plugins/nitf/io/NitfWriter.cpp b/plugins/nitf/io/NitfWriter.cpp index db7d7e25aa..7b3e72eba7 100644 --- a/plugins/nitf/io/NitfWriter.cpp +++ b/plugins/nitf/io/NitfWriter.cpp @@ -46,7 +46,9 @@ # pragma clang diagnostic ignored "-Wunused-private-field" #endif +#ifndef IMPORT_NITRO_API #define IMPORT_NITRO_API +#endif #include #include "tre_plugins.hpp" diff --git a/plugins/nitf/io/tre_plugins.cpp b/plugins/nitf/io/tre_plugins.cpp index 86be30b025..754f0750da 100644 --- a/plugins/nitf/io/tre_plugins.cpp +++ b/plugins/nitf/io/tre_plugins.cpp @@ -48,7 +48,9 @@ # pragma clang diagnostic ignored "-Wunused-private-field" #endif +#ifndef IMPORT_NITRO_API #define IMPORT_NITRO_API +#endif #include #include diff --git a/plugins/nitf/io/tre_plugins.hpp b/plugins/nitf/io/tre_plugins.hpp index 486a3a4ce3..33cd4f536b 100644 --- a/plugins/nitf/io/tre_plugins.hpp +++ b/plugins/nitf/io/tre_plugins.hpp @@ -36,7 +36,9 @@ #include +#ifndef IMPORT_NITRO_API #define IMPORT_NITRO_API +#endif #include #include diff --git a/plugins/oci/io/OciCommon.hpp b/plugins/oci/io/OciCommon.hpp index 8ecd7f6208..de05ae6164 100644 --- a/plugins/oci/io/OciCommon.hpp +++ b/plugins/oci/io/OciCommon.hpp @@ -113,7 +113,7 @@ class Block OCILobLocator *locator; Connection m_connection; sdo_pc* pc; - int32_t m_num_remaining; + point_count_t m_num_remaining; bool m_fetched; // Set when fetched but not initialized }; typedef std::shared_ptr BlockPtr; diff --git a/plugins/pgpointcloud/io/PgCommon.hpp b/plugins/pgpointcloud/io/PgCommon.hpp index c907211cf5..d59d3899d1 100644 --- a/plugins/pgpointcloud/io/PgCommon.hpp +++ b/plugins/pgpointcloud/io/PgCommon.hpp @@ -108,7 +108,7 @@ inline void pg_commit(PGconn* session) pg_execute(session, sql); } -inline char* pg_query_once(PGconn* session, std::string const& sql) +inline std::string pg_query_once(PGconn* session, std::string const& sql) { PGresult *result = PQexec(session, sql.c_str()); @@ -120,7 +120,9 @@ inline char* pg_query_once(PGconn* session, std::string const& sql) return NULL; } - char *str = strdup(PQgetvalue(result, 0, 0)); + int len = PQgetlength(result, 0, 0); + char *value = PQgetvalue(result, 0, 0); + std::string str(value, len); PQclear(result); return str; } diff --git a/plugins/pgpointcloud/io/PgReader.cpp b/plugins/pgpointcloud/io/PgReader.cpp index 2cc65ff6ea..7c29cde8cb 100644 --- a/plugins/pgpointcloud/io/PgReader.cpp +++ b/plugins/pgpointcloud/io/PgReader.cpp @@ -157,13 +157,12 @@ uint32_t PgReader::fetchPcid() const pg_quote_literal(m_schema_name); } - char *pcid_str = pg_query_once(m_session, oss.str()); + std::string pcid_str = pg_query_once(m_session, oss.str()); uint32_t pcid = 0; - if (pcid_str) + if (pcid_str.size()) { - pcid = atoi(pcid_str); - free(pcid_str); + pcid = atoi(pcid_str.c_str()); } if (!pcid) // Are pcid == 0 valid? @@ -192,12 +191,11 @@ void PgReader::addDimensions(PointLayoutPtr layout) std::ostringstream oss; oss << "SELECT schema FROM pointcloud_formats WHERE pcid = " << pcid; - char *xmlStr = pg_query_once(m_session, oss.str()); - if (!xmlStr) + std::string xmlStr = pg_query_once(m_session, oss.str()); + if (xmlStr.empty()) throw pdal_error("Unable to fetch schema from `pointcloud_formats`"); loadSchema(layout, xmlStr); - free(xmlStr); } @@ -211,11 +209,11 @@ pdal::SpatialReference PgReader::fetchSpatialReference() const std::ostringstream oss; oss << "SELECT srid FROM pointcloud_formats WHERE pcid = " << pcid; - char *srid_str = pg_query_once(m_session, oss.str()); - if (! srid_str) + std::string srid_str = pg_query_once(m_session, oss.str()); + if (srid_str.empty()) throw pdal_error("Unable to fetch srid for this table and column"); - int32_t srid = atoi(srid_str); + int32_t srid = atoi(srid_str.c_str()); log()->get(LogLevel::Debug) << " got SRID = " << srid << std::endl; oss.str(""); diff --git a/plugins/pgpointcloud/io/PgWriter.cpp b/plugins/pgpointcloud/io/PgWriter.cpp index 40d702ed03..e468439b01 100644 --- a/plugins/pgpointcloud/io/PgWriter.cpp +++ b/plugins/pgpointcloud/io/PgWriter.cpp @@ -193,12 +193,11 @@ uint32_t PgWriter::SetupSchema(uint32_t srid) { oss << "SELECT Count(pcid) FROM pointcloud_formats WHERE pcid = " << m_pcid; - char *count_str = pg_query_once(m_session, oss.str()); - if (!count_str) + std::string count_str = pg_query_once(m_session, oss.str()); + if (count_str.empty()) throw pdal_error("Unable to count pcid's in table " "`pointcloud_formats`"); - schema_count = atoi(count_str); - free(count_str); + schema_count = atoi(count_str.c_str()); oss.str(""); if (schema_count == 0) { @@ -212,12 +211,11 @@ uint32_t PgWriter::SetupSchema(uint32_t srid) // Do we have any existing schemas in the POINTCLOUD_FORMATS table? uint32_t pcid = 0; oss << "SELECT Count(pcid) FROM pointcloud_formats"; - char *schema_count_str = pg_query_once(m_session, oss.str()); - if (!schema_count_str) + std::string schema_count_str = pg_query_once(m_session, oss.str()); + if (schema_count_str.empty()) throw pdal_error("Unable to count pcid's in table " "`pointcloud_formats`"); - schema_count = atoi(schema_count_str); - free(schema_count_str); + schema_count = atoi(schema_count_str.c_str()); oss.str(""); // Create an XML output schema. @@ -262,17 +260,17 @@ uint32_t PgWriter::SetupSchema(uint32_t srid) // released. See https://github.com/PDAL/PDAL/issues/1101 for // SQL to create this sequence on the pointcloud_formats // table. - char* have_seq = pg_query_once(m_session, + std::string have_seq = pg_query_once(m_session, "select count(*) from pg_class where relname = 'pointcloud_formats_pcid_sq'"); - int seq_count = atoi(have_seq); + int seq_count = atoi(have_seq.c_str()); if (seq_count) { // We have the sequence, use its nextval - char *pcid_str = pg_query_once(m_session, + std::string pcid_str = pg_query_once(m_session, "SELECT nextval('pointcloud_formats_pcid_sq')"); - if (!pcid_str) + if (pcid_str.empty()) throw pdal_error("Unable to select nextval from pointcloud_formats_pcid_seq"); - pcid = atoi(pcid_str); + pcid = atoi(pcid_str.c_str()); } else { @@ -283,12 +281,12 @@ uint32_t PgWriter::SetupSchema(uint32_t srid) } else { - char *pcid_str = pg_query_once(m_session, + std::string pcid_str = pg_query_once(m_session, "SELECT Max(pcid)+1 AS pcid FROM pointcloud_formats"); - if (!pcid_str) + if (pcid_str.empty()) throw pdal_error("Unable to get the max pcid from " "`pointcloud_formats`"); - pcid = atoi(pcid_str); + pcid = atoi(pcid_str.c_str()); } const char* paramValues = xml.c_str(); @@ -334,7 +332,7 @@ bool PgWriter::CheckPointCloudExists() { pg_execute(m_session, q); } - catch (pdal_error const &e) + catch (pdal_error const &) { return false; } @@ -352,7 +350,7 @@ bool PgWriter::CheckPostGISExists() { pg_execute(m_session, q); } - catch (pdal_error const &e) + catch (pdal_error const &) { return false; } @@ -369,11 +367,10 @@ bool PgWriter::CheckTableExists(std::string const& name) log()->get(LogLevel::Debug) << "checking for table '" << name << "' existence ... " << std::endl; - char *count_str = pg_query_once(m_session, oss.str()); - if (!count_str) + std::string count_str = pg_query_once(m_session, oss.str()); + if (count_str.empty()) throw pdal_error("Unable to check for the existence of `pg_table`"); - int count = atoi(count_str); - free(count_str); + int count = atoi(count_str.c_str()); if (count == 1) return true; diff --git a/plugins/pgpointcloud/test/PgpointcloudWriterTest.cpp b/plugins/pgpointcloud/test/PgpointcloudWriterTest.cpp index 3f821d7488..1ddfe76ded 100644 --- a/plugins/pgpointcloud/test/PgpointcloudWriterTest.cpp +++ b/plugins/pgpointcloud/test/PgpointcloudWriterTest.cpp @@ -112,7 +112,7 @@ class PgpointcloudWriterTest : public testing::Test { executeOnMasterDb(createDbSql.str()); } - catch( const pdal_error& error ) + catch( const pdal_error& ) { m_bSkipTests = true; return; @@ -124,7 +124,7 @@ class PgpointcloudWriterTest : public testing::Test { executeOnTestDb("CREATE EXTENSION pointcloud"); } - catch( const pdal_error& error ) + catch( const pdal_error& ) { m_bSkipTests = true; return; diff --git a/plugins/sqlite/test/SQLiteTest.cpp b/plugins/sqlite/test/SQLiteTest.cpp index 09a392a073..5f8801c771 100644 --- a/plugins/sqlite/test/SQLiteTest.cpp +++ b/plugins/sqlite/test/SQLiteTest.cpp @@ -131,7 +131,7 @@ void testReadWrite(bool compression, bool scaling) int32_t x = view->getFieldAs(Id::X, 10); EXPECT_EQ(x, 636038); double xd = view->getFieldAs(Id::X, 10); - EXPECT_FLOAT_EQ(xd, 636037.53); + EXPECT_DOUBLE_EQ(xd, 636037.53); } // FileUtils::deleteFile(tempFilename); diff --git a/src/GDALUtils.cpp b/src/GDALUtils.cpp index 1e92eeffe1..1d6608ee96 100644 --- a/src/GDALUtils.cpp +++ b/src/GDALUtils.cpp @@ -109,6 +109,9 @@ GDALDataType toGdalType(Dimension::Type t) throw pdal_error("PDAL 64-bit integer type unsupported."); case Dimension::Type::None: throw pdal_error("PDAL 'none' type unsupported."); + default: + throw pdal_error("Unrecognized PDAL dimension type."); + } } diff --git a/src/PipelineReaderXML.cpp b/src/PipelineReaderXML.cpp index cb70a8481d..a5a6122d76 100644 --- a/src/PipelineReaderXML.cpp +++ b/src/PipelineReaderXML.cpp @@ -462,7 +462,7 @@ void PipelineReaderXML::readPipeline(const std::string& filename) { readPipeline(*input); } - catch (const pdal_error& error) + catch (const pdal_error& ) { throw; } diff --git a/src/Polygon.cpp b/src/Polygon.cpp index 06081197f5..0126af6259 100644 --- a/src/Polygon.cpp +++ b/src/Polygon.cpp @@ -484,7 +484,7 @@ std::string Polygon::validReason() const std::string Polygon::wkt(double precision, bool bOutputZ) const { GEOSWKTWriter *writer = GEOSWKTWriter_create_r(m_ctx); - GEOSWKTWriter_setRoundingPrecision_r(m_ctx, writer, precision); + GEOSWKTWriter_setRoundingPrecision_r(m_ctx, writer, (int)precision); if (bOutputZ) GEOSWKTWriter_setOutputDimension_r(m_ctx, writer, 3); diff --git a/src/SpatialReference.cpp b/src/SpatialReference.cpp index dd1c2ad38f..9ef2a1fc73 100644 --- a/src/SpatialReference.cpp +++ b/src/SpatialReference.cpp @@ -362,7 +362,7 @@ int SpatialReference::calculateZone(double lon, double lat) // Everywhere else. else { - zone = floor((lon + 180.0) / 6) + 1; + zone = (int) floor((lon + 180.0) / 6) + 1; if (lat < 0) zone = -zone; } diff --git a/src/plang/Invocation.cpp b/src/plang/Invocation.cpp index 61620adbe2..8eed314604 100644 --- a/src/plang/Invocation.cpp +++ b/src/plang/Invocation.cpp @@ -37,6 +37,7 @@ #ifdef PDAL_COMPILER_MSVC # pragma warning(disable: 4127) // conditional expression is constant +#define HAVE_ROUND // inconsistent dll linkage otherwise #endif #include @@ -63,8 +64,8 @@ int argCount(PyObject *function) PyObject *inArgs = PyTuple_New(1); PyTuple_SetItem(inArgs, 0, function); PyObject *outArgs = PyObject_CallObject(getargFunc, inArgs); - PyObject *arglist = PyTuple_GetItem(outArgs, 0); - return PyList_Size(arglist); + PyObject *arglist = PyTuple_GetItem(outArgs, (Py_ssize_t)0); + return (int) PyList_Size(arglist); } } diff --git a/src/plang/Redirector.cpp b/src/plang/Redirector.cpp index 64d5155aee..f0014e7ba8 100644 --- a/src/plang/Redirector.cpp +++ b/src/plang/Redirector.cpp @@ -10,6 +10,7 @@ #ifdef PDAL_COMPILER_MSVC # pragma warning(disable: 4127) // conditional expression is constant +# pragma warning(disable: 4068) // gcc pragma warnings #endif #include diff --git a/test/unit/BoundsTest.cpp b/test/unit/BoundsTest.cpp index 862ea451c7..2f0fb38351 100644 --- a/test/unit/BoundsTest.cpp +++ b/test/unit/BoundsTest.cpp @@ -86,18 +86,18 @@ TEST(BoundsTest, test_copy) TEST(BoundsTest, test_accessor) { BOX2D b1(1,2,3,4); - EXPECT_FLOAT_EQ(b1.minx, 1); - EXPECT_FLOAT_EQ(b1.miny, 2); - EXPECT_FLOAT_EQ(b1.maxx, 3); - EXPECT_FLOAT_EQ(b1.maxy, 4); + EXPECT_DOUBLE_EQ(b1.minx, 1.0); + EXPECT_DOUBLE_EQ(b1.miny, 2.0); + EXPECT_DOUBLE_EQ(b1.maxx, 3.0); + EXPECT_DOUBLE_EQ(b1.maxy, 4.0); BOX3D b2(1,2,3,4,5,6); - EXPECT_FLOAT_EQ(b2.minx, 1); - EXPECT_FLOAT_EQ(b2.miny, 2); - EXPECT_FLOAT_EQ(b2.minz, 3); - EXPECT_FLOAT_EQ(b2.maxx, 4); - EXPECT_FLOAT_EQ(b2.maxy, 5); - EXPECT_FLOAT_EQ(b2.maxz, 6); + EXPECT_DOUBLE_EQ(b2.minx, 1.0); + EXPECT_DOUBLE_EQ(b2.miny, 2.0); + EXPECT_DOUBLE_EQ(b2.minz, 3.0); + EXPECT_DOUBLE_EQ(b2.maxx, 4.0); + EXPECT_DOUBLE_EQ(b2.maxy, 5.0); + EXPECT_DOUBLE_EQ(b2.maxz, 6.0); } TEST(BoundsTest, test_clip) @@ -121,10 +121,10 @@ TEST(BoundsTest, test_clip) // .clip() can make an invalid bounds, this should be fixed. BOX2D r6(20,6, 40,8); - EXPECT_FLOAT_EQ(r1.minx, 20); - EXPECT_FLOAT_EQ(r1.maxx, 6); - EXPECT_FLOAT_EQ(r1.miny, 40); - EXPECT_FLOAT_EQ(r1.maxy, 8); + EXPECT_DOUBLE_EQ(r1.minx, 20); + EXPECT_DOUBLE_EQ(r1.maxx, 6); + EXPECT_DOUBLE_EQ(r1.miny, 40); + EXPECT_DOUBLE_EQ(r1.maxy, 8); //ABELL - Need BOX3D example. } diff --git a/test/unit/XMLSchemaTest.cpp b/test/unit/XMLSchemaTest.cpp index 6d77e64b4d..9d042be987 100644 --- a/test/unit/XMLSchemaTest.cpp +++ b/test/unit/XMLSchemaTest.cpp @@ -91,43 +91,43 @@ TEST(XMLSchemaTest, read) XMLDim dim = getDim(dims, "X"); DimType dt = dim.m_dimType; EXPECT_EQ(dim.m_name, "X"); - EXPECT_FLOAT_EQ(dt.m_xform.m_scale.m_val, .01); - EXPECT_FLOAT_EQ(dt.m_xform.m_offset.m_val, 0.0); + EXPECT_DOUBLE_EQ(dt.m_xform.m_scale.m_val, .01); + EXPECT_DOUBLE_EQ(dt.m_xform.m_offset.m_val, 0.0); EXPECT_EQ(dt.m_type, Dimension::Type::Signed32); dim = getDim(dims, "Y"); dt = dim.m_dimType; EXPECT_EQ(dim.m_name, "Y"); - EXPECT_FLOAT_EQ(dt.m_xform.m_scale.m_val, .01); - EXPECT_FLOAT_EQ(dt.m_xform.m_offset.m_val, 0.0); + EXPECT_DOUBLE_EQ(dt.m_xform.m_scale.m_val, .01); + EXPECT_DOUBLE_EQ(dt.m_xform.m_offset.m_val, 0.0); EXPECT_EQ(dt.m_type, Dimension::Type::Signed32); dim = getDim(dims, "Z"); dt = dim.m_dimType; EXPECT_EQ(dim.m_name, "Z"); - EXPECT_FLOAT_EQ(dt.m_xform.m_scale.m_val, .01); - EXPECT_FLOAT_EQ(dt.m_xform.m_offset.m_val, 0.0); + EXPECT_DOUBLE_EQ(dt.m_xform.m_scale.m_val, .01); + EXPECT_DOUBLE_EQ(dt.m_xform.m_offset.m_val, 0.0); EXPECT_EQ(dt.m_type, Dimension::Type::Signed32); dim = getDim(dims, "Intensity"); dt = dim.m_dimType; EXPECT_EQ(dim.m_name, "Intensity"); - EXPECT_FLOAT_EQ(dt.m_xform.m_scale.m_val, 1.0); - EXPECT_FLOAT_EQ(dt.m_xform.m_offset.m_val, 0.0); + EXPECT_DOUBLE_EQ(dt.m_xform.m_scale.m_val, 1.0); + EXPECT_DOUBLE_EQ(dt.m_xform.m_offset.m_val, 0.0); EXPECT_EQ(dt.m_type, Dimension::Type::Unsigned16); dim = getDim(dims, "ReturnNumber"); dt = dim.m_dimType; EXPECT_EQ(dim.m_name, "ReturnNumber"); - EXPECT_FLOAT_EQ(dt.m_xform.m_scale.m_val, 1.0); - EXPECT_FLOAT_EQ(dt.m_xform.m_offset.m_val, 0.0); + EXPECT_DOUBLE_EQ(dt.m_xform.m_scale.m_val, 1.0); + EXPECT_DOUBLE_EQ(dt.m_xform.m_offset.m_val, 0.0); EXPECT_EQ(dt.m_type, Dimension::Type::Unsigned8); dim = getDim(dims, "NumberOfReturns"); dt = dim.m_dimType; EXPECT_EQ(dim.m_name, "NumberOfReturns"); - EXPECT_FLOAT_EQ(dt.m_xform.m_scale.m_val, 1.0); - EXPECT_FLOAT_EQ(dt.m_xform.m_offset.m_val, 0.0); + EXPECT_DOUBLE_EQ(dt.m_xform.m_scale.m_val, 1.0); + EXPECT_DOUBLE_EQ(dt.m_xform.m_offset.m_val, 0.0); EXPECT_EQ(dt.m_type, Dimension::Type::Unsigned8); } diff --git a/test/unit/filters/StatsFilterTest.cpp b/test/unit/filters/StatsFilterTest.cpp index 659e57f5eb..f58a74013e 100644 --- a/test/unit/filters/StatsFilterTest.cpp +++ b/test/unit/filters/StatsFilterTest.cpp @@ -298,9 +298,9 @@ TEST(Stats, global) const stats::Summary& statsZ = filter.getStats(Dimension::Id::Z); - EXPECT_FLOAT_EQ(statsZ.median(), 555.55554); - EXPECT_FLOAT_EQ(statsZ.mad(), 333.33333); - EXPECT_FLOAT_EQ(statsZ.minimum(), 0.0); - EXPECT_FLOAT_EQ(statsZ.maximum(), 1000.0); + EXPECT_DOUBLE_EQ(statsZ.median(), 555.55555555555554); + EXPECT_DOUBLE_EQ(statsZ.mad(), 333.33333333333331); + EXPECT_DOUBLE_EQ(statsZ.minimum(), 0.0); + EXPECT_DOUBLE_EQ(statsZ.maximum(), 1000.0); } diff --git a/test/unit/io/optech/OptechReaderTest.cpp b/test/unit/io/optech/OptechReaderTest.cpp index 1857a38a6e..43055caf2f 100644 --- a/test/unit/io/optech/OptechReaderTest.cpp +++ b/test/unit/io/optech/OptechReaderTest.cpp @@ -131,7 +131,7 @@ TEST_F(OptechReaderTest, ReadingPoints) EXPECT_FLOAT_EQ(8.27356689453125e2, view->getFieldAs(Dimension::Id::EchoRange, 0)); EXPECT_EQ(384, view->getFieldAs(Dimension::Id::Intensity, 0)); - EXPECT_FLOAT_EQ(-14.55516, + EXPECT_DOUBLE_EQ(-14.555161476135254, view->getFieldAs(Dimension::Id::ScanAngleRank, 0)); }