From 0921180b9020c2a83d0c1e6636d32278770de5d9 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 9 Apr 2013 01:08:20 +0200 Subject: string_util: convert to C++ --- Makefile.am | 29 ++++++------ src/ArchiveList.cxx | 2 +- src/ConfigFile.cxx | 6 +-- src/ConfigParser.cxx | 5 +- src/DecoderPlugin.cxx | 2 +- src/PlaylistDatabase.cxx | 5 +- src/PlaylistRegistry.cxx | 3 +- src/SongSave.cxx | 5 +- src/cue/CueParser.cxx | 2 +- src/playlist/ExtM3uPlaylistPlugin.cxx | 2 +- src/string_util.c | 46 ------------------ src/string_util.h | 89 ----------------------------------- src/util/StringUtil.cxx | 46 ++++++++++++++++++ src/util/StringUtil.hxx | 80 +++++++++++++++++++++++++++++++ src/util/Tokenizer.cxx | 2 +- 15 files changed, 150 insertions(+), 174 deletions(-) delete mode 100644 src/string_util.c delete mode 100644 src/string_util.h create mode 100644 src/util/StringUtil.cxx create mode 100644 src/util/StringUtil.hxx diff --git a/Makefile.am b/Makefile.am index b062cb57c..bf00de012 100644 --- a/Makefile.am +++ b/Makefile.am @@ -99,7 +99,6 @@ mpd_headers = \ src/tag_id3.h \ src/tag_rva2.h \ src/utils.h \ - src/string_util.h \ src/timer.h \ src/mpd_error.h @@ -244,7 +243,6 @@ src_mpd_SOURCES = \ src/TextFile.cxx src/TextFile.hxx \ src/text_input_stream.c \ src/utils.c \ - src/string_util.c \ src/Volume.cxx src/Volume.hxx \ src/SongFilter.cxx src/SongFilter.hxx \ src/SongPointer.hxx \ @@ -288,6 +286,7 @@ endif # Generic utility library libutil_a_SOURCES = \ + src/util/StringUtil.cxx src/util/StringUtil.hxx \ src/util/Tokenizer.cxx src/util/Tokenizer.hxx \ src/util/UriUtil.cxx src/util/UriUtil.hxx \ src/util/Manual.hxx \ @@ -1058,7 +1057,7 @@ test_read_conf_LDADD = \ libfs.a \ $(GLIB_LIBS) test_read_conf_SOURCES = test/read_conf.cxx \ - src/utils.c src/string_util.c + src/utils.c test_run_resolver_LDADD = \ $(GLIB_LIBS) @@ -1081,7 +1080,7 @@ test_DumpDatabase_SOURCES = test/DumpDatabase.cxx \ src/Tag.cxx src/TagNames.c src/TagPool.cxx src/TagSave.cxx \ src/SongFilter.cxx \ src/TextFile.cxx \ - src/utils.c src/string_util.c + src/utils.c test_run_input_LDADD = \ $(INPUT_LIBS) \ @@ -1094,7 +1093,7 @@ test_run_input_LDADD = \ test_run_input_SOURCES = test/run_input.cxx \ test/stdbin.h \ src/IOThread.cxx \ - src/utils.c src/string_util.c\ + src/utils.c \ src/Tag.cxx src/TagNames.c src/TagPool.cxx src/TagSave.cxx \ src/fd_util.c @@ -1111,7 +1110,7 @@ test_visit_archive_LDADD = \ test_visit_archive_SOURCES = test/visit_archive.cxx \ src/IOThread.cxx \ src/InputStream.cxx \ - src/utils.c src/string_util.c \ + src/utils.c \ src/Tag.cxx src/TagNames.c src/TagPool.cxx \ src/fd_util.c @@ -1132,7 +1131,7 @@ test_dump_text_file_LDADD = \ test_dump_text_file_SOURCES = test/dump_text_file.cxx \ test/stdbin.h \ src/IOThread.cxx \ - src/utils.c src/string_util.c\ + src/utils.c \ src/Tag.cxx src/TagNames.c src/TagPool.cxx \ src/text_input_stream.c \ src/fd_util.c @@ -1152,7 +1151,7 @@ test_dump_playlist_LDADD = \ test_dump_playlist_SOURCES = test/dump_playlist.cxx \ $(DECODER_SRC) \ src/IOThread.cxx \ - src/utils.c src/string_util.c\ + src/utils.c \ src/Song.cxx src/Tag.cxx src/TagNames.c src/TagPool.cxx src/TagSave.cxx \ src/tag_handler.c src/TagFile.cxx \ src/audio_check.c src/pcm_buffer.c \ @@ -1180,7 +1179,7 @@ test_run_decoder_LDADD = \ test_run_decoder_SOURCES = test/run_decoder.cxx \ test/stdbin.h \ src/IOThread.cxx \ - src/utils.c src/string_util.c \ + src/utils.c \ src/Tag.cxx src/TagNames.c src/TagPool.cxx src/tag_handler.c \ src/ReplayGainInfo.cxx \ src/fd_util.c \ @@ -1204,7 +1203,7 @@ test_read_tags_LDADD = \ $(GLIB_LIBS) test_read_tags_SOURCES = test/read_tags.cxx \ src/IOThread.cxx \ - src/utils.c src/string_util.c \ + src/utils.c \ src/Tag.cxx src/TagNames.c src/TagPool.cxx src/tag_handler.c \ src/ReplayGainInfo.cxx \ src/fd_util.c \ @@ -1232,7 +1231,7 @@ test_run_filter_SOURCES = test/run_filter.cxx \ test/FakeReplayGainConfig.cxx \ test/stdbin.h \ src/FilterPlugin.cxx src/FilterRegistry.cxx \ - src/utils.c src/string_util.c \ + src/utils.c \ src/audio_check.c \ src/audio_format.c \ src/AudioParser.cxx \ @@ -1251,7 +1250,7 @@ if ENABLE_ENCODER noinst_PROGRAMS += test/run_encoder test_run_encoder_SOURCES = test/run_encoder.cxx \ test/stdbin.h \ - src/utils.c src/string_util.c \ + src/utils.c \ src/Tag.cxx src/TagNames.c src/TagPool.cxx \ src/audio_check.c \ src/audio_format.c \ @@ -1270,7 +1269,7 @@ if ENABLE_VORBIS_ENCODER noinst_PROGRAMS += test/test_vorbis_encoder test_test_vorbis_encoder_SOURCES = test/test_vorbis_encoder.cxx \ test/stdbin.h \ - src/utils.c src/string_util.c \ + src/utils.c \ src/Tag.cxx src/TagNames.c src/TagPool.cxx \ src/audio_check.c \ src/audio_format.c \ @@ -1326,7 +1325,7 @@ test_run_output_LDADD = $(MPD_LIBS) \ test_run_output_SOURCES = test/run_output.cxx \ test/FakeReplayGainConfig.cxx \ test/stdbin.h \ - src/utils.c src/string_util.c \ + src/utils.c \ src/IOThread.cxx \ src/audio_check.c \ src/audio_format.c \ @@ -1357,7 +1356,7 @@ test_read_mixer_LDADD = \ libfs.a \ $(GLIB_LIBS) test_read_mixer_SOURCES = test/read_mixer.cxx \ - src/utils.c src/string_util.c \ + src/utils.c \ src/MixerControl.cxx \ src/MixerInternal.cxx \ src/FilterPlugin.cxx \ diff --git a/src/ArchiveList.cxx b/src/ArchiveList.cxx index 02b19ce79..894e31031 100644 --- a/src/ArchiveList.cxx +++ b/src/ArchiveList.cxx @@ -20,7 +20,7 @@ #include "config.h" #include "ArchiveList.hxx" #include "ArchivePlugin.hxx" -#include "string_util.h" +#include "util/StringUtil.hxx" #include "archive/Bzip2ArchivePlugin.hxx" #include "archive/Iso9660ArchivePlugin.hxx" #include "archive/ZzipArchivePlugin.hxx" diff --git a/src/ConfigFile.cxx b/src/ConfigFile.cxx index f7f525096..2573f66e5 100644 --- a/src/ConfigFile.cxx +++ b/src/ConfigFile.cxx @@ -24,11 +24,7 @@ #include "ConfigTemplates.hxx" #include "conf.h" #include "util/Tokenizer.hxx" - -extern "C" { -#include "string_util.h" -} - +#include "util/StringUtil.hxx" #include "fs/Path.hxx" #include "fs/FileSystem.hxx" diff --git a/src/ConfigParser.cxx b/src/ConfigParser.cxx index 9798b6edd..73381d8a0 100644 --- a/src/ConfigParser.cxx +++ b/src/ConfigParser.cxx @@ -18,10 +18,7 @@ */ #include "ConfigParser.hxx" - -extern "C" { -#include "string_util.h" -} +#include "util/StringUtil.hxx" bool get_bool(const char *value, bool *value_r) diff --git a/src/DecoderPlugin.cxx b/src/DecoderPlugin.cxx index ccea032de..bcee3ac66 100644 --- a/src/DecoderPlugin.cxx +++ b/src/DecoderPlugin.cxx @@ -19,7 +19,7 @@ #include "config.h" #include "decoder_plugin.h" -#include "string_util.h" +#include "util/StringUtil.hxx" #include diff --git a/src/PlaylistDatabase.cxx b/src/PlaylistDatabase.cxx index edc6a2815..c5cfc8397 100644 --- a/src/PlaylistDatabase.cxx +++ b/src/PlaylistDatabase.cxx @@ -21,10 +21,7 @@ #include "PlaylistDatabase.hxx" #include "PlaylistVector.hxx" #include "TextFile.hxx" - -extern "C" { -#include "string_util.h" -} +#include "util/StringUtil.hxx" #include #include diff --git a/src/PlaylistRegistry.cxx b/src/PlaylistRegistry.cxx index d764a2ec2..5e8b453df 100644 --- a/src/PlaylistRegistry.cxx +++ b/src/PlaylistRegistry.cxx @@ -33,8 +33,7 @@ #include "playlist/EmbeddedCuePlaylistPlugin.hxx" #include "input_stream.h" #include "util/UriUtil.hxx" - -#include "string_util.h" +#include "util/StringUtil.hxx" #include "conf.h" #include "mpd_error.h" diff --git a/src/SongSave.cxx b/src/SongSave.cxx index 2b74d9354..c3796235b 100644 --- a/src/SongSave.cxx +++ b/src/SongSave.cxx @@ -24,10 +24,7 @@ #include "Directory.hxx" #include "TextFile.hxx" #include "tag.h" - -extern "C" { -#include "string_util.h" -} +#include "util/StringUtil.hxx" #include diff --git a/src/cue/CueParser.cxx b/src/cue/CueParser.cxx index 55c619cd8..915499f44 100644 --- a/src/cue/CueParser.cxx +++ b/src/cue/CueParser.cxx @@ -19,7 +19,7 @@ #include "config.h" #include "CueParser.hxx" -#include "string_util.h" +#include "util/StringUtil.hxx" #include "song.h" #include "tag.h" diff --git a/src/playlist/ExtM3uPlaylistPlugin.cxx b/src/playlist/ExtM3uPlaylistPlugin.cxx index ce026dab8..2043bea52 100644 --- a/src/playlist/ExtM3uPlaylistPlugin.cxx +++ b/src/playlist/ExtM3uPlaylistPlugin.cxx @@ -22,7 +22,7 @@ #include "PlaylistPlugin.hxx" #include "song.h" #include "tag.h" -#include "string_util.h" +#include "util/StringUtil.hxx" extern "C" { #include "text_input_stream.h" diff --git a/src/string_util.c b/src/string_util.c deleted file mode 100644 index 00c36892b..000000000 --- a/src/string_util.c +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2003-2011 The Music Player Daemon Project - * http://www.musicpd.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#include "string_util.h" - -#include - -#include - -const char * -strchug_fast_c(const char *p) -{ - while (*p != 0 && g_ascii_isspace(*p)) - ++p; - - return p; -} - -bool -string_array_contains(const char *const* haystack, const char *needle) -{ - assert(haystack != NULL); - assert(needle != NULL); - - for (; *haystack != NULL; ++haystack) - if (g_ascii_strcasecmp(*haystack, needle) == 0) - return true; - - return false; -} diff --git a/src/string_util.h b/src/string_util.h deleted file mode 100644 index 5b76c980b..000000000 --- a/src/string_util.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2003-2011 The Music Player Daemon Project - * http://www.musicpd.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifndef MPD_STRING_UTIL_H -#define MPD_STRING_UTIL_H - -#include "gcc.h" - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Remove the "const" attribute from a string pointer. This is a - * dirty hack, don't use it unless you know what you're doing! - */ -gcc_const -static inline char * -deconst_string(const char *p) -{ -#ifdef __cplusplus - return const_cast(p); -#else - union { - const char *in; - char *out; - } u = { - .in = p, - }; - - return u.out; -#endif -} - -/** - * Returns a pointer to the first non-whitespace character in the - * string, or to the end of the string. - * - * This is a faster version of g_strchug(), because it does not move - * data. - */ -gcc_pure -const char * -strchug_fast_c(const char *p); - -/** - * Same as strchug_fast_c(), but works with a writable pointer. - */ -gcc_pure -static inline char * -strchug_fast(char *p) -{ - return deconst_string(strchug_fast_c(p)); -} - -/** - * Checks whether a string array contains the specified string. - * - * @param haystack a NULL terminated list of strings - * @param needle the string to search for; the comparison is - * case-insensitive for ASCII characters - * @return true if found - */ -bool -string_array_contains(const char *const* haystack, const char *needle); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif diff --git a/src/util/StringUtil.cxx b/src/util/StringUtil.cxx new file mode 100644 index 000000000..87d032735 --- /dev/null +++ b/src/util/StringUtil.cxx @@ -0,0 +1,46 @@ +/* + * 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 + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "StringUtil.hxx" + +#include + +#include + +const char * +strchug_fast_c(const char *p) +{ + while (*p != 0 && g_ascii_isspace(*p)) + ++p; + + return p; +} + +bool +string_array_contains(const char *const* haystack, const char *needle) +{ + assert(haystack != nullptr); + assert(needle != nullptr); + + for (; *haystack != nullptr; ++haystack) + if (g_ascii_strcasecmp(*haystack, needle) == 0) + return true; + + return false; +} diff --git a/src/util/StringUtil.hxx b/src/util/StringUtil.hxx new file mode 100644 index 000000000..72d613798 --- /dev/null +++ b/src/util/StringUtil.hxx @@ -0,0 +1,80 @@ +/* + * 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 + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef MPD_STRING_UTIL_HXX +#define MPD_STRING_UTIL_HXX + +#include "gcc.h" + +/** + * Remove the "const" attribute from a string pointer. This is a + * dirty hack, don't use it unless you know what you're doing! + */ +gcc_const +static inline char * +deconst_string(const char *p) +{ +#ifdef __cplusplus + return const_cast(p); +#else + union { + const char *in; + char *out; + } u = { + .in = p, + }; + + return u.out; +#endif +} + +/** + * Returns a pointer to the first non-whitespace character in the + * string, or to the end of the string. + * + * This is a faster version of g_strchug(), because it does not move + * data. + */ +gcc_pure +const char * +strchug_fast_c(const char *p); + +/** + * Same as strchug_fast_c(), but works with a writable pointer. + */ +gcc_pure +static inline char * +strchug_fast(char *p) +{ + return deconst_string(strchug_fast_c(p)); +} + +/** + * Checks whether a string array contains the specified string. + * + * @param haystack a NULL terminated list of strings + * @param needle the string to search for; the comparison is + * case-insensitive for ASCII characters + * @return true if found + */ +gcc_pure +bool +string_array_contains(const char *const* haystack, const char *needle); + +#endif diff --git a/src/util/Tokenizer.cxx b/src/util/Tokenizer.cxx index 9ade0d1b1..2d6c2b434 100644 --- a/src/util/Tokenizer.cxx +++ b/src/util/Tokenizer.cxx @@ -19,7 +19,7 @@ #include "config.h" #include "Tokenizer.hxx" -#include "string_util.h" +#include "StringUtil.hxx" #include -- cgit v1.2.3