From 3b05bbbaf3b69b3079ea5900738cddb190a3f5ef Mon Sep 17 00:00:00 2001 From: Tyge Løvset <60263450+tylov@users.noreply.github.com> Date: Thu, 27 May 2021 15:21:06 +0200 Subject: Update csview_api.md examples. --- docs/csview_api.md | 77 ++++++++++++++++++++++++++---------------------------- 1 file changed, 37 insertions(+), 40 deletions(-) (limited to 'docs') diff --git a/docs/csview_api.md b/docs/csview_api.md index b23ec9c2..a3be3b96 100644 --- a/docs/csview_api.md +++ b/docs/csview_api.md @@ -118,35 +118,30 @@ using_cset_sv() ## Example ```c #include -#include -#include - -// cmap with csview as convertion type -using_cmap_svkey(si, int); -int main() +int main () { - csview text = c_lit("The length of this literal is evaluated at compile time and stored in csview text."); - printf("%s\nLength: %zu\n\n", text.str, text.size); + cstr str1 = cstr_lit("We think in generalities, but we live in details."); + // (quoting Alfred N. Whitehead) - c_forvar (cmap_si map = csmap_si_init(), csmap_si_del(&map)) - { - cmap_si_emplace(&map, c_lit("hello"), 100); - cmap_si_emplace(&map, c_lit("world"), 200); - cmap_si_emplace(&map, c_lit("hello"), 300); // already in map, ignored + csview sv1 = cstr_substr(str1, 3, 5); // "think" + size_t pos = cstr_find(str1, "live"); // position of "live" in str1 + csview sv2 = cstr_substr(str1, pos, 4); // get "live" + csview sv3 = cstr_slice(str1, -8, -1); // get "details" + printf("%.*s %.*s %.*s\n", csview_ARG(sv1), csview_ARG(sv2), csview_ARG(sv3)); - // Efficient lookup: no string allocation or strlen() takes place: - cmap_si_value_t* v = cmap_si_get(&map, c_lit("world")); - printf("\n%s: %d\n", v->first.str, v->second); - } + cstr s1 = cstr_lit("Apples are red"); + cstr s2 = cstr_from_v(cstr_substr(s1, -3, 3)); // "red" + cstr s3 = cstr_from_v(cstr_substr(s1, 0, 6)); // "Apples" + printf("%s %s\n", s2, s3.str); + + c_del(cstr, &str1, &s1, &s2, &s3); } ``` Output: ``` -A long and winded literal string -Length: 32 - -world: 200 +think live details +red Apples ``` ### Example 2: csview tokenizer (string split) @@ -213,30 +208,32 @@ Output: ### Example 3 ```c #include +#include +#include -int main () -{ - cstr str1 = cstr_lit("We think in generalities, but we live in details."); - // (quoting Alfred N. Whitehead) - - csview sv1 = cstr_substr(str1, 3, 5); // "think" - size_t pos = cstr_find(str1, "live"); // position of "live" in str - csview sv2 = cstr_substr(str1, pos, cstr_npos); // get from "live" to the end +// cmap with csview as convertion type +using_cmap_svkey(si, int); - printf("%.*s %.*s\n", csview_ARG(sv1), csview_ARG(sv2)); +int main() +{ + csview text = c_lit("The length of this literal is evaluated at compile time and stored in csview text."); + csview suffix = csview_substr(text, -12, cstr_npos); // from pos -12 to end + printf("%.*s\n", csview_ARG(suffix)); - cstr s1 = cstr_lit("Apples are red"); - cstr s2 = cstr_from_v(cstr_substr(s1, 11, 3)); // "red" - printf("%s\n", s2.str); - cstr s3 = cstr_from_v(cstr_substr(s1, 0, 6)); // "Apples" - printf("%s\n", s3.str); + c_forvar (cmap_si map = cmap_si_init(), cmap_si_del(&map)) + { + cmap_si_emplace(&map, c_lit("hello"), 100); + cmap_si_emplace(&map, c_lit("world"), 200); + cmap_si_emplace(&map, c_lit("hello"), 300); // already in map, ignored - c_del(cstr, &str1, &s1, &s2, &s3); + // Efficient lookup: no string allocation or strlen() takes place: + cmap_si_value_t* v = cmap_si_get(&map, c_lit("hello")); + printf("%s: %d\n", v->first.str, v->second); + } } ``` Output: ``` -think live in details. -red -Apples -``` \ No newline at end of file +csview text. +hello: 100 +``` -- cgit v1.2.3