[Groonga-commit] groonga/grnxx [master] Make grnxx::FlagsImpl<T> a POD type.

アーカイブの一覧に戻る

susumu.yata null+****@clear*****
Thu Dec 6 14:27:41 JST 2012


susumu.yata	2012-12-06 14:27:41 +0900 (Thu, 06 Dec 2012)

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

  Log:
    Make grnxx::FlagsImpl<T> a POD type.
    
    Explicit initialization is required for zero-fill.
    Add grnxx::FlagsImpl<T>::none() to get a zero flags.

  Modified files:
    lib/db/blob_vector.cpp
    lib/flags_impl.hpp
    lib/io/file-posix.cpp
    lib/io/file-windows.cpp
    lib/io/file.cpp
    lib/io/file.hpp
    lib/io/pool-impl.cpp
    lib/io/pool.hpp
    lib/io/view-posix.cpp
    lib/io/view-windows.cpp
    lib/io/view.cpp
    lib/logger.cpp
    lib/string_builder.hpp
    lib/string_format.hpp

  Modified: lib/db/blob_vector.cpp (+1 -1)
===================================================================
--- lib/db/blob_vector.cpp    2012-12-06 13:52:54 +0900 (351dd5b)
+++ lib/db/blob_vector.cpp    2012-12-06 14:27:41 +0900 (f762202)
@@ -322,7 +322,7 @@ BlobVectorLargeValueCell BlobVector::create_large_value_cell(
         header->set_type(BLOB_VECTOR_ACTIVE_VALUE);
       }
     } else {
-      BlobVectorLargeValueFlags flags;
+      BlobVectorLargeValueFlags flags = BlobVectorLargeValueFlags::none();
       uint64_t prev_capacity = 0;
 
       const uint64_t prev_offset = header_->rearmost_large_value_offset();

  Modified: lib/flags_impl.hpp (+9 -2)
===================================================================
--- lib/flags_impl.hpp    2012-12-06 13:52:54 +0900 (539ba86)
+++ lib/flags_impl.hpp    2012-12-06 14:27:41 +0900 (6c990e5)
@@ -28,8 +28,7 @@ class FlagsImpl {
   typedef T Identifier;
   typedef U Type;
 
-  constexpr FlagsImpl() : flags_(0) {}
-  constexpr FlagsImpl(const FlagsImpl &flags) : flags_(flags.flags_) {}
+  FlagsImpl() = default;
 
   constexpr explicit operator bool() {
     return flags_ != 0;
@@ -68,6 +67,9 @@ class FlagsImpl {
     return *this;
   }
 
+  static constexpr FlagsImpl none() {
+    return FlagsImpl(0);
+  }
   static constexpr FlagsImpl define(Type flags) {
     return FlagsImpl(flags);
   }
@@ -78,6 +80,11 @@ class FlagsImpl {
   explicit constexpr FlagsImpl(Type flags) : flags_(flags) {}
 };
 
+class FlagsImplExampleIdentifier {};
+typedef FlagsImpl<FlagsImplExampleIdentifier> FlagsImplExample;
+
+GRNXX_ASSERT_POD(FlagsImplExample);
+
 }  // namespace grnxx
 
 #endif  // GRNXX_FLAGS_IMPL_HPP

  Modified: lib/io/file-posix.cpp (+1 -1)
===================================================================
--- lib/io/file-posix.cpp    2012-12-06 13:52:54 +0900 (febf57a)
+++ lib/io/file-posix.cpp    2012-12-06 14:27:41 +0900 (4f0b140)
@@ -355,7 +355,7 @@ bool FileImpl::unlink_if_exists(const char *path) {
 }
 
 FileImpl::FileImpl()
-  : path_(), flags_(), fd_(-1), locked_(false),
+  : path_(), flags_(Flags::none()), fd_(-1), locked_(false),
     unlink_at_close_(false) {}
 
 void FileImpl::open_regular_file(const char *path, Flags flags,

  Modified: lib/io/file-windows.cpp (+1 -1)
===================================================================
--- lib/io/file-windows.cpp    2012-12-06 13:52:54 +0900 (36c5e7d)
+++ lib/io/file-windows.cpp    2012-12-06 14:27:41 +0900 (e6fb0d3)
@@ -334,7 +334,7 @@ bool FileImpl::unlink_if_exists(const char *path) {
 }
 
 FileImpl::FileImpl()
-  : path_(), flags_(), handle_(INVALID_HANDLE_VALUE),
+  : path_(), flags_(Flags::none()), handle_(INVALID_HANDLE_VALUE),
     append_mode_(false), locked_(false), unlink_at_close_(false) {}
 
 void FileImpl::open_regular_file(const char *path, Flags flags,

  Modified: lib/io/file.cpp (+1 -1)
===================================================================
--- lib/io/file.cpp    2012-12-06 13:52:54 +0900 (c219763)
+++ lib/io/file.cpp    2012-12-06 14:27:41 +0900 (854e57b)
@@ -130,7 +130,7 @@ String File::path() const {
 }
 
 Flags File::flags() const {
-  return impl_ ? impl_->flags() : Flags();
+  return impl_ ? impl_->flags() : Flags::none();
 }
 
 const void *File::handle() const {

  Modified: lib/io/file.hpp (+1 -1)
===================================================================
--- lib/io/file.hpp    2012-12-06 13:52:54 +0900 (a872e6e)
+++ lib/io/file.hpp    2012-12-06 14:27:41 +0900 (697254e)
@@ -35,7 +35,7 @@ class File {
   //  GRNXX_IO_READ_ONLY, GRNXX_IO_WRITE_ONLY, GRNXX_IO_APPEND,
   //  GRNXX_IO_CREATE, GRNXX_IO_OPEN, GRNXX_IO_TEMPORARY, GRNXX_IO_TRUNCATE.
   // Windows ignores permission.
-  explicit File(const char *path, Flags flags = Flags(),
+  explicit File(const char *path, Flags flags = Flags::none(),
                 int permission = 0644);
   ~File();
 

  Modified: lib/io/pool-impl.cpp (+3 -3)
===================================================================
--- lib/io/pool-impl.cpp    2012-12-06 13:52:54 +0900 (130c87f)
+++ lib/io/pool-impl.cpp    2012-12-06 14:27:41 +0900 (0ddbf97)
@@ -268,7 +268,7 @@ bool PoolImpl::unlink_if_exists(const char *path) {
 
 PoolImpl::PoolImpl()
   : path_(),
-    flags_(),
+    flags_(Flags::none()),
     header_(nullptr),
     files_(),
     header_chunk_(),
@@ -300,7 +300,7 @@ void PoolImpl::open_regular_pool(const char *path, Flags flags,
   }
   path_ = Path::full_path(path);
 
-  Flags file_flags;
+  Flags file_flags = Flags::none();
   if ((~flags & GRNXX_IO_CREATE) && (flags & GRNXX_IO_READ_ONLY)) {
     flags_ |= GRNXX_IO_READ_ONLY;
     file_flags |= GRNXX_IO_READ_ONLY;
@@ -454,7 +454,7 @@ View PoolImpl::mmap_chunk(const ChunkInfo &chunk_info) {
 
 Flags PoolImpl::get_view_flags() const {
   if (flags_ & GRNXX_IO_ANONYMOUS) {
-    return (flags_ & GRNXX_IO_HUGE_TLB) ? GRNXX_IO_HUGE_TLB : Flags();
+    return (flags_ & GRNXX_IO_HUGE_TLB) ? GRNXX_IO_HUGE_TLB : Flags::none();
   } else {
     Flags view_flags = GRNXX_IO_SHARED;
     if (flags_ & GRNXX_IO_READ_ONLY) {

  Modified: lib/io/pool.hpp (+1 -1)
===================================================================
--- lib/io/pool.hpp    2012-12-06 13:52:54 +0900 (ff05b5f)
+++ lib/io/pool.hpp    2012-12-06 14:27:41 +0900 (da1367f)
@@ -244,7 +244,7 @@ class 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(),
+  Pool(const char *path, Flags flags = Flags::none(),
        const PoolOptions &options = PoolOptions());
   ~Pool();
 

  Modified: lib/io/view-posix.cpp (+2 -1)
===================================================================
--- lib/io/view-posix.cpp    2012-12-06 13:52:54 +0900 (e6629cb)
+++ lib/io/view-posix.cpp    2012-12-06 14:27:41 +0900 (790c67d)
@@ -97,7 +97,8 @@ void ViewImpl::sync(uint64_t offset, uint64_t size) {
 }
 
 ViewImpl::ViewImpl()
-  : file_(), flags_(), address_(MAP_FAILED), offset_(0), size_(0) {}
+  : file_(), flags_(Flags::none()),
+    address_(MAP_FAILED), offset_(0), size_(0) {}
 
 #ifdef MAP_HUGETLB
 void ViewImpl::map_on_memory(Flags flags, uint64_t size) {

  Modified: lib/io/view-windows.cpp (+1 -1)
===================================================================
--- lib/io/view-windows.cpp    2012-12-06 13:52:54 +0900 (d938e5b)
+++ lib/io/view-windows.cpp    2012-12-06 14:27:41 +0900 (4aa7c62)
@@ -109,7 +109,7 @@ void ViewImpl::sync(uint64_t offset, uint64_t size) {
 }
 
 ViewImpl::ViewImpl()
-  : file_(), flags_(), handle_(nullptr),
+  : file_(), flags_(Flags::none()), handle_(nullptr),
     address_(nullptr), offset_(0), size_(0) {}
 
 void ViewImpl::map_on_memory(Flags, uint64_t size) {

  Modified: lib/io/view.cpp (+1 -1)
===================================================================
--- lib/io/view.cpp    2012-12-06 13:52:54 +0900 (bbcede3)
+++ lib/io/view.cpp    2012-12-06 14:27:41 +0900 (12e2258)
@@ -70,7 +70,7 @@ File View::file() const {
 }
 
 Flags View::flags() const {
-  return impl_ ? impl_->flags() : Flags();
+  return impl_ ? impl_->flags() : Flags::none();
 }
 
 void *View::address() const {

  Modified: lib/logger.cpp (+2 -2)
===================================================================
--- lib/logger.cpp    2012-12-06 13:52:54 +0900 (75c26d0)
+++ lib/logger.cpp    2012-12-06 14:27:41 +0900 (6aa3db1)
@@ -132,14 +132,14 @@ volatile bool LoggerSingleton::initialized_ = false;
 LoggerSingleton * volatile LoggerSingleton::instance_ = nullptr;
 Mutex LoggerSingleton::mutex_(MUTEX_UNLOCKED);
 
-LoggerFlags Logger::flags_ = LoggerFlags();
+LoggerFlags Logger::flags_ = LoggerFlags::none();
 int Logger::max_level_ = NOTICE_LOGGER;
 int Logger::backtrace_level_ = ERROR_LOGGER;
 
 Logger::Logger(const char *file, int line, const char *func, int level)
   : buf_(),
     builder_(buf_, (Logger::flags() & LOGGER_ENABLE_AUTO_RESIZE) ?
-                   STRING_BUILDER_AUTO_RESIZE : StringBuilderFlags()),
+                   STRING_BUILDER_AUTO_RESIZE : StringBuilderFlags::none()),
     file_(file),
     line_(line),
     func_(func),

  Modified: lib/string_builder.hpp (+4 -4)
===================================================================
--- lib/string_builder.hpp    2012-12-06 13:52:54 +0900 (0406c6b)
+++ lib/string_builder.hpp    2012-12-06 14:27:41 +0900 (9aa9bbc)
@@ -34,7 +34,7 @@ const StringBuilderFlags STRING_BUILDER_AUTO_RESIZE =
 
 class StringBuilder {
  public:
-  explicit StringBuilder(StringBuilderFlags flags = StringBuilderFlags())
+  explicit StringBuilder(StringBuilderFlags flags = StringBuilderFlags::none())
     : buf_(),
       begin_(nullptr),
       end_(nullptr),
@@ -43,11 +43,11 @@ class StringBuilder {
       failed_(false) {}
 
   explicit StringBuilder(size_t size,
-                         StringBuilderFlags flags = StringBuilderFlags());
+                         StringBuilderFlags flags = StringBuilderFlags::none());
 
   template <size_t T>
   explicit StringBuilder(char (&buf)[T],
-                         StringBuilderFlags flags = StringBuilderFlags())
+                         StringBuilderFlags flags = StringBuilderFlags::none())
     : buf_(),
       begin_(buf),
       end_(buf + T - 1),
@@ -58,7 +58,7 @@ class StringBuilder {
   }
 
   StringBuilder(char *buf, size_t size,
-                StringBuilderFlags flags = StringBuilderFlags())
+                StringBuilderFlags flags = StringBuilderFlags::none())
     : buf_(),
       begin_(buf),
       end_(buf + size - 1),

  Modified: lib/string_format.hpp (+1 -1)
===================================================================
--- lib/string_format.hpp    2012-12-06 13:52:54 +0900 (22d4efe)
+++ lib/string_format.hpp    2012-12-06 14:27:41 +0900 (e35e54b)
@@ -95,7 +95,7 @@ StringBuilder &operator<<(StringBuilder &builder,
   char local_buf[STRING_BUILDER_BUF_SIZE_MIN];
   const StringBuilderFlags local_flags =
       (alignment.width() >= sizeof(local_buf)) ?
-          STRING_BUILDER_AUTO_RESIZE : StringBuilderFlags();
+          STRING_BUILDER_AUTO_RESIZE : StringBuilderFlags::none();
 
   StringBuilder local_builder(local_buf, local_flags);
   local_builder << alignment.value();
-------------- next part --------------
HTML����������������������������...
ダウンロード 



More information about the Groonga-commit mailing list
アーカイブの一覧に戻る