mirror of
git://git.psyc.eu/libpsyc
synced 2024-08-15 03:19:02 +00:00
typedef enums, more doc
This commit is contained in:
parent
561eb31aa9
commit
45efc9e050
2 changed files with 35 additions and 37 deletions
|
@ -42,16 +42,16 @@ typedef enum {
|
||||||
PSYC_TYPE_TIME,
|
PSYC_TYPE_TIME,
|
||||||
} PSYC_Type;
|
} PSYC_Type;
|
||||||
|
|
||||||
enum PSYC_Flags
|
typedef enum
|
||||||
{
|
{
|
||||||
PSYC_HEADER_ONLY = 1,
|
PSYC_HEADER_ONLY = 1,
|
||||||
};
|
} PSYC_Flag;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The return value definitions for the packet parsing function.
|
* The return value definitions for the packet parsing function.
|
||||||
* @see PSYC_parse()
|
* @see PSYC_parse()
|
||||||
*/
|
*/
|
||||||
enum PSYC_ReturnCodes
|
typedef enum
|
||||||
{
|
{
|
||||||
PSYC_ERROR_END = -7,
|
PSYC_ERROR_END = -7,
|
||||||
PSYC_ERROR_METHOD = -6,
|
PSYC_ERROR_METHOD = -6,
|
||||||
|
@ -61,22 +61,28 @@ enum PSYC_ReturnCodes
|
||||||
PSYC_ERROR_LENGTH = -2,
|
PSYC_ERROR_LENGTH = -2,
|
||||||
PSYC_ERROR = -1,
|
PSYC_ERROR = -1,
|
||||||
PSYC_SUCCESS = 0,
|
PSYC_SUCCESS = 0,
|
||||||
PSYC_BODY = 1,
|
PSYC_INSUFFICIENT = 1,
|
||||||
PSYC_BODY_INCOMPLETE = 2,
|
/// Routing variable parsing done. Modifier, name & value contains the respective parts.
|
||||||
PSYC_INSUFFICIENT = 3,
|
PSYC_ROUTING = 2,
|
||||||
PSYC_ROUTING = 4,
|
/// Entity variable parsing done. Modifier, name & value contains the respective parts.
|
||||||
PSYC_ENTITY = 5,
|
PSYC_ENTITY = 3,
|
||||||
PSYC_ENTITY_INCOMPLETE = 6,
|
/// Entity variable parsing is incomplete. Modifier & name are complete, value is incomplete.
|
||||||
PSYC_HEADER_COMPLETE = 7,
|
PSYC_ENTITY_INCOMPLETE = 4,
|
||||||
PSYC_COMPLETE = 8,
|
/// Body parsing done, name contains method, value contains body.
|
||||||
PSYC_INCOMPLETE = 9,
|
PSYC_BODY = 5,
|
||||||
};
|
/// Body parsing is incomplete, name contains method, value contains part of the body.
|
||||||
|
PSYC_BODY_INCOMPLETE = 6,
|
||||||
|
/// Reached end of packet, parsing done.
|
||||||
|
PSYC_COMPLETE = 7,
|
||||||
|
// Binary value parsing incomplete, used internally.
|
||||||
|
PSYC_INCOMPLETE = 8,
|
||||||
|
} PSYC_ReturnCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The return value definitions for the list parsing function.
|
* The return value definitions for the list parsing function.
|
||||||
* @see PSYC_parseList()
|
* @see PSYC_parseList()
|
||||||
*/
|
*/
|
||||||
enum PSYC_ListReturnCodes
|
typedef enum
|
||||||
{
|
{
|
||||||
PSYC_ERROR_LIST_DELIM = -5,
|
PSYC_ERROR_LIST_DELIM = -5,
|
||||||
PSYC_ERROR_LIST_LEN = -4,
|
PSYC_ERROR_LIST_LEN = -4,
|
||||||
|
@ -86,12 +92,12 @@ enum PSYC_ListReturnCodes
|
||||||
PSYC_LIST_ELEM = 1,
|
PSYC_LIST_ELEM = 1,
|
||||||
PSYC_LIST_END = 2,
|
PSYC_LIST_END = 2,
|
||||||
PSYC_LIST_INCOMPLETE = 3,
|
PSYC_LIST_INCOMPLETE = 3,
|
||||||
};
|
} PSYC_ListReturnCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PSYC packet parts.
|
* PSYC packet parts.
|
||||||
*/
|
*/
|
||||||
enum PSYC_Parts
|
typedef enum
|
||||||
{
|
{
|
||||||
PSYC_PART_RESET = -1,
|
PSYC_PART_RESET = -1,
|
||||||
PSYC_PART_HEADER = 0,
|
PSYC_PART_HEADER = 0,
|
||||||
|
@ -100,17 +106,17 @@ enum PSYC_Parts
|
||||||
PSYC_PART_METHOD,
|
PSYC_PART_METHOD,
|
||||||
PSYC_PART_DATA,
|
PSYC_PART_DATA,
|
||||||
PSYC_PART_END,
|
PSYC_PART_END,
|
||||||
};
|
} PSYC_Part;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List types.
|
* List types.
|
||||||
* Possible types are text and binary.
|
* Possible types are text and binary.
|
||||||
*/
|
*/
|
||||||
enum PSYC_ListTypes
|
typedef enum
|
||||||
{
|
{
|
||||||
PSYC_LIST_TEXT = 1,
|
PSYC_LIST_TEXT = 1,
|
||||||
PSYC_LIST_BINARY = 2,
|
PSYC_LIST_BINARY = 2,
|
||||||
};
|
} PSYC_ListType;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
@ -127,7 +133,7 @@ typedef struct
|
||||||
size_t startc; ///< line start position
|
size_t startc; ///< line start position
|
||||||
PSYC_Array buffer;
|
PSYC_Array buffer;
|
||||||
uint8_t flags;
|
uint8_t flags;
|
||||||
char part; ///< part of the packet being parsed currently, see PSYC_Parts
|
PSYC_Part part; ///< part of the packet being parsed currently
|
||||||
|
|
||||||
size_t contentParsed; ///< number of bytes parsed from the content so far
|
size_t contentParsed; ///< number of bytes parsed from the content so far
|
||||||
size_t contentLength; ///< expected length of the content
|
size_t contentLength; ///< expected length of the content
|
||||||
|
@ -144,7 +150,7 @@ typedef struct
|
||||||
size_t cursor; ///< current position in buffer
|
size_t cursor; ///< current position in buffer
|
||||||
size_t startc; ///< line start position
|
size_t startc; ///< line start position
|
||||||
PSYC_Array buffer;
|
PSYC_Array buffer;
|
||||||
char type; ///< list type, see PSYC_ListTypes
|
PSYC_ListType type; ///< list type
|
||||||
|
|
||||||
size_t elemParsed; ///< number of bytes parsed from the elem so far
|
size_t elemParsed; ///< number of bytes parsed from the elem so far
|
||||||
size_t elemLength; ///< expected length of the elem
|
size_t elemLength; ///< expected length of the elem
|
||||||
|
@ -169,7 +175,7 @@ inline PSYC_Array PSYC_createArray (uint8_t* const memory, size_t length)
|
||||||
* Initiates the state struct with flags.
|
* Initiates the state struct with flags.
|
||||||
*
|
*
|
||||||
* @param state Pointer to the state struct that should be initiated.
|
* @param state Pointer to the state struct that should be initiated.
|
||||||
* @param flags The flags that one ones to set, see PSYC_Flags.
|
* @param flags The flags that one ones to set, see PSYC_Flag.
|
||||||
*/
|
*/
|
||||||
inline void PSYC_initState2 (PSYC_State* state, uint8_t flags )
|
inline void PSYC_initState2 (PSYC_State* state, uint8_t flags )
|
||||||
{
|
{
|
||||||
|
@ -228,20 +234,13 @@ inline size_t PSYC_getContentLength (PSYC_State* s)
|
||||||
* the variable or method and its length will be set accordingly
|
* the variable or method and its length will be set accordingly
|
||||||
* @param value A pointer to a PSYC_Array. It will point to the
|
* @param value A pointer to a PSYC_Array. It will point to the
|
||||||
* value/body the variable/method and its length will be set accordingly
|
* value/body the variable/method and its length will be set accordingly
|
||||||
*
|
|
||||||
* @return one of PSYC_ReturnCodes
|
|
||||||
* @see PSYC_ReturnCodes
|
|
||||||
* @see PSYC_State
|
|
||||||
* @see PSYC_Array
|
|
||||||
*/
|
*/
|
||||||
int PSYC_parse(PSYC_State* state, uint8_t* modifier, PSYC_Array* name, PSYC_Array* value);
|
PSYC_ReturnCode PSYC_parse(PSYC_State* state, uint8_t* modifier, PSYC_Array* name, PSYC_Array* value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List value parser.
|
* List value parser.
|
||||||
* @return one of PSYC_ReturnCodes
|
|
||||||
* @see PSYC_ListReturnCodes
|
|
||||||
*/
|
*/
|
||||||
int PSYC_parseList(PSYC_ListState* state, PSYC_Array *name, PSYC_Array* value, PSYC_Array* elem);
|
PSYC_ListReturnCode PSYC_parseList(PSYC_ListState* state, PSYC_Array *name, PSYC_Array* value, PSYC_Array* elem);
|
||||||
|
|
||||||
#endif // PSYC_PARSER_H
|
#endif // PSYC_PARSER_H
|
||||||
|
|
||||||
|
|
11
src/parser.c
11
src/parser.c
|
@ -67,7 +67,7 @@ inline char isKwChar(uint8_t c)
|
||||||
* It should contain one or more keyword characters.
|
* It should contain one or more keyword characters.
|
||||||
* @return PSYC_ERROR or PSYC_SUCCESS
|
* @return PSYC_ERROR or PSYC_SUCCESS
|
||||||
*/
|
*/
|
||||||
inline int PSYC_parseName(PSYC_State* state, PSYC_Array* name)
|
inline PSYC_ReturnCode PSYC_parseName(PSYC_State* state, PSYC_Array* name)
|
||||||
{
|
{
|
||||||
name->ptr = state->buffer.ptr + state->cursor;
|
name->ptr = state->buffer.ptr + state->cursor;
|
||||||
name->length = 0;
|
name->length = 0;
|
||||||
|
@ -86,7 +86,7 @@ inline int PSYC_parseName(PSYC_State* state, PSYC_Array* name)
|
||||||
* length is the expected length of the data, parsed is the number of bytes parsed so far
|
* length is the expected length of the data, parsed is the number of bytes parsed so far
|
||||||
* @return PSYC_COMPLETE or PSYC_INCOMPLETE
|
* @return PSYC_COMPLETE or PSYC_INCOMPLETE
|
||||||
*/
|
*/
|
||||||
inline int PSYC_parseBinaryValue(PSYC_State* state, PSYC_Array* value, size_t* length, size_t* parsed)
|
inline PSYC_ReturnCode PSYC_parseBinaryValue(PSYC_State* state, PSYC_Array* value, size_t* length, size_t* parsed)
|
||||||
{
|
{
|
||||||
size_t remaining = *length - *parsed;
|
size_t remaining = *length - *parsed;
|
||||||
value->ptr = state->buffer.ptr + state->cursor;
|
value->ptr = state->buffer.ptr + state->cursor;
|
||||||
|
@ -109,7 +109,7 @@ inline int PSYC_parseBinaryValue(PSYC_State* state, PSYC_Array* value, size_t* l
|
||||||
* Parse simple or binary variable.
|
* Parse simple or binary variable.
|
||||||
* @return PSYC_ERROR or PSYC_SUCCESS
|
* @return PSYC_ERROR or PSYC_SUCCESS
|
||||||
*/
|
*/
|
||||||
inline int PSYC_parseVar(PSYC_State* state, uint8_t* modifier, PSYC_Array* name, PSYC_Array* value)
|
inline PSYC_ReturnCode PSYC_parseVar(PSYC_State* state, uint8_t* modifier, PSYC_Array* name, PSYC_Array* value)
|
||||||
{
|
{
|
||||||
*modifier = *(state->buffer.ptr + state->cursor);
|
*modifier = *(state->buffer.ptr + state->cursor);
|
||||||
ADVANCE_CURSOR_OR_RETURN(PSYC_INSUFFICIENT);
|
ADVANCE_CURSOR_OR_RETURN(PSYC_INSUFFICIENT);
|
||||||
|
@ -172,9 +172,8 @@ inline int PSYC_parseVar(PSYC_State* state, uint8_t* modifier, PSYC_Array* name,
|
||||||
/**
|
/**
|
||||||
* Parse PSYC packets.
|
* Parse PSYC packets.
|
||||||
* Generalized line-based parser.
|
* Generalized line-based parser.
|
||||||
* @return see PSYC_ReturnCodes
|
|
||||||
*/
|
*/
|
||||||
int PSYC_parse(PSYC_State* state, uint8_t* modifier, PSYC_Array* name, PSYC_Array* value)
|
PSYC_ReturnCode PSYC_parse(PSYC_State* state, uint8_t* modifier, PSYC_Array* name, PSYC_Array* value)
|
||||||
{
|
{
|
||||||
int ret; // a return value
|
int ret; // a return value
|
||||||
size_t pos; // a cursor position
|
size_t pos; // a cursor position
|
||||||
|
@ -364,7 +363,7 @@ int PSYC_parse(PSYC_State* state, uint8_t* modifier, PSYC_Array* name, PSYC_Arra
|
||||||
* List value parser.
|
* List value parser.
|
||||||
* @return see PSYC_ListReturnCodes.
|
* @return see PSYC_ListReturnCodes.
|
||||||
*/
|
*/
|
||||||
int PSYC_parseList(PSYC_ListState* state, PSYC_Array *name, PSYC_Array* value, PSYC_Array* elem)
|
PSYC_ListReturnCode PSYC_parseList(PSYC_ListState* state, PSYC_Array *name, PSYC_Array* value, PSYC_Array* elem)
|
||||||
{
|
{
|
||||||
if (state->cursor >= state->buffer.length)
|
if (state->cursor >= state->buffer.length)
|
||||||
return PSYC_LIST_INCOMPLETE;
|
return PSYC_LIST_INCOMPLETE;
|
||||||
|
|
Loading…
Reference in a new issue