[Liblas-commits] hg: tweak SetHeader to clean up comments and make
it more straig...
liblas-commits at liblas.org
liblas-commits at liblas.org
Tue Jun 21 16:33:28 EDT 2011
details: http://hg.liblas.orghg/rev/5e947a05df77
changeset: 2974:5e947a05df77
user: Howard Butler <hobu.inc at gmail.com>
date: Tue Jun 21 15:31:38 2011 -0500
description:
tweak SetHeader to clean up comments and make it more straightforward to follow what's going on
Subject: hg: clean out dead code
details: http://hg.liblas.orghg/rev/49a83b785421
changeset: 2975:49a83b785421
user: Howard Butler <hobu.inc at gmail.com>
date: Tue Jun 21 15:32:17 2011 -0500
description:
clean out dead code
Subject: hg: clean out dead code and add a schema equality test to operator==
details: http://hg.liblas.orghg/rev/cbe5f143a582
changeset: 2976:cbe5f143a582
user: Howard Butler <hobu.inc at gmail.com>
date: Tue Jun 21 15:32:56 2011 -0500
description:
clean out dead code and add a schema equality test to operator==
Subject: hg: add operator==
details: http://hg.liblas.orghg/rev/24b1a182e6a0
changeset: 2977:24b1a182e6a0
user: Howard Butler <hobu.inc at gmail.com>
date: Tue Jun 21 15:33:07 2011 -0500
description:
add operator==
Subject: hg: add operator==
details: http://hg.liblas.orghg/rev/49a24458d49c
changeset: 2978:49a24458d49c
user: Howard Butler <hobu.inc at gmail.com>
date: Tue Jun 21 15:33:18 2011 -0500
description:
add operator==
diffstat:
include/liblas/dimension.hpp | 3 +
include/liblas/schema.hpp | 4 +
src/detail/reader/reader.cpp | 8 --
src/dimension.cpp | 22 ++++++
src/header.cpp | 11 +--
src/point.cpp | 148 +++---------------------------------------
src/schema.cpp | 17 ++++
7 files changed, 59 insertions(+), 154 deletions(-)
diffs (truncated from 368 to 300 lines):
diff -r cfc25597300c -r 49a24458d49c include/liblas/dimension.hpp
--- a/include/liblas/dimension.hpp Tue Jun 21 14:49:27 2011 -0500
+++ b/include/liblas/dimension.hpp Tue Jun 21 15:33:18 2011 -0500
@@ -77,6 +77,9 @@
Dimension(std::string const& name, std::size_t size_in_bits);
Dimension& operator=(Dimension const& rhs);
Dimension(Dimension const& other);
+
+ bool operator==(const Dimension& other) const;
+ bool operator!=(const Dimension& other) const { return !(*this == other); }
virtual ~Dimension() {}
diff -r cfc25597300c -r 49a24458d49c include/liblas/schema.hpp
--- a/include/liblas/schema.hpp Tue Jun 21 14:49:27 2011 -0500
+++ b/include/liblas/schema.hpp Tue Jun 21 15:33:18 2011 -0500
@@ -108,6 +108,10 @@
Schema(PointFormatName data_format_id);
Schema(std::vector<VariableRecord> const& vlrs);
Schema& operator=(Schema const& rhs);
+
+ bool operator==(const Schema& other) const;
+ bool operator!=(const Schema& other) const { return !(*this == other); }
+
Schema(Schema const& other);
~Schema() {}
diff -r cfc25597300c -r 49a24458d49c src/detail/reader/reader.cpp
--- a/src/detail/reader/reader.cpp Tue Jun 21 14:49:27 2011 -0500
+++ b/src/detail/reader/reader.cpp Tue Jun 21 15:33:18 2011 -0500
@@ -136,7 +136,6 @@
if (m_header->Compressed())
throw std::runtime_error("Internal error: uncompressed reader encountered compressed header");
- // m_point->SetHeaderPtr(m_header);
m_point->SetHeader(HeaderOptionalConstRef(*m_header));
@@ -163,9 +162,6 @@
if (bNeedHeaderCheck)
{
- // if (m_point->GetHeaderPtr().get() != m_header.get())
- // m_point->SetHeaderPtr(m_header);
-
if (!(m_point->GetHeader().get() == *m_header))
m_point->SetHeader(HeaderOptionalConstRef(*m_header));
}
@@ -254,12 +250,8 @@
if (bNeedHeaderCheck)
{
- // if (m_point->GetHeaderPtr().get() != m_header.get())
- // m_point->SetHeaderPtr(m_header);
-
if (!(m_point->GetHeader().get() == *m_header))
m_point->SetHeader(HeaderOptionalConstRef(*m_header));
-
}
detail::read_n(m_point->GetData().front(), m_ifs, m_record_size);
diff -r cfc25597300c -r 49a24458d49c src/dimension.cpp
--- a/src/dimension.cpp Tue Jun 21 14:49:27 2011 -0500
+++ b/src/dimension.cpp Tue Jun 21 15:33:18 2011 -0500
@@ -172,6 +172,28 @@
return dim;
}
+bool Dimension::operator==(const Dimension& other) const
+{
+
+ if (&other == this) return true;
+ if (m_name != other.m_name) return false;
+ if (m_bit_size != other.m_bit_size) return false;
+ if (m_required != other.m_required) return false;
+ if (m_active != other.m_active) return false;
+ if (m_description != other.m_description) return false;
+ if (!detail::compare_distance(m_min, other.m_min)) return false;
+ if (!detail::compare_distance(m_max, other.m_max)) return false;
+ if (m_numeric != other.m_numeric) return false;
+ if (m_signed != other.m_signed) return false;
+ if (m_integer != other.m_integer) return false;
+ if (m_position != other.m_position) return false;
+ if (m_byte_offset != other.m_byte_offset) return false;
+ if (m_bit_offset != other.m_bit_offset) return false;
+
+ return true;
+
+}
+
std::ostream& operator<<(std::ostream& os, liblas::Dimension const& d)
{
using liblas::property_tree::ptree;
diff -r cfc25597300c -r 49a24458d49c src/header.cpp
--- a/src/header.cpp Tue Jun 21 14:49:27 2011 -0500
+++ b/src/header.cpp Tue Jun 21 15:33:18 2011 -0500
@@ -138,9 +138,6 @@
m_headerSize = rhs.m_headerSize;
m_dataOffset = rhs.m_dataOffset;
m_recordsCount = rhs.m_recordsCount;
-// m_recordsCount = 0;
- // m_dataFormatId = rhs.m_dataFormatId;
- // m_dataRecordLen = rhs.m_dataRecordLen;
m_pointRecordsCount = rhs.m_pointRecordsCount;
std::vector<uint32_t>(rhs.m_pointRecordsByReturn).swap(m_pointRecordsByReturn);
@@ -181,13 +178,12 @@
if (m_headerSize != other.m_headerSize) return false;
if (m_dataOffset != other.m_dataOffset) return false;
if (m_recordsCount != other.m_recordsCount) return false;
- // if (m_dataFormatId != other.m_dataFormatId) return false;
- // if (m_dataRecordLen != other.m_dataRecordLen) return false;
if (m_pointRecordsCount != other.m_pointRecordsCount) return false;
if (m_pointRecordsByReturn != other.m_pointRecordsByReturn) return false;
if (m_extent != other.m_extent) return false;
if (m_isCompressed != other.m_isCompressed) return false;
+ if (m_schema != other.m_schema) return false;
return true;
}
@@ -552,8 +548,6 @@
m_versionMajor = 1;
m_versionMinor = 2;
- // m_dataFormatId = ePointFormat0;
- // m_dataRecordLen = ePointSize0;
m_createDOY = m_createYear = 0;
std::time_t now;
@@ -577,15 +571,12 @@
std::memset(m_signature, 0, eFileSignatureSize);
std::strncpy(m_signature, FileSignature, eFileSignatureSize);
-// m_signature = Header::FileSignature;
std::memset(m_systemId, 0, eSystemIdSize);
std::strncpy(m_systemId, SystemIdentifier, eSystemIdSize);
-// m_systemId = Header::SystemIdentifier;
std::memset(m_softwareId, 0, eSoftwareIdSize);
std::strncpy(m_softwareId, SoftwareIdentifier, eSoftwareIdSize);
-// m_softwareId = Header::SoftwareIdentifier;
m_pointRecordsByReturn.resize(ePointsByReturnSize);
diff -r cfc25597300c -r 49a24458d49c src/point.cpp
--- a/src/point.cpp Tue Jun 21 14:49:27 2011 -0500
+++ b/src/point.cpp Tue Jun 21 15:33:18 2011 -0500
@@ -193,126 +193,6 @@
return true;
}
-// void Point::SetHeaderPtr(HeaderPtr header)
-// {
-// boost::uint16_t wanted_length;
-//
-// bool bSetCoordinates = true;
-//
-// const liblas::Schema* schema;
-// if (header.get()) {
-// wanted_length = header->GetDataRecordLength();
-// schema = &header->GetSchema();
-//
-// if (m_header.get())
-// {
-// if (detail::compare_distance(header->GetScaleX(), m_header->GetScaleX()) ||
-// detail::compare_distance(header->GetScaleY(), m_header->GetScaleY()) ||
-// detail::compare_distance(header->GetScaleZ(), m_header->GetScaleZ()))
-// bSetCoordinates = false;
-// else
-// bSetCoordinates = true;
-//
-// if (detail::compare_distance(header->GetOffsetX(), m_header->GetOffsetX()) ||
-// detail::compare_distance(header->GetOffsetY(), m_header->GetOffsetY()) ||
-// detail::compare_distance(header->GetOffsetZ(), m_header->GetOffsetZ()))
-// bSetCoordinates = false;
-// else
-// bSetCoordinates = true;
-//
-// // if (!bSetCoordinates)
-// // std::cout << "Scales and offsets are equal, not resetting coordinates" << std::endl;
-// }
-//
-// }
-// else
-// {
-// wanted_length = m_default_header.GetDataRecordLength();
-// schema = &m_default_header.GetSchema();
-// }
-//
-// // This is hopefully faster than copying everything if we don't have
-// // any data set and nothing to worry about.
-// boost::uint32_t sum = std::accumulate(m_data.begin(), m_data.end(), 0);
-//
-// if (!sum) {
-// std::vector<boost::uint8_t> data;
-// data.resize(wanted_length);
-// data.assign(wanted_length, 0);
-// m_data = data;
-// m_header = header;
-// return;
-// }
-//
-// if (wanted_length != m_data.size())
-// {
-// // Manually copy everything but the header ptr
-// // We can't just copy the raw data because its
-// // layout is likely changing as a result of the
-// // schema change.
-// Point p(*this);
-//
-// std::vector<boost::uint8_t> data;
-// data.resize(wanted_length);
-// data.assign(wanted_length, 0);
-// m_data = data;
-// m_header = header;
-//
-// SetX(p.GetX());
-// SetY(p.GetY());
-// SetZ(p.GetZ());
-//
-// SetIntensity(p.GetIntensity());
-// SetScanFlags(p.GetScanFlags());
-// SetClassification(p.GetClassification());
-// SetScanAngleRank(p.GetScanAngleRank());
-// SetUserData(p.GetUserData());
-// SetPointSourceID(p.GetPointSourceID());
-//
-// boost::optional< Dimension const& > t = schema->GetDimension("Time");
-// if (t)
-// SetTime(p.GetTime());
-//
-// boost::optional< Dimension const& > c = schema->GetDimension("Red");
-// if (c)
-// SetColor(p.GetColor());
-//
-// // FIXME: copy other custom dimensions here? resetting the
-// // headerptr can be catastrophic in a lot of cases.
-// } else
-// {
-// m_header = header;
-// return;
-// }
-//
-// double x;
-// double y;
-// double z;
-//
-// if (bSetCoordinates)
-// {
-// x = GetX();
-// y = GetY();
-// z = GetZ();
-// }
-//
-// // The header's scale/offset can change the raw storage of xyz.
-// // SetHeaderPtr can result in a rescaling of the data.
-// m_header = header;
-//
-// if (bSetCoordinates)
-// {
-// SetX(x);
-// SetY(y);
-// SetZ(z);
-// }
-// }
-//
-// HeaderPtr Point::GetHeaderPtr() const
-// {
-// return m_header;
-// }
-
void Point::SetHeader(HeaderOptionalConstRef header)
{
@@ -321,31 +201,26 @@
throw liblas_error("header reference for SetHeader is void");
}
+ // If we don't have a header initialized, set the point's to the
+ // one we were given.
if (!m_header) m_header = header;
- boost::uint16_t wanted_length;
-
- bool bSetCoordinates = true;
+ bool bApplyNewScaling = true;
const liblas::Schema* schema;
- wanted_length = header.get().GetDataRecordLength();
+ boost::uint16_t wanted_length = header.get().GetDataRecordLength();
schema = &header.get().GetSchema();
-
- //FIXME: check boost::optional returns
if (detail::compare_distance(header->GetScaleX(), m_header->GetScaleX()) &&
detail::compare_distance(header->GetScaleY(), m_header->GetScaleY()) &&
detail::compare_distance(header->GetScaleZ(), m_header->GetScaleZ()) &&
detail::compare_distance(header->GetOffsetX(), m_header->GetOffsetX()) &&
More information about the Liblas-commits
mailing list