From bf2c9c1d9082a69f1d9c7f761bc1d2f2b7c782b3 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Tue, 12 Nov 2024 19:56:02 +0000 Subject: [PATCH] meta: add internal common library --- CMakeLists.txt | 1 + common/CMakeLists.txt | 4 ++++ common/include/ivy/line-source.h | 22 ++++++++++++++++++++++ common/line-source.c | 12 ++++++++++++ 4 files changed, 39 insertions(+) create mode 100644 common/CMakeLists.txt create mode 100644 common/include/ivy/line-source.h create mode 100644 common/line-source.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d8ef20..09169ae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) set(Bluelib_STATIC TRUE) find_package(Bluelib REQUIRED) +add_subdirectory(common) add_subdirectory(lang) add_subdirectory(asm) add_subdirectory(rt) diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt new file mode 100644 index 0000000..7234996 --- /dev/null +++ b/common/CMakeLists.txt @@ -0,0 +1,4 @@ +file(GLOB_RECURSE common_sources *.c *.h include/ivy/*.h) + +add_library(ivy-common SHARED ${common_sources}) +target_include_directories(ivy-common PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include/) diff --git a/common/include/ivy/line-source.h b/common/include/ivy/line-source.h new file mode 100644 index 0000000..c0223d9 --- /dev/null +++ b/common/include/ivy/line-source.h @@ -0,0 +1,22 @@ +#ifndef IVY_COMMON_LINE_SOURCE_H_ +#define IVY_COMMON_LINE_SOURCE_H_ + +#include + +enum ivy_line_source_status { + IVY_LS_OK = 0, + IVY_LS_EOF, + IVY_LS_ERR_IOERR, + IVY_LS_ERR_NOSYS, +}; + +struct ivy_line_source { + enum ivy_line_source_status (*s_readline)( + struct ivy_line_source *, char *, size_t, size_t *, const char *); +}; + +extern enum ivy_line_source_status ivy_line_source_readline( + struct ivy_line_source *src, char *buf, size_t count, size_t *nr_read, + const char *prompt); + +#endif diff --git a/common/line-source.c b/common/line-source.c new file mode 100644 index 0000000..ff872ff --- /dev/null +++ b/common/line-source.c @@ -0,0 +1,12 @@ +#include + +enum ivy_line_source_status ivy_line_source_readline( + struct ivy_line_source *src, char *buf, size_t count, size_t *nr_read, + const char *prompt) +{ + if (src->s_readline) { + return src->s_readline(src, buf, count, nr_read, prompt); + } + + return IVY_LS_ERR_NOSYS; +}