44 #ifndef LIBLAS_HPP_INCLUDED
45 #define LIBLAS_HPP_INCLUDED
66 #include <liblas/detail/endian.hpp>
67 #include <liblas/detail/private_utility.hpp>
73 #include <boost/array.hpp>
74 #include <boost/concept_check.hpp>
76 #include <boost/shared_ptr.hpp>
81 #include <boost/iostreams/device/file.hpp>
82 #include <boost/iostreams/stream.hpp>
83 #include <boost/iostreams/stream_buffer.hpp>
112 inline bool Open(std::ifstream& ifs, std::string
const& filename)
114 ifs.open(filename.c_str(), std::ios::in | std::ios::binary);
115 return ifs.is_open();
118 inline std::istream*
Open(std::string
const& filename, std::ios::openmode mode)
121 namespace io = boost::iostreams;
122 io::stream<io::file_source>* ifs =
new io::stream<io::file_source>();
123 ifs->open(filename.c_str(), mode);
124 if (ifs->is_open() ==
false) {
delete ifs;
return NULL; }
127 std::ifstream* ifs =
new std::ifstream();
128 ifs->open(filename.c_str(), mode);
129 if (ifs->is_open() ==
false) {
delete ifs;
return NULL; }
142 inline bool Create(std::ofstream& ofs, std::string
const& filename)
144 ofs.open(filename.c_str(), std::ios::out | std::ios::binary);
145 return ofs.is_open();
148 inline std::ostream*
Create(std::string
const& filename, std::ios::openmode mode)
151 namespace io = boost::iostreams;
152 io::stream<io::file_sink>* ofs =
new io::stream<io::file_sink>();
153 ofs->open(filename.c_str(), mode);
154 if (ofs->is_open() ==
false)
return NULL;
157 std::ofstream* ofs =
new std::ofstream();
158 ofs->open(filename.c_str(), mode);
159 if (ofs->is_open() ==
false)
return NULL;
170 namespace io = boost::iostreams;
171 namespace io = boost::iostreams;
172 io::stream<io::file_sink>* source =
dynamic_cast<io::stream<io::file_sink>*
>(ofs);
180 std::ofstream* source =
dynamic_cast<std::ofstream*
>(ofs);
196 namespace io = boost::iostreams;
197 io::stream<io::file_source>* source =
dynamic_cast<io::stream<io::file_source>*
>(ifs);
204 std::ifstream* source =
dynamic_cast<std::ifstream*
>(ifs);
225 virtual void Seek(std::size_t n) = 0;
227 virtual void Reset() = 0;
229 virtual void SetFilters(std::vector<liblas::FilterPtr>
const& filters) = 0;
230 virtual void SetTransforms(std::vector<liblas::TransformPtr>
const& transforms) = 0;
232 virtual std::vector<liblas::TransformPtr>
GetTransforms()
const = 0;
233 virtual std::vector<liblas::FilterPtr>
GetFilters()
const = 0;
250 virtual void SetFilters(std::vector<liblas::FilterPtr>
const& filters) = 0;
251 virtual void SetTransforms(std::vector<liblas::TransformPtr>
const& transforms) = 0;
253 virtual std::vector<liblas::TransformPtr>
GetTransforms()
const = 0;
254 virtual std::vector<liblas::FilterPtr>
GetFilters()
const = 0;
263 #endif // LIBLAS_HPP_INCLUDED
virtual Point const & ReadPointAt(std::size_t n)=0
#define NULL
Definition: las_config.h:63
virtual std::vector< liblas::TransformPtr > GetTransforms() const =0
virtual ~WriterI()
Definition: liblas.hpp:257
void Cleanup(std::ostream *ofs)
Definition: liblas.hpp:164
virtual std::vector< liblas::FilterPtr > GetFilters() const =0
virtual void SetTransforms(std::vector< liblas::TransformPtr > const &transforms)=0
virtual void WriteHeader()=0
Definition: liblas.hpp:215
virtual liblas::Header & GetHeader() const =0
bool Open(std::ifstream &ifs, std::string const &filename)
Open file to read in binary mode.
Definition: liblas.hpp:112
virtual void UpdatePointCount(uint32_t count)=0
virtual std::vector< liblas::TransformPtr > GetTransforms() const =0
virtual void SetFilters(std::vector< liblas::FilterPtr > const &filters)=0
virtual void SetHeader(liblas::Header const &header)=0
virtual std::vector< liblas::FilterPtr > GetFilters() const =0
Definition: liblas.hpp:238
bool Create(std::ofstream &ofs, std::string const &filename)
Create file and open to write in binary mode.
Definition: liblas.hpp:142
Namespace grouping all elements of libLAS public interface.
Definition: bounds.hpp:60
virtual liblas::Header const & GetHeader() const =0
Point data record composed with X, Y, Z coordinates and attributes.
Definition: point.hpp:68
virtual liblas::Point const & GetPoint() const =0
virtual ~ReaderI()
Definition: liblas.hpp:235
virtual void Seek(std::size_t n)=0
virtual void ReadHeader()=0
virtual void SetHeader(liblas::Header const &header)=0
virtual void ReadNextPoint()=0
virtual void WritePoint(const Point &point)=0
virtual void SetTransforms(std::vector< liblas::TransformPtr > const &transforms)=0
virtual void SetFilters(std::vector< liblas::FilterPtr > const &filters)=0