Skip to content

Commit a34c077

Browse files
committed
!BREAKING refactor(WayNet): improved way-net edges API
1 parent ac9fdb0 commit a34c077

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

include/zenkit-capi/world/WayNet.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,11 @@ typedef struct ZkInternal_WayEdge ZkWayEdge;
1919
#endif
2020

2121
typedef ZkBool (*ZkWayPointEnumerator)(void* ctx, ZkWayPoint const* point);
22+
typedef ZkBool (*ZkWayEdgeEnumerator)(void* ctx, ZkWayEdge const* edge);
2223

23-
ZKC_API ZkWayEdge const* ZkWayNet_getEdges(ZkWayNet const* slf, ZkSize* count);
24+
ZKC_API ZkSize ZkWayNet_getEdgeCount(ZkWayNet const* slf);
25+
ZKC_API ZkWayEdge const* ZkWayNet_getEdge(ZkWayNet const* slf, ZkSize i);
26+
ZKC_API void ZkWayNet_enumerateEdges(ZkWayNet const* slf, ZkWayEdgeEnumerator cb, void* ctx);
2427

2528
ZKC_API ZkSize ZkWayNet_getPointCount(ZkWayNet const* slf);
2629
ZKC_API ZkWayPoint const* ZkWayNet_getPoint(ZkWayNet const* slf, ZkSize i);

src/world/WayNet.cc

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,26 @@
44

55
#include "../Internal.hh"
66

7-
ZkWayEdge const* ZkWayNet_getEdges(ZkWayNet const* slf, ZkSize* count) {
7+
ZkSize ZkWayNet_getEdgeCount(ZkWayNet const* slf) {
88
ZKC_TRACE_FN();
9-
ZKC_CHECK_NULL(slf, count);
9+
ZKC_CHECK_NULL(slf);
10+
return slf->edges.size();
11+
}
12+
13+
ZkWayEdge const* ZkWayNet_getEdge(ZkWayNet const* slf, ZkSize i) {
14+
ZKC_TRACE_FN();
15+
ZKC_CHECK_NULL(slf);
16+
ZKC_CHECK_LEN(slf->edges, i);
17+
return &slf->edges[i];
18+
}
1019

11-
*count = slf->edges.size();
12-
return slf->edges.data();
20+
void ZkWayNet_enumerateEdges(ZkWayNet const* slf, ZkWayEdgeEnumerator cb, void* ctx) {
21+
ZKC_TRACE_FN();
22+
ZKC_CHECK_NULLV(slf, cb);
23+
24+
for (auto& edge : slf->edges) {
25+
if (cb(ctx, &edge)) break;
26+
}
1327
}
1428

1529
ZkSize ZkWayNet_getPointCount(ZkWayNet const* slf) {

0 commit comments

Comments
 (0)