bioformats  5.1.8
TileCache.h
1 /*
2  * #%L
3  * OME-BIOFORMATS C++ library for image IO.
4  * Copyright © 2006 - 2016 Open Microscopy Environment:
5  * - Massachusetts Institute of Technology
6  * - National Institutes of Health
7  * - University of Dundee
8  * - Board of Regents of the University of Wisconsin-Madison
9  * - Glencoe Software, Inc.
10  * %%
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions are met:
13  *
14  * 1. Redistributions of source code must retain the above copyright notice,
15  * this list of conditions and the following disclaimer.
16  * 2. Redistributions in binary form must reproduce the above copyright notice,
17  * this list of conditions and the following disclaimer in the documentation
18  * and/or other materials provided with the distribution.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
24  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30  * POSSIBILITY OF SUCH DAMAGE.
31  *
32  * The views and conclusions contained in the software and documentation are
33  * those of the authors and should not be interpreted as representing official
34  * policies, either expressed or implied, of any organization.
35  * #L%
36  */
37 
38 #ifndef OME_BIOFORMATS_TILECACHE_H
39 #define OME_BIOFORMATS_TILECACHE_H
40 
41 #include <ome/bioformats/Types.h>
42 #include <ome/bioformats/TileBuffer.h>
43 
44 #include <ome/compat/memory.h>
45 
46 #include <map>
47 
48 namespace ome
49 {
50  namespace bioformats
51  {
52 
59  class TileCache
60  {
61  public:
65  typedef ome::compat::shared_ptr<TileBuffer> value_type;
66 
68  TileCache();
69 
71  virtual ~TileCache();
72 
73  private:
74  // To avoid unintentional and expensive copies, copying and
75  // assignment of caches is prevented.
76 
78  TileCache (const TileCache&);
79 
81  TileCache&
82  operator= (const TileCache&);
83 
84  public:
98  bool
99  insert(key_type tileindex,
100  value_type tilebuffer);
101 
107  void
108  erase(key_type tileindex);
109 
117  value_type
118  find(key_type tileindex);
119 
128  const value_type
129  find(key_type tileindex) const;
130 
137  size() const;
138 
142  void
143  clear();
144 
157  value_type&
158  operator[](key_type tileindex);
159 
160  private:
162  std::map<key_type, value_type> cache;
163  };
164 
165  }
166 }
167 
168 #endif // OME_BIOFORMATS_TILECACHE_H
169 
170 /*
171  * Local Variables:
172  * mode:C++
173  * End:
174  */
std::map< key_type, value_type > cache
Mapping of tile number to tile buffer.
Definition: TileCache.h:162
Memory type substitution.
void erase(key_type tileindex)
Remove a tile from the tile cache.
Definition: TileCache.cpp:64
virtual ~TileCache()
Destructor.
Definition: TileCache.cpp:50
TileCache & operator=(const TileCache &)
Assignment operator (deleted).
TileCache()
Constructor.
Definition: TileCache.cpp:45
Tile cache.
Definition: TileCache.h:59
dimension_size_type size() const
Get the tile cache size.
Definition: TileCache.cpp:90
Open Microscopy Environment C++ implementation.
Definition: CoreMetadata.cpp:40
void clear()
Clear the tile cache.
Definition: TileCache.cpp:96
value_type & operator[](key_type tileindex)
Get a tile from the tile cache.
Definition: TileCache.cpp:102
bool insert(key_type tileindex, value_type tilebuffer)
Insert a tile into the tile cache.
Definition: TileCache.cpp:55
dimension_size_type key_type
Tile index type.
Definition: TileCache.h:63
ome::compat::shared_ptr< TileBuffer > value_type
Tile buffer type.
Definition: TileCache.h:65
std::size_t dimension_size_type
Size type for image dimensions.
Definition: Types.h:59
value_type find(key_type tileindex)
Find a tile in the tile cache.
Definition: TileCache.cpp:70