From ccc45a1dc249160364aa12b3cfecc9844d6760ff Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Tue, 18 May 2021 10:08:35 +0200 Subject: Added new file: csview: String View --- examples/svmap.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 examples/svmap.c (limited to 'examples') diff --git a/examples/svmap.c b/examples/svmap.c new file mode 100644 index 00000000..f4bcc311 --- /dev/null +++ b/examples/svmap.c @@ -0,0 +1,38 @@ +#include +#include +#include + +// cmap with csview as convertion key-type (raw): +using_cmap_svkey(si, int); + +int main() { + csview fox = c_sv("The quick brown fox jumps over the lazy dog."); + printf("\"%s\", length=%zu\n", fox.str, fox.size); + + cmap_si frequencies = cmap_si_init(); + + // Non-emplace: cstr element API + cmap_si_insert(&frequencies, cstr_new("thousand"), 1000); + cmap_si_insert_or_assign(&frequencies, cstr_new("thousand"), 2000); // update; same as put() + cmap_si_insert(&frequencies, cstr_new("thousand"), 3000); // ignored + + // Emplace: csview element API + const char* key = "hundred"; + cmap_si_emplace(&frequencies, c_sv("hundred"), 300); // c_sv() shorthand for csview_new() + cmap_si_emplace(&frequencies, csview_from_n(key, 4), 400); // insert "hund" + cmap_si_emplace_or_assign(&frequencies, csview_from(key), 500); // update + cmap_si_emplace(&frequencies, c_sv("hundred"), 600); // ignored, already inserted + + // Lookup always uses "raw" type API, i.e. csview here. + printf("at(\"hundred\"): %d\n", *cmap_si_at(&frequencies, c_sv("hundred"))); + + c_foreach (i, cmap_si, frequencies) + printf("%s: %d\n", i.ref->first.str, i.ref->second); + + /* Output: */ + // "The quick brown fox jumps over the lazy dog.", length=44 + // at("hundred"): 500 + // hund: 400 + // hundred: 500 + // thousand: 2000 +} \ No newline at end of file -- cgit v1.2.3