http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/73ecc667/include/spdlog/details/registry.h
----------------------------------------------------------------------
diff --git a/include/spdlog/details/registry.h 
b/include/spdlog/details/registry.h
deleted file mode 100644
index ee14adf..0000000
--- a/include/spdlog/details/registry.h
+++ /dev/null
@@ -1,185 +0,0 @@
-//
-// Copyright(c) 2015 Gabi Melman.
-// Distributed under the MIT License (http://opensource.org/licenses/MIT)
-//
-
-#pragma once
-
-// Loggers registy of unique name->logger pointer
-// An attempt to create a logger with an already existing name will be ignored
-// If user requests a non existing logger, nullptr will be returned
-// This class is thread safe
-
-#include <spdlog/details/null_mutex.h>
-#include <spdlog/logger.h>
-#include <spdlog/async_logger.h>
-#include <spdlog/common.h>
-
-#include <chrono>
-#include <functional>
-#include <memory>
-#include <mutex>
-#include <string>
-#include <unordered_map>
-
-namespace spdlog
-{
-namespace details
-{
-template <class Mutex> class registry_t
-{
-public:
-
-    void register_logger(std::shared_ptr<logger> logger)
-    {
-        std::lock_guard<Mutex> lock(_mutex);
-        auto logger_name = logger->name();
-        throw_if_exists(logger_name);
-        _loggers[logger_name] = logger;
-    }
-
-
-    std::shared_ptr<logger> get(const std::string& logger_name)
-    {
-        std::lock_guard<Mutex> lock(_mutex);
-        auto found = _loggers.find(logger_name);
-        return found == _loggers.end() ? nullptr : found->second;
-    }
-
-    template<class It>
-    std::shared_ptr<logger> create(const std::string& logger_name, const It& 
sinks_begin, const It& sinks_end)
-    {
-        std::lock_guard<Mutex> lock(_mutex);
-        throw_if_exists(logger_name);
-        std::shared_ptr<logger> new_logger;
-        if (_async_mode)
-            new_logger = std::make_shared<async_logger>(logger_name, 
sinks_begin, sinks_end, _async_q_size, _overflow_policy, _worker_warmup_cb, 
_flush_interval_ms, _worker_teardown_cb);
-        else
-            new_logger = std::make_shared<logger>(logger_name, sinks_begin, 
sinks_end);
-
-        if (_formatter)
-            new_logger->set_formatter(_formatter);
-
-        if (_err_handler)
-            new_logger->set_error_handler(_err_handler);
-
-        new_logger->set_level(_level);
-
-
-        //Add to registry
-        _loggers[logger_name] = new_logger;
-        return new_logger;
-    }
-
-    void apply_all(std::function<void(std::shared_ptr<logger>)> fun)
-    {
-        std::lock_guard<Mutex> lock(_mutex);
-        for (auto &l : _loggers)
-            fun(l.second);
-    }
-
-    void drop(const std::string& logger_name)
-    {
-        std::lock_guard<Mutex> lock(_mutex);
-        _loggers.erase(logger_name);
-    }
-
-    void drop_all()
-    {
-        std::lock_guard<Mutex> lock(_mutex);
-        _loggers.clear();
-    }
-    std::shared_ptr<logger> create(const std::string& logger_name, 
sinks_init_list sinks)
-    {
-        return create(logger_name, sinks.begin(), sinks.end());
-    }
-
-    std::shared_ptr<logger> create(const std::string& logger_name, sink_ptr 
sink)
-    {
-        return create(logger_name, { sink });
-    }
-
-
-    void formatter(formatter_ptr f)
-    {
-        std::lock_guard<Mutex> lock(_mutex);
-        _formatter = f;
-        for (auto& l : _loggers)
-            l.second->set_formatter(_formatter);
-    }
-
-    void set_pattern(const std::string& pattern)
-    {
-        std::lock_guard<Mutex> lock(_mutex);
-        _formatter = std::make_shared<pattern_formatter>(pattern);
-        for (auto& l : _loggers)
-            l.second->set_formatter(_formatter);
-    }
-
-    void set_level(level::level_enum log_level)
-    {
-        std::lock_guard<Mutex> lock(_mutex);
-        for (auto& l : _loggers)
-            l.second->set_level(log_level);
-        _level = log_level;
-    }
-
-    void set_error_handler(log_err_handler handler)
-    {
-        for (auto& l : _loggers)
-            l.second->set_error_handler(handler);
-        _err_handler = handler;
-    }
-
-    void set_async_mode(size_t q_size, const async_overflow_policy 
overflow_policy, const std::function<void()>& worker_warmup_cb, const 
std::chrono::milliseconds& flush_interval_ms, const std::function<void()>& 
worker_teardown_cb)
-    {
-        std::lock_guard<Mutex> lock(_mutex);
-        _async_mode = true;
-        _async_q_size = q_size;
-        _overflow_policy = overflow_policy;
-        _worker_warmup_cb = worker_warmup_cb;
-        _flush_interval_ms = flush_interval_ms;
-        _worker_teardown_cb = worker_teardown_cb;
-    }
-
-    void set_sync_mode()
-    {
-        std::lock_guard<Mutex> lock(_mutex);
-        _async_mode = false;
-    }
-
-    static registry_t<Mutex>& instance()
-    {
-        static registry_t<Mutex> s_instance;
-        return s_instance;
-    }
-
-private:
-    registry_t<Mutex>() {}
-    registry_t<Mutex>(const registry_t<Mutex>&) = delete;
-    registry_t<Mutex>& operator=(const registry_t<Mutex>&) = delete;
-
-    void throw_if_exists(const std::string &logger_name)
-    {
-        if (_loggers.find(logger_name) != _loggers.end())
-            throw spdlog_ex("logger with name '" + logger_name + "' already 
exists");
-    }
-    Mutex _mutex;
-    std::unordered_map <std::string, std::shared_ptr<logger>> _loggers;
-    formatter_ptr _formatter;
-    level::level_enum _level = level::info;
-    log_err_handler _err_handler;
-    bool _async_mode = false;
-    size_t _async_q_size = 0;
-    async_overflow_policy _overflow_policy = 
async_overflow_policy::block_retry;
-    std::function<void()> _worker_warmup_cb = nullptr;
-    std::chrono::milliseconds _flush_interval_ms;
-    std::function<void()> _worker_teardown_cb = nullptr;
-};
-#ifdef SPDLOG_NO_REGISTRY_MUTEX
-typedef registry_t<spdlog::details::null_mutex> registry;
-#else
-typedef registry_t<std::mutex> registry;
-#endif
-}
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/73ecc667/include/spdlog/details/spdlog_impl.h
----------------------------------------------------------------------
diff --git a/include/spdlog/details/spdlog_impl.h 
b/include/spdlog/details/spdlog_impl.h
deleted file mode 100644
index a8011db..0000000
--- a/include/spdlog/details/spdlog_impl.h
+++ /dev/null
@@ -1,245 +0,0 @@
-//
-// Copyright(c) 2015 Gabi Melman.
-// Distributed under the MIT License (http://opensource.org/licenses/MIT)
-//
-
-#pragma once
-
-//
-// Global registry functions
-//
-#include <spdlog/spdlog.h>
-#include <spdlog/details/registry.h>
-#include <spdlog/sinks/file_sinks.h>
-#include <spdlog/sinks/stdout_sinks.h>
-#ifdef SPDLOG_ENABLE_SYSLOG
-#include <spdlog/sinks/syslog_sink.h>
-#endif
-
-#ifdef _WIN32
-#include <spdlog/sinks/wincolor_sink.h>
-#else
-#include <spdlog/sinks/ansicolor_sink.h>
-#endif
-
-
-#ifdef __ANDROID__
-#include <spdlog/sinks/android_sink.h>
-#endif
-
-#include <chrono>
-#include <functional>
-#include <memory>
-#include <string>
-
-inline void spdlog::register_logger(std::shared_ptr<logger> logger)
-{
-    return details::registry::instance().register_logger(logger);
-}
-
-inline std::shared_ptr<spdlog::logger> spdlog::get(const std::string& name)
-{
-    return details::registry::instance().get(name);
-}
-
-inline void spdlog::drop(const std::string &name)
-{
-    details::registry::instance().drop(name);
-}
-
-// Create multi/single threaded simple file logger
-inline std::shared_ptr<spdlog::logger> spdlog::basic_logger_mt(const 
std::string& logger_name, const filename_t& filename, bool truncate)
-{
-    return create<spdlog::sinks::simple_file_sink_mt>(logger_name, filename, 
truncate);
-}
-
-inline std::shared_ptr<spdlog::logger> spdlog::basic_logger_st(const 
std::string& logger_name, const filename_t& filename, bool truncate)
-{
-    return create<spdlog::sinks::simple_file_sink_st>(logger_name, filename, 
truncate);
-}
-
-// Create multi/single threaded rotating file logger
-inline std::shared_ptr<spdlog::logger> spdlog::rotating_logger_mt(const 
std::string& logger_name, const filename_t& filename, size_t max_file_size, 
size_t max_files)
-{
-    return create<spdlog::sinks::rotating_file_sink_mt>(logger_name, filename, 
SPDLOG_FILENAME_T("txt"), max_file_size, max_files);
-}
-
-inline std::shared_ptr<spdlog::logger> spdlog::rotating_logger_st(const 
std::string& logger_name, const filename_t& filename, size_t max_file_size, 
size_t max_files)
-{
-    return create<spdlog::sinks::rotating_file_sink_st>(logger_name, filename, 
SPDLOG_FILENAME_T("txt"), max_file_size, max_files);
-}
-
-// Create file logger which creates new file at midnight):
-inline std::shared_ptr<spdlog::logger> spdlog::daily_logger_mt(const 
std::string& logger_name, const filename_t& filename, int hour, int minute)
-{
-    return create<spdlog::sinks::daily_file_sink_mt>(logger_name, filename, 
SPDLOG_FILENAME_T("txt"), hour, minute);
-}
-
-inline std::shared_ptr<spdlog::logger> spdlog::daily_logger_st(const 
std::string& logger_name, const filename_t& filename, int hour, int minute)
-{
-    return create<spdlog::sinks::daily_file_sink_st>(logger_name, filename, 
SPDLOG_FILENAME_T("txt"), hour, minute);
-}
-
-
-//
-// stdout/stderr loggers
-//
-inline std::shared_ptr<spdlog::logger> spdlog::stdout_logger_mt(const 
std::string& logger_name)
-{
-    return spdlog::details::registry::instance().create(logger_name, 
spdlog::sinks::stdout_sink_mt::instance());
-}
-
-inline std::shared_ptr<spdlog::logger> spdlog::stdout_logger_st(const 
std::string& logger_name)
-{
-    return spdlog::details::registry::instance().create(logger_name, 
spdlog::sinks::stdout_sink_st::instance());
-}
-
-inline std::shared_ptr<spdlog::logger> spdlog::stderr_logger_mt(const 
std::string& logger_name)
-{
-    return spdlog::details::registry::instance().create(logger_name, 
spdlog::sinks::stderr_sink_mt::instance());
-}
-
-inline std::shared_ptr<spdlog::logger> spdlog::stderr_logger_st(const 
std::string& logger_name)
-{
-    return spdlog::details::registry::instance().create(logger_name, 
spdlog::sinks::stderr_sink_st::instance());
-}
-
-//
-// stdout/stderr color loggers
-//
-#ifdef _WIN32
-inline std::shared_ptr<spdlog::logger> spdlog::stdout_color_mt(const 
std::string& logger_name)
-{
-    auto sink = std::make_shared<spdlog::sinks::wincolor_stdout_sink_mt>();
-    return spdlog::details::registry::instance().create(logger_name, sink);
-}
-
-inline std::shared_ptr<spdlog::logger> spdlog::stdout_color_st(const 
std::string& logger_name)
-{
-    auto sink = std::make_shared<spdlog::sinks::wincolor_stdout_sink_st>();
-    return spdlog::details::registry::instance().create(logger_name, sink);
-}
-
-inline std::shared_ptr<spdlog::logger> spdlog::stderr_color_mt(const 
std::string& logger_name)
-{
-    auto sink = std::make_shared<spdlog::sinks::wincolor_stderr_sink_mt>();
-    return spdlog::details::registry::instance().create(logger_name, sink);
-}
-
-
-inline std::shared_ptr<spdlog::logger> spdlog::stderr_color_st(const 
std::string& logger_name)
-{
-    auto sink = std::make_shared<spdlog::sinks::wincolor_stderr_sink_st>();
-    return spdlog::details::registry::instance().create(logger_name, sink);
-}
-
-#else //ansi terminal colors
-
-inline std::shared_ptr<spdlog::logger> spdlog::stdout_color_mt(const 
std::string& logger_name)
-{
-    auto sink = 
std::make_shared<spdlog::sinks::ansicolor_sink>(spdlog::sinks::stdout_sink_mt::instance());
-    return spdlog::details::registry::instance().create(logger_name, sink);
-}
-
-inline std::shared_ptr<spdlog::logger> spdlog::stdout_color_st(const 
std::string& logger_name)
-{
-    auto sink = 
std::make_shared<spdlog::sinks::ansicolor_sink>(spdlog::sinks::stdout_sink_st::instance());
-    return spdlog::details::registry::instance().create(logger_name, sink);
-}
-
-inline std::shared_ptr<spdlog::logger> spdlog::stderr_color_mt(const 
std::string& logger_name)
-{
-    auto sink = 
std::make_shared<spdlog::sinks::ansicolor_sink>(spdlog::sinks::stderr_sink_mt::instance());
-    return spdlog::details::registry::instance().create(logger_name, sink);
-}
-
-inline std::shared_ptr<spdlog::logger> spdlog::stderr_color_st(const 
std::string& logger_name)
-{
-    auto sink = 
std::make_shared<spdlog::sinks::ansicolor_sink>(spdlog::sinks::stderr_sink_st::instance());
-    return spdlog::details::registry::instance().create(logger_name, sink);
-}
-#endif
-
-#ifdef SPDLOG_ENABLE_SYSLOG
-// Create syslog logger
-inline std::shared_ptr<spdlog::logger> spdlog::syslog_logger(const 
std::string& logger_name, const std::string& syslog_ident, int syslog_option)
-{
-    return create<spdlog::sinks::syslog_sink>(logger_name, syslog_ident, 
syslog_option);
-}
-#endif
-
-#ifdef __ANDROID__
-inline std::shared_ptr<spdlog::logger> spdlog::android_logger(const 
std::string& logger_name, const std::string& tag)
-{
-    return create<spdlog::sinks::android_sink>(logger_name, tag);
-}
-#endif
-
-// Create and register a logger a single sink
-inline std::shared_ptr<spdlog::logger> spdlog::create(const std::string& 
logger_name, const spdlog::sink_ptr& sink)
-{
-    return details::registry::instance().create(logger_name, sink);
-}
-
-//Create logger with multiple sinks
-
-inline std::shared_ptr<spdlog::logger> spdlog::create(const std::string& 
logger_name, spdlog::sinks_init_list sinks)
-{
-    return details::registry::instance().create(logger_name, sinks);
-}
-
-
-template <typename Sink, typename... Args>
-inline std::shared_ptr<spdlog::logger> spdlog::create(const std::string& 
logger_name, Args... args)
-{
-    sink_ptr sink = std::make_shared<Sink>(args...);
-    return details::registry::instance().create(logger_name, { sink });
-}
-
-
-template<class It>
-inline std::shared_ptr<spdlog::logger> spdlog::create(const std::string& 
logger_name, const It& sinks_begin, const It& sinks_end)
-{
-    return details::registry::instance().create(logger_name, sinks_begin, 
sinks_end);
-}
-
-inline void spdlog::set_formatter(spdlog::formatter_ptr f)
-{
-    details::registry::instance().formatter(f);
-}
-
-inline void spdlog::set_pattern(const std::string& format_string)
-{
-    return details::registry::instance().set_pattern(format_string);
-}
-
-inline void spdlog::set_level(level::level_enum log_level)
-{
-    return details::registry::instance().set_level(log_level);
-}
-
-inline void spdlog::set_error_handler(log_err_handler handler)
-{
-    return details::registry::instance().set_error_handler(handler);
-}
-
-
-inline void spdlog::set_async_mode(size_t queue_size, const 
async_overflow_policy overflow_policy, const std::function<void()>& 
worker_warmup_cb, const std::chrono::milliseconds& flush_interval_ms, const 
std::function<void()>& worker_teardown_cb)
-{
-    details::registry::instance().set_async_mode(queue_size, overflow_policy, 
worker_warmup_cb, flush_interval_ms, worker_teardown_cb);
-}
-
-inline void spdlog::set_sync_mode()
-{
-    details::registry::instance().set_sync_mode();
-}
-
-inline void spdlog::apply_all(std::function<void(std::shared_ptr<logger>)> fun)
-{
-    details::registry::instance().apply_all(fun);
-}
-
-inline void spdlog::drop_all()
-{
-    details::registry::instance().drop_all();
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/73ecc667/include/spdlog/dummy.cpp
----------------------------------------------------------------------
diff --git a/include/spdlog/dummy.cpp b/include/spdlog/dummy.cpp
deleted file mode 100644
index 6b2d4ab..0000000
--- a/include/spdlog/dummy.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * @file dummy.cpp 
- * MiNiFiMain implementation 
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Dummy CPP file to work around Cmake limitation on header only libraries
-

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/73ecc667/include/spdlog/fmt/bundled/format.cc
----------------------------------------------------------------------
diff --git a/include/spdlog/fmt/bundled/format.cc 
b/include/spdlog/fmt/bundled/format.cc
deleted file mode 100644
index fd8855b..0000000
--- a/include/spdlog/fmt/bundled/format.cc
+++ /dev/null
@@ -1,583 +0,0 @@
-/*
-Formatting library for C++
-
-Copyright (c) 2012 - 2016, Victor Zverovich
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this
-list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright notice,
-this list of conditions and the following disclaimer in the documentation
-and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include "format.h"
-
-#include <string.h>
-
-#include <cctype>
-#include <cerrno>
-#include <climits>
-#include <cmath>
-#include <cstdarg>
-#include <cstddef>  // for std::ptrdiff_t
-
-#if defined(_WIN32) && defined(__MINGW32__)
-# include <cstring>
-#endif
-
-#if FMT_USE_WINDOWS_H
-# if defined(NOMINMAX) || defined(FMT_WIN_MINMAX)
-#  include <windows.h>
-# else
-#  define NOMINMAX
-#  include <windows.h>
-#  undef NOMINMAX
-# endif
-#endif
-
-using fmt::internal::Arg;
-
-#if FMT_EXCEPTIONS
-# define FMT_TRY try
-# define FMT_CATCH(x) catch (x)
-#else
-# define FMT_TRY if (true)
-# define FMT_CATCH(x) if (false)
-#endif
-
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable: 4127)  // conditional expression is constant
-# pragma warning(disable: 4702)  // unreachable code
-// Disable deprecation warning for strerror. The latter is not called but
-// MSVC fails to detect it.
-# pragma warning(disable: 4996)
-#endif
-
-// Dummy implementations of strerror_r and strerror_s called if corresponding
-// system functions are not available.
-static inline fmt::internal::Null<> strerror_r(int, char *, ...)
-{
-       return fmt::internal::Null<>();
-}
-static inline fmt::internal::Null<> strerror_s(char *, std::size_t, ...)
-{
-       return fmt::internal::Null<>();
-}
-
-namespace fmt {
-
-       FMT_FUNC internal::RuntimeError::~RuntimeError() FMT_DTOR_NOEXCEPT
-       {}
-       FMT_FUNC FormatError::~FormatError() FMT_DTOR_NOEXCEPT
-       {}
-       FMT_FUNC SystemError::~SystemError() FMT_DTOR_NOEXCEPT
-       {}
-
-       namespace {
-
-#ifndef _MSC_VER
-# define FMT_SNPRINTF snprintf
-#else  // _MSC_VER
-               inline int fmt_snprintf(char *buffer, size_t size, const char 
*format, ...)
-               {
-                       va_list args;
-                       va_start(args, format);
-                       int result = vsnprintf_s(buffer, size, _TRUNCATE, 
format, args);
-                       va_end(args);
-                       return result;
-               }
-# define FMT_SNPRINTF fmt_snprintf
-#endif  // _MSC_VER
-
-#if defined(_WIN32) && defined(__MINGW32__) && !defined(__NO_ISOCEXT)
-# define FMT_SWPRINTF snwprintf
-#else
-# define FMT_SWPRINTF swprintf
-#endif // defined(_WIN32) && defined(__MINGW32__) && !defined(__NO_ISOCEXT)
-
-               const char RESET_COLOR[] = "\x1b[0m";
-
-               typedef void(*FormatFunc)(Writer &, int, StringRef);
-
-               // Portable thread-safe version of strerror.
-               // Sets buffer to point to a string describing the error code.
-               // This can be either a pointer to a string stored in buffer,
-               // or a pointer to some static immutable string.
-               // Returns one of the following values:
-               //   0      - success
-               //   ERANGE - buffer is not large enough to store the error 
message
-               //   other  - failure
-               // Buffer should be at least of size 1.
-               int safe_strerror(
-                       int error_code, char *&buffer, std::size_t buffer_size) 
FMT_NOEXCEPT
-               {
-                       FMT_ASSERT(buffer != 0 && buffer_size != 0, "invalid 
buffer");
-
-                       class StrError
-                       {
-                       private:
-                               int error_code_;
-                               char *&buffer_;
-                               std::size_t buffer_size_;
-
-                               // A noop assignment operator to avoid bogus 
warnings.
-                               void operator=(const StrError &)
-                               {}
-
-                               // Handle the result of XSI-compliant version 
of strerror_r.
-                               int handle(int result)
-                               {
-                                       // glibc versions before 2.13 return 
result in errno.
-                                       return result == -1 ? errno : result;
-                               }
-
-                               // Handle the result of GNU-specific version of 
strerror_r.
-                               int handle(char *message)
-                               {
-                                       // If the buffer is full then the 
message is probably truncated.
-                                       if (message == buffer_ && 
strlen(buffer_) == buffer_size_ - 1)
-                                               return ERANGE;
-                                       buffer_ = message;
-                                       return 0;
-                               }
-
-                               // Handle the case when strerror_r is not 
available.
-                               int handle(internal::Null<>)
-                               {
-                                       return fallback(strerror_s(buffer_, 
buffer_size_, error_code_));
-                               }
-
-                               // Fallback to strerror_s when strerror_r is 
not available.
-                               int fallback(int result)
-                               {
-                                       // If the buffer is full then the 
message is probably truncated.
-                                       return result == 0 && strlen(buffer_) 
== buffer_size_ - 1 ?
-                                               ERANGE : result;
-                               }
-
-                               // Fallback to strerror if strerror_r and 
strerror_s are not available.
-                               int fallback(internal::Null<>)
-                               {
-                                       errno = 0;
-                                       buffer_ = strerror(error_code_);
-                                       return errno;
-                               }
-
-                       public:
-                               StrError(int err_code, char *&buf, std::size_t 
buf_size)
-                                       : error_code_(err_code), buffer_(buf), 
buffer_size_(buf_size)
-                               {}
-
-                               int run()
-                               {
-                                       // Suppress a warning about unused 
strerror_r.
-                                       strerror_r(0, FMT_NULL, "");
-                                       return handle(strerror_r(error_code_, 
buffer_, buffer_size_));
-                               }
-                       };
-                       return StrError(error_code, buffer, buffer_size).run();
-               }
-
-               void format_error_code(Writer &out, int error_code,
-                       StringRef message) FMT_NOEXCEPT
-               {
-                       // Report error code making sure that the output fits 
into
-                       // INLINE_BUFFER_SIZE to avoid dynamic memory 
allocation and potential
-                       // bad_alloc.
-                       out.clear();
-                       static const char SEP[] = ": ";
-                       static const char ERROR_STR[] = "error ";
-                       // Subtract 2 to account for terminating null 
characters in SEP and ERROR_STR.
-                       std::size_t error_code_size = sizeof(SEP) + 
sizeof(ERROR_STR) - 2;
-                       typedef internal::IntTraits<int>::MainType MainType;
-                       MainType abs_value = static_cast<MainType>(error_code);
-                       if (internal::is_negative(error_code)) {
-                               abs_value = 0 - abs_value;
-                               ++error_code_size;
-                       }
-                       error_code_size += internal::count_digits(abs_value);
-                       if (message.size() <= internal::INLINE_BUFFER_SIZE - 
error_code_size)
-                               out << message << SEP;
-                       out << ERROR_STR << error_code;
-                       assert(out.size() <= internal::INLINE_BUFFER_SIZE);
-               }
-
-               void report_error(FormatFunc func, int error_code,
-                       StringRef message) FMT_NOEXCEPT
-               {
-                       MemoryWriter full_message;
-                       func(full_message, error_code, message);
-                       // Use Writer::data instead of Writer::c_str to avoid 
potential memory
-                       // allocation.
-                       std::fwrite(full_message.data(), full_message.size(), 
1, stderr);
-                       std::fputc('\n', stderr);
-               }
-       }  // namespace
-
-       namespace internal {
-
-               // This method is used to preserve binary compatibility with 
fmt 3.0.
-               // It can be removed in 4.0.
-               FMT_FUNC void format_system_error(
-                       Writer &out, int error_code, StringRef message) 
FMT_NOEXCEPT
-               {
-                       fmt::format_system_error(out, error_code, message);
-               }
-       }  // namespace internal
-
-       FMT_FUNC void SystemError::init(
-               int err_code, CStringRef format_str, ArgList args)
-       {
-               error_code_ = err_code;
-               MemoryWriter w;
-               format_system_error(w, err_code, format(format_str, args));
-               std::runtime_error &base = *this;
-               base = std::runtime_error(w.str());
-       }
-
-       template <typename T>
-       int internal::CharTraits<char>::format_float(
-               char *buffer, std::size_t size, const char *format,
-               unsigned width, int precision, T value)
-       {
-               if (width == 0) {
-                       return precision < 0 ?
-                               FMT_SNPRINTF(buffer, size, format, value) :
-                               FMT_SNPRINTF(buffer, size, format, precision, 
value);
-               }
-               return precision < 0 ?
-                       FMT_SNPRINTF(buffer, size, format, width, value) :
-                       FMT_SNPRINTF(buffer, size, format, width, precision, 
value);
-       }
-
-       template <typename T>
-       int internal::CharTraits<wchar_t>::format_float(
-               wchar_t *buffer, std::size_t size, const wchar_t *format,
-               unsigned width, int precision, T value)
-       {
-               if (width == 0) {
-                       return precision < 0 ?
-                               FMT_SWPRINTF(buffer, size, format, value) :
-                               FMT_SWPRINTF(buffer, size, format, precision, 
value);
-               }
-               return precision < 0 ?
-                       FMT_SWPRINTF(buffer, size, format, width, value) :
-                       FMT_SWPRINTF(buffer, size, format, width, precision, 
value);
-       }
-
-       template <typename T>
-       const char internal::BasicData<T>::DIGITS[] =
-               "0001020304050607080910111213141516171819"
-               "2021222324252627282930313233343536373839"
-               "4041424344454647484950515253545556575859"
-               "6061626364656667686970717273747576777879"
-               "8081828384858687888990919293949596979899";
-
-#define FMT_POWERS_OF_10(factor) \
-  factor * 10, \
-  factor * 100, \
-  factor * 1000, \
-  factor * 10000, \
-  factor * 100000, \
-  factor * 1000000, \
-  factor * 10000000, \
-  factor * 100000000, \
-  factor * 1000000000
-
-       template <typename T>
-       const uint32_t internal::BasicData<T>::POWERS_OF_10_32[] = {
-               0, FMT_POWERS_OF_10(1)
-       };
-
-       template <typename T>
-       const uint64_t internal::BasicData<T>::POWERS_OF_10_64[] = {
-               0,
-               FMT_POWERS_OF_10(1),
-               FMT_POWERS_OF_10(ULongLong(1000000000)),
-               // Multiply several constants instead of using a single long 
long constant
-               // to avoid warnings about C++98 not supporting long long.
-               ULongLong(1000000000) * ULongLong(1000000000) * 10
-       };
-
-       FMT_FUNC void internal::report_unknown_type(char code, const char *type)
-       {
-               (void)type;
-               if (std::isprint(static_cast<unsigned char>(code))) {
-                       FMT_THROW(FormatError(
-                               format("unknown format code '{}' for {}", code, 
type)));
-               }
-               FMT_THROW(FormatError(
-                       format("unknown format code '\\x{:02x}' for {}",
-                               static_cast<unsigned>(code), type)));
-       }
-
-#if FMT_USE_WINDOWS_H
-
-       FMT_FUNC internal::UTF8ToUTF16::UTF8ToUTF16(StringRef s)
-       {
-               static const char ERROR_MSG[] = "cannot convert string from 
UTF-8 to UTF-16";
-               if (s.size() > INT_MAX)
-                       FMT_THROW(WindowsError(ERROR_INVALID_PARAMETER, 
ERROR_MSG));
-               int s_size = static_cast<int>(s.size());
-               int length = MultiByteToWideChar(
-                       CP_UTF8, MB_ERR_INVALID_CHARS, s.data(), s_size, 
FMT_NULL, 0);
-               if (length == 0)
-                       FMT_THROW(WindowsError(GetLastError(), ERROR_MSG));
-               buffer_.resize(length + 1);
-               length = MultiByteToWideChar(
-                       CP_UTF8, MB_ERR_INVALID_CHARS, s.data(), s_size, 
&buffer_[0], length);
-               if (length == 0)
-                       FMT_THROW(WindowsError(GetLastError(), ERROR_MSG));
-               buffer_[length] = 0;
-       }
-
-       FMT_FUNC internal::UTF16ToUTF8::UTF16ToUTF8(WStringRef s)
-       {
-               if (int error_code = convert(s)) {
-                       FMT_THROW(WindowsError(error_code,
-                               "cannot convert string from UTF-16 to UTF-8"));
-               }
-       }
-
-       FMT_FUNC int internal::UTF16ToUTF8::convert(WStringRef s)
-       {
-               if (s.size() > INT_MAX)
-                       return ERROR_INVALID_PARAMETER;
-               int s_size = static_cast<int>(s.size());
-               int length = WideCharToMultiByte(
-                       CP_UTF8, 0, s.data(), s_size, FMT_NULL, 0, FMT_NULL, 
FMT_NULL);
-               if (length == 0)
-                       return GetLastError();
-               buffer_.resize(length + 1);
-               length = WideCharToMultiByte(
-                       CP_UTF8, 0, s.data(), s_size, &buffer_[0], length, 
FMT_NULL, FMT_NULL);
-               if (length == 0)
-                       return GetLastError();
-               buffer_[length] = 0;
-               return 0;
-       }
-
-       FMT_FUNC void WindowsError::init(
-               int err_code, CStringRef format_str, ArgList args)
-       {
-               error_code_ = err_code;
-               MemoryWriter w;
-               internal::format_windows_error(w, err_code, format(format_str, 
args));
-               std::runtime_error &base = *this;
-               base = std::runtime_error(w.str());
-       }
-
-       FMT_FUNC void internal::format_windows_error(
-               Writer &out, int error_code, StringRef message) FMT_NOEXCEPT
-       {
-               FMT_TRY{
-                       MemoryBuffer<wchar_t, INLINE_BUFFER_SIZE> buffer;
-               buffer.resize(INLINE_BUFFER_SIZE);
-               for (;;) {
-                       wchar_t *system_message = &buffer[0];
-                       int result = FormatMessageW(
-                               FORMAT_MESSAGE_FROM_SYSTEM | 
FORMAT_MESSAGE_IGNORE_INSERTS,
-                               FMT_NULL, error_code, MAKELANGID(LANG_NEUTRAL, 
SUBLANG_DEFAULT),
-                               system_message, 
static_cast<uint32_t>(buffer.size()), FMT_NULL);
-                       if (result != 0) {
-                               UTF16ToUTF8 utf8_message;
-                               if (utf8_message.convert(system_message) == 
ERROR_SUCCESS) {
-                                       out << message << ": " << utf8_message;
-                                       return;
-                               }
-                               break;
-                       }
-                       if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
-                               break;  // Can't get error message, report 
error code instead.
-                       buffer.resize(buffer.size() * 2);
-               }
-               } FMT_CATCH(...)
-               {}
-               fmt::format_error_code(out, error_code, message);  // 'fmt::' 
is for bcc32.
-       }
-
-#endif  // FMT_USE_WINDOWS_H
-
-       FMT_FUNC void format_system_error(
-               Writer &out, int error_code, StringRef message) FMT_NOEXCEPT
-       {
-               FMT_TRY{
-                       internal::MemoryBuffer<char, 
internal::INLINE_BUFFER_SIZE> buffer;
-               buffer.resize(internal::INLINE_BUFFER_SIZE);
-               for (;;) {
-                       char *system_message = &buffer[0];
-                       int result = safe_strerror(error_code, system_message, 
buffer.size());
-                       if (result == 0) {
-                               out << message << ": " << system_message;
-                               return;
-                       }
-                       if (result != ERANGE)
-                               break;  // Can't get error message, report 
error code instead.
-                       buffer.resize(buffer.size() * 2);
-               }
-               } FMT_CATCH(...)
-               {}
-               fmt::format_error_code(out, error_code, message);  // 'fmt::' 
is for bcc32.
-       }
-
-       template <typename Char>
-       void internal::ArgMap<Char>::init(const ArgList &args)
-       {
-               if (!map_.empty())
-                       return;
-               typedef internal::NamedArg<Char> NamedArg;
-               const NamedArg *named_arg = FMT_NULL;
-               bool use_values =
-                       args.type(ArgList::MAX_PACKED_ARGS - 1) == 
internal::Arg::NONE;
-               if (use_values) {
-                       for (unsigned i = 0;/*nothing*/; ++i) {
-                               internal::Arg::Type arg_type = args.type(i);
-                               switch (arg_type) {
-                               case internal::Arg::NONE:
-                                       return;
-                               case internal::Arg::NAMED_ARG:
-                                       named_arg = static_cast<const 
NamedArg*>(args.values_[i].pointer);
-                                       map_.push_back(Pair(named_arg->name, 
*named_arg));
-                                       break;
-                               default:
-                                       /*nothing*/;
-                               }
-                       }
-                       return;
-               }
-               for (unsigned i = 0; i != ArgList::MAX_PACKED_ARGS; ++i) {
-                       internal::Arg::Type arg_type = args.type(i);
-                       if (arg_type == internal::Arg::NAMED_ARG) {
-                               named_arg = static_cast<const 
NamedArg*>(args.args_[i].pointer);
-                               map_.push_back(Pair(named_arg->name, 
*named_arg));
-                       }
-               }
-               for (unsigned i = ArgList::MAX_PACKED_ARGS;/*nothing*/; ++i) {
-                       switch (args.args_[i].type) {
-                       case internal::Arg::NONE:
-                               return;
-                       case internal::Arg::NAMED_ARG:
-                               named_arg = static_cast<const 
NamedArg*>(args.args_[i].pointer);
-                               map_.push_back(Pair(named_arg->name, 
*named_arg));
-                               break;
-                       default:
-                               /*nothing*/;
-                       }
-               }
-       }
-
-       template <typename Char>
-       void internal::FixedBuffer<Char>::grow(std::size_t)
-       {
-               FMT_THROW(std::runtime_error("buffer overflow"));
-       }
-
-       FMT_FUNC Arg internal::FormatterBase::do_get_arg(
-               unsigned arg_index, const char *&error)
-       {
-               Arg arg = args_[arg_index];
-               switch (arg.type) {
-               case Arg::NONE:
-                       error = "argument index out of range";
-                       break;
-               case Arg::NAMED_ARG:
-                       arg = *static_cast<const internal::Arg*>(arg.pointer);
-                       break;
-               default:
-                       /*nothing*/;
-               }
-               return arg;
-       }
-
-       FMT_FUNC void report_system_error(
-               int error_code, fmt::StringRef message) FMT_NOEXCEPT
-       {
-               // 'fmt::' is for bcc32.
-               report_error(format_system_error, error_code, message);
-       }
-
-#if FMT_USE_WINDOWS_H
-       FMT_FUNC void report_windows_error(
-               int error_code, fmt::StringRef message) FMT_NOEXCEPT
-       {
-               // 'fmt::' is for bcc32.
-               report_error(internal::format_windows_error, error_code, 
message);
-       }
-#endif
-
-       FMT_FUNC void print(std::FILE *f, CStringRef format_str, ArgList args)
-       {
-               MemoryWriter w;
-               w.write(format_str, args);
-               std::fwrite(w.data(), 1, w.size(), f);
-       }
-
-       FMT_FUNC void print(CStringRef format_str, ArgList args)
-       {
-               print(stdout, format_str, args);
-       }
-
-       FMT_FUNC void print_colored(Color c, CStringRef format, ArgList args)
-       {
-               char escape[] = "\x1b[30m";
-               escape[3] = static_cast<char>('0' + c);
-               std::fputs(escape, stdout);
-               print(format, args);
-               std::fputs(RESET_COLOR, stdout);
-       }
-
-#ifndef FMT_HEADER_ONLY
-
-       template struct internal::BasicData<void>;
-
-       // Explicit instantiations for char.
-
-       template void internal::FixedBuffer<char>::grow(std::size_t);
-
-       template void internal::ArgMap<char>::init(const ArgList &args);
-
-       template int internal::CharTraits<char>::format_float(
-               char *buffer, std::size_t size, const char *format,
-               unsigned width, int precision, double value);
-
-       template int internal::CharTraits<char>::format_float(
-               char *buffer, std::size_t size, const char *format,
-               unsigned width, int precision, long double value);
-
-       // Explicit instantiations for wchar_t.
-
-       template void internal::FixedBuffer<wchar_t>::grow(std::size_t);
-
-       template void internal::ArgMap<wchar_t>::init(const ArgList &args);
-
-       template int internal::CharTraits<wchar_t>::format_float(
-               wchar_t *buffer, std::size_t size, const wchar_t *format,
-               unsigned width, int precision, double value);
-
-       template int internal::CharTraits<wchar_t>::format_float(
-               wchar_t *buffer, std::size_t size, const wchar_t *format,
-               unsigned width, int precision, long double value);
-
-#endif  // FMT_HEADER_ONLY
-
-}  // namespace fmt
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif

Reply via email to