Skip to content

Commit eb995e0

Browse files
committed
添加 user_data
1 parent 1eb0e7e commit eb995e0

File tree

2 files changed

+14
-11
lines changed

2 files changed

+14
-11
lines changed

lib/xy.h

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1356,29 +1356,29 @@ xy_seq_pop (XySeq_t *seq)
13561356
* @flavor Ruby: Array#each
13571357
*/
13581358
void
1359-
xy_seq_each (XySeq_t *seq, void (*func)(void *))
1359+
xy_seq_each (XySeq_t *seq, void (*func) (void *, void *), void *user_data)
13601360
{
13611361
xy_cant_be_null (seq);
13621362
xy_cant_be_null (func);
13631363

13641364
for (XySeqItem_t *it = seq->first_item; it; it = it->next)
13651365
{
1366-
func (it->data);
1366+
func (it->data, user_data);
13671367
}
13681368
}
13691369

13701370
/**
13711371
* @flavor Ruby: Enumerable#find
13721372
*/
13731373
void *
1374-
xy_seq_find (XySeq_t *seq, bool (*func)(void *))
1374+
xy_seq_find (XySeq_t *seq, bool (*func) (void *, void *), void *user_data)
13751375
{
13761376
xy_cant_be_null (seq);
13771377
xy_cant_be_null (func);
13781378

13791379
for (XySeqItem_t *it = seq->first_item; it; it = it->next)
13801380
{
1381-
if (func (it->data))
1381+
if (func (it->data, user_data))
13821382
{
13831383
return it->data;
13841384
}
@@ -1503,7 +1503,10 @@ xy_map_get (XyMap_t *map, const char *key)
15031503
* @flavor Ruby: Hash#each
15041504
*/
15051505
void
1506-
xy_map_each (XyMap_t *map, void (*func)(const char *key, void *value))
1506+
xy_map_each (
1507+
XyMap_t *map,
1508+
void (*func) (const char *key, void *value, void *user_data),
1509+
void *user_data)
15071510
{
15081511
xy_cant_be_null (map);
15091512
xy_cant_be_null (func);
@@ -1513,7 +1516,7 @@ xy_map_each (XyMap_t *map, void (*func)(const char *key, void *value))
15131516
struct _XyHashBucket_t *bucket = map->buckets[i];
15141517
while (bucket)
15151518
{
1516-
func (bucket->key, bucket->value);
1519+
func (bucket->key, bucket->value, user_data);
15171520
bucket = bucket->next;
15181521
}
15191522
}

test/xy.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,21 @@
55
* Test Authors : 曾奥然 <[email protected]>
66
* Contributors : Mikachu2333 <[email protected]>
77
* Created On : <2023-08-30>
8-
* Last Modified : <2025-08-21>
8+
* Last Modified : <2025-08-22>
99
*
1010
* Test xy.h
1111
* ------------------------------------------------------------*/
1212

1313
#include "xy.h"
1414

1515
void
16-
print_str_for_seq (void *str)
16+
print_str_for_seq (void *str, void *NOUSE)
1717
{
1818
print ((char *) str);
1919
}
2020

2121
void
22-
print_str_for_map (const char *key, void *value)
22+
print_str_for_map (const char *key, void *value, void *NOUSE)
2323
{
2424
println (xy_strcat (4, " ", key, " => ", (char *) value));
2525
}
@@ -150,7 +150,7 @@ main (int argc, char const *argv[])
150150
xy_seq_push (seq, "World");
151151
assert_str ("Hello", xy_seq_at (seq, 1));
152152
assert_str ("World", xy_seq_at (seq, 2));
153-
xy_seq_each (seq, print_str_for_seq); br();
153+
xy_seq_each (seq, print_str_for_seq, NULL); br();
154154
xy_seq_pop (seq);
155155
assert (1 == xy_seq_len (seq));
156156

@@ -164,7 +164,7 @@ main (int argc, char const *argv[])
164164
assert_str ("chsrc", xy_map_get (map, "Hello"));
165165
assert (2 == xy_map_len (map));
166166
echo ("{");
167-
xy_map_each (map, print_str_for_map);
167+
xy_map_each (map, print_str_for_map, NULL);
168168
echo ("}");
169169

170170
xy_succ ("测试完成", "xy.h 测试全部通过");

0 commit comments

Comments
 (0)