Skip to content

Commit 34e53ad

Browse files
authored
Merge pull request #684 from sanpeqf/feat-array
Feat array
2 parents f2f6b52 + b6254c1 commit 34e53ad

File tree

15 files changed

+415
-141
lines changed

15 files changed

+415
-141
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
CMakeFiles/
33
Testing/
44
generated/
5+
export/
56
CMakeCache.txt
67
CTestTestfile.cmake
78
cmake_install.cmake
89
Makefile
10+
bfdev-*
911
libbfdev.*

examples/array/.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
# SPDX-License-Identifier: GPL-2.0-or-later
2-
/array-simple
2+
/array-simple-append
3+
/array-simple-splice
4+
/array-simple-stack
5+
/array-simple-write

examples/array/CMakeLists.txt

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,37 @@
33
# Copyright(c) 2023 ffashion <helloworldffashion@gmail.com>
44
#
55

6-
add_executable(array-simple simple.c)
7-
target_link_libraries(array-simple bfdev)
8-
add_test(array-simple array-simple)
6+
add_executable(array-simple-append simple-append.c)
7+
target_link_libraries(array-simple-append bfdev)
8+
add_test(array-simple-append array-simple-append)
9+
10+
add_executable(array-simple-splice simple-splice.c)
11+
target_link_libraries(array-simple-splice bfdev)
12+
add_test(array-simple-splice array-simple-splice)
13+
14+
add_executable(array-simple-stack simple-stack.c)
15+
target_link_libraries(array-simple-stack bfdev)
16+
add_test(array-simple-stack array-simple-stack)
17+
18+
add_executable(array-simple-write simple-write.c)
19+
target_link_libraries(array-simple-write bfdev)
20+
add_test(array-simple-write array-simple-write)
921

1022
if(${CMAKE_PROJECT_NAME} STREQUAL "bfdev")
1123
install(FILES
12-
simple.c
24+
simple-append.c
25+
simple-splice.c
26+
simple-stack.c
27+
simple-write.c
1328
DESTINATION
1429
${CMAKE_INSTALL_DOCDIR}/examples/array
1530
)
1631

1732
install(TARGETS
18-
array-simple
33+
array-simple-append
34+
array-simple-splice
35+
array-simple-stack
36+
array-simple-write
1937
DESTINATION
2038
${CMAKE_INSTALL_DOCDIR}/bin
2139
)

examples/array/simple-append.c

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/* SPDX-License-Identifier: GPL-2.0-or-later */
2+
/*
3+
* Copyright(c) 2023 John Sanpe <sanpeqf@gmail.com>
4+
*/
5+
6+
#define MODULE_NAME "array-simple-append"
7+
#define bfdev_log_fmt(fmt) MODULE_NAME ": " fmt
8+
9+
#include <stdlib.h>
10+
#include <string.h>
11+
#include <bfdev/log.h>
12+
#include <bfdev/array.h>
13+
#include <bfdev/template/array.h>
14+
15+
int
16+
main(int argc, const char *argv[])
17+
{
18+
BFDEV_CLASS(bfdev_array, array)(NULL, 1);
19+
const char *result;
20+
21+
if (bfdev_array_append_cstr(array, "Hello"))
22+
return 1;
23+
24+
if (bfdev_array_append_cstr(array, "World"))
25+
return 1;
26+
27+
result = bfdev_array_data(array, 0);
28+
if (!result)
29+
return 1;
30+
bfdev_log_info("%.5s\n", result);
31+
32+
result = bfdev_array_data(array, 5);
33+
if (!result)
34+
return 1;
35+
bfdev_log_info("%.5s\n", result);
36+
37+
return 0;
38+
}

examples/array/simple-splice.c

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/* SPDX-License-Identifier: GPL-2.0-or-later */
2+
/*
3+
* Copyright(c) 2023 John Sanpe <sanpeqf@gmail.com>
4+
*/
5+
6+
#define MODULE_NAME "array-simple-splice"
7+
#define bfdev_log_fmt(fmt) MODULE_NAME ": " fmt
8+
9+
#include <stdlib.h>
10+
#include <string.h>
11+
#include <bfdev/log.h>
12+
#include <bfdev/array.h>
13+
#include <bfdev/template/array.h>
14+
15+
int
16+
main(int argc, const char *argv[])
17+
{
18+
BFDEV_CLASS(bfdev_array, array)(NULL, 1);
19+
const char *result;
20+
void *pmem;
21+
22+
if (bfdev_array_append_cstr(array, "Hello123X"))
23+
return 1;
24+
25+
bfdev_array_seek(array, 4);
26+
pmem = bfdev_array_splice(array, 1, 3, 5);
27+
if (!pmem)
28+
return 1;
29+
memcpy(pmem, "World", 5);
30+
31+
bfdev_array_seek(array, 0);
32+
result = bfdev_array_data(array, 0);
33+
if (!result)
34+
return 1;
35+
bfdev_log_info("%.11s\n", result);
36+
37+
return 0;
38+
}

examples/array/simple-stack.c

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/* SPDX-License-Identifier: GPL-2.0-or-later */
2+
/*
3+
* Copyright(c) 2023 John Sanpe <sanpeqf@gmail.com>
4+
*/
5+
6+
#define MODULE_NAME "array-simple-stack"
7+
#define bfdev_log_fmt(fmt) MODULE_NAME ": " fmt
8+
9+
#include <stdlib.h>
10+
#include <string.h>
11+
#include <bfdev/log.h>
12+
#include <bfdev/array.h>
13+
14+
int
15+
main(int argc, const char *argv[])
16+
{
17+
BFDEV_CLASS(bfdev_array, array)(NULL, 1);
18+
const char *result;
19+
void *pmem;
20+
21+
pmem = bfdev_array_push(array, 5);
22+
if (!pmem)
23+
return 1;
24+
memcpy(pmem, "World", 5);
25+
26+
pmem = bfdev_array_push(array, 5);
27+
if (!pmem)
28+
return 1;
29+
memcpy(pmem, "Hello", 5);
30+
31+
result = bfdev_array_pop(array, 5);
32+
if (!result)
33+
return 1;
34+
bfdev_log_info("%.5s\n", result);
35+
36+
result = bfdev_array_pop(array, 5);
37+
if (!result)
38+
return 1;
39+
bfdev_log_info("%.5s\n", result);
40+
41+
return 0;
42+
}

examples/array/simple-write.c

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/* SPDX-License-Identifier: GPL-2.0-or-later */
2+
/*
3+
* Copyright(c) 2025 John Sanpe <sanpeqf@gmail.com>
4+
*/
5+
6+
#define MODULE_NAME "array-simple-write"
7+
#define bfdev_log_fmt(fmt) MODULE_NAME ": " fmt
8+
9+
#include <stddef.h>
10+
#include <string.h>
11+
#include <bfdev/log.h>
12+
#include <bfdev/array.h>
13+
14+
int
15+
main(int argc, const char *argv[])
16+
{
17+
BFDEV_CLASS(bfdev_array, array)(NULL, sizeof(char));
18+
const char *result;
19+
void *pmem;
20+
21+
pmem = bfdev_array_write(array, 5);
22+
if (!pmem)
23+
return 1;
24+
memcpy(pmem, "Hello", 5);
25+
26+
pmem = bfdev_array_write(array, 5);
27+
if (!pmem)
28+
return 1;
29+
memcpy(pmem, "World", 5);
30+
31+
bfdev_array_seek(array, 0);
32+
result = bfdev_array_read(array, 5);
33+
if (!result)
34+
return 1;
35+
bfdev_log_info("%.5s\n", result);
36+
37+
result = bfdev_array_read(array, 5);
38+
if (!result)
39+
return 1;
40+
bfdev_log_info("%.5s\n", result);
41+
42+
return 0;
43+
}

examples/array/simple.c

Lines changed: 0 additions & 34 deletions
This file was deleted.

examples/guards/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
# SPDX-License-Identifier: GPL-2.0-or-later
2+
/guards-class
23
/guards-cleanup

examples/log/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
# SPDX-License-Identifier: GPL-2.0-or-later
2+
/log-date
23
/log-simple

0 commit comments

Comments
 (0)