From 97e45a64eac80372ea55d0ad726cb5e49167d680 Mon Sep 17 00:00:00 2001 From: Daniel Larimer Date: Sat, 9 Feb 2013 17:41:44 -0500 Subject: [PATCH] fix bugs for linux build --- include/fc/value.hpp | 10 ++++++++-- src/appender.cpp | 6 ------ src/logger.cpp | 2 +- src/logger_config.cpp | 4 ++++ src/value.cpp | 3 +++ 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/include/fc/value.hpp b/include/fc/value.hpp index bade623..705c95b 100644 --- a/include/fc/value.hpp +++ b/include/fc/value.hpp @@ -64,6 +64,7 @@ namespace fc { value(value&& m ); value(const value& m ); + value(const char* c ); value(char* c ); value(int8_t ); value(int16_t ); @@ -76,8 +77,6 @@ namespace fc { value(double ); value(float ); value(bool ); - /// initialize an object with a single key/value pair - value(const fc::string&, const value& v ); value(fc::string&& ); value(fc::string& ); value(const fc::string& ); @@ -86,6 +85,13 @@ namespace fc { value(const object& o ); value(object& o ); + /// initialize an object with a single key/value pair + value(const fc::string&, const value& v ); + template + value(const fc::string& s, const T& v ) { + set( s, v ); + } + value(fc::vector&& a ); value(fc::vector& a ); value(const fc::vector& a ); diff --git a/src/appender.cpp b/src/appender.cpp index 71a4ea2..6140479 100644 --- a/src/appender.cpp +++ b/src/appender.cpp @@ -9,13 +9,10 @@ #include #include #include -#include -#include namespace fc { - static fc::spin_lock appender_spinlock; std::unordered_map& get_appender_map() { static std::unordered_map lm; return lm; @@ -25,7 +22,6 @@ namespace fc { return lm; } appender::ptr appender::get( const fc::string& s ) { - scoped_lock lock(appender_spinlock); return get_appender_map()[s]; } bool appender::register_appender( const fc::string& type, const appender_factory::ptr& f ) @@ -45,6 +41,4 @@ namespace fc { return ap; } - static bool reg_console_appender = appender::register_appender( "console" ); - static bool reg_file_appender = appender::register_appender( "file" ); } // namespace fc diff --git a/src/logger.cpp b/src/logger.cpp index cc228ae..8401af0 100644 --- a/src/logger.cpp +++ b/src/logger.cpp @@ -86,13 +86,13 @@ namespace fc { void logger::set_name( const fc::string& n ) { my->_name = n; } const fc::string& logger::name()const { return my->_name; } - static fc::spin_lock logger_spinlock; std::unordered_map& get_logger_map() { static std::unordered_map lm; return lm; } logger logger::get( const fc::string& s ) { + static fc::spin_lock logger_spinlock; scoped_lock lock(logger_spinlock); return get_logger_map()[s]; } diff --git a/src/logger_config.cpp b/src/logger_config.cpp index 6d0e3d1..2ec5214 100644 --- a/src/logger_config.cpp +++ b/src/logger_config.cpp @@ -4,6 +4,8 @@ #include #include #include +#include +#include namespace fc { std::unordered_map& get_logger_map(); @@ -16,6 +18,8 @@ namespace fc { } bool configure_logging( const logging_config& cfg ) { + static bool reg_console_appender = appender::register_appender( "console" ); + static bool reg_file_appender = appender::register_appender( "file" ); get_logger_map().clear(); get_appender_map().clear(); diff --git a/src/value.cpp b/src/value.cpp index c358cae..9bfc788 100644 --- a/src/value.cpp +++ b/src/value.cpp @@ -436,6 +436,9 @@ value::value( value&& m ) { value::value( const value& m ){ gh(m.holder)->copy_helper(holder._store._data); } +value::value( const char* c ) { + new (holder) detail::value_holder_impl( c ); +} value::value( char* c ) { new (holder) detail::value_holder_impl( c ); }