summaryrefslogtreecommitdiffhomepage
path: root/misc/examples/multimap.c
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2022-12-30 12:36:13 +0100
committerTyge Løvset <[email protected]>2022-12-30 14:38:39 +0100
commit4f0f45422fb58e9b134445ad6a4ea96d806214e8 (patch)
treeea0bb95c1f82fa5ec71218ce1f6d7ce9bfcc4e29 /misc/examples/multimap.c
parent0761c13f316cc98ae7756f3527931aa86bed5016 (diff)
downloadSTC-modified-4f0f45422fb58e9b134445ad6a4ea96d806214e8.tar.gz
STC-modified-4f0f45422fb58e9b134445ad6a4ea96d806214e8.zip
More restructuring of files and cleanup. Moved carr2.h and carr3.h to misc/include/old/ as it is not among classic containers.
Removed stctest.h: Recommending https://github.com/bvdberg/ctest instead.
Diffstat (limited to 'misc/examples/multimap.c')
-rw-r--r--misc/examples/multimap.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/misc/examples/multimap.c b/misc/examples/multimap.c
index 8797c24e..ba0bf71b 100644
--- a/misc/examples/multimap.c
+++ b/misc/examples/multimap.c
@@ -32,14 +32,14 @@ struct OlympicsData { int year; const char *city, *country, *date; } ol_data[] =
{1924, "Chamonix", "France", "January 25 - February 5"},
};
-typedef struct { int year; cstr city, date; } OlympicLocation;
+typedef struct { int year; cstr city, date; } OlympicLoc;
-int OlympicLocation_cmp(const OlympicLocation* a, const OlympicLocation* b);
-OlympicLocation OlympicLocation_clone(OlympicLocation loc);
-void OlympicLocation_drop(OlympicLocation* self);
+int OlympicLoc_cmp(const OlympicLoc* a, const OlympicLoc* b);
+OlympicLoc OlympicLoc_clone(OlympicLoc loc);
+void OlympicLoc_drop(OlympicLoc* self);
-// Create a clist<OlympicLocation>, can be sorted by year.
-#define i_valclass OlympicLocation // binds _cmp, _clone and _drop.
+// Create a clist<OlympicLoc>, can be sorted by year.
+#define i_valclass OlympicLoc // binds _cmp, _clone and _drop.
#define i_tag OL
#define i_extern // define _clist_mergesort()
#include <stc/clist.h>
@@ -50,19 +50,22 @@ void OlympicLocation_drop(OlympicLocation* self);
#define i_tag OL
#include <stc/csmap.h>
-int OlympicLocation_cmp(const OlympicLocation* a, const OlympicLocation* b) {
+int OlympicLoc_cmp(const OlympicLoc* a, const OlympicLoc* b) {
return a->year - b->year;
}
-OlympicLocation OlympicLocation_clone(OlympicLocation loc) {
+OlympicLoc OlympicLoc_clone(OlympicLoc loc) {
loc.city = cstr_clone(loc.city);
loc.date = cstr_clone(loc.date);
return loc;
}
-void OlympicLocation_drop(OlympicLocation* self) {
- c_DROP(cstr, &self->city, &self->date);
+
+void OlympicLoc_drop(OlympicLoc* self) {
+ cstr_drop(&self->city);
+ cstr_drop(&self->date);
}
+
int main()
{
// Define the multimap with destructor defered to when block is completed.
@@ -73,12 +76,12 @@ int main()
for (size_t i = 0; i < c_ARRAYLEN(ol_data); ++i)
{
struct OlympicsData* d = &ol_data[i];
- OlympicLocation loc = {.year = d->year,
- .city = cstr_from(d->city),
- .date = cstr_from(d->date)};
+ OlympicLoc loc = {.year = d->year,
+ .city = cstr_from(d->city),
+ .date = cstr_from(d->date)};
// Insert an empty list for each new country, and append the entry to the list.
// If country already exist in map, its list is returned from the insert function.
- clist_OL* list = &csmap_OL_insert(&multimap, cstr_from(d->country), empty).ref->second;
+ clist_OL* list = &csmap_OL_emplace(&multimap, d->country, empty).ref->second;
clist_OL_push_back(list, loc);
}
// Sort locations by year for each country.