diff options
| author | Tyge Lovset <[email protected]> | 2023-08-17 05:34:38 +0200 |
|---|---|---|
| committer | Tyge Lovset <[email protected]> | 2023-08-17 05:34:38 +0200 |
| commit | be0e64a9a19d3ca459284c61c497d141a78df1d7 (patch) | |
| tree | e2005e0a29d9e7386647ad9d92411635d01574c6 /docs | |
| parent | 2ba238e66efec7b6d895425c4f1160b3b72d242b (diff) | |
| download | STC-modified-be0e64a9a19d3ca459284c61c497d141a78df1d7.tar.gz STC-modified-be0e64a9a19d3ca459284c61c497d141a78df1d7.zip | |
Renamed "internal" csview member .str => .buf, as it is not null terminated like crawstr .str member.
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/crawstr_api.md | 32 | ||||
| -rw-r--r-- | docs/csview_api.md | 20 |
2 files changed, 12 insertions, 40 deletions
diff --git a/docs/crawstr_api.md b/docs/crawstr_api.md index 59087d06..97804e23 100644 --- a/docs/crawstr_api.md +++ b/docs/crawstr_api.md @@ -15,8 +15,6 @@ storage. It keeps the length of the string, i.e. no need to call *strlen()* for All crawstr definitions and prototypes are available by including a single header file. ```c -#define i_implement -#include <stc/cstr.h> #include <stc/crawstr.h> ``` ## Methods @@ -29,7 +27,6 @@ intptr_t crawstr_size(crawstr rs); bool crawstr_empty(crawstr rs); // check if size == 0 void crawstr_clear(crawstr* self); csview crawstr_sv(crawstr rs); // convert to csview type -const char* crawstr_str(crawstr rs); // get null-terminated const char* bool crawstr_equals(crawstr rs, const char* str); intptr_t crawstr_find(crawstr rs, const char* str); @@ -72,8 +69,8 @@ uint32_t utf8_peek_off(const char* s, int offset); // codep | Type name | Type definition | Used to represent... | |:----------------|:-------------------------------------------|:-------------------------| -| `crawstr` | `struct { const char *str; intptr_t size; }` | The string view type | -| `crawstr_value` | `char` | The string element type | +| `crawstr` | `struct { const char *str; intptr_t size; }` | Raw string view type | +| `crawstr_value` | `char` | Raw string element type | | `crawstr_iter` | `struct { crawstr_value *ref; }` | UTF8 iterator | ## Example: UTF8 iteration and case conversion @@ -93,7 +90,6 @@ int main(void) cstr str = cstr_toupper_sv(crawstr_sv(rs)); printf("%s\n", cstr_str(&str)); - cstr_drop(&str); } ``` @@ -103,27 +99,3 @@ Liberté, égalité, fraternité. L i b e r t é , é g a l i t é , f r a t e r n i t é . LIBERTÉ, ÉGALITÉ, FRATERNITÉ. ``` - -### Example 2: UTF8 replace -```c -#define i_import // include dependent utf8 definitions. -#include <stc/cstr.h> - -int main(void) -{ - cstr s1 = cstr_lit("hell😀 w😀rld"); - - cstr_u8_replace_at(&s1, cstr_find(&s1, "😀rld"), 1, c_rs("ø")); - printf("%s\n", cstr_str(&s1)); - - c_foreach (i, cstr, s1) - printf("%.*s,", c_SV(i.u8.chr)); // u8.chr is a csview - - cstr_drop(&s1); -} -``` -Output: -``` -hell😀 wørld -h,e,l,l,😀, ,w,ø,r,l,d, -``` diff --git a/docs/csview_api.md b/docs/csview_api.md index eafc6854..5202d6f5 100644 --- a/docs/csview_api.md +++ b/docs/csview_api.md @@ -1,14 +1,14 @@ # STC [csview](../include/stc/csview.h): Sub-string View  -The type **csview** is a non-null terminated string view and can refer to a constant contiguous sequence of -char-elements with the first element of the sequence at position zero. The implementation holds two members: -a pointer to constant char and a size. +The type **csview** is a non-null terminated string view and can refer to a constant contiguous +sequence of char-elements with the first element of the sequence at position zero. The implementation +holds two members: a pointer to constant char and a size. -Because **csview** is non-null terminated, it is not an ideal replacent view for `const char*` - see [crawstr](crawstr_api.md) -for that. **csview** never allocates memory, and therefore need not be destructed. Its lifetime is limited by -the source string storage. It keeps the length of the string, and does not need to call *strlen()* to acquire -the length. +Because **csview** is non-null terminated, it cannot be a replacent view for `const char*` - +see [crawstr](crawstr_api.md) for that. **csview** never allocates memory, and therefore need not be +destructed. Its lifetime is limited by the source string storage. It keeps the length of the string, +and does not need to call *strlen()* to acquire the length. - **csview** iterators works on UTF8 codepoints - like **cstr** and **crawstr** (see Example 2). - Because it is null-terminated, it must be printed the following way: @@ -16,8 +16,8 @@ the length. printf("%.*s", c_SV(sstr)); ``` -See the c++ class [std::basic_string_view](https://en.cppreference.com/w/cpp/string/basic_string_view) for a functional -description. +See the c++ class [std::basic_string_view](https://en.cppreference.com/w/cpp/string/basic_string_view) +for a functional description. ## Header file @@ -95,7 +95,7 @@ uint64_t csview_hash(const csview* x); | Type name | Type definition | Used to represent... | |:----------------|:-------------------------------------------|:-------------------------| -| `csview` | `struct { const char *str; intptr_t size; }` | The string view type | +| `csview` | `struct { const char *buf; intptr_t size; }` | The string view type | | `csview_value` | `char` | The string element type | | `csview_iter` | `struct { csview_value *ref; }` | UTF8 iterator | |
