diff options
author | David Robillard <d@drobilla.net> | 2018-11-24 13:44:03 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2018-11-24 13:44:03 +0100 |
commit | a7d83f19b08eb4c6f79a82fe60c2b86db13f4420 (patch) | |
tree | d9b620bfba1e7462df4ddb3f6225cc5216c0ca81 /src/Log.cpp | |
parent | d63edc742cebd685f8a05936682210aa5c1e69a9 (diff) | |
download | ingen-a7d83f19b08eb4c6f79a82fe60c2b86db13f4420.tar.gz ingen-a7d83f19b08eb4c6f79a82fe60c2b86db13f4420.tar.bz2 ingen-a7d83f19b08eb4c6f79a82fe60c2b86db13f4420.zip |
Squashed 'waflib/' changes from 6e726eb1..5ea8f99f
5ea8f99f Improve test output spacing
0e23b29f Raise exception when test suite fails to ensure non-zero exit status
d6de073b Show run time of unit tests
5b655541 Add short configure option for ultra-strict flags
4687ba6d Use gtest-like test output
258903d9 Fix failure count in test group summaries
da07e738 Fix verbose tests with Python 3
git-subtree-dir: waflib
git-subtree-split: 5ea8f99f6e1246079c1fe6bb590c38a53aadd40d
Diffstat (limited to 'src/Log.cpp')
-rw-r--r-- | src/Log.cpp | 162 |
1 files changed, 0 insertions, 162 deletions
diff --git a/src/Log.cpp b/src/Log.cpp deleted file mode 100644 index 6145bcd1..00000000 --- a/src/Log.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/* - This file is part of Ingen. - Copyright 2007-2016 David Robillard <http://drobilla.net/> - - Ingen is free software: you can redistribute it and/or modify it under the - terms of the GNU Affero General Public License as published by the Free - Software Foundation, either version 3 of the License, or any later version. - - Ingen 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 Affero General Public License for details. - - You should have received a copy of the GNU Affero General Public License - along with Ingen. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include <cstdio> - -#include "ingen/Log.hpp" -#include "ingen/Node.hpp" -#include "ingen/URIs.hpp" -#include "ingen/World.hpp" -#include "ingen/ColorContext.hpp" - -namespace Ingen { - -Log::Log(LV2_Log_Log* log, URIs& uris) - : _log(log) - , _uris(uris) - , _flush(false) - , _trace(false) -{} - -void -Log::rt_error(const char* msg) -{ -#ifndef NDEBUG - va_list args; - vtprintf(_uris.log_Error, msg, args); -#endif -} - -void -Log::error(const std::string& msg) -{ - va_list args; - vtprintf(_uris.log_Error, msg.c_str(), args); -} - -void -Log::warn(const std::string& msg) -{ - va_list args; - vtprintf(_uris.log_Warning, msg.c_str(), args); -} - -void -Log::info(const std::string& msg) -{ - va_list args; - vtprintf(_uris.log_Note, msg.c_str(), args); -} - -void -Log::trace(const std::string& msg) -{ - va_list args; - vtprintf(_uris.log_Trace, msg.c_str(), args); -} - -void -Log::print(FILE* stream, const std::string& msg) -{ - fprintf(stream, "%s", msg.c_str()); - if (_flush) { - fflush(stdout); - } -} - -int -Log::vtprintf(LV2_URID type, const char* fmt, va_list args) -{ - int ret = 0; - if (type == _uris.log_Trace && !_trace) { - return 0; - } else if (_sink) { - _sink(type, fmt, args); - } - - if (_log) { - ret = _log->vprintf(_log->handle, type, fmt, args); - } else if (type == _uris.log_Error) { - ColorContext ctx(stderr, ColorContext::Color::RED); - ret = vfprintf(stderr, fmt, args); - } else if (type == _uris.log_Warning) { - ColorContext ctx(stderr, ColorContext::Color::YELLOW); - ret = vfprintf(stderr, fmt, args); - } else if (type == _uris.log_Note) { - ColorContext ctx(stderr, ColorContext::Color::GREEN); - ret = vfprintf(stdout, fmt, args); - } else if (_trace && type == _uris.log_Trace) { - ColorContext ctx(stderr, ColorContext::Color::GREEN); - ret = vfprintf(stderr, fmt, args); - } else { - fprintf(stderr, "Unknown log type %d\n", type); - return 0; - } - if (_flush) { - fflush(stdout); - } - return ret; -} - -static int -log_vprintf(LV2_Log_Handle handle, LV2_URID type, const char* fmt, va_list args) -{ - Log::Feature::Handle* f = (Log::Feature::Handle*)handle; - va_list noargs; - - int ret = f->log->vtprintf(type, f->node->path().c_str(), noargs); - ret += f->log->vtprintf(type, ": ", noargs); - ret += f->log->vtprintf(type, fmt, args); - - return ret; -} - -static int -log_printf(LV2_Log_Handle handle, LV2_URID type, const char* fmt, ...) -{ - va_list args; - va_start(args, fmt); - const int ret = log_vprintf(handle, type, fmt, args); - va_end(args); - - return ret; -} - -static void -free_log_feature(LV2_Feature* feature) { - LV2_Log_Log* lv2_log = (LV2_Log_Log*)feature->data; - free(lv2_log->handle); - free(feature); -} - -SPtr<LV2_Feature> -Log::Feature::feature(World* world, Node* block) -{ - Handle* handle = (Handle*)calloc(1, sizeof(Handle)); - handle->lv2_log.handle = handle; - handle->lv2_log.printf = log_printf; - handle->lv2_log.vprintf = log_vprintf; - handle->log = &world->log(); - handle->node = block; - - LV2_Feature* f = (LV2_Feature*)malloc(sizeof(LV2_Feature)); - f->URI = LV2_LOG__log; - f->data = &handle->lv2_log; - - return SPtr<LV2_Feature>(f, &free_log_feature); -} - -} // namespace Ingen |