summaryrefslogtreecommitdiffhomepage
path: root/examples/cpque.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/cpque.c')
-rw-r--r--examples/cpque.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/examples/cpque.c b/examples/cpque.c
index 63d07c6b..dba4552f 100644
--- a/examples/cpque.c
+++ b/examples/cpque.c
@@ -9,6 +9,7 @@
#include <stdbool.h>
#include <stc/forward.h>
#include <stc/views.h>
+#include <stc/cstr.h>
// predeclare
declare_cpque(ipque, int);
@@ -18,7 +19,7 @@ struct {
bool (*less)(const int*, const int*);
} typedef IPQueue;
-#define IPQueue_obj(less) ((IPQueue){ipque_init(), less})
+#define IPQueue_drop(q) ipque_drop(&(q)->Q)
#define i_type ipque
#define i_val int
@@ -52,9 +53,9 @@ int main()
const int data[] = {1,8,5,6,3,4,0,9,7,2}, n = c_arraylen(data);
print("data", data, n);
- c_with (IPQueue q1 = IPQueue_obj(int_less), ipque_drop(&q1.Q)) // Max priority queue
- c_with (IPQueue minq1 = IPQueue_obj(int_greater), ipque_drop(&minq1.Q)) // Min priority queue
- c_with (IPQueue q5 = IPQueue_obj(int_lambda), ipque_drop(&q5.Q)) // Using lambda to compare elements.
+ c_autodrop (IPQueue, q1, {ipque_init(), int_less}) // Max priority queue
+ c_autodrop (IPQueue, minq1, {ipque_init(), int_greater}) // Min priority queue
+ c_autodrop (IPQueue, q5, {ipque_init(), int_lambda}) // Using lambda to compare elements.
{
c_forrange (i, n)
ipque_push(&q1.Q, data[i]);