Zrythm
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
string.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: © 2018-2023 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3/*
4 * This file incorporates work covered by the following copyright and
5 * permission notice:
6 *
7 * ---
8 *
9 * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
10 * Copyright (C) 2012 Intel Corporation
11 *
12 * This library is free software: you can redistribute it and/or modify it
13 * under the terms of the GNU Lesser General Public License as published by
14 * the Free Software Foundation.
15 *
16 * This library is distributed in the hope that it will be useful, but
17 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
18 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
19 * License for more details.
20 *
21 * You should have received a copy of the GNU Lesser General Public License
22 * along with this library. If not, see <http://www.gnu.org/licenses/>.
23 *
24 * Authors: Rodrigo Moya <rodrigo@ximian.com>
25 * Tristan Van Berkom <tristanvb@openismus.com>
26 *
27 * ---
28 */
29
36#ifndef __UTILS_STRING_H__
37#define __UTILS_STRING_H__
38
39#include "ext/juce/juce.h"
40
51class StringArray : public juce::StringArray
52{
53public:
54 StringArray () : juce::StringArray (){};
55 StringArray (const char * const * strs);
56
61 char ** getNullTerminated () const;
62
63 void insert (int index, const char * s)
64 {
65 juce::StringArray::insert (index, juce::CharPointer_UTF8 (s));
66 };
67 void add (const char * s)
68 {
69 juce::StringArray::add (juce::CharPointer_UTF8 (s));
70 };
71 void set (int index, const char * s)
72 {
73 juce::StringArray::set (index, juce::CharPointer_UTF8 (s));
74 };
75 char * getCStr (int index);
76 const char * operator[] (size_t i)
77 {
78 return juce::StringArray::getReference (i).toRawUTF8 ();
79 };
80 void removeString (const char * s)
81 {
82 juce::StringArray::removeString (juce::CharPointer_UTF8 (s));
83 };
84};
85
89int
90string_is_ascii (const char * string);
91
96char *
97string_array_contains_substr (char ** str_array, int num_str, const char * substr);
98
103bool
104string_contains_substr (const char * str, const char * substr);
105
106bool
107string_contains_substr_case_insensitive (const char * str, const char * substr);
108
116void
117string_to_upper (const char * in, char * out);
118
126void
127string_to_lower (const char * in, char * out);
128
132#define string_is_equal(str1, str2) (!g_strcmp0 (str1, str2))
133
138bool
139string_is_equal_ignore_case (const char * str1, const char * str2);
140
147NONNULL char *
148string_convert_to_filename (const char * str);
149
155MALLOC
156NONNULL char *
157string_get_substr_before_suffix (const char * str, const char * suffix);
158
164char *
165string_remove_until_after_first_match (const char * str, const char * match);
166
171void
172string_replace_regex (char ** str, const char * regex, const char * replace_str);
173
174char *
175string_replace (const char * str, const char * from, const char * to);
176
182char *
183string_get_regex_group (const char * str, const char * regex, int group);
184
193int
195 const char * str,
196 const char * regex,
197 int group,
198 int def);
199
211int
212string_get_int_after_last_space (const char * str, char * str_without_num);
213
224char **
226
234void
235string_copy_w_realloc (char ** dest, const char * src);
236
241char *
242string_symbolify (const char * in);
243
247bool
248string_is_empty (const char * str);
249
259int
260string_utf8_strcasecmp (const char * s1, const char * s2);
261
265char *
266string_expand_env_vars (const char * src);
267
268void
269string_print_strv (const char * prefix, char ** strv);
270
274char **
275string_array_clone (const char ** src);
276
281#endif
String array that auto-converts given char pointers to UTF8 (so JUCE doesn't complain.
Definition string.h:52
char ** getNullTerminated() const
Returns the strings in a newly-allocated NULL-terminated array.
char * string_get_regex_group(const char *str, const char *regex, int group)
Gets the string in the given regex group.
void string_copy_w_realloc(char **dest, const char *src)
Copies the string src to the buffer in dest after reallocating the buffer in dest to the length of sr...
void string_to_upper(const char *in, char *out)
Converts the given string to uppercase in out.
char * string_symbolify(const char *in)
Returns a new string with only ASCII alphanumeric characters and replaces the rest with underscore.
void string_replace_regex(char **str, const char *regex, const char *replace_str)
Replaces src_str with replace_str in all instances matched by regex.
MALLOC NONNULL char * string_get_substr_before_suffix(const char *str, const char *suffix)
Removes the suffix starting from suffix from full_str and returns a newly allocated string.
char ** string_array_sort_and_remove_duplicates(char **str_arr)
TODO Sorts the given string array and removes duplicates.
bool string_contains_substr(const char *str, const char *substr)
Returns if the given string contains the given substring.
char * string_expand_env_vars(const char *src)
Expands environment variables enclosed in ${} in the given string.
int string_utf8_strcasecmp(const char *s1, const char *s2)
Compares two UTF-8 strings using approximate case-insensitive ordering.
int string_get_regex_group_as_int(const char *str, const char *regex, int group, int def)
Gets the string in the given regex group as an integer.
bool string_is_equal_ignore_case(const char *str1, const char *str2)
Returns if the two strings are equal ignoring case.
int string_get_int_after_last_space(const char *str, char *str_without_num)
Returns the integer found at the end of a string like "My String 3" -> 3, or -1 if no number is found...
char ** string_array_clone(const char **src)
Clones the given string array.
int string_is_ascii(const char *string)
Returns if the string is ASCII.
char * string_remove_until_after_first_match(const char *str, const char *match)
Removes everything up to and including the first match of match from the start of the string and retu...
NONNULL char * string_convert_to_filename(const char *str)
Returns a newly allocated string that is a filename version of the given string.
void string_to_lower(const char *in, char *out)
Converts the given string to lowercase in out.
bool string_is_empty(const char *str)
Returns whether the string is NULL or empty.
char * string_array_contains_substr(char **str_array, int num_str, const char *substr)
Returns the matched string if the string array contains the given substring.