[Groonga-commit] groonga/grnxx [master] Update the interface of grnxx::io::Pool.

Zurück zum Archiv-Index

susumu.yata null+****@clear*****
Thu Dec 6 20:37:22 JST 2012


susumu.yata	2012-12-06 20:37:22 +0900 (Thu, 06 Dec 2012)

  New Revision: ea87f1d5e62a6596285b69ec4e4b8ff77688ad36
  https://github.com/groonga/grnxx/commit/ea87f1d5e62a6596285b69ec4e4b8ff77688ad36

  Log:
    Update the interface of grnxx::io::Pool.

  Removed files:
    lib/io/flags.cpp
    lib/io/flags.hpp
  Modified files:
    lib/io/Makefile.am
    lib/io/file.hpp
    lib/io/pool-impl.cpp
    lib/io/pool-impl.hpp
    lib/io/pool.cpp
    lib/io/pool.hpp
    lib/io/view.hpp
    test/test_alpha_blob_vector.cpp
    test/test_alpha_vector.cpp
    test/test_db_array.cpp
    test/test_db_blob_vector.cpp
    test/test_db_vector.cpp
    test/test_io_pool.cpp

  Modified: lib/io/Makefile.am (+0 -2)
===================================================================
--- lib/io/Makefile.am    2012-12-06 20:04:32 +0900 (8aae1d7)
+++ lib/io/Makefile.am    2012-12-06 20:37:22 +0900 (209a5e1)
@@ -8,7 +8,6 @@ libgrnxx_io_la_SOURCES =	\
 	file.cpp		\
 	file_info.cpp		\
 	file_info-impl.cpp	\
-	flags.cpp		\
 	path.cpp		\
 	pool.cpp		\
 	pool-impl.cpp		\
@@ -25,7 +24,6 @@ libgrnxx_io_include_HEADERS =	\
 	file.hpp		\
 	file_info.hpp		\
 	file_info-impl.hpp	\
-	flags.hpp		\
 	path.hpp		\
 	pool.hpp		\
 	pool-impl.hpp		\

  Modified: lib/io/file.hpp (+3 -3)
===================================================================
--- lib/io/file.hpp    2012-12-06 20:04:32 +0900 (030791d)
+++ lib/io/file.hpp    2012-12-06 20:37:22 +0900 (b400976)
@@ -15,8 +15,8 @@
   License along with this library; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
-#ifndef FILE_FILE_HPP
-#define FILE_FILE_HPP
+#ifndef GRNXX_IO_FILE_HPP
+#define GRNXX_IO_FILE_HPP
 
 #include "../duration.hpp"
 
@@ -162,4 +162,4 @@ inline StringBuilder &operator<<(StringBuilder &builder, const File &file) {
 }  // namespace io
 }  // namespace grnxx
 
-#endif  // FILE_FILE_HPP
+#endif  // GRNXX_IO_FILE_HPP

  Deleted: lib/io/flags.cpp (+0 -63) 100644
===================================================================
--- lib/io/flags.cpp    2012-12-06 20:04:32 +0900 (13b2930)
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-  Copyright (C) 2012  Brazil, Inc.
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public
-  License as published by the Free Software Foundation; either
-  version 2.1 of the License, or (at your option) any later version.
-
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-*/
-#include "flags.hpp"
-
-#include <ostream>
-
-namespace grnxx {
-namespace io {
-
-#define GRNXX_FLAGS_WRITE(flag) do { \
-  if (flags & flag) { \
-    if (!is_first) { \
-      builder << " | "; \
-    } \
-    builder << #flag; \
-    is_first = false; \
-  } \
-} while (false)
-
-StringBuilder &operator<<(StringBuilder &builder, Flags flags) {
-  if (flags) {
-    bool is_first = true;
-    GRNXX_FLAGS_WRITE(GRNXX_IO_READ_ONLY);
-    GRNXX_FLAGS_WRITE(GRNXX_IO_WRITE_ONLY);
-    GRNXX_FLAGS_WRITE(GRNXX_IO_ANONYMOUS);
-    GRNXX_FLAGS_WRITE(GRNXX_IO_APPEND);
-    GRNXX_FLAGS_WRITE(GRNXX_IO_CREATE);
-    GRNXX_FLAGS_WRITE(GRNXX_IO_HUGE_TLB);
-    GRNXX_FLAGS_WRITE(GRNXX_IO_OPEN);
-    GRNXX_FLAGS_WRITE(GRNXX_IO_TEMPORARY);
-    GRNXX_FLAGS_WRITE(GRNXX_IO_TRUNCATE);
-    GRNXX_FLAGS_WRITE(GRNXX_IO_PRIVATE);
-    GRNXX_FLAGS_WRITE(GRNXX_IO_SHARED);
-    return builder;
-  } else {
-    return builder << "0";
-  }
-}
-
-std::ostream &operator<<(std::ostream &stream, Flags flags) {
-  char buf[256];
-  StringBuilder builder(buf);
-  builder << flags;
-  return stream.write(builder.c_str(), builder.length());
-}
-
-}  // namespace io
-}  // namespace grnxx

  Deleted: lib/io/flags.hpp (+0 -83) 100644
===================================================================
--- lib/io/flags.hpp    2012-12-06 20:04:32 +0900 (146f390)
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-  Copyright (C) 2012  Brazil, Inc.
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public
-  License as published by the Free Software Foundation; either
-  version 2.1 of the License, or (at your option) any later version.
-
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-*/
-#ifndef GRNXX_IO_FLAGS_HPP
-#define GRNXX_IO_FLAGS_HPP
-
-#include "../string_builder.hpp"
-
-namespace grnxx {
-namespace io {
-
-class FlagsIdentifier {};
-typedef FlagsImpl<FlagsIdentifier> Flags;
-
-// GRNXX_IO_WRITE_ONLY is ignored if GRNXX_IO_READ_ONLY is enabled.
-// GRNXX_IO_READ_ONLY is disabled if GRNXX_IO_CREATE is specified.
-// If both flags are not set, and object is created/opened/mapped in
-// read-write mode.
-
-// Read-only mode.
-const Flags GRNXX_IO_READ_ONLY  = Flags::define(0x0001);
-// Write-only mode.
-const Flags GRNXX_IO_WRITE_ONLY = Flags::define(0x0002);
-
-// GRNXX_IO_ANONYMOUS disables all the flags other than GRNXX_HUGE_TLB and
-// enables GRNXX_IO_PRIVATE.
-// GRNXX_IO_APPEND is ignored if GRNXX_IO_READ_ONLY is enabled.
-// GRNXX_IO_CREATE disables GRNXX_IO_READ_ONLY.
-// GRNXX_IO_OPEN is enabled if GRNXX_IO_CREATE is not specified.
-// If both GRNXX_IO_CREATE and GRNXX_IO_OPEN are set, it first tries to create
-// an object and, if already exists, then tries to open the existing object.
-// GRNXX_IO_TEMPORARY disables other flags.
-
-// Anonymous (non-file-backed) mode.
-const Flags GRNXX_IO_ANONYMOUS  = Flags::define(0x0010);
-// Append mode.
-const Flags GRNXX_IO_APPEND     = Flags::define(0x0020);
-// Create an object if it does not exist.
-const Flags GRNXX_IO_CREATE     = Flags::define(0x0040);
-// Try to use huge pages.
-const Flags GRNXX_IO_HUGE_TLB   = Flags::define(0x0080);
-// Open an existing object.
-const Flags GRNXX_IO_OPEN       = Flags::define(0x0100);
-// Create a temporary object.
-const Flags GRNXX_IO_TEMPORARY  = Flags::define(0x0200);
-// Truncate an existing object.
-const Flags GRNXX_IO_TRUNCATE   = Flags::define(0x0400);
-
-// GRNXX_IO_PRIVATE is ignored if GRNXX_IO_SHARED is enabled.
-
-// Private mode.
-const Flags GRNXX_IO_PRIVATE    = Flags::define(0x1000);
-// Shared mode.
-const Flags GRNXX_IO_SHARED     = Flags::define(0x2000);
-
-StringBuilder &operator<<(StringBuilder &builder, Flags flags);
-
-std::ostream &operator<<(std::ostream &stream, Flags flags);
-
-// One of these modes must be specified.
-enum LockMode {
-  GRNXX_IO_EXCLUSIVE_LOCK = 0x10000,  // Create an exclusive lock.
-  GRNXX_IO_SHARED_LOCK    = 0x20000   // Create a shared lock.
-};
-
-}  // namespace io
-}  // namespace grnxx
-
-#endif  // GRNXX_IO_FLAGS_HPP

  Modified: lib/io/pool-impl.cpp (+31 -30)
===================================================================
--- lib/io/pool-impl.cpp    2012-12-06 20:04:32 +0900 (06823c0)
+++ lib/io/pool-impl.cpp    2012-12-06 20:37:22 +0900 (a29646c)
@@ -32,7 +32,7 @@ namespace io {
 
 PoolImpl::~PoolImpl() {}
 
-std::unique_ptr<PoolImpl> PoolImpl::open(const char *path, Flags flags,
+std::unique_ptr<PoolImpl> PoolImpl::open(PoolFlags flags, const char *path,
                                          const PoolOptions &options) {
   std::unique_ptr<PoolImpl> pool(new (std::nothrow) PoolImpl);
   if (!pool) {
@@ -40,19 +40,19 @@ std::unique_ptr<PoolImpl> PoolImpl::open(const char *path, Flags flags,
     GRNXX_THROW();
   }
 
-  if (flags & GRNXX_IO_ANONYMOUS) {
+  if (flags & POOL_ANONYMOUS) {
     pool->open_anonymous_pool(flags, options);
-  } else if (flags & GRNXX_IO_TEMPORARY) {
-    pool->open_temporary_pool(path, flags, options);
+  } else if (flags & POOL_TEMPORARY) {
+    pool->open_temporary_pool(flags, path, options);
   } else {
-    pool->open_regular_pool(path, flags, options);
+    pool->open_regular_pool(flags, path, options);
   }
 
   return pool;
 }
 
 BlockInfo *PoolImpl::create_block(uint64_t size) {
-  if (flags_ & GRNXX_IO_READ_ONLY) {
+  if (flags_ & POOL_READ_ONLY) {
     GRNXX_ERROR() << "invalid operation: flags = " << flags_;
     GRNXX_THROW();
   }
@@ -112,7 +112,7 @@ BlockInfo *PoolImpl::get_block_info(uint32_t block_id) {
 }
 
 void PoolImpl::free_block(BlockInfo *block_info) {
-  if (flags_ & GRNXX_IO_READ_ONLY) {
+  if (flags_ & POOL_READ_ONLY) {
     GRNXX_ERROR() << "invalid operation: flags = " << flags_;
     GRNXX_THROW();
   }
@@ -234,7 +234,7 @@ void PoolImpl::unlink(const char *path) {
 
   std::vector<String> paths;
   try {
-    std::unique_ptr<PoolImpl> pool = PoolImpl::open(path, GRNXX_IO_READ_ONLY);
+    std::unique_ptr<PoolImpl> pool = PoolImpl::open(POOL_READ_ONLY, path);
     const PoolOptions &options = pool->options();
     const PoolHeader &header = pool->header();
     const uint16_t max_file_id = static_cast<uint16_t>(
@@ -268,7 +268,7 @@ bool PoolImpl::unlink_if_exists(const char *path) {
 
 PoolImpl::PoolImpl()
   : path_(),
-    flags_(Flags::none()),
+    flags_(PoolFlags::none()),
     header_(nullptr),
     files_(),
     header_chunk_(),
@@ -276,23 +276,24 @@ PoolImpl::PoolImpl()
     block_info_chunks_(),
     inter_thread_chunk_mutex_(MUTEX_UNLOCKED) {}
 
-void PoolImpl::open_anonymous_pool(Flags flags, const PoolOptions &options) {
-  flags_ = GRNXX_IO_ANONYMOUS;
-  if (flags & GRNXX_IO_HUGE_TLB) {
-    flags_ |= GRNXX_IO_HUGE_TLB;
+void PoolImpl::open_anonymous_pool(PoolFlags flags,
+                                   const PoolOptions &options) {
+  flags_ = POOL_ANONYMOUS;
+  if (flags & POOL_HUGE_TLB) {
+    flags_ |= POOL_HUGE_TLB;
   }
   setup_header(options);
 }
 
-void PoolImpl::open_temporary_pool(const char *path, Flags,
+void PoolImpl::open_temporary_pool(PoolFlags, const char *path,
                                    const PoolOptions &options) {
   path_ = Path::full_path(path);
-  flags_ = GRNXX_IO_TEMPORARY;
+  flags_ = POOL_TEMPORARY;
   files_[0].open(FILE_TEMPORARY, path_.c_str());
   setup_header(options);
 }
 
-void PoolImpl::open_regular_pool(const char *path, Flags flags,
+void PoolImpl::open_regular_pool(PoolFlags flags, const char *path,
                                  const PoolOptions &options) {
   if (!path) {
     GRNXX_ERROR() << "invalid argument: path = " << path;
@@ -301,22 +302,22 @@ void PoolImpl::open_regular_pool(const char *path, Flags flags,
   path_ = Path::full_path(path);
 
   FileFlags file_flags = FileFlags::none();
-  if ((~flags & GRNXX_IO_CREATE) && (flags & GRNXX_IO_READ_ONLY)) {
-    flags_ |= GRNXX_IO_READ_ONLY;
+  if ((~flags & POOL_CREATE) && (flags & POOL_READ_ONLY)) {
+    flags_ |= POOL_READ_ONLY;
     file_flags |= FILE_READ_ONLY;
   }
-  if (flags & GRNXX_IO_CREATE) {
-    flags_ |= GRNXX_IO_CREATE;
+  if (flags & POOL_CREATE) {
+    flags_ |= POOL_CREATE;
     file_flags |= FILE_CREATE;
   }
-  if ((~flags & GRNXX_IO_CREATE) || flags & GRNXX_IO_OPEN) {
-    flags_ |= GRNXX_IO_OPEN;
+  if ((~flags & POOL_CREATE) || flags & POOL_OPEN) {
+    flags_ |= POOL_OPEN;
     file_flags |= FILE_OPEN;
   }
   files_[0].open(file_flags, path_.c_str());
   files_[0].set_unlink_at_close(true);
 
-  if (flags & GRNXX_IO_CREATE) {
+  if (flags & POOL_CREATE) {
     if (files_[0].size() == 0) {
       if (files_[0].lock(FILE_LOCK_EXCLUSIVE, Duration::seconds(10))) {
         if (files_[0].size() == 0) {
@@ -336,7 +337,7 @@ void PoolImpl::open_regular_pool(const char *path, Flags flags,
   }
 
   if (!header_) {
-    if ((flags & GRNXX_IO_OPEN) || (~flags & GRNXX_IO_CREATE)) {
+    if ((flags & POOL_OPEN) || (~flags & POOL_CREATE)) {
       const Time start_time = Time::now();
       while ((Time::now() - start_time) < Duration::seconds(10)) {
         if (files_[0].size() != 0) {
@@ -420,15 +421,15 @@ void PoolImpl::mmap_block_info_chunk(uint16_t chunk_id) {
 }
 
 View PoolImpl::mmap_chunk(const ChunkInfo &chunk_info) {
-  if (flags_ & GRNXX_IO_ANONYMOUS) {
+  if (flags_ & POOL_ANONYMOUS) {
     return View(get_view_flags(), chunk_info.size());
   } else {
     File &file = files_[chunk_info.file_id()];
     if (!file) {
       FileFlags file_flags = FILE_CREATE_OR_OPEN;
-      if (flags_ & GRNXX_IO_TEMPORARY) {
+      if (flags_ & POOL_TEMPORARY) {
         file_flags = FILE_TEMPORARY;
-      } else if (flags_ & GRNXX_IO_READ_ONLY) {
+      } else if (flags_ & POOL_READ_ONLY) {
         file_flags = FILE_READ_ONLY;
       }
       const String &path = generate_path(chunk_info.file_id());
@@ -453,11 +454,11 @@ View PoolImpl::mmap_chunk(const ChunkInfo &chunk_info) {
 }
 
 ViewFlags PoolImpl::get_view_flags() const {
-  if (flags_ & GRNXX_IO_ANONYMOUS) {
-    return (flags_ & GRNXX_IO_HUGE_TLB) ? VIEW_HUGE_TLB : ViewFlags::none();
+  if (flags_ & POOL_ANONYMOUS) {
+    return (flags_ & POOL_HUGE_TLB) ? VIEW_HUGE_TLB : ViewFlags::none();
   } else {
     ViewFlags view_flags = VIEW_SHARED;
-    if (flags_ & GRNXX_IO_READ_ONLY) {
+    if (flags_ & POOL_READ_ONLY) {
       view_flags |= VIEW_READ_ONLY;
     }
     return view_flags;

  Modified: lib/io/pool-impl.hpp (+6 -6)
===================================================================
--- lib/io/pool-impl.hpp    2012-12-06 20:04:32 +0900 (ec28c32)
+++ lib/io/pool-impl.hpp    2012-12-06 20:37:22 +0900 (ba4bce1)
@@ -28,7 +28,7 @@ class PoolImpl {
   ~PoolImpl();
 
   static std::unique_ptr<PoolImpl> open(
-      const char *path, Flags flags,
+      PoolFlags flags, const char *path,
       const PoolOptions &options = PoolOptions());
 
   BlockInfo *create_block(uint64_t size);
@@ -57,7 +57,7 @@ class PoolImpl {
   String path() const {
     return path_;
   }
-  Flags flags() const {
+  PoolFlags flags() const {
     return flags_;
   }
   const PoolOptions &options() const {
@@ -78,7 +78,7 @@ class PoolImpl {
 
  private:
   String path_;
-  Flags flags_;
+  PoolFlags flags_;
   PoolHeader *header_;
   File files_[POOL_MAX_NUM_FILES];
   Chunk header_chunk_;
@@ -88,10 +88,10 @@ class PoolImpl {
 
   PoolImpl();
 
-  void open_anonymous_pool(Flags flags, const PoolOptions &options);
-  void open_temporary_pool(const char *path, Flags flags,
+  void open_anonymous_pool(PoolFlags flags, const PoolOptions &options);
+  void open_temporary_pool(PoolFlags flags, const char *path,
                            const PoolOptions &options);
-  void open_regular_pool(const char *path, Flags flags,
+  void open_regular_pool(PoolFlags flags, const char *path,
                          const PoolOptions &options);
 
   void setup_header(const PoolOptions &options);

  Modified: lib/io/pool.cpp (+41 -16)
===================================================================
--- lib/io/pool.cpp    2012-12-06 20:04:32 +0900 (d6bddcb)
+++ lib/io/pool.cpp    2012-12-06 20:37:22 +0900 (80fe107)
@@ -23,6 +23,31 @@
 namespace grnxx {
 namespace io {
 
+#define GRNXX_FLAGS_WRITE(flag) do { \
+  if (flags & flag) { \
+    if (!is_first) { \
+      builder << " | "; \
+    } \
+    builder << #flag; \
+    is_first = false; \
+  } \
+} while (false)
+
+StringBuilder &operator<<(StringBuilder &builder, PoolFlags flags) {
+  if (flags) {
+    bool is_first = true;
+    GRNXX_FLAGS_WRITE(POOL_READ_ONLY);
+    GRNXX_FLAGS_WRITE(POOL_ANONYMOUS);
+    GRNXX_FLAGS_WRITE(POOL_CREATE);
+    GRNXX_FLAGS_WRITE(POOL_HUGE_TLB);
+    GRNXX_FLAGS_WRITE(POOL_OPEN);
+    GRNXX_FLAGS_WRITE(POOL_TEMPORARY);
+    return builder;
+  } else {
+    return builder << "0";
+  }
+}
+
 PoolOptions::PoolOptions()
   : max_block_size_(0),
     min_block_chunk_size_(0),
@@ -227,8 +252,8 @@ StringBuilder &PoolHeader::write_to(StringBuilder &builder) const {
 
 Pool::Pool() : impl_() {}
 
-Pool::Pool(const char *path, Flags flags, const PoolOptions &options)
-  : impl_(PoolImpl::open(path, flags, options)) {}
+Pool::Pool(PoolFlags flags, const char *path, const PoolOptions &options)
+  : impl_(PoolImpl::open(flags, path, options)) {}
 
 Pool::~Pool() {}
 
@@ -246,7 +271,7 @@ Pool &Pool::operator=(Pool &&pool) {
   return *this;
 }
 
-#define GRNXX_IO_POOL_THROW_IF_IMPL_IS_INVALID() do {\
+#define POOL_POOL_THROW_IF_IMPL_IS_INVALID() do {\
   if (!impl_) {\
     GRNXX_ERROR() << "invalid instance: pool = " << *this;\
     GRNXX_THROW();\
@@ -254,61 +279,61 @@ Pool &Pool::operator=(Pool &&pool) {
 } while (false)
 
 const BlockInfo *Pool::create_block(uint64_t size) {
-  GRNXX_IO_POOL_THROW_IF_IMPL_IS_INVALID();
+  POOL_POOL_THROW_IF_IMPL_IS_INVALID();
   return impl_->create_block(size);
 }
 
 const BlockInfo *Pool::get_block_info(uint32_t block_id) {
-  GRNXX_IO_POOL_THROW_IF_IMPL_IS_INVALID();
+  POOL_POOL_THROW_IF_IMPL_IS_INVALID();
   return impl_->get_block_info(block_id);
 }
 
 void *Pool::get_block_address(uint32_t block_id) {
-  GRNXX_IO_POOL_THROW_IF_IMPL_IS_INVALID();
+  POOL_POOL_THROW_IF_IMPL_IS_INVALID();
   return impl_->get_block_address(block_id);
 }
 
 void *Pool::get_block_address(const BlockInfo &block_info) {
-  GRNXX_IO_POOL_THROW_IF_IMPL_IS_INVALID();
+  POOL_POOL_THROW_IF_IMPL_IS_INVALID();
   return impl_->get_block_address(block_info);
 }
 
 void Pool::free_block(uint32_t block_id) {
-  GRNXX_IO_POOL_THROW_IF_IMPL_IS_INVALID();
+  POOL_POOL_THROW_IF_IMPL_IS_INVALID();
   return impl_->free_block(block_id);
 }
 
 void Pool::free_block(const BlockInfo &block_info) {
-  GRNXX_IO_POOL_THROW_IF_IMPL_IS_INVALID();
+  POOL_POOL_THROW_IF_IMPL_IS_INVALID();
   return impl_->free_block(block_info);
 }
 
 String Pool::path() const {
-  GRNXX_IO_POOL_THROW_IF_IMPL_IS_INVALID();
+  POOL_POOL_THROW_IF_IMPL_IS_INVALID();
   return impl_->path();
 }
 
-Flags Pool::flags() const {
-  GRNXX_IO_POOL_THROW_IF_IMPL_IS_INVALID();
+PoolFlags Pool::flags() const {
+  POOL_POOL_THROW_IF_IMPL_IS_INVALID();
   return impl_->flags();
 }
 
 const PoolOptions &Pool::options() const {
-  GRNXX_IO_POOL_THROW_IF_IMPL_IS_INVALID();
+  POOL_POOL_THROW_IF_IMPL_IS_INVALID();
   return impl_->options();
 }
 
 const PoolHeader &Pool::header() const {
-  GRNXX_IO_POOL_THROW_IF_IMPL_IS_INVALID();
+  POOL_POOL_THROW_IF_IMPL_IS_INVALID();
   return impl_->header();
 }
 
 Recycler *Pool::mutable_recycler() {
-  GRNXX_IO_POOL_THROW_IF_IMPL_IS_INVALID();
+  POOL_POOL_THROW_IF_IMPL_IS_INVALID();
   return impl_->mutable_recycler();
 }
 
-#undef GRNXX_IO_POOL_THROW_IF_IMPL_IS_INVALID
+#undef POOL_POOL_THROW_IF_IMPL_IS_INVALID
 
 void Pool::swap(Pool &rhs) {
   impl_.swap(rhs.impl_);

  Modified: lib/io/pool.hpp (+40 -6)
===================================================================
--- lib/io/pool.hpp    2012-12-06 20:04:32 +0900 (dce25f3)
+++ lib/io/pool.hpp    2012-12-06 20:37:22 +0900 (d0877c5)
@@ -21,7 +21,6 @@
 #include "../mutex.hpp"
 #include "../recycler.hpp"
 #include "chunk.hpp"
-#include "flags.hpp"
 
 namespace grnxx {
 namespace io {
@@ -61,6 +60,36 @@ const uint64_t POOL_HEADER_CHUNK_SIZE      = CHUNK_UNIT_SIZE;
 const char POOL_HEADER_FORMAT_STRING[64]  = "grnxx::io::Pool";
 const char POOL_HEADER_VERSION_STRING[64] = "0.0.0";
 
+class PoolFlagsIdentifier {};
+typedef FlagsImpl<PoolFlagsIdentifier> PoolFlags;
+
+// If POOL_READ_ONLY is not specified, a pool is created/opened in
+// read-write mode.
+
+// Read-only mode.
+const PoolFlags POOL_READ_ONLY      = PoolFlags::define(0x0001);
+
+// POOL_ANONYMOUS disables all the flags other than GRNXX_HUGE_TLB and
+// enables POOL_PRIVATE.
+// POOL_CREATE disables POOL_READ_ONLY.
+// POOL_OPEN is enabled if POOL_CREATE is not specified.
+// POOL_TEMPORARY disables other flags.
+
+// Anonymous (non-file-backed) mode.
+const PoolFlags POOL_ANONYMOUS      = PoolFlags::define(0x0010);
+// Create a pool if it does not exist.
+const PoolFlags POOL_CREATE         = PoolFlags::define(0x0040);
+// Try to use huge pages.
+const PoolFlags POOL_HUGE_TLB       = PoolFlags::define(0x0080);
+// Open an existing pool.
+const PoolFlags POOL_OPEN           = PoolFlags::define(0x0100);
+// Create a pool, if it does not exist, or open an existing pool.
+const PoolFlags POOL_CREATE_OR_OPEN = PoolFlags::define(0x0040);
+// Create a temporary pool.
+const PoolFlags POOL_TEMPORARY      = PoolFlags::define(0x0200);
+
+StringBuilder &operator<<(StringBuilder &builder, PoolFlags flags);
+
 class PoolOptions {
  public:
   PoolOptions();
@@ -242,10 +271,7 @@ class PoolImpl;
 class Pool {
  public:
   Pool();
-  // Available flags are as follows:
-  //  GRNXX_IO_READ_ONLY, GRNXX_IO_ANONYMOUS, GRNXX_IO_CREATE,
-  //  GRNXX_IO_OPEN, GRNXX_IO_TEMPORARY.
-  Pool(const char *path, Flags flags = Flags::none(),
+  Pool(PoolFlags flags, const char *path = nullptr,
        const PoolOptions &options = PoolOptions());
   ~Pool();
 
@@ -266,6 +292,14 @@ class Pool {
     return impl_ != rhs.impl_;
   }
 
+  void open(PoolFlags flags, const char *path = nullptr,
+            const PoolOptions &options = PoolOptions()) {
+    *this = Pool(flags, path, options);
+  }
+  void close() {
+    *this = Pool();
+  }
+
   const BlockInfo *create_block(uint64_t size);
 
   const BlockInfo *get_block_info(uint32_t block_id);
@@ -277,7 +311,7 @@ class Pool {
   void free_block(const BlockInfo &block_info);
 
   String path() const;
-  Flags flags() const;
+  PoolFlags flags() const;
   const PoolOptions &options() const;
   const PoolHeader &header() const;
   Recycler *mutable_recycler();

  Modified: lib/io/view.hpp (+3 -3)
===================================================================
--- lib/io/view.hpp    2012-12-06 20:04:32 +0900 (2d012a5)
+++ lib/io/view.hpp    2012-12-06 20:37:22 +0900 (33cb8e2)
@@ -15,8 +15,8 @@
   License along with this library; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
-#ifndef VIEW_VIEW_HPP
-#define VIEW_VIEW_HPP
+#ifndef GRNXX_IO_VIEW_HPP
+#define GRNXX_IO_VIEW_HPP
 
 #include "file.hpp"
 
@@ -120,4 +120,4 @@ inline StringBuilder &operator<<(StringBuilder &builder, const View &view) {
 }  // namespace io
 }  // namespace grnxx
 
-#endif  // VIEW_VIEW_HPP
+#endif  // GRNXX_IO_VIEW_HPP

  Modified: test/test_alpha_blob_vector.cpp (+8 -8)
===================================================================
--- test/test_alpha_blob_vector.cpp    2012-12-06 20:04:32 +0900 (cc93126)
+++ test/test_alpha_blob_vector.cpp    2012-12-06 20:37:22 +0900 (75cc538)
@@ -27,7 +27,7 @@
 void test_basics() {
   grnxx::io::Pool::unlink_if_exists("temp.grn");
 
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_CREATE);
+  grnxx::io::Pool pool(grnxx::io::POOL_CREATE, "temp.grn");
 
   grnxx::alpha::BlobVector vector(grnxx::alpha::BLOB_VECTOR_CREATE, pool);
 
@@ -77,9 +77,9 @@ void test_basics() {
   std::uint32_t block_id = vector.block_id();
 
   vector.close();
-  pool = grnxx::io::Pool();
+  pool.close();
 
-  pool = grnxx::io::Pool("temp.grn", grnxx::io::GRNXX_IO_OPEN);
+  pool.open(grnxx::io::POOL_OPEN, "temp.grn");
   vector.open(pool, block_id);
 
   GRNXX_NOTICE() << "blob_vector = " << vector;
@@ -104,7 +104,7 @@ void test_basics() {
   assert(!vector.get_value(0));
 
   vector.close();
-  pool = grnxx::io::Pool();
+  pool.close();
 
   grnxx::io::Pool::unlink_if_exists("temp.grn");
 }
@@ -117,7 +117,7 @@ void test_sequential_access(int num_loops,
 
   grnxx::io::PoolOptions options;
   options.set_frozen_duration(grnxx::Duration(0));
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY, options);
+  grnxx::io::Pool pool(grnxx::io::POOL_TEMPORARY, "temp.grn", options);
   grnxx::alpha::BlobVector vector(grnxx::alpha::BLOB_VECTOR_CREATE, pool);
 
   for (int loop_id = 0; loop_id < num_loops; ++loop_id) {
@@ -163,7 +163,7 @@ void test_random_access(int num_loops,
 
   grnxx::io::PoolOptions options;
   options.set_frozen_duration(grnxx::Duration(0));
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY, options);
+  grnxx::io::Pool pool(grnxx::io::POOL_TEMPORARY, "temp.grn", options);
   grnxx::alpha::BlobVector vector(grnxx::alpha::BLOB_VECTOR_CREATE, pool);
 
   std::vector<std::uint32_t> ids(num_values);
@@ -255,7 +255,7 @@ void test_reuse(bool enable_reuse) {
   grnxx::io::PoolOptions options;
   options.set_frozen_duration(
       enable_reuse ? grnxx::Duration(0) : grnxx::Duration::days(1));
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY, options);
+  grnxx::io::Pool pool(grnxx::io::POOL_TEMPORARY, "temp.grn", options);
   grnxx::alpha::BlobVector vector(grnxx::alpha::BLOB_VECTOR_CREATE, pool);
 
   std::string value(MAX_LENGTH, 'X');
@@ -275,7 +275,7 @@ void test_mixed() {
 
   std::mt19937 random;
 
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY);
+  grnxx::io::Pool pool(grnxx::io::POOL_TEMPORARY, "temp.grn");
   grnxx::alpha::BlobVector vector(grnxx::alpha::BLOB_VECTOR_CREATE, pool);
 
   std::string value(grnxx::alpha::BLOB_VECTOR_LARGE_VALUE_MIN_LENGTH, 'X');

  Modified: test/test_alpha_vector.cpp (+5 -5)
===================================================================
--- test/test_alpha_vector.cpp    2012-12-06 20:04:32 +0900 (9c3f956)
+++ test/test_alpha_vector.cpp    2012-12-06 20:37:22 +0900 (cd0cc07)
@@ -32,7 +32,7 @@ struct Point {
 void test_basics() {
   grnxx::io::Pool::unlink_if_exists("temp.grn");
 
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_CREATE);
+  grnxx::io::Pool pool(grnxx::io::POOL_CREATE, "temp.grn");
 
   grnxx::alpha::Vector<std::uint32_t> vector(
       grnxx::alpha::VECTOR_CREATE, pool);
@@ -70,9 +70,9 @@ void test_basics() {
   const std::uint32_t block_id = vector.block_id();
 
   vector.close();
-  pool = grnxx::io::Pool();
+  pool.close();
 
-  pool = grnxx::io::Pool("temp.grn", grnxx::io::GRNXX_IO_OPEN);
+  pool.open(grnxx::io::POOL_OPEN, "temp.grn");
 
   vector.open(pool, block_id);
 
@@ -143,7 +143,7 @@ void test_basics() {
 
   point_vector.close();
 
-  pool = grnxx::io::Pool();
+  pool.close();
   grnxx::io::Pool::unlink_if_exists("temp.grn");
 }
 
@@ -151,7 +151,7 @@ template <typename T>
 void test_times() {
   enum { VECTOR_SIZE = 1 << 20 };
 
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY);
+  grnxx::io::Pool pool(grnxx::io::POOL_TEMPORARY, "temp.grn");
 
   grnxx::alpha::Vector<T> vector(grnxx::alpha::VECTOR_CREATE, pool);
 

  Modified: test/test_db_array.cpp (+2 -2)
===================================================================
--- test/test_db_array.cpp    2012-12-06 20:04:32 +0900 (fc5ded0)
+++ test/test_db_array.cpp    2012-12-06 20:37:22 +0900 (277f3d0)
@@ -38,7 +38,7 @@ void test_array_1() {
     vector[i] = random();
   }
 
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_CREATE);
+  grnxx::io::Pool pool(grnxx::io::POOL_CREATE, "temp.grn");
 
   grnxx::db::Array<std::uint32_t> array;
   array.create(&pool, VECTOR_SIZE);
@@ -74,7 +74,7 @@ void test_array_1() {
 void test_array_2() {
   enum { VECTOR_SIZE = 1 << 24 };
 
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY);
+  grnxx::io::Pool pool(grnxx::io::POOL_TEMPORARY, "temp.grn");
 
   grnxx::db::Array<std::uint8_t[3]> array;
   array.create(&pool, VECTOR_SIZE);

  Modified: test/test_db_blob_vector.cpp (+7 -7)
===================================================================
--- test/test_db_blob_vector.cpp    2012-12-06 20:04:32 +0900 (36a2f58)
+++ test/test_db_blob_vector.cpp    2012-12-06 20:37:22 +0900 (5939cd1)
@@ -28,7 +28,7 @@
 void test_basics() {
   grnxx::io::Pool::unlink_if_exists("temp.grn");
 
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_CREATE);
+  grnxx::io::Pool pool(grnxx::io::POOL_CREATE, "temp.grn");
 
   grnxx::db::BlobVector vector;
   vector.create(pool);
@@ -78,9 +78,9 @@ void test_basics() {
   std::uint32_t block_id = vector.block_id();
 
   vector.close();
-  pool = grnxx::io::Pool();
+  pool.close();
 
-  pool = grnxx::io::Pool("temp.grn", grnxx::io::GRNXX_IO_OPEN);
+  pool.open(grnxx::io::POOL_OPEN, "temp.grn");
   vector.open(pool, block_id);
 
   GRNXX_NOTICE() << "blob_vector = " << vector;
@@ -102,7 +102,7 @@ void test_basics() {
   assert(length == values[4].length());
 
   vector.close();
-  pool = grnxx::io::Pool();
+  pool.close();
 
   grnxx::io::Pool::unlink_if_exists("temp.grn");
 }
@@ -122,7 +122,7 @@ void test_random_values(std::size_t num_values,
     }
   }
 
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY);
+  grnxx::io::Pool pool(grnxx::io::POOL_TEMPORARY, "temp.grn");
 
   grnxx::db::BlobVector vector;
   vector.create(pool);
@@ -183,7 +183,7 @@ void test_random_updates(grnxx::Duration frozen_duration) {
   grnxx::io::PoolOptions options;
   options.set_frozen_duration(frozen_duration);
 
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY, options);
+  grnxx::io::Pool pool(grnxx::io::POOL_TEMPORARY, "temp.grn", options);
 
   grnxx::db::BlobVector vector;
   vector.create(pool);
@@ -258,7 +258,7 @@ void test_random() {
     }
   }
 
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY);
+  grnxx::io::Pool pool(grnxx::io::POOL_TEMPORARY, "temp.grn");
 
   grnxx::db::BlobVector vector;
   vector.create(pool);

  Modified: test/test_db_vector.cpp (+5 -5)
===================================================================
--- test/test_db_vector.cpp    2012-12-06 20:04:32 +0900 (1e1894a)
+++ test/test_db_vector.cpp    2012-12-06 20:37:22 +0900 (b9945d9)
@@ -32,7 +32,7 @@ struct Point {
 void test_basics() {
   grnxx::io::Pool::unlink_if_exists("temp.grn");
 
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_CREATE);
+  grnxx::io::Pool pool(grnxx::io::POOL_CREATE, "temp.grn");
 
   grnxx::db::Vector<std::uint32_t> vector;
   vector.create(&pool);
@@ -69,9 +69,9 @@ void test_basics() {
   const std::uint32_t block_id = vector.block_id();
 
   vector.close();
-  pool = grnxx::io::Pool();
+  pool.close();
 
-  pool = grnxx::io::Pool("temp.grn", grnxx::io::GRNXX_IO_OPEN);
+  pool.open(grnxx::io::POOL_OPEN, "temp.grn");
 
   vector.open(&pool, block_id);
 
@@ -141,8 +141,8 @@ void test_basics() {
   assert(point_vector[1 << 30].y == 654);
 
   point_vector.close();
+  pool.close();
 
-  pool = grnxx::io::Pool();
   grnxx::io::Pool::unlink_if_exists("temp.grn");
 }
 
@@ -150,7 +150,7 @@ template <typename T>
 void test_times() {
   enum { VECTOR_SIZE = 1 << 20 };
 
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY);
+  grnxx::io::Pool pool(grnxx::io::POOL_TEMPORARY, "temp.grn");
 
   grnxx::db::Vector<T> vector;
   vector.create(&pool);

  Modified: test/test_io_pool.cpp (+28 -28)
===================================================================
--- test/test_io_pool.cpp    2012-12-06 20:04:32 +0900 (35989fe)
+++ test/test_io_pool.cpp    2012-12-06 20:37:22 +0900 (5beb7ee)
@@ -30,21 +30,21 @@ void test_constructor() {
   grnxx::io::Pool pool;
   assert(!pool);
 
-  pool = grnxx::io::Pool("temp.grn", grnxx::io::GRNXX_IO_CREATE);
+  pool.open(grnxx::io::POOL_CREATE, "temp.grn");
   assert(pool);
-  assert(pool.flags() & grnxx::io::GRNXX_IO_CREATE);
+  assert(pool.flags() & grnxx::io::POOL_CREATE);
 
-  pool = grnxx::io::Pool("temp.grn");
+  pool.open(grnxx::io::PoolFlags::none(), "temp.grn");
   assert(pool);
-  assert(pool.flags() & grnxx::io::GRNXX_IO_OPEN);
+  assert(pool.flags() & grnxx::io::POOL_OPEN);
 
-  pool = grnxx::io::Pool("temp.grn", grnxx::io::GRNXX_IO_ANONYMOUS);
+  pool.open(grnxx::io::POOL_ANONYMOUS, "temp.grn");
   assert(pool);
-  assert(pool.flags() & grnxx::io::GRNXX_IO_ANONYMOUS);
+  assert(pool.flags() & grnxx::io::POOL_ANONYMOUS);
 
-  pool = grnxx::io::Pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY);
+  pool.open(grnxx::io::POOL_TEMPORARY, "temp.grn");
   assert(pool);
-  assert(pool.flags() & grnxx::io::GRNXX_IO_TEMPORARY);
+  assert(pool.flags() & grnxx::io::POOL_TEMPORARY);
 
   grnxx::io::Pool::unlink_if_exists("temp.grn");
 }
@@ -53,18 +53,18 @@ void test_compare() {
   grnxx::io::Pool pool;
   assert(pool == pool);
 
-  grnxx::io::Pool pool2("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY);
+  grnxx::io::Pool pool2(grnxx::io::POOL_TEMPORARY, "temp.grn");
   assert(pool != pool2);
   assert(pool2 == pool2);
 
-  grnxx::io::Pool pool3("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY);
+  grnxx::io::Pool pool3(grnxx::io::POOL_TEMPORARY, "temp.grn");
   assert(pool != pool3);
   assert(pool2 != pool3);
   assert(pool3 == pool3);
 }
 
 void test_copy() {
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY);
+  grnxx::io::Pool pool(grnxx::io::POOL_TEMPORARY, "temp.grn");
 
   grnxx::io::Pool pool2(pool);
   assert(pool == pool2);
@@ -75,7 +75,7 @@ void test_copy() {
 }
 
 void test_move() {
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY);
+  grnxx::io::Pool pool(grnxx::io::POOL_TEMPORARY, "temp.grn");
   grnxx::io::Pool pool_copy(pool);
 
   grnxx::io::Pool pool2(std::move(pool));
@@ -87,8 +87,8 @@ void test_move() {
 }
 
 void test_swap() {
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY);
-  grnxx::io::Pool pool2("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY);
+  grnxx::io::Pool pool(grnxx::io::POOL_TEMPORARY, "temp.grn");
+  grnxx::io::Pool pool2(grnxx::io::POOL_TEMPORARY, "temp.grn");
 
   grnxx::io::Pool pool_copy(pool);
   grnxx::io::Pool pool2_copy(pool2);
@@ -107,7 +107,7 @@ void test_exists() {
 
   assert(!grnxx::io::Pool::exists("temp.grn"));
 
-  grnxx::io::Pool("temp.grn", grnxx::io::GRNXX_IO_CREATE);
+  grnxx::io::Pool(grnxx::io::POOL_CREATE, "temp.grn");
 
   assert(grnxx::io::Pool::exists("temp.grn"));
 
@@ -117,7 +117,7 @@ void test_exists() {
 void test_unlink() {
   grnxx::io::Pool::unlink_if_exists("temp.grn");
 
-  grnxx::io::Pool("temp.grn", grnxx::io::GRNXX_IO_CREATE);
+  grnxx::io::Pool(grnxx::io::POOL_CREATE, "temp.grn");
 
   grnxx::io::Pool::unlink("temp.grn");
 }
@@ -125,19 +125,19 @@ void test_unlink() {
 void test_unlink_if_exists() {
   grnxx::io::Pool::unlink_if_exists("temp.grn");
 
-  grnxx::io::Pool("temp.grn", grnxx::io::GRNXX_IO_CREATE);
+  grnxx::io::Pool(grnxx::io::POOL_CREATE, "temp.grn");
 
   assert(grnxx::io::Pool::unlink_if_exists("temp.grn"));
 }
 
 void test_write_to() {
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY);
+  grnxx::io::Pool pool(grnxx::io::POOL_TEMPORARY, "temp.grn");
 
   GRNXX_NOTICE() << "pool = " << pool;
 }
 
 void test_create_block() {
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_ANONYMOUS);
+  grnxx::io::Pool pool(grnxx::io::POOL_ANONYMOUS, "temp.grn");
 
   // Create a minimum-size block.
   const grnxx::io::BlockInfo *block_info = pool.create_block(0);
@@ -148,7 +148,7 @@ void test_create_block() {
   assert(block_info->offset() == 0);
   assert(block_info->size() == grnxx::io::BLOCK_UNIT_SIZE);
 
-  pool = grnxx::io::Pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY);
+  pool.open(grnxx::io::POOL_TEMPORARY, "temp.grn");
 
   // Create a maximum-size block.
   block_info = pool.create_block(pool.options().max_block_chunk_size());
@@ -163,7 +163,7 @@ void test_create_block() {
 
   std::mt19937 random;
 
-  pool = grnxx::io::Pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY);
+  pool.open(grnxx::io::POOL_TEMPORARY, "temp.grn");
 
   // Create small blocks.
   const std::uint64_t SMALL_MAX_SIZE = std::uint64_t(1) << 16;
@@ -185,7 +185,7 @@ void test_create_block() {
 }
 
 void test_get_block_info() {
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_ANONYMOUS);
+  grnxx::io::Pool pool(grnxx::io::POOL_ANONYMOUS, "temp.grn");
 
   const grnxx::io::BlockInfo *block_info;
 
@@ -203,7 +203,7 @@ void test_get_block_info() {
 }
 
 void test_get_block_address() {
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_ANONYMOUS);
+  grnxx::io::Pool pool(grnxx::io::POOL_ANONYMOUS, "temp.grn");
 
   const int NUM_BLOCKS = 1 << 10;
   const std::uint32_t MAX_SIZE = 1 << 16;
@@ -233,7 +233,7 @@ void test_get_block_address() {
 }
 
 void test_free_block() {
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_ANONYMOUS);
+  grnxx::io::Pool pool(grnxx::io::POOL_ANONYMOUS, "temp.grn");
 
   const grnxx::io::BlockInfo *block_info = pool.create_block(0);
   pool.free_block(block_info->id());
@@ -248,7 +248,7 @@ void test_free_block() {
   std::mt19937 random;
   std::vector<const grnxx::io::BlockInfo *> block_infos;
 
-  pool = grnxx::io::Pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY);
+  pool.open(grnxx::io::POOL_TEMPORARY, "temp.grn");
 
   // Create small blocks.
   const std::uint64_t SMALL_MAX_SIZE = std::uint64_t(1) << 16;
@@ -280,7 +280,7 @@ void test_unfreeze_block() {
   grnxx::io::PoolOptions options;
   options.set_frozen_duration(grnxx::Duration(0));
 
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY, options);
+  grnxx::io::Pool pool(grnxx::io::POOL_TEMPORARY, "temp.grn", options);
   assert(pool.options().frozen_duration() == grnxx::Duration(0));
 
   const grnxx::io::BlockInfo *block_info = pool.create_block(0);
@@ -315,7 +315,7 @@ void test_random_queries() {
   grnxx::io::PoolOptions options;
   options.set_frozen_duration(grnxx::Duration(0));
 
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_ANONYMOUS, options);
+  grnxx::io::Pool pool(grnxx::io::POOL_ANONYMOUS, "temp.grn", options);
 
   const int OPERATION_COUNT = 1 << 18;
 
@@ -358,7 +358,7 @@ void benchmark() {
   std::vector<const grnxx::io::BlockInfo *> block_infos;
   block_infos.resize(OPERATION_COUNT);
 
-  grnxx::io::Pool pool("temp.grn", grnxx::io::GRNXX_IO_TEMPORARY);
+  grnxx::io::Pool pool(grnxx::io::POOL_TEMPORARY, "temp.grn");
 
   // Measure the speed of create_block().
   grnxx::Time start_time = grnxx::Time::now();
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Zurück zum Archiv-Index