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 Strings module-wide include
3 * \ingroup strings
4 *
5 * \author Falco Girgis
6 */
7#ifndef GIMBAL_STRINGS_H
8#define GIMBAL_STRINGS_H
9
10#include "strings/gimbal_pattern.h"
11#include "strings/gimbal_quark.h"
12#include "strings/gimbal_string.h"
13#include "strings/gimbal_string_buffer.h"
14#include "strings/gimbal_string_ref.h"
15#include "strings/gimbal_string_view.h"
16#include "strings/gimbal_string_list.h"
17
18/*! \defgroup strings Strings
19 \ingroup dataTypes
20* \brief Collection of specialized string types
21
22 LibGimbal provides a rich set of string manipulation functions with API functionality taken
23 from various languages such as C++ and Java.
24
25 Rather than create a single string type and API that is general-purpose and only "decent"
26 at everything (such as C++'s std::string and most equivalents), libGimbal has taken the approach
27 of creating various different string types, with each optimized for a particular use-case.
28
29 For a little bit of extra complexity, this has the added benefits of allowing for custom-tailored
30 APIs that are well suited for such individual use-cases in addition to the performance benefit.
31 If you're using libGimbal with a higher-level langauge such as C++ or Rust, you also gain more
32 than just another generic string type which is already builtin to your language of choice.
33
34## Choosing the Right String
35 The following table can be referenced when deciding which string type to use:
36
37 Type | Use-cases | Header
38 ----------------|---------------------------------------------------|-------
39 GblStringView | Reading or immutable data processing | gimbal_string_view.h
40 GblStringBuffer | Writing or mutable data processing and building | gimbal_string_buffer.h
41 ::GblStringRef | Storing or managing ownership | gimbal_string_ref.h
42 ::GblQuark | Hashing or uniquely identifying | gimbal_quark.h
43*/
44
45
46#endif // GIMBAL_STRINGS_H