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

79 lines
1.8 KiB
C
Raw Normal View History

2011-04-22 15:09:32 +00:00
#ifndef PSYC_RENDER_H
# define PSYC_RENDER_H
2011-04-25 21:14:22 +00:00
/**
* @file psyc/render.h
* @brief Interface for PSYC packet rendering.
*
* All rendering functions and the definitions they use are
* defined in this file.
*/
2011-04-22 09:50:13 +00:00
2011-04-25 21:14:22 +00:00
/**
* @defgroup rendering Rendering Functions
*
* This module contains all rendering functions.
* @{
*/
/**
* Return codes for PSYC_render.
*/
typedef enum
{
//PSYC_RENDER_ERROR_ROUTING = -2,
PSYC_RENDER_ERROR = -1,
PSYC_RENDER_SUCCESS = 0,
} PSYC_RenderRC;
/**
* Render a PSYC packet into a buffer.
*/
PSYC_RenderRC PSYC_render(PSYC_Packet *packet, char *buffer, size_t buflen);
/*
2011-04-22 15:09:32 +00:00
typedef enum
{
2011-04-22 18:22:20 +00:00
PSYC_RENDER_CHECK_LENGTH = 0,
PSYC_RENDER_NEED_LENGTH = 1,
PSYC_RENDER_NO_LENGTH = 2,
2011-04-22 15:09:32 +00:00
PSYC_RENDER_ROUTING = 3,
2011-04-20 20:22:55 +00:00
} PSYC_RenderFlag;
2011-04-25 21:14:22 +00:00
*/
2011-04-22 09:50:13 +00:00
2011-04-22 15:09:32 +00:00
/**
* Struct for keeping render state.
*/
2011-04-25 21:14:22 +00:00
/*
2011-04-22 15:09:32 +00:00
typedef struct
{
2011-04-20 20:22:55 +00:00
PSYC_RenderFlag flag; ///< flags for the renderer
PSYC_Part part; ///< part of the packet being rendered
2011-04-20 20:22:55 +00:00
size_t cursor; ///< current position in buffer
2011-04-22 09:50:13 +00:00
size_t spot; ///< space for rendered length between the headers
size_t contentLength; ///< length of the content part
2011-04-20 20:22:55 +00:00
size_t length; ///< how big is the buffer we allocated
2011-04-22 09:50:13 +00:00
char buffer[]; ///< OMG a C99 feature! variable size buffer!
2011-04-20 20:22:55 +00:00
} PSYC_RenderState;
2011-04-25 21:14:22 +00:00
*/
2011-04-22 15:09:32 +00:00
/**
* Initiates the state struct.
*
* @param state Pointer to the state struct that should be initiated.
*/
/*
2011-04-22 18:33:22 +00:00
inline void PSYC_initRenderState (PSYC_RenderState* state);
2011-04-22 15:09:32 +00:00
int PSYC_renderModifier(PSYC_RenderState* render,
2011-04-22 09:50:13 +00:00
const char* name, size_t nlength,
const char* value, size_t vlength,
2011-04-22 20:59:15 +00:00
PSYC_RenderFlag flags, char oper);
2011-04-18 14:54:56 +00:00
int PSYC_renderBody(PSYC_RenderState* render,
2011-04-22 09:50:13 +00:00
const char* method, size_t mlength,
const char* data, size_t dlength);
*/
2011-04-22 15:09:32 +00:00
#endif // PSYC_RENDER_H
2011-04-25 21:14:22 +00:00
/** @} */ // end of rendering group