Skip to content
Commits on Source (6)
2018-11-01
* Andrew Bell <andrew.bell.ia@gmail.com> Only check for tildes as the first character in a filename. (#2264) (19:46:04)
* Andrew Bell <andrew.bell.ia@gmail.com> Streamable skips. (#2224) (16:06:33)
2018-10-31
* Andrew Bell <andrew.bell.ia@gmail.com> * Any code coming from Entwine is now BSD because Hobu is relicensing it * Two LGPLv2 files from Eigen are removed. We are not using them and we want to keep clean (#2265) (20:02:54)
* Andrew Bell <andrew.bell.ia@gmail.com> Fix warning in gcc-8. (19:22:42)
2018-10-29
* Andrew Bell <andrew.bell.ia@gmail.com> Update EptReader for EPT formatting changes before EPT release. (#2252) (18:04:34)
* Andrew Bell <andrew.bell.ia@gmail.com> Fixes for gcc8. (17:57:32)
* Andrew Bell <andrew.bell.ia@gmail.com> Remove private header from AssignFilter.hpp (#2249) (17:57:21)
* Andrew Bell <andrew.bell.ia@gmail.com> Don't reference an out-of-scope PointTable. (#2255) (14:36:18)
* Andrew Bell <andrew.bell.ia@gmail.com> Clairfy description of reflectance_as_intensity. (#2251) (14:34:12)
* Andrew Bell <andrew.bell.ia@gmail.com> Don't use a destructed value in GDALReader::inspect. (#2247) (14:33:45)
* Andrew Bell <andrew.bell.ia@gmail.com> add 'memorycopy' option to readers.gdal (#2190) (14:30:35)
2018-10-25
* Andrew Bell <andrew.bell.ia@gmail.com> Small updates to package script. (15:57:36)
* Andrew Bell <andrew.bell.ia@gmail.com> Fix install issues. (14:56:14)
* Andrew Bell <andrew.bell.ia@gmail.com> Treat OCI like everything else. (01:25:05)
* Andrew Bell <andrew.bell.ia@gmail.com> Don't build OCI by default. (01:15:55)
* Andrew Bell <andrew.bell.ia@gmail.com> Packaging stuff. (01:02:03)
2018-10-24
* Andrew Bell <andrew.bell.ia@gmail.com> Remove references to hexbin as a plugin. (#2245) (18:10:36)
* Andrew Bell <andrew.bell.ia@gmail.com> Super-minor clean-ups. (16:34:48)
......
This diff is collapsed.
pdal (1.8~rc2+ds-1~exp1) experimental; urgency=medium
* New upstream release candidate.
* Update copyright file, changes:
- Drop sections for removed files
* Update symbols for amd64.
-- Bas Couwenberg <sebastic@debian.org> Thu, 01 Nov 2018 22:32:29 +0100
pdal (1.8~rc1+ds-1~exp1) experimental; urgency=medium
* New upstream release candidate.
......
......@@ -40,11 +40,6 @@ Files: doc/tutorial/pcl_spec.rst
Copyright: 2014, RadiantBlue Technologies, Inc.
License: CC-BY-3.0-US
Files: plugins/greyhound/io/bounds.cpp
plugins/greyhound/io/bounds.hpp
Copyright: 2016, Connor Manning (connor@hobu.co)
License: LGPL-2.1+
Files: plugins/python/plang/Redirector.hpp
plugins/python/plang/Redirector.cpp
Copyright: 2011, Mateusz Loskot <mateusz@loskot.net>
......@@ -140,11 +135,6 @@ Copyright: 2006, Timothy A. Davis
2010, Gael Guennebaud <gael.guennebaud@inria.fr>
License: LGPL-2.1+
Files: vendor/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h
Copyright: 2005, Timothy A. Davis.
2008-2012, Gael Guennebaud <gael.guennebaud@inria.fr>
License: LGPL-2.1+
Files: vendor/gtest/*
Copyright: 2003, 2005-2010, 2013, Google Inc
License: BSD-3-Clause
......
# SymbolsHelper-Confirmed: 1.8~rc1 amd64
# SymbolsHelper-Confirmed: 1.8~rc2 amd64
libpdal_base.so.7 #PACKAGE# #MINVER#
* Build-Depends-Package: libpdal-dev
BoundaryNames@Base 1.6.0
......@@ -673,7 +673,6 @@ libpdal_base.so.7 #PACKAGE# #MINVER#
(optional=templinst)_ZN4pdal12MetadataNode3addINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES0_RKS7_RKT_S9_@Base 1.1.0
(optional=templinst)_ZN4pdal12MetadataNode3addIPKcEES0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_SB_@Base 1.8~rc1
(optional=templinst)_ZN4pdal12MetadataNode3addIdEES0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_S9_@Base 1.1.0
(optional=templinst)_ZN4pdal12MetadataNode3addIhEES0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_S9_@Base 1.1.0
(optional=templinst)_ZN4pdal12MetadataNode3addItEES0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_S9_@Base 1.1.0
(optional=templinst|subst|arch=!arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !s390x !sparc64)_ZN4pdal12MetadataNode3addI{uint64_t}EES0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_S9_@Base 1.3.0
_ZN4pdal12MetadataNodeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.8~rc1
......@@ -868,8 +867,6 @@ libpdal_base.so.7 #PACKAGE# #MINVER#
(optional=templinst|arch=!amd64 !arm64 !hppa !m68k !mips64el !ppc64el !sh4 !sparc64 !x32)_ZN4pdal13PluginManagerINS_5StageEE16l_registerPluginINS_9LasReaderEEEbRKNS_10PluginInfoE@Base 1.7.1
(optional=templinst|arch=hurd-i386 i386 powerpc ppc64 s390x)_ZN4pdal13PluginManagerINS_5StageEE16l_registerPluginINS_9PlyWriterEEEbRKNS_10PluginInfoE@Base 1.7.1
(optional=templinst)_ZN4pdal13PluginManagerINS_5StageEE3getEv@Base 1.7.0
(optional=templinst)_ZN4pdal13PluginManagerINS_5StageEE4InfoD1Ev@Base 1.8~rc1
(optional=templinst)_ZN4pdal13PluginManagerINS_5StageEE4InfoD2Ev@Base 1.8~rc1
(optional=templinst)_ZN4pdal13PluginManagerINS_5StageEE4linkERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.7.0
(optional=templinst)_ZN4pdal13PluginManagerINS_5StageEE5namesB5cxx11Ev@Base 1.7.0
(optional=templinst)_ZN4pdal13PluginManagerINS_5StageEE6l_linkERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.7.0
......@@ -1118,8 +1115,9 @@ libpdal_base.so.7 #PACKAGE# #MINVER#
_ZN4pdal16StaticPluginInfoC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_S8_RKSt6vectorIS6_SaIS6_EE@Base 1.7.0
_ZN4pdal16StaticPluginInfoD1Ev@Base 1.7.0
_ZN4pdal16StaticPluginInfoD2Ev@Base 1.7.0
_ZN4pdal16StreamPointTable12setNumPointsEm@Base 1.8~rc1
_ZN4pdal16StreamPointTable5resetEv@Base 1.8~rc2
_ZN4pdal16StreamPointTable8addPointEv@Base 1.5.0
_ZN4pdal16StreamPointTable8finalizeEv@Base 1.8~rc2
_ZN4pdal16TerrasolidReader10initializeEv@Base 1.1.0
_ZN4pdal16TerrasolidReader13addDimensionsEPNS_11PointLayoutE@Base 1.1.0
_ZN4pdal16TerrasolidReader3eofEv@Base 1.1.0
......@@ -1598,19 +1596,19 @@ libpdal_base.so.7 #PACKAGE# #MINVER#
(optional=templinst)_ZN4pdal4gdal4BandIfED2Ev@Base 1.6.0
(optional=templinst)_ZN4pdal4gdal4BandIhED1Ev@Base 1.6.0
(optional=templinst)_ZN4pdal4gdal4BandIhED2Ev@Base 1.6.0
_ZN4pdal4gdal4BandIiE5writeIPdEEvT_NSt15iterator_traitsIS5_E10value_typeE@Base 1.8~rc2
(optional=templinst)_ZN4pdal4gdal4BandIiED1Ev@Base 1.6.0
(optional=templinst)_ZN4pdal4gdal4BandIiED2Ev@Base 1.6.0
(optional=templinst)_ZN4pdal4gdal4BandIjED1Ev@Base 1.6.0
(optional=templinst)_ZN4pdal4gdal4BandIjED2Ev@Base 1.6.0
(optional=templinst)_ZN4pdal4gdal4BandIlE5writeIPdEEvT_NSt15iterator_traitsIS5_E10value_typeE@Base 1.8~rc1
(optional=templinst|arch=amd64 arm64 mips64el ppc64 ppc64el s390x sparc64)_ZN4pdal4gdal4BandIlED1Ev@Base 1.6.0
(optional=templinst|arch=amd64 arm64 mips64el ppc64 ppc64el s390x sparc64)_ZN4pdal4gdal4BandIlED2Ev@Base 1.6.0
_ZN4pdal4gdal4BandImE5writeIPfEEvT_NSt15iterator_traitsIS5_E10value_typeE@Base 1.8~rc1
(optional=templinst|arch=amd64 arm64 mips64el ppc64 ppc64el s390x sparc64)_ZN4pdal4gdal4BandImED1Ev@Base 1.6.0
(optional=templinst|arch=amd64 arm64 mips64el ppc64 ppc64el s390x sparc64)_ZN4pdal4gdal4BandImED2Ev@Base 1.6.0
_ZN4pdal4gdal4BandIsE5writeIPdEEvT_NSt15iterator_traitsIS5_E10value_typeE@Base 1.8~rc1
_ZN4pdal4gdal4BandIsE5writeIPfEEvT_NSt15iterator_traitsIS5_E10value_typeE@Base 1.8~rc2
(optional=templinst)_ZN4pdal4gdal4BandIsED1Ev@Base 1.6.0
(optional=templinst)_ZN4pdal4gdal4BandIsED2Ev@Base 1.6.0
(optional=templinst)_ZN4pdal4gdal4BandItE5writeIPdEEvT_NSt15iterator_traitsIS5_E10value_typeE@Base 1.8~rc2
(optional=templinst)_ZN4pdal4gdal4BandItED1Ev@Base 1.6.0
(optional=templinst)_ZN4pdal4gdal4BandItED2Ev@Base 1.6.0
(optional=templinst|arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !s390x !sparc64)_ZN4pdal4gdal4BandIxED1Ev@Base 1.6.0
......@@ -1889,6 +1887,7 @@ libpdal_base.so.7 #PACKAGE# #MINVER#
_ZN4pdal6XMLDimC2EOS0_@Base 1.8~rc1
_ZN4pdal6XMLDimD1Ev@Base 1.1.0
_ZN4pdal6XMLDimD2Ev@Base 1.1.0
_ZN4pdal6XMLDimaSEOS0_@Base 1.8~rc2
_ZN4pdal6filter5Point5clearEv@Base 1.6.0
_ZN4pdal6filter5Point6updateERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.6.0
_ZN4pdal6filter5PointC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_16SpatialReferenceE@Base 1.6.0
......@@ -2945,7 +2944,6 @@ libpdal_base.so.7 #PACKAGE# #MINVER#
_ZNK4pdal14PipelineKernel7getNameB5cxx11Ev@Base 1.1.0
_ZNK4pdal14SplitterFilter14squareContainsEiidd@Base 1.6.0
_ZNK4pdal14SplitterFilter7getNameB5cxx11Ev@Base 1.1.0
_ZNK4pdal15FixedPointTable8capacityEv@Base 1.2.0
_ZNK4pdal15HausdorffKernel7getNameB5cxx11Ev@Base 1.4.0
_ZNK4pdal15KDistanceFilter7getNameB5cxx11Ev@Base 1.4.0
_ZNK4pdal15PipelineManager11getMetadataEv@Base 1.1.0
......@@ -3149,6 +3147,7 @@ libpdal_base.so.7 #PACKAGE# #MINVER#
_ZNK4pdal7arbiter4Time3strERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.5.0
_ZNK4pdal7arbiter4Time6asUnixEv@Base 1.7.0
_ZNK4pdal7arbiter4TimemiERKS1_@Base 1.5.0
(optional=templinst)_ZNK4pdal7arbiter4gzip12Decompressor10decompressINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvRT_PKcm@Base 1.8~rc2
_ZNK4pdal7arbiter4http8Response3strB5cxx11Ev@Base 1.7.0
_ZNK4pdal7arbiter6Driver12tryGetBinaryENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.3.0
_ZNK4pdal7arbiter6Driver3getENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.3.0
......@@ -3441,6 +3440,7 @@ libpdal_base.so.7 #PACKAGE# #MINVER#
(optional=templinst|arch=armel armhf hurd-i386 i386 kfreebsd-i386 m68k mips mipsel powerpc)_ZNKSt10_HashtableIxSt4pairIKxS0_Ii9PlyVertexIfEEESaIS5_ENSt8__detail10_Select1stESt8equal_toIxESt4hashIxENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE4findERS1_@Base 1.6.0
(optional=templinst|arch=armel armhf hurd-i386 i386 kfreebsd-i386 m68k mips mipsel powerpc)_ZNKSt10_HashtableIxSt4pairIKxSt6vectorIN6OctreeIdE8_IsoEdgeESaIS5_EEESaIS8_ENSt8__detail10_Select1stESt8equal_toIxESt4hashIxENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE4findERS1_@Base 1.6.0
(optional=templinst|arch=armel armhf hurd-i386 i386 kfreebsd-i386 m68k mips mipsel powerpc)_ZNKSt10_HashtableIxSt4pairIKxxESaIS2_ENSt8__detail10_Select1stESt8equal_toIxESt4hashIxENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE4findERS1_@Base 1.6.0
(optional=templinst)_ZNKSt15_Deque_iteratorImRmPmEplEl@Base 1.8~rc2
(optional=templinst|arch=hppa x32)_ZNKSt15_Deque_iteratorIyRyPyEplEi@Base 1.7.1
(optional=templinst)_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEE2atERS9_@Base 1.3.0
(optional=templinst|arch=!amd64 !arm64 !armel !armhf !hppa !kfreebsd-amd64 !m68k !mips64el !ppc64el !sh4 !sparc64 !x32)_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES_IS5_S5_St4lessIS5_ESaISt4pairIKS5_S5_EEES7_SaIS8_IS9_SC_EEE2atERS9_@Base 1.5.0
......@@ -3661,7 +3661,6 @@ libpdal_base.so.7 #PACKAGE# #MINVER#
(optional=templinst|arch=armel)_ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE1EEC2IPN4pdal16MetadataNodeImplEEET_@Base 1.1.0
(optional=templinst)_ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC1IPN4pdal16MetadataNodeImplEEET_@Base 1.8~rc1
(optional=templinst)_ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2IPN4pdal16MetadataNodeImplEEET_@Base 1.8~rc1
(optional=templinst)_ZNSt15_Deque_iteratorIPSiRKS0_PS1_EpLEl@Base 1.8~rc1
(optional=templinst|subst)_ZNSt15_Deque_iteratorI{uint64_t}RK{uint64_t}PS0_EpLE{ssize_t}@Base 1.5.0
(optional=templinst|subst|arch=!amd64 !x32)_ZNSt15_Deque_iteratorI{uint64_t}R{uint64_t}P{uint64_t}EpLE{ssize_t}@Base 1.5.0
(optional=templinst|arch=armel)_ZNSt15_Sp_counted_ptrIDnLN9__gnu_cxx12_Lock_policyE1EE10_M_disposeEv@Base 1.2.0
......@@ -5391,6 +5390,7 @@ libpdal_base.so.7 #PACKAGE# #MINVER#
_ZTVN4pdal16GreedyProjectionE@Base 1.6.0
_ZTVN4pdal16NNDistanceFilterE@Base 1.8~rc1
_ZTVN4pdal16SimplePointTableE@Base 1.2.0
_ZTVN4pdal16StreamPointTableE@Base 1.8~rc2
_ZTVN4pdal16TerrasolidReaderE@Base 1.1.0
_ZTVN4pdal17ColorinterpFilterE@Base 1.4.0
_ZTVN4pdal17DeflateCompressorE@Base 1.7.0
......
......@@ -196,7 +196,10 @@ private:
class PDAL_DLL StreamPointTable : public SimplePointTable
{
protected:
StreamPointTable(PointLayout& layout) : SimplePointTable(layout)
StreamPointTable(PointLayout& layout, point_count_t capacity)
: SimplePointTable(layout)
, m_capacity(capacity)
, m_skips(m_capacity, false)
{}
public:
......@@ -204,27 +207,52 @@ public:
/// streaming.
virtual PointId addPoint()
{ return 0; }
/// Called when execute() is started. Typically used to set buffer size
/// when all dimensions are known.
virtual void finalize()
{}
/// Called before the StreamPointTable is reset indicating the number of
/// points that were populated, which must be less than or equal to its
/// capacity.
virtual void setNumPoints(PointId n)
{}
void clear(point_count_t count)
{
m_numPoints = count;
reset();
std::fill(m_skips.begin(), m_skips.end(), false);
}
/// Returns true if a point in the table was filtered out and should be
/// considered omitted.
bool skip(PointId n) const
{ return m_skips[n]; }
void setSkip(PointId n)
{ m_skips[n] = true; }
point_count_t capacity() const
{ return m_capacity; }
/// During a given call to reset(), this indicates the number of points
/// populated in the table. This value will always be less then or equal
/// to capacity(), and also includes skipped points.
point_count_t numPoints() const
{ return m_numPoints; }
protected:
/// Called when the contents of StreamPointTable have been consumed and
/// the point data will be potentially overwritten.
virtual void reset()
{}
virtual point_count_t capacity() const = 0;
private:
point_count_t m_capacity;
point_count_t m_numPoints;
std::vector<bool> m_skips;
};
class PDAL_DLL FixedPointTable : public StreamPointTable
{
public:
FixedPointTable(point_count_t capacity) : StreamPointTable(m_layout),
m_capacity(capacity)
FixedPointTable(point_count_t capacity)
: StreamPointTable(m_layout, capacity)
{}
virtual void finalize()
......@@ -232,22 +260,19 @@ public:
if (!m_layout.finalized())
{
BasePointTable::finalize();
m_buf.resize(pointsToBytes(m_capacity + 1));
m_buf.resize(pointsToBytes(capacity() + 1));
}
}
protected:
virtual void reset()
{ std::fill(m_buf.begin(), m_buf.end(), 0); }
point_count_t capacity() const
{ return m_capacity; }
protected:
virtual char *getPoint(PointId idx)
{ return m_buf.data() + pointsToBytes(idx); }
private:
std::vector<char> m_buf;
point_count_t m_capacity;
PointLayout m_layout;
};
......
......@@ -178,7 +178,6 @@ void Streamable::execute(StreamPointTable& table)
void Streamable::execute(StreamPointTable& table,
std::list<Streamable *>& stages, SrsMap& srsMap)
{
std::vector<bool> skips(table.capacity());
std::list<Streamable *> filters;
SpatialReference srs;
......@@ -243,11 +242,11 @@ void Streamable::execute(StreamPointTable& table,
s->startLogging();
for (PointId idx = 0; idx < pointLimit; idx++)
{
if (skips[idx])
if (table.skip(idx))
continue;
point.setPointId(idx);
if (!s->processOne(point))
skips[idx] = true;
table.setSkip(idx);
}
const SpatialReference& tempSrs = s->getSpatialReference();
if (!tempSrs.empty())
......@@ -258,11 +257,7 @@ void Streamable::execute(StreamPointTable& table,
s->stopLogging();
}
// Yes, vector<bool> is terrible. Can do something better later.
for (size_t i = 0; i < skips.size(); ++i)
skips[i] = false;
table.setNumPoints(pointLimit);
table.reset();
table.clear(pointLimit);
}
}
......
......@@ -101,9 +101,7 @@ namespace FileUtils
std::istream *openFile(std::string const& filename, bool asBinary)
{
std::string::size_type found_tilde(std::string::npos);
found_tilde = filename.find('~');
if (found_tilde != std::string::npos)
if (filename[0] == '~')
throw pdal::pdal_error("PDAL does not support shell expansion");
std::ifstream *ifs = nullptr;
......@@ -406,10 +404,7 @@ std::vector<std::string> glob(std::string path)
{
std::vector<std::string> filenames;
std::string::size_type found_tilde(std::string::npos);
found_tilde = path.find('~');
if (found_tilde != std::string::npos)
if (path[0] == '~')
throw pdal::pdal_error("PDAL does not support shell expansion");
#ifdef _WIN32
......
/******************************************************************************
* Copyright (c) 2016, Connor Manning (connor@hobu.co)
* Copyright (c) 2018, Connor Manning (connor@hobu.co)
*
* Entwine -- Point cloud indexing
* All rights reserved.
*
* Entwine is available under the terms of the LGPL2 license. See COPYING
* for specific license text and more information.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following
* conditions are met:
*
******************************************************************************/
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided
* with the distribution.
* * Neither the name of Hobu, Inc. or Flaxen Geo Consulting nor the
* names of its contributors may be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
****************************************************************************/
// This file was originally in Entwine, which is LGPL2, but it has been
// relicensed for inclusion in PDAL.
#include "bounds.hpp"
......
/******************************************************************************
* Copyright (c) 2016, Connor Manning (connor@hobu.co)
* Copyright (c) 2018, Connor Manning (connor@hobu.co)
*
* Entwine -- Point cloud indexing
* All rights reserved.
*
* Entwine is available under the terms of the LGPL2 license. See COPYING
* for specific license text and more information.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following
* conditions are met:
*
******************************************************************************/
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided
* with the distribution.
* * Neither the name of Hobu, Inc. or Flaxen Geo Consulting nor the
* names of its contributors may be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
****************************************************************************/
// This file was originally in Entwine, which is LGPL2, but it has been
// relicensed for inclusion in PDAL.
#pragma once
......
......@@ -77,6 +77,7 @@ TEST(FileUtilsTest, test_file_ops)
EXPECT_TRUE(FileUtils::fileExists(tmp2)==false);
EXPECT_THROW(FileUtils::openFile("~foo1.glob"), pdal::pdal_error);
EXPECT_NO_THROW(FileUtils::openFile("foo~1.glob"));
}
TEST(FileUtilsTest, test_readFileIntoString)
......@@ -245,7 +246,8 @@ TEST(FileUtilsTest, glob)
EXPECT_EQ(FileUtils::glob(TP("foo1.glob")).size(), 0u);
#ifdef _WIN32
EXPECT_THROW(FileUtils::glob(TP("~foo1.glob")), pdal::pdal_error);
EXPECT_THROW(FileUtils::glob("~foo1.glob"), pdal::pdal_error);
EXPECT_NO_THROW(FileUtils::glob(TP("foo1~.glob")));
#endif
FileUtils::deleteFile("temp.glob");
......
......@@ -2159,7 +2159,7 @@ std::vector<std::string> S3::glob(std::string path, bool verbose) const
{
xml.parse<0>(data.data());
}
catch (Xml::parse_error)
catch (Xml::parse_error&)
{
throw ArbiterError("Could not parse S3 response.");
}
......
// This file is part of Eigen, a lightweight C++ template library
// for linear algebra.
//
// Copyright (C) 2008-2012 Gael Guennebaud <gael.guennebaud@inria.fr>
/*
NOTE: thes functions vave been adapted from the LDL library:
LDL Copyright (c) 2005 by Timothy A. Davis. All Rights Reserved.
LDL License:
Your use or distribution of LDL or any modified version of
LDL implies that you agree to this License.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
USA
Permission is hereby granted to use or copy this program under the
terms of the GNU LGPL, provided that the Copyright, this License,
and the Availability of the original version is retained on all copies.
User documentation of any code that uses this code or any modified
version of this code must cite the Copyright, this License, the
Availability note, and "Used by permission." Permission to modify
the code and to distribute modified code is granted, provided the
Copyright, this License, and the Availability note are retained,
and a notice that the code was modified is included.
*/
#include "../Core/util/NonMPL2.h"
#ifndef EIGEN_SIMPLICIAL_CHOLESKY_IMPL_H
#define EIGEN_SIMPLICIAL_CHOLESKY_IMPL_H
namespace Eigen {
template<typename Derived>
void SimplicialCholeskyBase<Derived>::analyzePattern_preordered(const CholMatrixType& ap, bool doLDLT)
{
const StorageIndex size = StorageIndex(ap.rows());
m_matrix.resize(size, size);
m_parent.resize(size);
m_nonZerosPerCol.resize(size);
ei_declare_aligned_stack_constructed_variable(StorageIndex, tags, size, 0);
for(StorageIndex k = 0; k < size; ++k)
{
/* L(k,:) pattern: all nodes reachable in etree from nz in A(0:k-1,k) */
m_parent[k] = -1; /* parent of k is not yet known */
tags[k] = k; /* mark node k as visited */
m_nonZerosPerCol[k] = 0; /* count of nonzeros in column k of L */
for(typename CholMatrixType::InnerIterator it(ap,k); it; ++it)
{
StorageIndex i = it.index();
if(i < k)
{
/* follow path from i to root of etree, stop at flagged node */
for(; tags[i] != k; i = m_parent[i])
{
/* find parent of i if not yet determined */
if (m_parent[i] == -1)
m_parent[i] = k;
m_nonZerosPerCol[i]++; /* L (k,i) is nonzero */
tags[i] = k; /* mark i as visited */
}
}
}
}
/* construct Lp index array from m_nonZerosPerCol column counts */
StorageIndex* Lp = m_matrix.outerIndexPtr();
Lp[0] = 0;
for(StorageIndex k = 0; k < size; ++k)
Lp[k+1] = Lp[k] + m_nonZerosPerCol[k] + (doLDLT ? 0 : 1);
m_matrix.resizeNonZeros(Lp[size]);
m_isInitialized = true;
m_info = Success;
m_analysisIsOk = true;
m_factorizationIsOk = false;
}
template<typename Derived>
template<bool DoLDLT>
void SimplicialCholeskyBase<Derived>::factorize_preordered(const CholMatrixType& ap)
{
using std::sqrt;
eigen_assert(m_analysisIsOk && "You must first call analyzePattern()");
eigen_assert(ap.rows()==ap.cols());
eigen_assert(m_parent.size()==ap.rows());
eigen_assert(m_nonZerosPerCol.size()==ap.rows());
const StorageIndex size = StorageIndex(ap.rows());
const StorageIndex* Lp = m_matrix.outerIndexPtr();
StorageIndex* Li = m_matrix.innerIndexPtr();
Scalar* Lx = m_matrix.valuePtr();
ei_declare_aligned_stack_constructed_variable(Scalar, y, size, 0);
ei_declare_aligned_stack_constructed_variable(StorageIndex, pattern, size, 0);
ei_declare_aligned_stack_constructed_variable(StorageIndex, tags, size, 0);
bool ok = true;
m_diag.resize(DoLDLT ? size : 0);
for(StorageIndex k = 0; k < size; ++k)
{
// compute nonzero pattern of kth row of L, in topological order
y[k] = 0.0; // Y(0:k) is now all zero
StorageIndex top = size; // stack for pattern is empty
tags[k] = k; // mark node k as visited
m_nonZerosPerCol[k] = 0; // count of nonzeros in column k of L
for(typename CholMatrixType::InnerIterator it(ap,k); it; ++it)
{
StorageIndex i = it.index();
if(i <= k)
{
y[i] += numext::conj(it.value()); /* scatter A(i,k) into Y (sum duplicates) */
Index len;
for(len = 0; tags[i] != k; i = m_parent[i])
{
pattern[len++] = i; /* L(k,i) is nonzero */
tags[i] = k; /* mark i as visited */
}
while(len > 0)
pattern[--top] = pattern[--len];
}
}
/* compute numerical values kth row of L (a sparse triangular solve) */
RealScalar d = numext::real(y[k]) * m_shiftScale + m_shiftOffset; // get D(k,k), apply the shift function, and clear Y(k)
y[k] = 0.0;
for(; top < size; ++top)
{
Index i = pattern[top]; /* pattern[top:n-1] is pattern of L(:,k) */
Scalar yi = y[i]; /* get and clear Y(i) */
y[i] = 0.0;
/* the nonzero entry L(k,i) */
Scalar l_ki;
if(DoLDLT)
l_ki = yi / m_diag[i];
else
yi = l_ki = yi / Lx[Lp[i]];
Index p2 = Lp[i] + m_nonZerosPerCol[i];
Index p;
for(p = Lp[i] + (DoLDLT ? 0 : 1); p < p2; ++p)
y[Li[p]] -= numext::conj(Lx[p]) * yi;
d -= numext::real(l_ki * numext::conj(yi));
Li[p] = k; /* store L(k,i) in column form of L */
Lx[p] = l_ki;
++m_nonZerosPerCol[i]; /* increment count of nonzeros in col i */
}
if(DoLDLT)
{
m_diag[k] = d;
if(d == RealScalar(0))
{
ok = false; /* failure, D(k,k) is zero */
break;
}
}
else
{
Index p = Lp[k] + m_nonZerosPerCol[k]++;
Li[p] = k ; /* store L(k,k) = sqrt (d) in column k */
if(d <= RealScalar(0)) {
ok = false; /* failure, matrix is not positive definite */
break;
}
Lx[p] = sqrt(d) ;
}
}
m_info = ok ? Success : NumericalIssue;
m_factorizationIsOk = true;
}
} // end namespace Eigen
#endif // EIGEN_SIMPLICIAL_CHOLESKY_IMPL_H