All pastes #739567 Raw Edit

Something

public text v1 · immutable
·published 2007-10-17 08:37 UTC
rendered paste body
#ifndef BIRO_H
#define BIRO_H

typedef struct _biro biro_t;

typedef struct _biro_message biro_message_t;

typedef enum _biro_status {
    BIRO_STATUS_SUCCESS = 0,
    BIRO_STATUS_NO_MEMORY,
} biro_status_t;

/**
 *  Message handling
 **/

typedef enum _biro_message_type {
    BIRO_MESSAGE_TYPE_INVALID,
    BIRO_MESSAGE_TYPE_METHOD_CALL,
    BIRO_MESSAGE_TYPE_METHOD_RETURN,
    BIRO_MESSAGE_TYPE_ERROR,
    BIRO_MESSAGE_TYPE_SIGNAL,
} biro_message_type_t;

biro_message_t *biro_message_create (biro_message_type_t type);
biro_message_t *biro_message_create_reply (biro_message_type_t type, biro_message_t *request);
void biro_message_reference (biro_message_t *message);
void biro_message_release (biro_message_t *message);
biro_status_t biro_message_status (biro_message_t *message);

/**
 *  Message context
 **/

biro_t *biro_create (biro_message_t *message);
void biro_reference (biro_t *br);
void biro_release (biro_t *br);
biro_status_t biro_status (biro_t *br);

void biro_append_byte (biro_t *br, char value);
void biro_append_boolean (biro_t *br, int value);
void biro_append_int16 (biro_t *br, short value);
void biro_append_uint16 (biro_t *br, unsigned short value);
void biro_append_int32 (biro_t *br, int value);
void biro_append_uint32 (biro_t *br, unsigned int value);
void biro_append_int64 (biro_t *br, long value);
void biro_append_uint64 (biro_t *br, unsigned long value);
void biro_append_float (biro_t *br, float value);
void biro_append_double (biro_t *br, double value);
void biro_append_string (biro_t *br, const char *utf8);
void biro_append_object_path (biro_t *br, const char *utf8);
void biro_append_signature (biro_t *br, const char *ascii);

void biro_append_reference (biro_t *br, biro_message_t *content);

void biro_push_array (biro_t *br);
void biro_push_dict (biro_t *br);
void biro_push_struct (biro_t *br);
void biro_push_variant (biro_t *br);
void biro_pop (biro_t *br);

void biro_save (biro_t *br);
void biro_restore (biro_t *br);

#endif /* BIRO_H */