Add support of VxWorks 7

pull/363/head
Benichou 9 years ago
parent 44d9c44824
commit 5b73bfebbc

@ -11,6 +11,7 @@ Just copy the source [folder](https://github.com/gabime/spdlog/tree/master/inclu
* Windows (vc 2013+, cygwin/mingw) * Windows (vc 2013+, cygwin/mingw)
* Mac OSX (clang 3.5+) * Mac OSX (clang 3.5+)
* Android * Android
* VxWorks 7
##Features ##Features
* Very fast - performance is the primary goal (see [benchmarks](#benchmarks) below). * Very fast - performance is the primary goal (see [benchmarks](#benchmarks) below).
@ -25,6 +26,7 @@ Just copy the source [folder](https://github.com/gabime/spdlog/tree/master/inclu
* Console logging (colors supported). * Console logging (colors supported).
* syslog. * syslog.
* Windows debugger (```OutputDebugString(..)```) * Windows debugger (```OutputDebugString(..)```)
* Android output (```__android_log_write(..)```)
* Easily extendable with custom log targets (just implement a single function in the [sink](include/spdlog/sinks/sink.h) interface). * Easily extendable with custom log targets (just implement a single function in the [sink](include/spdlog/sinks/sink.h) interface).
* Severity based filtering - threshold levels can be modified in runtime as well as in compile time. * Severity based filtering - threshold levels can be modified in runtime as well as in compile time.

@ -306,8 +306,12 @@ inline int utc_minutes_offset(const std::tm& tm = details::os::localtime())
}; };
long int offset_seconds = helper::calculate_gmt_offset(tm); long int offset_seconds = helper::calculate_gmt_offset(tm);
#else
#ifdef __VXWORKS__
long int offset_seconds = 0;
#else #else
long int offset_seconds = tm.tm_gmtoff; long int offset_seconds = tm.tm_gmtoff;
#endif
#endif #endif
return static_cast<int>(offset_seconds / 60); return static_cast<int>(offset_seconds / 60);
@ -377,7 +381,7 @@ inline std::string errno_str(int err_num)
else else
return "Unkown error"; return "Unkown error";
#elif defined(__FreeBSD__) || defined(__APPLE__) || defined(ANDROID) || defined(__SUNPRO_CC) || \ #elif defined(__FreeBSD__) || defined(__APPLE__) || defined(ANDROID) || defined(__SUNPRO_CC) || defined(__VXWORKS__) || \
((_POSIX_C_SOURCE >= 200112L) && ! defined(_GNU_SOURCE)) // posix version ((_POSIX_C_SOURCE >= 200112L) && ! defined(_GNU_SOURCE)) // posix version
if (strerror_r(err_num, buf, buf_size) == 0) if (strerror_r(err_num, buf, buf_size) == 0)

@ -35,6 +35,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <cmath> #include <cmath>
#include <cstdarg> #include <cstdarg>
#include <cstddef> // for std::ptrdiff_t #include <cstddef> // for std::ptrdiff_t
#include <stdio.h>
#if defined(_WIN32) && defined(__MINGW32__) #if defined(_WIN32) && defined(__MINGW32__)
# include <cstring> # include <cstring>
@ -444,12 +445,12 @@ namespace fmt {
typedef internal::NamedArg<Char> NamedArg; typedef internal::NamedArg<Char> NamedArg;
const NamedArg *named_arg = FMT_NULL; const NamedArg *named_arg = FMT_NULL;
bool use_values = bool use_values =
args.type(ArgList::MAX_PACKED_ARGS - 1) == internal::Arg::NONE; args.type(ArgList::MAX_PACKED_ARGS - 1) == internal::Arg::NONE_ARG;
if (use_values) { if (use_values) {
for (unsigned i = 0;/*nothing*/; ++i) { for (unsigned i = 0;/*nothing*/; ++i) {
internal::Arg::Type arg_type = args.type(i); internal::Arg::Type arg_type = args.type(i);
switch (arg_type) { switch (arg_type) {
case internal::Arg::NONE: case internal::Arg::NONE_ARG:
return; return;
case internal::Arg::NAMED_ARG: case internal::Arg::NAMED_ARG:
named_arg = static_cast<const NamedArg*>(args.values_[i].pointer); named_arg = static_cast<const NamedArg*>(args.values_[i].pointer);
@ -470,7 +471,7 @@ namespace fmt {
} }
for (unsigned i = ArgList::MAX_PACKED_ARGS;/*nothing*/; ++i) { for (unsigned i = ArgList::MAX_PACKED_ARGS;/*nothing*/; ++i) {
switch (args.args_[i].type) { switch (args.args_[i].type) {
case internal::Arg::NONE: case internal::Arg::NONE_ARG:
return; return;
case internal::Arg::NAMED_ARG: case internal::Arg::NAMED_ARG:
named_arg = static_cast<const NamedArg*>(args.args_[i].pointer); named_arg = static_cast<const NamedArg*>(args.args_[i].pointer);
@ -493,7 +494,7 @@ namespace fmt {
{ {
Arg arg = args_[arg_index]; Arg arg = args_[arg_index];
switch (arg.type) { switch (arg.type) {
case Arg::NONE: case Arg::NONE_ARG:
error = "argument index out of range"; error = "argument index out of range";
break; break;
case Arg::NAMED_ARG: case Arg::NAMED_ARG:

@ -1285,7 +1285,7 @@ struct Value
enum Type enum Type
{ {
NONE, NAMED_ARG, NONE_ARG, NAMED_ARG,
// Integer types should go first, // Integer types should go first,
INT, UINT, LONG_LONG, ULONG_LONG, BOOL, CHAR, LAST_INTEGER_TYPE = CHAR, INT, UINT, LONG_LONG, ULONG_LONG, BOOL, CHAR, LAST_INTEGER_TYPE = CHAR,
// followed by floating-point types. // followed by floating-point types.
@ -1684,7 +1684,7 @@ class MakeArg: public Arg
public: public:
MakeArg() MakeArg()
{ {
type = Arg::NONE; type = Arg::NONE_ARG;
} }
template <typename T> template <typename T>
@ -1781,12 +1781,12 @@ public:
{ {
using internal::Arg; using internal::Arg;
Arg arg; Arg arg;
bool use_values = type(MAX_PACKED_ARGS - 1) == Arg::NONE; bool use_values = type(MAX_PACKED_ARGS - 1) == Arg::NONE_ARG;
if (index < MAX_PACKED_ARGS) if (index < MAX_PACKED_ARGS)
{ {
Arg::Type arg_type = type(index); Arg::Type arg_type = type(index);
internal::Value &val = arg; internal::Value &val = arg;
if (arg_type != Arg::NONE) if (arg_type != Arg::NONE_ARG)
val = use_values ? values_[index] : args_[index]; val = use_values ? values_[index] : args_[index];
arg.type = arg_type; arg.type = arg_type;
return arg; return arg;
@ -1795,12 +1795,12 @@ public:
{ {
// The index is greater than the number of arguments that can be stored // The index is greater than the number of arguments that can be stored
// in values, so return a "none" argument. // in values, so return a "none" argument.
arg.type = Arg::NONE; arg.type = Arg::NONE_ARG;
return arg; return arg;
} }
for (unsigned i = MAX_PACKED_ARGS; i <= index; ++i) for (unsigned i = MAX_PACKED_ARGS; i <= index; ++i)
{ {
if (args_[i].type == Arg::NONE) if (args_[i].type == Arg::NONE_ARG)
return args_[i]; return args_[i];
} }
return args_[index]; return args_[index];
@ -1961,7 +1961,7 @@ public:
{ {
switch (arg.type) switch (arg.type)
{ {
case Arg::NONE: case Arg::NONE_ARG:
case Arg::NAMED_ARG: case Arg::NAMED_ARG:
FMT_ASSERT(false, "invalid argument type"); FMT_ASSERT(false, "invalid argument type");
break; break;
@ -2672,7 +2672,7 @@ static Value make(const T &value)
template <unsigned N> template <unsigned N>
struct ArgArray<N, false/*IsPacked*/> struct ArgArray<N, false/*IsPacked*/>
{ {
typedef Arg Type[N + 1]; // +1 for the list end Arg::NONE typedef Arg Type[N + 1]; // +1 for the list end Arg::NONE_ARG
template <typename Formatter, typename T> template <typename Formatter, typename T>
static Arg make(const T &value) static Arg make(const T &value)

Loading…
Cancel
Save