susumu.yata
null+****@clear*****
Mon Jul 1 10:23:59 JST 2013
susumu.yata 2013-07-01 10:23:59 +0900 (Mon, 01 Jul 2013) New Revision: b95491d498987e3593114758df6907309e5332b8 https://github.com/groonga/grnxx/commit/b95491d498987e3593114758df6907309e5332b8 Message: Remove unused files. Removed files: lib/grnxx/string_builder2.cpp lib/grnxx/string_builder2.hpp Deleted: lib/grnxx/string_builder2.cpp (+0 -187) 100644 =================================================================== --- lib/grnxx/string_builder2.cpp 2013-06-29 00:45:00 +0900 (a711970) +++ /dev/null @@ -1,187 +0,0 @@ -/* - Copyright (C) 2012-2013 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 "grnxx/string_builder.hpp" - -#include <cmath> - -#include "grnxx/intrinsic.hpp" - -namespace grnxx { - -StringBuilder::StringBuilder(size_t size, StringBuilderFlags flags) - : buf_((size != 0) ? (new (std::nothrow) char[size]) : nullptr), - begin_(buf_.get()), - end_(buf_ ? (begin_ + size - 1) : nullptr), - ptr_(begin_), - flags_(flags), - failed_(!buf_) { - if (buf_) { - *ptr_ = '\0'; - } -} - -bool StringBuilder::resize_buf(size_t size) { - if (size < STRING_BUILDER_BUF_SIZE_MIN) { - size = STRING_BUILDER_BUF_SIZE_MIN; - } else { - size = size_t(1) << (bit_scan_reverse(size - 1) + 1); - } - - std::unique_ptr<char[]> new_buf(new (std::nothrow) char[size]); - if (!new_buf) { - return false; - } - - const size_t length = ptr_ - begin_; - std::memcpy(new_buf.get(), begin_, length); - ptr_ = new_buf.get() + length; - begin_ = new_buf.get(); - end_ = new_buf.get() + size - 1; - buf_ = std::move(new_buf); - return true; -} - -StringBuilder &operator<<(StringBuilder &builder, long long value) { - if (!builder) { - return builder; - } - - char buf[32]; - char *ptr = buf; - char *left = ptr; - if (value >= 0) { - do { - *ptr++ = static_cast<char>('0' + (value % 10)); - value /= 10; - } while (value != 0); - } else { - *ptr++ = '-'; - ++left; - - do { - // C++11 always rounds the result toward 0. - *ptr++ = static_cast<char>('0' - (value % 10)); - value /= 10; - } while (value != 0); - } - - char *right = ptr - 1; - while (left < right) { - using std::swap; - swap(*left++, *right--); - } - - return builder.append(buf, ptr - buf); -} -StringBuilder &operator<<(StringBuilder &builder, unsigned long long value) { - if (!builder) { - return builder; - } - - char buf[32]; - char *ptr = buf; - do { - *ptr++ = static_cast<char>('0' + (value % 10)); - value /= 10; - } while (value != 0); - - char *left = buf; - char *right = ptr - 1; - while (left < right) { - using std::swap; - swap(*left++, *right--); - } - - return builder.append(buf, ptr - buf); -} - -StringBuilder &operator<<(StringBuilder &builder, float value) { - return builder << static_cast<double>(value); -} - -StringBuilder &operator<<(StringBuilder &builder, double value) { - if (!builder) { - return builder; - } - - switch (std::fpclassify(value)) { - case FP_NORMAL: - case FP_SUBNORMAL: - case FP_ZERO: { - break; - } - case FP_INFINITE: { - if (value > 0) { - return builder.append("inf", 3); - } else { - return builder.append("-inf", 4); - } - } - case FP_NAN: - default: { - return builder.append("nan", 3); - } - } - - // The maximum value of double-precision floating point number (IEEE754) - // is 1.797693134862316E+308. - char buf[512]; - int length = std::snprintf(buf, sizeof(buf), "%f", value); - if (length < 0) { - return builder.append("n/a", 3); - } - if (static_cast<size_t>(length) >= sizeof(buf)) { - length = sizeof(buf) - 1; - } - return builder.append(buf, length); -} - -StringBuilder &operator<<(StringBuilder &builder, const void *value) { - if (!builder) { - return builder; - } - if (!value) { - return builder.append("nullptr", 7); - } - - char buf[(sizeof(value) * 2) + 2]; - buf[0] = '0'; - buf[1] = 'x'; - - uintptr_t address = reinterpret_cast<uintptr_t>(value); - for (size_t i = 2; i < sizeof(buf); ++i) { - const uintptr_t digit = address >> ((sizeof(value) * 8) - 4); - buf[i] = static_cast<char>( - (digit < 10) ? ('0' + digit) : ('A' + digit - 10)); - address <<= 4; - } - return builder.append(buf, sizeof(buf)); -} - -StringBuilder &operator<<(StringBuilder &builder, const Bytes &bytes) { - // TODO: StringBuilder should support const uint_8 *. - return builder.append(reinterpret_cast<const char *>(bytes.data()), - bytes.size()); -} - -StringBuilder &operator<<(StringBuilder &builder, - const std::exception &exception) { - return builder << "{ what = " << exception.what() << " }"; -} - -} // namespace grnxx Deleted: lib/grnxx/string_builder2.hpp (+0 -298) 100644 =================================================================== --- lib/grnxx/string_builder2.hpp 2013-06-29 00:45:00 +0900 (c6f0d22) +++ /dev/null @@ -1,298 +0,0 @@ -/* - Copyright (C) 2012-2013 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_STRING_BUILDER_HPP -#define GRNXX_STRING_BUILDER_HPP - -#include "grnxx/features.hpp" - -#include <cstring> -#include <exception> -#include <memory> - -#include "grnxx/bytes.hpp" -#include "grnxx/flags_impl.hpp" -#include "grnxx/types.hpp" - -namespace grnxx { - -constexpr size_t STRING_BUILDER_BUF_SIZE_MIN = 64; - -class StringBuilder; -typedef FlagsImpl<StringBuilder> StringBuilderFlags; - -constexpr StringBuilderFlags STRING_BUILDER_AUTO_RESIZE = - StringBuilderFlags::define(0x01); - -class StringBuilder { - public: - explicit StringBuilder(StringBuilderFlags flags = StringBuilderFlags::none()) - : buf_(), - begin_(nullptr), - end_(nullptr), - ptr_(nullptr), - flags_(flags), - failed_(false) {} - - explicit StringBuilder(size_t size, - StringBuilderFlags flags = StringBuilderFlags::none()); - - template <size_t T> - explicit StringBuilder(char (&buf)[T], - StringBuilderFlags flags = StringBuilderFlags::none()) - : buf_(), - begin_(buf), - end_(buf + T - 1), - ptr_(buf), - flags_(flags), - failed_(false) { - *ptr_ = '\0'; - } - - StringBuilder(char *buf, size_t size, - StringBuilderFlags flags = StringBuilderFlags::none()) - : buf_(), - begin_(buf), - end_(buf + size - 1), - ptr_(buf), - flags_(flags), - failed_(false) { - *ptr_ = '\0'; - } - - ~StringBuilder() {} - - StringBuilder(StringBuilder &&rhs) - : buf_(std::move(rhs.buf_)), - begin_(std::move(rhs.begin_)), - end_(std::move(rhs.end_)), - ptr_(std::move(rhs.ptr_)), - flags_(std::move(rhs.flags_)), - failed_(std::move(rhs.failed_)) {} - - StringBuilder &operator=(StringBuilder &&rhs) { - buf_ = std::move(rhs.buf_); - begin_ = std::move(rhs.begin_); - end_ = std::move(rhs.end_); - ptr_ = std::move(rhs.ptr_); - flags_ = std::move(rhs.flags_); - failed_ = std::move(rhs.failed_); - return *this; - } - - explicit operator bool() const { - return !failed_; - } - - // For one-liners. - StringBuilder &builder() { - return *this; - } - - // Append a character. - StringBuilder &append(int byte) { - if (failed_) { - return *this; - } - - if (ptr_ == end_) { - if ((~flags_ & STRING_BUILDER_AUTO_RESIZE) || - !resize_buf(this->length() + 2)) { - failed_ = true; - return *this; - } - } - - *ptr_ = static_cast<char>(byte); - *++ptr_ = '\0'; - return *this; - } - - // Append a sequence of the same character. - StringBuilder &append(int byte, size_t length) { - if (failed_ || (length == 0)) { - return *this; - } - - const size_t size_left = end_ - ptr_; - if (length > size_left) { - if ((~flags_ & STRING_BUILDER_AUTO_RESIZE) || - !resize_buf(this->length() + length + 1)) { - length = size_left; - failed_ = true; - if (length == 0) { - return *this; - } - } - } - - std::memset(ptr_, byte, length); - ptr_ += length; - *ptr_ = '\0'; - return *this; - } - - // Append a sequence of length characters. - StringBuilder &append(const char *ptr, size_t length) { - if (failed_ || !ptr || (length == 0)) { - return *this; - } - - const size_t size_left = end_ - ptr_; - if (length > size_left) { - if ((~flags_ & STRING_BUILDER_AUTO_RESIZE) || - !resize_buf(this->length() + length + 1)) { - length = size_left; - failed_ = true; - } - } - - std::memcpy(ptr_, ptr, length); - ptr_ += length; - *ptr_ = '\0'; - return *this; - } - - StringBuilder &resize(size_t length) { - const size_t size_left = end_ - ptr_; - if (length > size_left) { - if ((~flags_ & STRING_BUILDER_AUTO_RESIZE) || - !resize_buf(length + 1)) { - length = size_left; - failed_ = true; - } - } - ptr_ = begin_ + length; - *ptr_ = '\0'; - return *this; - } - - const char &operator[](size_t i) const { - return begin_[i]; - } - char &operator[](size_t i) { - return begin_[i]; - } - - Bytes bytes() const { - return Bytes(c_str(), length()); - } - const char *c_str() const { - return begin_ ? begin_ : ""; - } - size_t length() const { - return ptr_ - begin_; - } - - void swap(StringBuilder &rhs) { - using std::swap; - swap(buf_, rhs.buf_); - swap(begin_, rhs.begin_); - swap(end_, rhs.end_); - swap(ptr_, rhs.ptr_); - swap(flags_, rhs.flags_); - swap(failed_, rhs.failed_); - } - - private: - std::unique_ptr<char[]> buf_; - char *begin_; - char *end_; - char *ptr_; - StringBuilderFlags flags_; - bool failed_; - - // Resize buf_ to greater than or equal to size bytes. - bool resize_buf(size_t size); - - StringBuilder(const StringBuilder &); - StringBuilder &operator=(const StringBuilder &); -}; - -inline void swap(StringBuilder &lhs, StringBuilder &rhs) { - lhs.swap(rhs); -} - -// Characters. -inline StringBuilder &operator<<(StringBuilder &builder, char value) { - return builder.append(value); -} - -// Signed integers. -StringBuilder &operator<<(StringBuilder &builder, long long value); - -inline StringBuilder &operator<<(StringBuilder &builder, signed char value) { - return builder << static_cast<long long>(value); -} -inline StringBuilder &operator<<(StringBuilder &builder, short value) { - return builder << static_cast<long long>(value); -} -inline StringBuilder &operator<<(StringBuilder &builder, int value) { - return builder << static_cast<long long>(value); -} -inline StringBuilder &operator<<(StringBuilder &builder, long value) { - return builder << static_cast<long long>(value); -} - -// Unsigned integers. -StringBuilder &operator<<(StringBuilder &builder, unsigned long long value); - -inline StringBuilder &operator<<(StringBuilder &builder, unsigned char value) { - return builder << static_cast<unsigned long long>(value); -} -inline StringBuilder &operator<<(StringBuilder &builder, unsigned short value) { - return builder << static_cast<unsigned long long>(value); -} -inline StringBuilder &operator<<(StringBuilder &builder, unsigned int value) { - return builder << static_cast<unsigned long long>(value); -} -inline StringBuilder &operator<<(StringBuilder &builder, unsigned long value) { - return builder << static_cast<unsigned long long>(value); -} - -// Floating point numbers. -StringBuilder &operator<<(StringBuilder &builder, float value); -StringBuilder &operator<<(StringBuilder &builder, double value); - -// Boolean values (true/false). -inline StringBuilder &operator<<(StringBuilder &builder, bool value) { - return value ? builder.append("true", 4) : builder.append("false", 5); -} - -// Pointers. -StringBuilder &operator<<(StringBuilder &builder, const void *value); - -// Zero-terminated strings. -inline StringBuilder &operator<<(StringBuilder &builder, const char *value) { - if (!builder) { - return builder; - } - if (!value) { - return builder.append("nullptr", 7); - } - return builder.append(value, std::strlen(value)); -} - -StringBuilder &operator<<(StringBuilder &builder, const Bytes &bytes); - -// Exceptions. -StringBuilder &operator<<(StringBuilder &builder, - const std::exception &exception); - -} // namespace grnxx - -#endif // GRNXX_STRING_BUILDER_HPP -------------- next part -------------- HTML����������������������������...Download