Cleanup rjp.h

This commit is contained in:
rexy712
2020-03-22 14:46:57 -07:00
parent f88bb0c4f2
commit d6213cfe1b
2 changed files with 41 additions and 18 deletions

View File

@@ -22,32 +22,53 @@
#ifdef __cplusplus
extern "C"{
#endif
#if defined(__GNUC__) || defined(__clang__)
#define DEPRECATED(str) __attribute__((deprecated(str)))
#ifndef __STDC_VERSION__
# ifdef __cplusplus
# if __cplusplus >= 201402L
# define DEPRECATED(str) [[deprecated(str)]]
# elif defined(__GNUC__) || defined(__clang__)
# define DEPRECATED(str) __attribute__((deprecated(str)))
# else
# define DEPRECATED(str)
# endif
# endif
#else
#define DEPRECATED(str)
# if __STDC_VERSION__ > 201710L
# define DEPRECATED(str) [[deprecated(str)]]
# elif defined(__GNUC__) || defined(__clang__)
# define DEPRECATED(str) __attribute__((deprecated(str)))
# else
# define DEPRECATED(str)
# endif
#endif
#ifndef RJP_int
#include <stdint.h>
#define RJP_int int_fast64_t
# include <stdint.h>
# define RJP_int int_fast64_t
#endif
#ifndef RJP_index
#include <stddef.h>
#define RJP_index size_t
# include <stddef.h>
# define RJP_index size_t
#endif
#ifndef RJP_float
#include <stdint.h>
#define RJP_float double
# define RJP_float double
#endif
#ifndef RJP_bool
#define RJP_bool char
# define RJP_bool char
#endif
//used with rjp_to_json
#define RJP_FORMAT_NONE 0
#define RJP_FORMAT_PRETTY 1
typedef enum RJP_format_flag{
RJP_FORMAT_NONE = 0,
RJP_FORMAT_PRETTY = 1
}RJP_format_flag;
typedef enum RJP_parse_flag{
RJP_PARSE_NONE = 0,
RJP_PARSE_ALLOW_COMMENTS = 1,
RJP_PARSE_ALLOW_TRAILING_COMMA = 2,
RJP_PARSE_ALL_EXT = 3
}RJP_parse_flag;
//type of data
typedef enum RJP_data_type{
@@ -84,11 +105,6 @@ typedef struct RJP_array_iterator{
RJP_value* current;
}RJP_array_iterator;
typedef enum RJP_parse_flag{
RJP_PARSE_NONE = 0,
RJP_PARSE_ALLOW_COMMENTS = 1,
RJP_PARSE_ALLOW_TRAILING_COMMA = 2
}RJP_parse_flag;
typedef struct RJP_parse_callback{
int(*read)(char*,int,void*);
void* data;
@@ -109,6 +125,7 @@ void rjp_free(void* dest);
RJP_index rjp_escape_strcpy(char* dest, const char* src);
//length of string including escape sequences
RJP_index rjp_escape_strlen(const char* str);
RJP_string rjp_escape(const char* src);
/***************** GENERIC OPERATIONS *******************/
//Convert C string consisting of json data into RJP's format

View File

@@ -295,6 +295,12 @@ RJP_index rjp_escape_strlen(const char* str){
}
return count;
}
RJP_string rjp_escape(const char* src){
RJP_index esclen = rjp_escape_strlen(src);
char* dest = rjp_alloc(esclen+1);
rjp_escape_strcpy(dest, src);
return (RJP_string){.value = dest, .length = esclen};
}
RJP_index irjp_array_strlen(const RJP_value* arr){
RJP_index count = 2; //[]
RJP_array_iterator it;