35 lines
957 B
C++
35 lines
957 B
C++
#include "parser3.h"
|
|
#include "weaseljson.h"
|
|
|
|
using namespace parser3;
|
|
|
|
extern "C" {
|
|
|
|
__attribute__((visibility("default"))) WeaselJsonParser *
|
|
WeaselJsonParser_create(int stackSize, const WeaselJsonCallbacks *callbacks,
|
|
void *userdata, int flags) {
|
|
auto *buf = malloc(sizeof(Parser3) + stackSize * sizeof(*Parser3::stackPtr));
|
|
if (buf == nullptr) {
|
|
return nullptr;
|
|
}
|
|
return (WeaselJsonParser *)new (buf)
|
|
Parser3{callbacks, userdata, stackSize, flags};
|
|
}
|
|
|
|
__attribute__((visibility("default"))) void
|
|
WeaselJsonParser_reset(WeaselJsonParser *parser) {
|
|
((Parser3 *)parser)->reset();
|
|
}
|
|
|
|
__attribute__((visibility("default"))) void
|
|
WeaselJsonParser_destroy(WeaselJsonParser *parser) {
|
|
((Parser3 *)parser)->~Parser3();
|
|
free(parser);
|
|
}
|
|
|
|
__attribute__((visibility("default"))) WeaselJsonStatus
|
|
WeaselJsonParser_parse(WeaselJsonParser *parser, char *buf, int len) {
|
|
return ((Parser3 *)parser)->parse(buf, len);
|
|
}
|
|
}
|