MCPcopy Create free account
hub / github.com/apache/qpid-proton / build_map

Function build_map

c/tests/object_test.cpp:63–109  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

61}
62
63static pn_map_t *build_map(float load_factor, size_t capacity, ...) {
64 va_list ap;
65 va_start(ap, capacity);
66
67 pn_map_t *result;
68 void *prev = va_arg(ap, void *);
69 bool last = prev == END;
70 // No information about map types assume everything is PN_OBJECT
71 if (last) {
72 result = pn_map(PN_OBJECT, PN_OBJECT, capacity, load_factor);
73 return result;
74 }
75 void *arg = va_arg(ap, void *);
76 last = arg == END;
77 // Only know type of key assume value is PN_OBJECT
78 if (last) {
79 result = pn_map(pn_class(prev), PN_OBJECT, capacity, load_factor);
80 pn_map_put(result, prev, NULL);
81 pn_decref(prev);
82 return result;
83 }
84 result = pn_map(pn_class(prev), pn_class(arg), capacity, load_factor);
85
86 while (true) {
87 pn_map_put(result, prev, arg);
88 pn_decref(prev);
89 pn_decref(arg);
90
91 prev = va_arg(ap, void *);
92 last = prev == END;
93 if (last) {
94 break;
95 }
96
97 arg = va_arg(ap, void *);
98 last = arg == END;
99
100 if (last) {
101 pn_map_put(result, prev, NULL);
102 pn_decref(prev);
103 break;
104 }
105 }
106 va_end(ap);
107
108 return result;
109}
110
111static void noop(void *o) {}
112static uintptr_t zero(void *o) { return 0; }

Callers 1

object_test.cppFile · 0.85

Calls 4

pn_mapFunction · 0.85
pn_classFunction · 0.85
pn_map_putFunction · 0.85
pn_decrefFunction · 0.85

Tested by

no test coverage detected