~ubuntu-branches/debian/sid/gdal/sid

« back to all changes in this revision

Viewing changes to frmts/pcidsk/sdk/segment/vecsegdataindex.h

  • Committer: Package Import Robot
  • Author(s): Francesco Paolo Lovergine
  • Date: 2012-05-07 15:04:42 UTC
  • mfrom: (5.5.16 experimental)
  • Revision ID: package-import@ubuntu.com-20120507150442-2eks97loeh6rq005
Tags: 1.9.0-1
* Ready for sid, starting transition.
* All symfiles updated to latest builds.
* Added dh_numpy call in debian/rules to depend on numpy ABI.
* Policy bumped to 3.9.3, no changes required.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/******************************************************************************
 
2
 *
 
3
 * Purpose:  Declaration of the VecSegIndex class.  
 
4
 *
 
5
 * This class is used to manage a vector segment data block index.  There
 
6
 * will be two instances created, one for the record data (sec_record) and
 
7
 * one for the vertices (sec_vert).  This class is exclusively a private
 
8
 * helper class for VecSegHeader.
 
9
 * 
 
10
 ******************************************************************************
 
11
 * Copyright (c) 2009
 
12
 * PCI Geomatics, 50 West Wilmot Street, Richmond Hill, Ont, Canada
 
13
 *
 
14
 * Permission is hereby granted, free of charge, to any person obtaining a
 
15
 * copy of this software and associated documentation files (the "Software"),
 
16
 * to deal in the Software without restriction, including without limitation
 
17
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 
18
 * and/or sell copies of the Software, and to permit persons to whom the
 
19
 * Software is furnished to do so, subject to the following conditions:
 
20
 *
 
21
 * The above copyright notice and this permission notice shall be included
 
22
 * in all copies or substantial portions of the Software.
 
23
 *
 
24
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 
25
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 
26
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 
27
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 
28
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 
29
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 
30
 * DEALINGS IN THE SOFTWARE.
 
31
 ****************************************************************************/
 
32
 
 
33
#ifndef __INCLUDE_SEGMENT_VECSEGDATAINDEX_H
 
34
#define __INCLUDE_SEGMENT_VECSEGDATAINDEX_H
 
35
 
 
36
#include "pcidsk_config.h"
 
37
#include "pcidsk_types.h"
 
38
#include "pcidsk_vectorsegment.h"
 
39
 
 
40
#include <map>
 
41
#include <vector>
 
42
 
 
43
namespace PCIDSK
 
44
{
 
45
    class VecSegDataIndex 
 
46
    {
 
47
        friend class CPCIDSKVectorSegment;
 
48
        friend class VecSegHeader;
 
49
 
 
50
    public:
 
51
        VecSegDataIndex();
 
52
        ~VecSegDataIndex();
 
53
 
 
54
        void                 Initialize( CPCIDSKVectorSegment *seg,
 
55
                                         int section );
 
56
 
 
57
        uint32               SerializedSize();
 
58
 
 
59
        void                 SetDirty();
 
60
        void                 Flush();
 
61
 
 
62
        const std::vector<uint32> *GetIndex();
 
63
        void            AddBlockToIndex( uint32 block );
 
64
        void            VacateBlockRange( uint32 start, uint32 count );
 
65
 
 
66
        uint32          GetSectionEnd();
 
67
        void            SetSectionEnd( uint32 new_size );
 
68
 
 
69
    private:
 
70
        CPCIDSKVectorSegment *vs;
 
71
 
 
72
        int                  section;
 
73
 
 
74
        uint32               offset_on_disk_within_section;
 
75
        uint32               size_on_disk;
 
76
 
 
77
        bool                 block_initialized;
 
78
        uint32               block_count;
 
79
        uint32               bytes;
 
80
        std::vector<uint32>  block_index;
 
81
        bool                 dirty;
 
82
    };
 
83
} // end namespace PCIDSK
 
84
 
 
85
#endif // __INCLUDE_SEGMENT_VECSEGDATAINDEX_H