commit ca2e82b49f1c7a0f6044bfdc2697dd3beaa2cad3
parent 05e15cd4754a82d08341a4e82a88945b465bc542
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Wed, 9 Mar 2022 14:26:32 +0100
Implement the shtr_lines_view getters
Diffstat:
2 files changed, 41 insertions(+), 7 deletions(-)
diff --git a/src/shtr.h b/src/shtr.h
@@ -191,31 +191,31 @@ SHTR_API res_T
shtr_lines_list_load
(struct shtr* shtr,
const char* path,
- struct shtr_lines_list** lnlst);
+ struct shtr_lines_list** list);
SHTR_API res_T
shtr_lines_list_load_stream
(struct shtr* shtr,
FILE* stream,
const char* stream_name, /* NULL <=> use default stream name */
- struct shtr_lines_list** lnlst);
+ struct shtr_lines_list** list);
SHTR_API res_T
shtr_lines_list_ref_get
- (struct shtr_lines_list* lnlst);
+ (struct shtr_lines_list* list);
SHTR_API res_T
shtr_lines_list_ref_put
- (struct shtr_lines_list* lnlst);
+ (struct shtr_lines_list* list);
SHTR_API res_T
shtr_lines_list_get_size
- (const struct shtr_lines_list* lnlst,
+ (const struct shtr_lines_list* list,
size_t* nlines);
SHTR_API res_T
shtr_lines_list_get
- (const struct shtr_lines_list* lnlst,
+ (const struct shtr_lines_list* list,
const struct shtr_line* lines[]);
/*******************************************************************************
@@ -223,7 +223,7 @@ shtr_lines_list_get
******************************************************************************/
SHTR_API res_T
shtr_lines_view_create
- (struct shtr_lines_list* lnlst,
+ (struct shtr_lines_list* list,
const struct shtr_lines_view_create_args* args,
struct shtr_lines_view** view);
@@ -235,6 +235,17 @@ SHTR_API res_T
shtr_lines_view_ref_put
(struct shtr_lines_view* view);
+SHTR_API res_T
+shtr_lines_view_get_size
+ (const struct shtr_lines_view* view,
+ size_t* nlines);
+
+SHTR_API res_T
+shtr_lines_view_get_line
+ (const struct shtr_lines_view* view,
+ const size_t iline,
+ const struct shtr_line** line);
+
END_DECLS
#endif /* SHTR_H */
diff --git a/src/shtr_lines_view.c b/src/shtr_lines_view.c
@@ -251,3 +251,26 @@ shtr_lines_view_ref_put(struct shtr_lines_view* view)
ref_put(&view->ref, release_lines_view);
return RES_OK;
}
+
+res_T
+shtr_lines_view_get_size(const struct shtr_lines_view* view, size_t* sz)
+{
+ if(!view || !sz) return RES_BAD_ARG;
+ *sz = darray_size_t_size_get(&view->line_ids);
+ return RES_OK;
+}
+
+res_T
+shtr_lines_view_get_line
+ (const struct shtr_lines_view* view,
+ const size_t iline,
+ const struct shtr_line** line)
+{
+ size_t i;
+ if(!view || !line || iline >= darray_size_t_size_get(&view->line_ids)) {
+ return RES_BAD_ARG;
+ }
+ i = darray_size_t_cdata_get(&view->line_ids)[iline];
+ *line = darray_line_cdata_get(&view->list->lines) + i;
+ return RES_OK;
+}