[Liblas-commits] hg: added FileClose() support

liblas-commits at liblas.org liblas-commits at liblas.org
Wed Jan 12 16:44:31 EST 2011


details:   http://hg.liblas.orghg/rev/5e840e292b2f
changeset: 2742:5e840e292b2f
user:      Michael P. Gerlek <mpg at flaxen.com>
date:      Wed Jan 12 13:39:02 2011 -0800
description:
added FileClose() support
Subject: hg: bindings almost working - still need to address the usual raft of lifetime/scoping issues

details:   http://hg.liblas.orghg/rev/4df356157248
changeset: 2743:4df356157248
user:      Michael P. Gerlek <mpg at flaxen.com>
date:      Wed Jan 12 13:39:43 2011 -0800
description:
bindings almost working - still need to address the usual raft of lifetime/scoping issues
Subject: hg: always remove the old laszip vlr (bug when doing "las2las -i x.laz -o y.laz")

details:   http://hg.liblas.orghg/rev/09cdae390de2
changeset: 2744:09cdae390de2
user:      Michael P. Gerlek <mpg at flaxen.com>
date:      Wed Jan 12 13:43:56 2011 -0800
description:
always remove the old laszip vlr (bug when doing "las2las -i x.laz -o y.laz")
Subject: hg: pull-merge

details:   http://hg.liblas.orghg/rev/a6dfd2c975c3
changeset: 2745:a6dfd2c975c3
user:      Michael P. Gerlek <mpg at flaxen.com>
date:      Wed Jan 12 13:44:23 2011 -0800
description:
pull-merge

diffstat:

 csharp-new/liblas_swig_cpp/liblas.i                 |   65 +++++--
 csharp-new/liblas_swig_cpp/liblas_swig_cpp.vcxproj  |   32 +--
 csharp-new/liblas_swig_cs/liblas_swig_cs.csproj     |    5 +-
 csharp-new/liblas_swig_test/Program.cs              |  168 ++++++++++++++++---
 csharp-new/liblas_swig_test/TestGuid.cs             |   35 ++++
 csharp-new/liblas_swig_test/TestHeader.cs           |   74 ++++++++
 csharp-new/liblas_swig_test/TestPoint.cs            |   46 +++++
 csharp-new/liblas_swig_test/TestReader.cs           |   31 +++
 csharp-new/liblas_swig_test/TestSpatialReference.cs |   23 ++
 csharp-new/liblas_swig_test/TestVariableRecord.cs   |   47 +++++
 csharp-new/liblas_swig_test/liblas_swig_test.csproj |    5 +-
 include/liblas/detail/reader/zipreader.hpp          |    6 +-
 include/liblas/factory.hpp                          |    2 +
 src/detail/reader/zipreader.cpp                     |   10 +-
 src/detail/writer/header.cpp                        |    1 +
 src/detail/zippoint.cpp                             |    6 +
 src/factory.cpp                                     |   18 ++
 17 files changed, 492 insertions(+), 82 deletions(-)

diffs (truncated from 877 to 300 lines):

diff -r e3efe5548e3b -r a6dfd2c975c3 csharp-new/liblas_swig_cpp/liblas.i
--- a/csharp-new/liblas_swig_cpp/liblas.i	Wed Jan 12 10:50:47 2011 -0600
+++ b/csharp-new/liblas_swig_cpp/liblas.i	Wed Jan 12 13:44:23 2011 -0800
@@ -38,12 +38,13 @@
  * OF SUCH DAMAGE.
  ****************************************************************************/
  
-%module WrapperCpp
+%module liblas_swig_cpp
 
 %{
 #include "liblas/liblas.hpp"
 #include "liblas/version.hpp"
 #include "liblas/reader.hpp"
+#include "liblas/writer.hpp"
 #include "liblas/classification.hpp"
 #include "liblas/header.hpp"
 #include "liblas/point.hpp"
@@ -105,8 +106,8 @@
 class guid
 {
 public:
-    std::string to_string() const;
-    //void output_data(boost::uint32_t& d1, boost::uint16_t& d2, boost::uint16_t& d3, boost::uint8_t (&d4)[8]) const;
+    guid(char const* const str);
+    std::string to_string() const;
 };
 
 
@@ -175,13 +176,11 @@
 class VariableRecord
 {
 public:
-    boost::uint16_t GetReserved() const;
-    std::string GetUserId(bool pad ) const;
+    std::string GetUserId(bool pad) const;
     boost::uint16_t GetRecordId() const;
     boost::uint16_t GetRecordLength() const;
-    std::string GetDescription(bool pad ) const;
+    std::string GetDescription(bool pad) const;
     std::vector<boost::uint8_t> const& GetData() const;
-    std::size_t GetTotalSize() const;
 };
 
 
@@ -213,17 +212,30 @@
 class Header
 {
 public:
+    Header(Header const& other);
+
     std::string GetFileSignature() const;
     boost::uint16_t GetFileSourceId() const;
+    void SetFileSourceId(boost::uint16_t v);
     guid GetProjectId() const;
+    void SetProjectId(guid const& v);
     boost::uint8_t GetVersionMajor() const;
+    void SetVersionMajor(boost::uint8_t v);
     boost::uint8_t GetVersionMinor() const;
+    void SetVersionMinor(boost::uint8_t v);
     std::string GetSystemId(bool pad = false) const;
+    void SetSystemId(std::string const& v);
     std::string GetSoftwareId(bool pad = false) const;
+    void SetSoftwareId(std::string const& v);
     boost::uint16_t GetCreationDOY() const;
+    void SetCreationDOY(boost::uint16_t v);
     boost::uint16_t GetCreationYear() const;
+    void SetCreationYear(boost::uint16_t v);
+
+    PointFormatName GetDataFormatId() const;
+    void SetDataFormatId(PointFormatName v);
+
     boost::uint32_t GetRecordsCount() const;
-    PointFormatName GetDataFormatId() const;
     boost::uint32_t GetPointRecordsCount() const;
 
     double GetScaleX() const;
@@ -238,12 +250,17 @@
     double GetMinY() const;
     double GetMaxZ() const;
     double GetMinZ() const;
+    void SetScale(double x, double y, double z);
+    void SetOffset(double x, double y, double z);
+    void SetMax(double x, double y, double z);
+    void SetMin(double x, double y, double z);
 
     const std::vector<VariableRecord>& GetVLRs() const;
 
     SpatialReference GetSRS() const;
 
     bool Compressed() const;
+    void SetCompressed(bool b);
 };
 
 
@@ -266,30 +283,34 @@
 
 //---------------------------------------------------------------------------
 
+class Writer
+{
+public:
+    Writer(std::ostream& ofs, Header const& header);
+    Header const& GetHeader() const;
+    bool WritePoint(Point const& point);
+    //void WriteHeader(Header& header);
+    //void SetFilters(std::vector<liblas::FilterPtr> const& filters);
+    //void SetTransforms(std::vector<liblas::TransformPtr> const& transforms);
+};
+
+//---------------------------------------------------------------------------
+
+
 class ReaderFactory
 {
 public:
     Reader CreateCached(std::istream& stream, boost::uint32_t cache_size);
     Reader CreateWithStream(std::istream& stream);
     static std::istream* FileOpen(std::string const& filename);
+    static void FileClose(std::istream*);
 };
 
-
-//---------------------------------------------------------------------------
-
 class WriterFactory
 {
 public:
-    enum FileType
-    {
-        FileType_Unknown,
-        FileType_LAS,
-        FileType_LAZ
-    };
-
-    //static WriterIPtr CreateWithStream(std::ostream& stream, Header const& header); 
-    static FileType InferFileTypeFromExtension(const std::string&);
-    static std::ostream* WriterFactory::FileCreate(std::string const& filename);
+    static std::ostream* FileCreate(std::string const& filename);
+    static void FileClose(std::ostream*);
 };
 
-}; // end namespace
+}; // namespace
diff -r e3efe5548e3b -r a6dfd2c975c3 csharp-new/liblas_swig_cpp/liblas_swig_cpp.vcxproj
--- a/csharp-new/liblas_swig_cpp/liblas_swig_cpp.vcxproj	Wed Jan 12 10:50:47 2011 -0600
+++ b/csharp-new/liblas_swig_cpp/liblas_swig_cpp.vcxproj	Wed Jan 12 13:44:23 2011 -0800
@@ -23,34 +23,28 @@
       <FileType>Document</FileType>
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">swig.exe -c++ -csharp -outdir ../liblas_swig_cs -namespace Liblas -o liblas_wrap.cpp "%(FullPath)"
 </Command>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">echo Invoking SWIG...
-echo on
-..\..\..\swig.exe -csharp "%(FullPath)"
-%40echo off
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">swig.exe -c++ -csharp -outdir ../liblas_swig_cs -namespace Liblas -o liblas_wrap.cpp "%(FullPath)"
 </Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
       </AdditionalInputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">echo Invoking SWIG...
-echo on
-..\..\..\swig.exe -csharp "%(FullPath)"
-%40echo off
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">swig.exe -c++ -csharp -outdir ../liblas_swig_cs -namespace Liblas -o liblas_wrap.cpp "%(FullPath)"
 </Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
       </AdditionalInputs>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
       </AdditionalInputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">echo Invoking SWIG...
-echo on
-..\..\..\swig.exe -csharp "%(FullPath)"
-%40echo off
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">swig.exe -c++ -csharp -outdir ../liblas_swig_cs -namespace Liblas -o liblas_wrap.cpp "%(FullPath)"
 </Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
       </AdditionalInputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(Filename)_wrap.cpp;%(Outputs)</Outputs>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(Filename)_wrap.c;%(Outputs)</Outputs>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(Filename)_wrap.c;%(Outputs)</Outputs>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(Filename)_wrap.c;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(Filename)_wrap.cpp;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(Filename)_wrap.cpp;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(Filename)_wrap.cpp;%(Outputs)</Outputs>
       <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Invoking SWIG...</Message>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Invoking SWIG...</Message>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Invoking SWIG...</Message>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Invoking SWIG...</Message>
     </CustomBuild>
   </ItemGroup>
   <ItemGroup>
@@ -130,9 +124,9 @@
     </ClCompile>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>C:\Program Files (x86)\boost\boost_1_44\lib\libboost_program_options-vc100-mt-gd-1_44.lib;%(AdditionalDependencies);C:\Program Files (x86)\boost\boost_1_44\lib\libboost_serialization-vc100-mt-gd-1_44.lib;c:\dev\liblas\bin\RelWithDebInfo\Debug\liblas.lib</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies);c:\dev\liblas\bin\Debug\Debug\liblas.lib</AdditionalDependencies>
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
-      <AdditionalLibraryDirectories>C:/Program Files (x86)/boost/boost_1_44/lib;C:/Program Files (x86)/boost/boost_1_44/lib/$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -148,7 +142,7 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <AdditionalDependencies>%(AdditionalDependencies);c:\dev\liblas\bin\Debug\Debug\liblas.lib</AdditionalDependencies>
       <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
-      <AdditionalLibraryDirectories>C:/Program Files (x86)/boost/boost_1_44/lib;C:/Program Files (x86)/boost/boost_1_44/lib/$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalLibraryDirectories>C:\Program Files (x86)\boost\boost_1_44\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -162,6 +156,7 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>%(AdditionalDependencies);c:\dev\liblas\bin\Release\Release\liblas.lib</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -175,6 +170,7 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>%(AdditionalDependencies);c:\dev\liblas\bin\Release\Release\liblas.lib</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff -r e3efe5548e3b -r a6dfd2c975c3 csharp-new/liblas_swig_cs/liblas_swig_cs.csproj
--- a/csharp-new/liblas_swig_cs/liblas_swig_cs.csproj	Wed Jan 12 10:50:47 2011 -0600
+++ b/csharp-new/liblas_swig_cs/liblas_swig_cs.csproj	Wed Jan 12 13:44:23 2011 -0800
@@ -91,6 +91,8 @@
     <Compile Include="Color.cs" />
     <Compile Include="guid.cs" />
     <Compile Include="Header.cs" />
+    <Compile Include="liblas_swig_cpp.cs" />
+    <Compile Include="liblas_swig_cppPINVOKE.cs" />
     <Compile Include="Point.cs" />
     <Compile Include="PointFormatName.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
@@ -103,8 +105,7 @@
     <Compile Include="VectorU32.cs" />
     <Compile Include="VectorU8.cs" />
     <Compile Include="VectorVariableRecord.cs" />
-    <Compile Include="WrapperCpp.cs" />
-    <Compile Include="WrapperCppPINVOKE.cs" />
+    <Compile Include="Writer.cs" />
     <Compile Include="WriterFactory.cs" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
diff -r e3efe5548e3b -r a6dfd2c975c3 csharp-new/liblas_swig_test/Program.cs
--- a/csharp-new/liblas_swig_test/Program.cs	Wed Jan 12 10:50:47 2011 -0600
+++ b/csharp-new/liblas_swig_test/Program.cs	Wed Jan 12 13:44:23 2011 -0800
@@ -50,6 +50,10 @@
 {
    public class Program
    {
+      static string fileA = @"..\..\test\data\1.2-with-color.las";
+      static string fileB = @"..\..\test\data\1.2-with-color.laz";
+      static string fileT = @"tmp.laz";
+      
       static public bool IsApprox(double a, double b, double tol)
       {
          double min = Math.Min(a, b);
@@ -62,43 +66,143 @@
 
       static int Main(string[] args)
       {
-         string fileA = @"..\..\test\data\1.2-with-color.las";
-         string fileB = @"..\..\test\data\1.2-with-color.laz";
-         ReaderFactory factory = new ReaderFactory();
+         // reader tests for A
+         Test_ReadA();
 
-         // tests for A
-         {
-            SWIGTYPE_p_std__istream ifs = Liblas.ReaderFactory.FileOpen(fileA);
+         // reader tests for B
+         Test_ReadB();
 
-            Reader reader = factory.CreateWithStream(ifs);
-            TestReader.Test_A(reader);
+         // writer tests
+         Test_WriteT();
 
-            Header header = reader.GetHeader();
-            TestHeader.Test_A(header);
-
-            bool ok = reader.ReadPointAt(2);
-            Debug.Assert(ok);
-            Point pt = reader.GetPoint();
-            TestPoint.Test_A2(pt);
-         }
-
-         // tests for B
-         {
-            SWIGTYPE_p_std__istream ifs = Liblas.ReaderFactory.FileOpen(fileB);
-
-            Reader reader = factory.CreateWithStream(ifs);
-            TestReader.Test_B(reader);


More information about the Liblas-commits mailing list