diff options
author | Max Kellermann <max@duempel.org> | 2013-07-28 20:31:27 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2013-07-29 07:39:36 +0200 |
commit | 96b763067e82d4b3a1b08b3a3c0ccca2114c35f3 (patch) | |
tree | 68eb90ec47a20256fbb243f9fb6650e790fffd38 /src | |
parent | dd5ba062cc03d0de7fa2b46f16817f8c7c2b112e (diff) | |
download | mpd-96b763067e82d4b3a1b08b3a3c0ccca2114c35f3.tar.gz mpd-96b763067e82d4b3a1b08b3a3c0ccca2114c35f3.tar.xz mpd-96b763067e82d4b3a1b08b3a3c0ccca2114c35f3.zip |
ape: convert to C++
Diffstat (limited to 'src')
-rw-r--r-- | src/ApeLoader.cxx (renamed from src/ape.c) | 16 | ||||
-rw-r--r-- | src/ApeLoader.hxx (renamed from src/ape.h) | 17 | ||||
-rw-r--r-- | src/ApeReplayGain.cxx (renamed from src/replay_gain_ape.c) | 58 | ||||
-rw-r--r-- | src/ApeReplayGain.hxx (renamed from src/replay_gain_ape.h) | 8 | ||||
-rw-r--r-- | src/ApeTag.cxx (renamed from src/tag_ape.c) | 47 | ||||
-rw-r--r-- | src/ApeTag.hxx (renamed from src/tag_ape.h) | 6 | ||||
-rw-r--r-- | src/DecoderThread.cxx | 5 | ||||
-rw-r--r-- | src/SongUpdate.cxx | 2 | ||||
-rw-r--r-- | src/decoder/WavpackDecoderPlugin.cxx | 2 | ||||
-rw-r--r-- | src/playlist/EmbeddedCuePlaylistPlugin.cxx | 5 |
10 files changed, 73 insertions, 93 deletions
diff --git a/src/ape.c b/src/ApeLoader.cxx index 6257fe6b3..dfbdb4ef3 100644 --- a/src/ape.c +++ b/src/ApeLoader.cxx @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2011 The Music Player Daemon Project + * Copyright (C) 2003-2013 The Music Player Daemon Project * http://www.musicpd.org * * This program is free software; you can redistribute it and/or modify @@ -18,7 +18,7 @@ */ #include "config.h" -#include "ape.h" +#include "ApeLoader.hxx" #include <glib.h> @@ -37,7 +37,7 @@ struct ape_footer { }; static bool -ape_scan_internal(FILE *fp, tag_ape_callback_t callback, void *ctx) +ape_scan_internal(FILE *fp, ApeTagCallback callback) { /* determine if file has an apeV2 tag */ struct ape_footer footer; @@ -59,7 +59,7 @@ ape_scan_internal(FILE *fp, tag_ape_callback_t callback, void *ctx) remaining -= sizeof(footer); assert(remaining > 10); - char *buffer = g_malloc(remaining); + char *buffer = (char *)g_malloc(remaining); if (fread(buffer, 1, remaining, fp) != remaining) { g_free(buffer); return false; @@ -89,7 +89,7 @@ ape_scan_internal(FILE *fp, tag_ape_callback_t callback, void *ctx) if (remaining < size) break; - if (!callback(flags, key, p, size, ctx)) + if (!callback(flags, key, p, size)) break; p += size; @@ -101,15 +101,15 @@ ape_scan_internal(FILE *fp, tag_ape_callback_t callback, void *ctx) } bool -tag_ape_scan(const char *path_fs, tag_ape_callback_t callback, void *ctx) +tag_ape_scan(const char *path_fs, ApeTagCallback callback) { FILE *fp; fp = fopen(path_fs, "rb"); - if (fp == NULL) + if (fp == nullptr) return false; - bool success = ape_scan_internal(fp, callback, ctx); + bool success = ape_scan_internal(fp, callback); fclose(fp); return success; } diff --git a/src/ape.h b/src/ApeLoader.hxx index c2b271b15..a32ab840c 100644 --- a/src/ape.h +++ b/src/ApeLoader.hxx @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2011 The Music Player Daemon Project + * Copyright (C) 2003-2013 The Music Player Daemon Project * http://www.musicpd.org * * This program is free software; you can redistribute it and/or modify @@ -17,17 +17,18 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef MPD_APE_H -#define MPD_APE_H +#ifndef MPD_APE_LOADER_HXX +#define MPD_APE_LOADER_HXX #include "check.h" -#include <stdbool.h> +#include <functional> + #include <stddef.h> -typedef bool (*tag_ape_callback_t)(unsigned long flags, const char *key, - const char *value, size_t value_length, - void *ctx); +typedef std::function<bool(unsigned long flags, const char *key, + const char *value, + size_t value_length)> ApeTagCallback; /** * Scans the APE tag values from a file. @@ -37,6 +38,6 @@ typedef bool (*tag_ape_callback_t)(unsigned long flags, const char *key, * present */ bool -tag_ape_scan(const char *path_fs, tag_ape_callback_t callback, void *ctx); +tag_ape_scan(const char *path_fs, ApeTagCallback callback); #endif diff --git a/src/replay_gain_ape.c b/src/ApeReplayGain.cxx index 0b59e3c02..0135d1b61 100644 --- a/src/replay_gain_ape.c +++ b/src/ApeReplayGain.cxx @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2011 The Music Player Daemon Project + * Copyright (C) 2003-2013 The Music Player Daemon Project * http://www.musicpd.org * * This program is free software; you can redistribute it and/or modify @@ -18,61 +18,61 @@ */ #include "config.h" -#include "replay_gain_ape.h" +#include "ApeReplayGain.hxx" +#include "ApeLoader.hxx" #include "replay_gain_info.h" -#include "ape.h" #include <glib.h> #include <string.h> #include <stdlib.h> -struct rg_ape_ctx { - struct replay_gain_info *info; - bool found; -}; - static bool replay_gain_ape_callback(unsigned long flags, const char *key, - const char *_value, size_t value_length, void *_ctx) + const char *_value, size_t value_length, + struct replay_gain_info *info) { - struct rg_ape_ctx *ctx = _ctx; - /* we only care about utf-8 text tags */ if ((flags & (0x3 << 1)) != 0) - return true; + return false; char value[16]; if (value_length >= sizeof(value)) - return true; + return false; + memcpy(value, _value, value_length); value[value_length] = 0; if (g_ascii_strcasecmp(key, "replaygain_track_gain") == 0) { - ctx->info->tuples[REPLAY_GAIN_TRACK].gain = atof(value); - ctx->found = true; + info->tuples[REPLAY_GAIN_TRACK].gain = atof(value); + return true; } else if (g_ascii_strcasecmp(key, "replaygain_album_gain") == 0) { - ctx->info->tuples[REPLAY_GAIN_ALBUM].gain = atof(value); - ctx->found = true; + info->tuples[REPLAY_GAIN_ALBUM].gain = atof(value); + return true; } else if (g_ascii_strcasecmp(key, "replaygain_track_peak") == 0) { - ctx->info->tuples[REPLAY_GAIN_TRACK].peak = atof(value); - ctx->found = true; + info->tuples[REPLAY_GAIN_TRACK].peak = atof(value); + return true; } else if (g_ascii_strcasecmp(key, "replaygain_album_peak") == 0) { - ctx->info->tuples[REPLAY_GAIN_ALBUM].peak = atof(value); - ctx->found = true; - } - - return true; + info->tuples[REPLAY_GAIN_ALBUM].peak = atof(value); + return true; + } else + return false; } bool replay_gain_ape_read(const char *path_fs, struct replay_gain_info *info) { - struct rg_ape_ctx ctx = { - .info = info, - .found = false, + bool found = false; + + auto callback = [info, &found] + (unsigned long flags, const char *key, + const char *value, + size_t value_length) { + found |= replay_gain_ape_callback(flags, key, + value, value_length, + info); + return true; }; - return tag_ape_scan(path_fs, replay_gain_ape_callback, &ctx) && - ctx.found; + return tag_ape_scan(path_fs, callback) && found; } diff --git a/src/replay_gain_ape.h b/src/ApeReplayGain.hxx index 35760a0aa..4bc34a9d2 100644 --- a/src/replay_gain_ape.h +++ b/src/ApeReplayGain.hxx @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2011 The Music Player Daemon Project + * Copyright (C) 2003-2013 The Music Player Daemon Project * http://www.musicpd.org * * This program is free software; you can redistribute it and/or modify @@ -17,13 +17,11 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef MPD_REPLAY_GAIN_APE_H -#define MPD_REPLAY_GAIN_APE_H +#ifndef MPD_APE_REPLAY_GAIN_HXX +#define MPD_APE_REPLAY_GAIN_HXX #include "check.h" -#include <stdbool.h> - struct replay_gain_info; bool diff --git a/src/tag_ape.c b/src/ApeTag.cxx index 0adc43092..1195ffe5f 100644 --- a/src/tag_ape.c +++ b/src/ApeTag.cxx @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2011 The Music Player Daemon Project + * Copyright (C) 2003-2013 The Music Player Daemon Project * http://www.musicpd.org * * This program is free software; you can redistribute it and/or modify @@ -18,16 +18,16 @@ */ #include "config.h" -#include "tag_ape.h" +#include "ApeTag.hxx" +#include "ApeLoader.hxx" #include "tag.h" #include "tag_table.h" #include "tag_handler.h" -#include "ape.h" const struct tag_table ape_tags[] = { { "album artist", TAG_ALBUM_ARTIST }, { "year", TAG_DATE }, - { NULL, TAG_NUM_OF_ITEM_TYPES } + { nullptr, TAG_NUM_OF_ITEM_TYPES } }; static enum tag_type @@ -62,8 +62,8 @@ tag_ape_import_item(unsigned long flags, const char *end = value + value_length; while (true) { /* multiple values are separated by null bytes */ - const char *n = memchr(value, 0, end - value); - if (n != NULL) { + const char *n = (const char *)memchr(value, 0, end - value); + if (n != nullptr) { if (n > value) { tag_handler_invoke_tag(handler, handler_ctx, type, value); @@ -84,34 +84,21 @@ tag_ape_import_item(unsigned long flags, return recognized; } -struct tag_ape_ctx { - const struct tag_handler *handler; - void *handler_ctx; - - bool recognized; -}; - -static bool -tag_ape_callback(unsigned long flags, const char *key, - const char *value, size_t value_length, void *_ctx) -{ - struct tag_ape_ctx *ctx = _ctx; - - ctx->recognized |= tag_ape_import_item(flags, key, value, value_length, - ctx->handler, ctx->handler_ctx); - return true; -} - bool tag_ape_scan2(const char *path_fs, const struct tag_handler *handler, void *handler_ctx) { - struct tag_ape_ctx ctx = { - .handler = handler, - .handler_ctx = handler_ctx, - .recognized = false, + bool recognized = false; + + auto callback = [handler, handler_ctx, &recognized] + (unsigned long flags, const char *key, + const char *value, + size_t value_length) { + recognized |= tag_ape_import_item(flags, key, value, + value_length, + handler, handler_ctx); + return true; }; - return tag_ape_scan(path_fs, tag_ape_callback, &ctx) && - ctx.recognized; + return tag_ape_scan(path_fs, callback) && recognized; } diff --git a/src/tag_ape.h b/src/ApeTag.hxx index e2daf088d..3e6655531 100644 --- a/src/tag_ape.h +++ b/src/ApeTag.hxx @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2011 The Music Player Daemon Project + * Copyright (C) 2003-2013 The Music Player Daemon Project * http://www.musicpd.org * * This program is free software; you can redistribute it and/or modify @@ -17,8 +17,8 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef MPD_TAG_APE_H -#define MPD_TAG_APE_H +#ifndef MPD_APE_TAG_HXX +#define MPD_APE_TAG_HXX #include "tag_table.h" diff --git a/src/DecoderThread.cxx b/src/DecoderThread.cxx index f69a5fb3c..747319463 100644 --- a/src/DecoderThread.cxx +++ b/src/DecoderThread.cxx @@ -32,10 +32,7 @@ #include "InputStream.hxx" #include "DecoderList.hxx" #include "util/UriUtil.hxx" - -extern "C" { -#include "replay_gain_ape.h" -} +#include "ApeReplayGain.hxx" #include <glib.h> diff --git a/src/SongUpdate.cxx b/src/SongUpdate.cxx index cfe4741c9..8285cdd99 100644 --- a/src/SongUpdate.cxx +++ b/src/SongUpdate.cxx @@ -29,9 +29,9 @@ #include "DecoderPlugin.hxx" #include "DecoderList.hxx" #include "TagId3.hxx" +#include "ApeTag.hxx" extern "C" { -#include "tag_ape.h" #include "tag_handler.h" } diff --git a/src/decoder/WavpackDecoderPlugin.cxx b/src/decoder/WavpackDecoderPlugin.cxx index 6776f7193..a1512ee63 100644 --- a/src/decoder/WavpackDecoderPlugin.cxx +++ b/src/decoder/WavpackDecoderPlugin.cxx @@ -27,7 +27,7 @@ extern "C" { } #include "tag_handler.h" -#include "tag_ape.h" +#include "ApeTag.hxx" #include <wavpack/wavpack.h> #include <glib.h> diff --git a/src/playlist/EmbeddedCuePlaylistPlugin.cxx b/src/playlist/EmbeddedCuePlaylistPlugin.cxx index 8f8d87153..c45e1d718 100644 --- a/src/playlist/EmbeddedCuePlaylistPlugin.cxx +++ b/src/playlist/EmbeddedCuePlaylistPlugin.cxx @@ -29,14 +29,11 @@ #include "tag.h" #include "tag_handler.h" #include "TagId3.hxx" +#include "ApeTag.hxx" #include "Song.hxx" #include "TagFile.hxx" #include "cue/CueParser.hxx" -extern "C" { -#include "tag_ape.h" -} - #include <glib.h> #include <assert.h> #include <string.h> |