blob: 9d62f7a3a807ca880306fe94c370559c661d0388 [file] [log] [blame]
// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
/*
* Copyright (C) 2024 Amlogic, Inc. All rights reserved
*/
#ifndef BINC_PARSER_H
#define BINC_PARSER_H
#include <glib.h>
#include <endian.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct parser_instance Parser;
/**
* Create a parser for a byte array
*
* @param bytes the byte array
* @param byteOrder either LITTLE_ENDIAN or BIG_ENDIAN
* @return parser object
*/
Parser *parser_create(const GByteArray *bytes, int byteOrder);
void parser_set_offset(Parser *parser, guint offset);
void parser_free(Parser *parser);
guint8 parser_get_uint8(Parser *parser);
gint8 parser_get_sint8(Parser *parser);
guint16 parser_get_uint16(Parser *parser);
gint16 parser_get_sint16(Parser *parser);
guint32 parser_get_uint24(Parser *parser);
guint32 parser_get_uint32(Parser *parser);
double parser_get_sfloat(Parser *parser);
double parser_get_float(Parser *parser);
double parser_get_754half(Parser *parser);
double parser_get_754float(Parser *parser);
GDateTime* parser_get_date_time(Parser *parser);
GByteArray* binc_get_date_time();
GByteArray *binc_get_current_time();
GString *parser_get_string(Parser *parser);
#ifdef __cplusplus
}
#endif
#endif //BINC_PARSER_H