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)
* Mac OSX (clang 3.5+)
* Android
* VxWorks 7
##Features
* 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).
* syslog.
* 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).
* 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);
#else
#ifdef __VXWORKS__
long int offset_seconds = 0;
#else
long int offset_seconds = tm.tm_gmtoff;
#endif
#endif
return static_cast<int>(offset_seconds / 60);
@ -377,7 +381,7 @@ inline std::string errno_str(int err_num)
else
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
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 <cstdarg>
#include <cstddef> // for std::ptrdiff_t
#include <stdio.h>
#if defined(_WIN32) && defined(__MINGW32__)
# include <cstring>
@ -444,12 +445,12 @@ namespace fmt {
typedef internal::NamedArg<Char> NamedArg;
const NamedArg *named_arg = FMT_NULL;
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) {
for (unsigned i = 0;/*nothing*/; ++i) {
internal::Arg::Type arg_type = args.type(i);
switch (arg_type) {
case internal::Arg::NONE:
case internal::Arg::NONE_ARG:
return;
case internal::Arg::NAMED_ARG:
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) {
switch (args.args_[i].type) {
case internal::Arg::NONE:
case internal::Arg::NONE_ARG:
return;
case internal::Arg::NAMED_ARG:
named_arg = static_cast<const NamedArg*>(args.args_[i].pointer);
@ -493,7 +494,7 @@ namespace fmt {
{
Arg arg = args_[arg_index];
switch (arg.type) {
case Arg::NONE:
case Arg::NONE_ARG:
error = "argument index out of range";
break;
case Arg::NAMED_ARG:

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

Loading…
Cancel
Save