1
0
Fork 0
mirror of git://git.psyc.eu/libpsyc synced 2024-08-15 03:19:02 +00:00

more PSYC_Packet fields; s/Var/Modifier/

This commit is contained in:
tg(x) 2011-04-22 23:16:50 +02:00
parent 29f6e6c432
commit f6448c8fe7
4 changed files with 22 additions and 7 deletions

View file

@ -79,18 +79,31 @@ typedef enum
PSYC_LIST_BINARY = 2,
} PSYC_ListType;
typedef enum {
PSYC_MODIFIER_CHECK_LENGTH = 0,
PSYC_MODIFIER_NEED_LENGTH = 1,
PSYC_MODIFIER_NO_LENGTH = 2,
PSYC_MODIFIER_ROUTING = 3,
} PSYC_ModifierType;
typedef enum {
PSYC_CONTENT_CHECK_LENGTH = 0,
PSYC_CONTENT_NEED_LENGTH = 1,
PSYC_CONTENT_NO_LENGTH = 2,
} PSYC_ContentType;
typedef struct
{
size_t length;
const char* ptr;
} PSYC_Array;
/* intermediate struct for a PSYC variable modification */
typedef struct {
char oper; // not call it 'operator' as C++ may not like that..?
PSYC_Array name;
PSYC_Array parameter;
PSYC_Array value;
PSYC_ModifierType type;
} PSYC_Modifier;
/* intermediate struct for a PSYC packet */
@ -99,6 +112,8 @@ typedef struct {
PSYC_Modifier **entity; // Header
PSYC_Array method;
PSYC_Array data;
PSYC_ContentType contentType;
size_t contentLength;
} PSYC_Packet;

View file

@ -39,7 +39,7 @@ typedef struct
*/
inline void PSYC_initRenderState (PSYC_RenderState* state);
int PSYC_renderVar(PSYC_RenderState* render,
int PSYC_renderModifier(PSYC_RenderState* render,
const char* name, size_t nlength,
const char* value, size_t vlength,
PSYC_RenderFlag flags, char oper);

View file

@ -154,7 +154,7 @@ inline PSYC_ParseRC PSYC_parseBinaryValue(PSYC_ParseState* state, PSYC_Array* va
* Parse simple or binary variable.
* @return PSYC_PARSE_ERROR or PSYC_PARSE_SUCCESS
*/
inline PSYC_ParseRC PSYC_parseVar(PSYC_ParseState* state, char* oper, PSYC_Array* name, PSYC_Array* value)
inline PSYC_ParseRC PSYC_parseModifier(PSYC_ParseState* state, char* oper, PSYC_Array* name, PSYC_Array* value)
{
*oper = *(state->buffer.ptr + state->cursor);
ADVANCE_CURSOR_OR_RETURN(PSYC_PARSE_INSUFFICIENT);
@ -248,7 +248,7 @@ PSYC_ParseRC PSYC_parse(PSYC_ParseState* state, char* oper, PSYC_Array* name, PS
// so just test if the first char is a glyph.
if (isGlyph(state->buffer.ptr[state->cursor])) // is the first char a glyph?
{ // it is a glyph, so a variable starts here
ret = PSYC_parseVar(state, oper, name, value);
ret = PSYC_parseModifier(state, oper, name, value);
return ret == PSYC_PARSE_SUCCESS ? PSYC_PARSE_ROUTING : ret;
}
else // not a glyph
@ -310,7 +310,7 @@ PSYC_ParseRC PSYC_parse(PSYC_ParseState* state, char* oper, PSYC_Array* name, PS
if (isGlyph(state->buffer.ptr[state->cursor]))
{
pos = state->cursor;
ret = PSYC_parseVar(state, oper, name, value);
ret = PSYC_parseModifier(state, oper, name, value);
state->contentParsed += state->cursor - pos;
return ret == PSYC_PARSE_SUCCESS ? PSYC_PARSE_ENTITY : ret;
}

View file

@ -6,7 +6,7 @@ inline void PSYC_initRenderState (PSYC_RenderState* state)
memset(state, 0, sizeof(PSYC_RenderState));
}
PSYC_RenderRC PSYC_renderVar(PSYC_RenderState* state,
PSYC_RenderRC PSYC_renderModifier(PSYC_RenderState* state,
const char* name, size_t nlength,
const char* value, size_t vlength,
const PSYC_RenderFlag flags, char oper)