MrSID Decode SDK for LiDAR Reference Manual  1.1.4.4709
IO.h
Go to the documentation of this file.
00001 /* //////////////////////////////////////////////////////////////////////////
00002 //                                                                         //
00003 // This code is Copyright (c) 2008-2010 LizardTech, Inc, 1008 Western      //
00004 // Avenue, Suite 200, Seattle, WA 98104.  Unauthorized use or distribution //
00005 // prohibited.  Access to and use of this code is permitted only under     //
00006 // license from LizardTech, Inc.  Portions of the code are protected by    //
00007 // US and foreign patents and other filings. All Rights Reserved.          //
00008 //                                                                         //
00010 /* PUBLIC */
00011 
00012 #ifndef __LIDAR_IO_H__
00013 #define __LIDAR_IO_H__
00014 
00015 #include "lidar/Object.h"
00016 
00017 LT_BEGIN_LIDAR_NAMESPACE
00018 
00029 class IO : public Object
00030 {
00031    ABSTRACT_OBJECT(IO);
00032 public:
00036    typedef lt_int64 offset_type;
00037 
00059    virtual void open(void) = 0;
00081    virtual void close(void) = 0;
00082 
00093    virtual size_t pread(offset_type offset,
00094                         void *buffer,
00095                         size_t nbytes) const = 0;
00106    virtual size_t pwrite(offset_type offset,
00107                          const void *buffer,
00108                          size_t nbytes) const = 0;
00109 
00115    virtual offset_type size(void) const = 0;
00116 
00126    virtual void truncate(offset_type length) = 0;
00127 
00133    virtual void unlink(void) = 0;
00134 
00135 
00140    struct Location
00141    {
00142       IO *io;
00143       offset_type offset;
00144       offset_type length;
00145 
00146       ~Location(void);
00147 
00148       Location(IO *io = NULL, offset_type offset = 0, offset_type length = 0);
00149       Location(const Location &rhs);
00150       Location &operator=(const Location &rhs);
00151 
00152       void set(IO *io, offset_type offset, offset_type length);
00153    };
00154 };
00155 
00156 LT_END_LIDAR_NAMESPACE
00157 #endif // __LIDAR_IO_H__