susumu.yata
null+****@clear*****
Wed Jun 5 13:36:17 JST 2013
susumu.yata 2013-06-05 13:36:17 +0900 (Wed, 05 Jun 2013) New Revision: 52ca8d67007a4555517eb9c385ea0b95c89aff85 https://github.com/groonga/grnxx/commit/52ca8d67007a4555517eb9c385ea0b95c89aff85 Message: Move headers into subdirectories. Copied files: lib/grnxx/map/array_map/header.cpp (from lib/grnxx/map/array_map/dummy.cpp) lib/grnxx/map/array_map/header.hpp (from lib/grnxx/map/array_map/dummy.cpp) lib/grnxx/map/hash_table/header.cpp (from lib/grnxx/map/array_map/dummy.cpp) lib/grnxx/map/hash_table/header.hpp (from lib/grnxx/map/array_map/dummy.cpp) Modified files: lib/grnxx/map/array_map.cpp lib/grnxx/map/array_map.hpp lib/grnxx/map/array_map/Makefile.am lib/grnxx/map/array_map/dummy.cpp lib/grnxx/map/hash_table.cpp lib/grnxx/map/hash_table.hpp lib/grnxx/map/hash_table/Makefile.am lib/grnxx/map/hash_table/link_array.hpp Modified: lib/grnxx/map/array_map.cpp (+7 -23) =================================================================== --- lib/grnxx/map/array_map.cpp 2013-06-05 12:04:49 +0900 (e22de5a) +++ lib/grnxx/map/array_map.cpp 2013-06-05 13:36:17 +0900 (857aa3a) @@ -22,29 +22,13 @@ #include "grnxx/bytes.hpp" #include "grnxx/geo_point.hpp" #include "grnxx/logger.hpp" +#include "grnxx/map/array_map/header.hpp" #include "grnxx/map/helper.hpp" #include "grnxx/storage.hpp" namespace grnxx { namespace map { -struct ArrayMapHeader { - MapType map_type; - uint32_t keys_storage_node_id; - uint32_t bits_storage_node_id; - int64_t max_key_id; - uint64_t num_keys; - - ArrayMapHeader(); -}; - -ArrayMapHeader::ArrayMapHeader() - : map_type(MAP_ARRAY), - keys_storage_node_id(STORAGE_INVALID_NODE_ID), - bits_storage_node_id(STORAGE_INVALID_NODE_ID), - max_key_id(MAP_MIN_KEY_ID - 1), - num_keys(0) {} - template <typename T> ArrayMap<T>::ArrayMap() : storage_(nullptr), @@ -304,13 +288,13 @@ bool ArrayMap<T>::create_map(Storage *storage, uint32_t storage_node_id, const MapOptions &) { storage_ = storage; StorageNode storage_node = - storage->create_node(storage_node_id, sizeof(ArrayMapHeader)); + storage->create_node(storage_node_id, sizeof(Header)); if (!storage_node) { return false; } storage_node_id_ = storage_node.id(); - header_ = static_cast<ArrayMapHeader *>(storage_node.body()); - *header_ = ArrayMapHeader(); + header_ = static_cast<Header *>(storage_node.body()); + *header_ = Header(); keys_.reset(KeyArray::create(storage, storage_node_id_)); bits_.reset(BitArray::create(storage, storage_node_id_)); if (!keys_ || !bits_) { @@ -329,13 +313,13 @@ bool ArrayMap<T>::open_map(Storage *storage, uint32_t storage_node_id) { if (!storage_node) { return false; } - if (storage_node.size() < sizeof(ArrayMapHeader)) { + if (storage_node.size() < sizeof(Header)) { GRNXX_ERROR() << "invalid format: size = " << storage_node.size() - << ", header_size = " << sizeof(ArrayMapHeader); + << ", header_size = " << sizeof(Header); return false; } storage_node_id_ = storage_node_id; - header_ = static_cast<ArrayMapHeader *>(storage_node.body()); + header_ = static_cast<Header *>(storage_node.body()); keys_.reset(KeyArray::open(storage, header_->keys_storage_node_id)); bits_.reset(BitArray::open(storage, header_->bits_storage_node_id)); if (!keys_ || !bits_) { Modified: lib/grnxx/map/array_map.hpp (+6 -2) =================================================================== --- lib/grnxx/map/array_map.hpp 2013-06-05 12:04:49 +0900 (070886d) +++ lib/grnxx/map/array_map.hpp 2013-06-05 13:36:17 +0900 (55678de) @@ -32,11 +32,15 @@ namespace grnxx { class Storage; namespace map { +namespace array_map { -struct ArrayMapHeader; +struct Header; + +} // namespace array_map template <typename T> class ArrayMap : public Map<T> { + using Header = array_map::Header; using KeyArray = typename array_map::KeyArray<T>::Type; using BitArray = typename array_map::BitArray<T>::Type; using BitArrayUnit = typename BitArray::Unit; @@ -73,7 +77,7 @@ class ArrayMap : public Map<T> { private: Storage *storage_; uint32_t storage_node_id_; - ArrayMapHeader *header_; + Header *header_; std::unique_ptr<KeyArray> keys_; std::unique_ptr<BitArray> bits_; Modified: lib/grnxx/map/array_map/Makefile.am (+3 -1) =================================================================== --- lib/grnxx/map/array_map/Makefile.am 2013-06-05 12:04:49 +0900 (865e8f4) +++ lib/grnxx/map/array_map/Makefile.am 2013-06-05 13:36:17 +0900 (c9b5701) @@ -3,10 +3,12 @@ noinst_LTLIBRARIES = libgrnxx_map_array_map.la libgrnxx_map_array_map_la_LDFLAGS = @AM_LTLDFLAGS@ libgrnxx_map_array_map_la_SOURCES = \ - dummy.cpp + dummy.cpp \ + header.cpp libgrnxx_map_array_map_includedir = ${includedir}/grnxx/map/array_map libgrnxx_map_array_map_include_HEADERS = \ bit_array.hpp \ dummy.hpp \ + header.hpp \ key_array.hpp Modified: lib/grnxx/map/array_map/dummy.cpp (+1 -0) =================================================================== --- lib/grnxx/map/array_map/dummy.cpp 2013-06-05 12:04:49 +0900 (1df8db3) +++ lib/grnxx/map/array_map/dummy.cpp 2013-06-05 13:36:17 +0900 (04c0d4f) @@ -18,6 +18,7 @@ #include "grnxx/map/array_map/dummy.hpp" #include "grnxx/map/array_map/bit_array.hpp" +#include "grnxx/map/array_map/header.hpp" #include "grnxx/map/array_map/key_array.hpp" namespace grnxx { Copied: lib/grnxx/map/array_map/header.cpp (+9 -3) 76% =================================================================== --- lib/grnxx/map/array_map/dummy.cpp 2013-06-05 12:04:49 +0900 (1df8db3) +++ lib/grnxx/map/array_map/header.cpp 2013-06-05 13:36:17 +0900 (28a5644) @@ -15,15 +15,21 @@ 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 "grnxx/map/array_map/dummy.hpp" +#include "grnxx/map/array_map/header.hpp" -#include "grnxx/map/array_map/bit_array.hpp" -#include "grnxx/map/array_map/key_array.hpp" +#include "grnxx/storage.hpp" namespace grnxx { namespace map { namespace array_map { +Header::Header() + : map_type(MAP_ARRAY), + keys_storage_node_id(STORAGE_INVALID_NODE_ID), + bits_storage_node_id(STORAGE_INVALID_NODE_ID), + max_key_id(MAP_MIN_KEY_ID - 1), + num_keys(0) {} + } // namespace array_map } // namespace map } // namespace grnxx Copied: lib/grnxx/map/array_map/header.hpp (+18 -3) 71% =================================================================== --- lib/grnxx/map/array_map/dummy.cpp 2013-06-05 12:04:49 +0900 (1df8db3) +++ lib/grnxx/map/array_map/header.hpp 2013-06-05 13:36:17 +0900 (5c67f6c) @@ -15,15 +15,30 @@ 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 "grnxx/map/array_map/dummy.hpp" +#ifndef GRNXX_MAP_ARRAY_MAP_HEADER_HPP +#define GRNXX_MAP_ARRAY_MAP_HEADER_HPP -#include "grnxx/map/array_map/bit_array.hpp" -#include "grnxx/map/array_map/key_array.hpp" +#include "grnxx/features.hpp" + +#include "grnxx/map.hpp" +#include "grnxx/types.hpp" namespace grnxx { namespace map { namespace array_map { +struct Header { + MapType map_type; + uint32_t keys_storage_node_id; + uint32_t bits_storage_node_id; + int64_t max_key_id; + uint64_t num_keys; + + Header(); +}; + } // namespace array_map } // namespace map } // namespace grnxx + +#endif // GRNXX_MAP_ARRAY_MAP_HEADER_HPP Modified: lib/grnxx/map/hash_table.cpp (+8 -37) =================================================================== --- lib/grnxx/map/hash_table.cpp 2013-06-05 12:04:49 +0900 (e686925) +++ lib/grnxx/map/hash_table.cpp 2013-06-05 13:36:17 +0900 (c874bc2) @@ -25,6 +25,7 @@ #include "grnxx/lock.hpp" #include "grnxx/logger.hpp" #include "grnxx/map/hash_table/hash.hpp" +#include "grnxx/map/hash_table/header.hpp" #include "grnxx/map/helper.hpp" #include "grnxx/mutex.hpp" #include "grnxx/storage.hpp" @@ -34,37 +35,7 @@ namespace map { template <typename T> using Hash = hash_table::Hash<T>; - -constexpr uint64_t INVALID_LINK = uint64_t(-1); - -struct HashTableHeader { - MapType map_type; - uint32_t key_ids_storage_node_id; - uint32_t old_key_ids_storage_node_id; - uint32_t keys_storage_node_id; - uint32_t bits_storage_node_id; - uint32_t links_storage_node_id; - int64_t max_key_id; - uint64_t num_keys; - uint64_t num_key_ids; - uint64_t latest_link; - Mutex mutex; - - HashTableHeader(); -}; - -HashTableHeader::HashTableHeader() - : map_type(MAP_HASH_TABLE), - key_ids_storage_node_id(STORAGE_INVALID_NODE_ID), - old_key_ids_storage_node_id(STORAGE_INVALID_NODE_ID), - keys_storage_node_id(STORAGE_INVALID_NODE_ID), - bits_storage_node_id(STORAGE_INVALID_NODE_ID), - links_storage_node_id(STORAGE_INVALID_NODE_ID), - max_key_id(MAP_MIN_KEY_ID - 1), - num_keys(0), - num_key_ids(0), - latest_link(INVALID_LINK), - mutex(MUTEX_UNLOCKED) {} +using hash_table::INVALID_LINK; template <typename T> HashTable<T>::HashTable() @@ -425,13 +396,13 @@ bool HashTable<T>::create_map(Storage *storage, uint32_t storage_node_id, const MapOptions &) { storage_ = storage; StorageNode storage_node = - storage->create_node(storage_node_id, sizeof(HashTableHeader)); + storage->create_node(storage_node_id, sizeof(Header)); if (!storage_node) { return false; } storage_node_id_ = storage_node.id(); - header_ = static_cast<HashTableHeader *>(storage_node.body()); - *header_ = HashTableHeader(); + header_ = static_cast<Header *>(storage_node.body()); + *header_ = Header(); key_ids_.reset(KeyIDArray::create(storage, storage_node_id_, KeyIDArray::page_size() - 1)); keys_.reset(KeyArray::create(storage, storage_node_id_)); @@ -455,13 +426,13 @@ bool HashTable<T>::open_map(Storage *storage, uint32_t storage_node_id) { if (!storage_node) { return false; } - if (storage_node.size() < sizeof(HashTableHeader)) { + if (storage_node.size() < sizeof(Header)) { GRNXX_ERROR() << "invalid format: size = " << storage_node.size() - << ", header_size = " << sizeof(HashTableHeader); + << ", header_size = " << sizeof(Header); return false; } storage_node_id_ = storage_node_id; - header_ = static_cast<HashTableHeader *>(storage_node.body()); + header_ = static_cast<Header *>(storage_node.body()); key_ids_.reset(KeyIDArray::open(storage, header_->key_ids_storage_node_id)); keys_.reset(KeyArray::open(storage, header_->keys_storage_node_id)); bits_.reset(BitArray::open(storage, header_->bits_storage_node_id)); Modified: lib/grnxx/map/hash_table.hpp (+9 -2) =================================================================== --- lib/grnxx/map/hash_table.hpp 2013-06-05 12:04:49 +0900 (ea6e20b) +++ lib/grnxx/map/hash_table.hpp 2013-06-05 13:36:17 +0900 (79ca3b3) @@ -30,12 +30,19 @@ #include "grnxx/types.hpp" namespace grnxx { + +class Storage; + namespace map { +namespace hash_table { + +struct Header; -struct HashTableHeader; +} // namespace hash_table template <typename T> class HashTable : public Map<T> { + using Header = hash_table::Header; using KeyIDArray = typename hash_table::KeyIDArray<T>; using KeyArray = typename hash_table::KeyArray<T>::Type; using BitArray = typename hash_table::BitArray<T>::Type; @@ -74,7 +81,7 @@ class HashTable : public Map<T> { private: Storage *storage_; uint32_t storage_node_id_; - HashTableHeader *header_; + Header *header_; std::unique_ptr<KeyIDArray> key_ids_; std::unique_ptr<KeyIDArray> old_key_ids_; std::unique_ptr<KeyArray> keys_; Modified: lib/grnxx/map/hash_table/Makefile.am (+4 -2) =================================================================== --- lib/grnxx/map/hash_table/Makefile.am 2013-06-05 12:04:49 +0900 (a346c66) +++ lib/grnxx/map/hash_table/Makefile.am 2013-06-05 13:36:17 +0900 (bf818f3) @@ -2,14 +2,16 @@ noinst_LTLIBRARIES = libgrnxx_map_hash_table.la libgrnxx_map_hash_table_la_LDFLAGS = @AM_LTLDFLAGS@ -libgrnxx_map_hash_table_la_SOURCES = \ - dummy.cpp +libgrnxx_map_hash_table_la_SOURCES = \ + dummy.cpp \ + header.cpp libgrnxx_map_hash_table_includedir = ${includedir}/grnxx/map/hash_table libgrnxx_map_hash_table_include_HEADERS = \ bit_array.hpp \ dummy.hpp \ hash.hpp \ + header.hpp \ key_array.hpp \ key_id_array.hpp \ link_array.hpp Copied: lib/grnxx/map/hash_table/header.cpp (+18 -5) 57% =================================================================== --- lib/grnxx/map/array_map/dummy.cpp 2013-06-05 12:04:49 +0900 (1df8db3) +++ lib/grnxx/map/hash_table/header.cpp 2013-06-05 13:36:17 +0900 (f8981b2) @@ -15,15 +15,28 @@ 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 "grnxx/map/array_map/dummy.hpp" +#include "grnxx/map/hash_table/header.hpp" -#include "grnxx/map/array_map/bit_array.hpp" -#include "grnxx/map/array_map/key_array.hpp" +#include "grnxx/map/hash_table/link_array.hpp" +#include "grnxx/storage.hpp" namespace grnxx { namespace map { -namespace array_map { +namespace hash_table { -} // namespace array_map +Header::Header() + : map_type(MAP_HASH_TABLE), + key_ids_storage_node_id(STORAGE_INVALID_NODE_ID), + old_key_ids_storage_node_id(STORAGE_INVALID_NODE_ID), + keys_storage_node_id(STORAGE_INVALID_NODE_ID), + bits_storage_node_id(STORAGE_INVALID_NODE_ID), + links_storage_node_id(STORAGE_INVALID_NODE_ID), + max_key_id(MAP_MIN_KEY_ID - 1), + num_keys(0), + num_key_ids(0), + latest_link(INVALID_LINK), + mutex(MUTEX_UNLOCKED) {} + +} // namespace hash_table } // namespace map } // namespace grnxx Copied: lib/grnxx/map/hash_table/header.hpp (+27 -5) 57% =================================================================== --- lib/grnxx/map/array_map/dummy.cpp 2013-06-05 12:04:49 +0900 (1df8db3) +++ lib/grnxx/map/hash_table/header.hpp 2013-06-05 13:36:17 +0900 (2266333) @@ -15,15 +15,37 @@ 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 "grnxx/map/array_map/dummy.hpp" +#ifndef GRNXX_MAP_HASH_TABLE_HEADER_HPP +#define GRNXX_MAP_HASH_TABLE_HEADER_HPP -#include "grnxx/map/array_map/bit_array.hpp" -#include "grnxx/map/array_map/key_array.hpp" +#include "grnxx/features.hpp" + +#include "grnxx/map.hpp" +#include "grnxx/mutex.hpp" +#include "grnxx/types.hpp" namespace grnxx { namespace map { -namespace array_map { +namespace hash_table { + +struct Header { + MapType map_type; + uint32_t key_ids_storage_node_id; + uint32_t old_key_ids_storage_node_id; + uint32_t keys_storage_node_id; + uint32_t bits_storage_node_id; + uint32_t links_storage_node_id; + int64_t max_key_id; + uint64_t num_keys; + uint64_t num_key_ids; + uint64_t latest_link; + Mutex mutex; -} // namespace array_map + Header(); +}; + +} // namespace hash_table } // namespace map } // namespace grnxx + +#endif // GRNXX_MAP_HASH_TABLE_HEADER_HPP Modified: lib/grnxx/map/hash_table/link_array.hpp (+2 -0) =================================================================== --- lib/grnxx/map/hash_table/link_array.hpp 2013-06-05 12:04:49 +0900 (40b98ac) +++ lib/grnxx/map/hash_table/link_array.hpp 2013-06-05 13:36:17 +0900 (9779e07) @@ -27,6 +27,8 @@ namespace grnxx { namespace map { namespace hash_table { +constexpr uint64_t INVALID_LINK = uint64_t(-1); + // Change the array size based on the size of "T". // Note that the size of link array is N/64 where N is the size of BitArray. template <typename T, size_t T_SIZE = sizeof(T)> -------------- next part -------------- HTML����������������������������...Download