blob: 7210a5baa6529ba9c224776d6d1d0aed44033d7f [file] [edit]
/* Distributed under the OSI-approved BSD 3-Clause License.
See accompanying file LICENSE.rst for details. */
#ifndef INCLUDE_LLPKGC_FRAG_API_H_
#define INCLUDE_LLPKGC_FRAG_API_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <stddef.h>
#include "llpkgc_frag__internal.h"
#if defined(_MSC_VER)
#define LLPKGC_FRAG_EXPORT __declspec(dllexport)
#else
#define LLPKGC_FRAG_EXPORT __attribute__((visibility("default")))
#endif
typedef llpkgc_frag__internal_t llpkgc_frag_t;
typedef struct llpkgc_frag_settings_s llpkgc_frag_settings_t;
typedef int (
*llpkgc_frag_data_cb)(llpkgc_frag_t*, const char* at, size_t length);
typedef int (*llpkgc_frag_cb)(llpkgc_frag_t*);
struct llpkgc_frag_settings_s {
llpkgc_frag_data_cb on_fragment_text;
llpkgc_frag_cb on_frag_complete;
llpkgc_frag_cb on_fraglist_complete;
};
enum llpkgc_frag_errno {
PFFE_INTERNAL = -1,
PFFE_OK = 0,
PFFE_PAUSED = 1,
PFFE_USER = 2,
PFFE_UNFINISHED = 3,
PFFE_LOOKAHEAD = 4,
};
typedef enum llpkgc_frag_errno llpkgc_frag_errno_t;
LLPKGC_FRAG_EXPORT
void llpkgc_frag_init(llpkgc_frag_t* parser,
const llpkgc_frag_settings_t* settings);
LLPKGC_FRAG_EXPORT
void llpkgc_frag_reset(llpkgc_frag_t* parser);
LLPKGC_FRAG_EXPORT
void llpkgc_frag_settings_init(llpkgc_frag_settings_t* settings);
LLPKGC_FRAG_EXPORT
llpkgc_frag_errno_t llpkgc_frag_execute(llpkgc_frag_t* parser, const char* data,
size_t len);
LLPKGC_FRAG_EXPORT
llpkgc_frag_errno_t llpkgc_frag_finish(llpkgc_frag_t* parser);
LLPKGC_FRAG_EXPORT
void llpkgc_frag_pause(llpkgc_frag_t* parser);
LLPKGC_FRAG_EXPORT
void llpkgc_frag_resume(llpkgc_frag_t* parser);
LLPKGC_FRAG_EXPORT
llpkgc_frag_errno_t llpkgc_frag_get_errno(const llpkgc_frag_t* parser);
LLPKGC_FRAG_EXPORT
const char* llpkgc_frag_get_error_reason(const llpkgc_frag_t* parser);
LLPKGC_FRAG_EXPORT
void llpkgc_frag_set_error_reason(llpkgc_frag_t* parser, const char* reason);
LLPKGC_FRAG_EXPORT
const char* llpkgc_frag_get_error_pos(const llpkgc_frag_t* parser);
LLPKGC_FRAG_EXPORT
const char* llpkgc_frag_errno_name(llpkgc_frag_errno_t err);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* INCLUDE_LLPKGC_FRAG_API_H_ */