blob.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2007-2008 Tommi Maekitalo
3  * Copyright (C) 2007-2008 Marc Boris Duerner
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * As a special exception, you may use this file as part of a free
11  * software library without restriction. Specifically, if other files
12  * instantiate templates or use macros or inline functions from this
13  * file, or you compile this file and link it with other files to
14  * produce an executable, this file does not by itself cause the
15  * resulting executable to be covered by the GNU General Public
16  * License. This exception does not however invalidate any other
17  * reasons why the executable file might be covered by the GNU Library
18  * General Public License.
19  *
20  * This library is distributed in the hope that it will be useful,
21  * but WITHOUT ANY WARRANTY; without even the implied warranty of
22  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23  * Lesser General Public License for more details.
24  *
25  * You should have received a copy of the GNU Lesser General Public
26  * License along with this library; if not, write to the Free Software
27  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
28  */
29 
30 #ifndef TNTDB_IMPL_BLOB_H
31 #define TNTDB_IMPL_BLOB_H
32 
33 #include <tntdb/iface/iblob.h>
34 
35 namespace tntdb
36 {
37 
44 class BlobImpl : public IBlob
45 {
46  public:
48  { }
49 
51  {
52  delete[] _data;
53  }
54 
55  virtual void assign(const char* data, std::size_t len);
56 
57  virtual char* reserve(std::size_t len, bool shrink);
58 
59  virtual IBlob* create() const;
60 
61  virtual void destroy();
62 
64  {
65  static BlobImpl empty(1);
66  return &empty;
67  }
68 
69  protected:
70  // ctor, which constructs a instance, with a reference-counter of 1
71  BlobImpl(int)
72  { addRef(); }
73 };
74 
75 
80 static struct BlobDataInitializer
81 {
82  BlobDataInitializer()
83  {
85  }
86 } tntdb_blobdata_initializer;
87 
88 
89 }
90 
91 #endif // TNTDB_IMPL_BLOB_H
92