1
0
Fork 0
mirror of git://git.psyc.eu/libpsyc synced 2024-08-15 03:19:02 +00:00
This commit is contained in:
psyc://psyced.org/~lynX 2011-04-20 15:37:38 +02:00
commit 561eb31aa9

View file

@ -1,15 +1,16 @@
/** /**
* @file psyc/parser.h * @file psyc/parser.h
* @brief Interface for various psyc parser functions * @brief Interface for various psyc parser functions.
* *
* All parsing functions and the definitions they use are * All parsing functions and the definitions they use are
* defined in this file. * defined in this file.
*/ */
/** @defgroup parsing Parsing Functions /**
* @defgroup parsing Parsing Functions
* *
* This module contains all parsing functions * This module contains all parsing functions.
* @{ * @{
*/ */
#ifndef PSYC_PARSER_H #ifndef PSYC_PARSER_H
@ -18,7 +19,8 @@
#include <stdint.h> #include <stdint.h>
#include <string.h> #include <string.h>
/** Different types that a variable can have /**
* Different types that a variable can have.
* *
* This enum lists PSYC variable types that * This enum lists PSYC variable types that
* this library is capable of checking for * this library is capable of checking for
@ -45,7 +47,8 @@ enum PSYC_Flags
PSYC_HEADER_ONLY = 1, PSYC_HEADER_ONLY = 1,
}; };
/** The return value definitions for packet parsing function /**
* The return value definitions for the packet parsing function.
* @see PSYC_parse() * @see PSYC_parse()
*/ */
enum PSYC_ReturnCodes enum PSYC_ReturnCodes
@ -69,6 +72,10 @@ enum PSYC_ReturnCodes
PSYC_INCOMPLETE = 9, PSYC_INCOMPLETE = 9,
}; };
/**
* The return value definitions for the list parsing function.
* @see PSYC_parseList()
*/
enum PSYC_ListReturnCodes enum PSYC_ListReturnCodes
{ {
PSYC_ERROR_LIST_DELIM = -5, PSYC_ERROR_LIST_DELIM = -5,
@ -81,6 +88,9 @@ enum PSYC_ListReturnCodes
PSYC_LIST_INCOMPLETE = 3, PSYC_LIST_INCOMPLETE = 3,
}; };
/**
* PSYC packet parts.
*/
enum PSYC_Parts enum PSYC_Parts
{ {
PSYC_PART_RESET = -1, PSYC_PART_RESET = -1,
@ -92,6 +102,10 @@ enum PSYC_Parts
PSYC_PART_END, PSYC_PART_END,
}; };
/**
* List types.
* Possible types are text and binary.
*/
enum PSYC_ListTypes enum PSYC_ListTypes
{ {
PSYC_LIST_TEXT = 1, PSYC_LIST_TEXT = 1,
@ -104,7 +118,9 @@ typedef struct
const uint8_t * ptr; const uint8_t * ptr;
} PSYC_Array; } PSYC_Array;
/**
* Struct for keeping parser state.
*/
typedef struct typedef struct
{ {
size_t cursor; ///< current position in buffer size_t cursor; ///< current position in buffer
@ -120,6 +136,9 @@ typedef struct
size_t valueLength; ///< expected length of the value size_t valueLength; ///< expected length of the value
} PSYC_State; } PSYC_State;
/**
* Struct for keeping list parser state.
*/
typedef struct typedef struct
{ {
size_t cursor; ///< current position in buffer size_t cursor; ///< current position in buffer
@ -197,13 +216,14 @@ inline size_t PSYC_getContentLength (PSYC_State* s)
#endif #endif
/** Parse PSYC packets. /**
* Parse PSYC packets.
* *
* Generalized line-based packet parser. * Generalized line-based packet parser.
* *
* @param state An initialized PSYC_State * @param state An initialized PSYC_State
* @param modifier A pointer to a character. In case of a variable, it will * @param modifier A pointer to a character. In case of a variable, it will
* be set to the modifier of that variable * be set to the modifier of that variable
* @param name A pointer to a PSYC_Array. It will point to the name of * @param name A pointer to a PSYC_Array. It will point to the name of
* 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
@ -214,11 +234,12 @@ inline size_t PSYC_getContentLength (PSYC_State* s)
* @see PSYC_State * @see PSYC_State
* @see PSYC_Array * @see PSYC_Array
*/ */
PSYC_ReturnCodes PSYC_parse(PSYC_State* state, uint8_t* modifier, PSYC_Array* name, PSYC_Array* value); int PSYC_parse(PSYC_State* state, uint8_t* modifier, PSYC_Array* name, PSYC_Array* value);
/** /**
* List value parser. * List value parser.
* @return see PSYC_ListReturnCodes. * @return one of PSYC_ReturnCodes
* @see PSYC_ListReturnCodes
*/ */
int PSYC_parseList(PSYC_ListState* state, PSYC_Array *name, PSYC_Array* value, PSYC_Array* elem); int PSYC_parseList(PSYC_ListState* state, PSYC_Array *name, PSYC_Array* value, PSYC_Array* elem);