libGimbal 0.1.0
C17-Based Extended Standard Library and Cross-Language Runtime Framework
Loading...
Searching...
No Matches
gimbal_strings.h
Go to the documentation of this file.
1/*! \file
2 * \brief Aggregate header including entire string API.
3 * \ingroup strings
4 *
5 * This file is a single-file aggregate header which includes
6 * the header files for all strings contained within libGimbal's
7 * string API, so you do not have to include them individually.
8 *
9 * \author 2023, 2025 Falco Girgis
10 * \copyright MIT License
11 */
12#ifndef GIMBAL_STRINGS_H
13#define GIMBAL_STRINGS_H
14
15#include "strings/gimbal_pattern.h"
16#include "strings/gimbal_quark.h"
17#include "strings/gimbal_string.h"
18#include "strings/gimbal_string_buffer.h"
19#include "strings/gimbal_string_ref.h"
20#include "strings/gimbal_string_view.h"
21#include "strings/gimbal_string_list.h"
22
23/*! \defgroup strings Strings
24 \ingroup dataTypes
25 \brief Collection of specialized string types.
26
27 LibGimbal provides a rich set of string manipulation functions with API functionality taken
28 from various languages such as C++ and Java.
29
30 Rather than create a single string type and API that is general-purpose and only "decent"
31 at everything (such as C++'s std::string and most equivalents), libGimbal has taken the approach
32 of creating various different string types, with each optimized for a particular use-case.
33
34 For a little bit of extra complexity, this has the added benefits of allowing for custom-tailored
35 APIs that are well suited for such individual use-cases in addition to the performance benefit.
36 If you're using libGimbal with a higher-level langauge such as C++ or Rust, you also gain more
37 than just another generic string type which is already builtin to your language of choice.
38
39## Choosing the Right String
40 The following table can be referenced when deciding which string type to use:
41
42 Type | Use-cases | Header
43 ----------------|------------------------------------------------------|-------
44 GblStringView | Reading or immutable data processing | gimbal_string_view.h
45 GblStringBuffer | Writing or mutable data processing and building | gimbal_string_buffer.h
46 ::GblStringRef | Storing or managing ownership | gimbal_string_ref.h
47 ::GblQuark | Hashing or uniquely identifying | gimbal_quark.h
48 GblStringList | Storing or operating on multiple strings | gimbal_string_list.h
49 GblPattern | Searching or applying regular expressions to strings | gimbal_pattern.h
50*/
51
52
53#endif // GIMBAL_STRINGS_H