aoc-2021/src/puzzle_input.h

29 lines
1.1 KiB
C

#ifndef AOC_2021_PUZZLE_INPUT_H
#define AOC_2021_PUZZLE_INPUT_H
#include <stdint.h>
typedef enum {
PARSER_OK = 0,
PARSER_INVALID = -1,
PARSER_RANGE_OVERFLOW = -2,
PARSE_FILE_ERR = -3,
PARSE_NULL = -4,
} parse_ret_t;
typedef parse_ret_t (*input_parser_t)(char * buffer, void * data, uint16_t index);
parse_ret_t read_input_single_line(const char * file_path, void * data, uint16_t max_len, input_parser_t parser, uint16_t * len);
parse_ret_t read_input_split_on(const char * file_path, void * data, uint16_t max_len, input_parser_t parser, uint16_t * len, char split);
parse_ret_t read_input_multi_line(const char * file_path, void * data, uint16_t max_len, char * sep, input_parser_t parser, uint16_t * len);
// Parsers
parse_ret_t parse_long_from_buff(char * buffer, void * data, uint16_t index);
parse_ret_t parse_byte_from_buff(char * buffer, void * data, uint16_t index);
parse_ret_t parse_long_base_2_from_buff(char * buffer, void * data, uint16_t index);
//Helpers
parse_ret_t parse_long(char * buffer, int64_t * val, int16_t base);
#endif //AOC_2021_PUZZLE_INPUT_H