[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