ubjsc  0.6
Enterprise-grade C library for manipulating UBJSON
Typedefs | Functions
ubjs_writer.h File Reference

Bytestream writer and pretty-printer of ubjson primitives. More...

#include "ubjs_common.h"
#include "ubjs_library.h"
#include "ubjs_primitives.h"
Include dependency graph for ubjs_writer.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef struct ubjs_writer ubjs_writer
 Writer itself.
 
typedef struct ubjs_writer_builder ubjs_writer_builder
 Writer builder.
 
typedef void(* ubjs_writer_would_write_f) (void *userdata, uint8_t *data, unsigned int length)
 Callback when writer produced bytes out of a primitive. More...
 
typedef void(* ubjs_writer_would_print_f) (void *userdata, char *data, unsigned int length)
 Callback when writer produced pretty-printed version of a primitive. More...
 
typedef void(* ubjs_writer_debug_f) (void *userdata, unsigned int len, char *message)
 Callback to be executed just when writer issued a debug message. More...
 
typedef void(* ubjs_writer_free_f) (void *userdata)
 Callback when writer is about to be free-d. More...
 

Functions

UBJS_EXPORT ubjs_result ubjs_writer_builder_new (ubjs_library *lib, ubjs_writer_builder **pthis)
 Creates new writer builder. More...
 
UBJS_EXPORT ubjs_result ubjs_writer_builder_free (ubjs_writer_builder **pthis)
 Frees the writer builder. More...
 
UBJS_EXPORT ubjs_result ubjs_writer_builder_set_userdata (ubjs_writer_builder *this, void *userdata)
 Sets the userdata for builder. More...
 
UBJS_EXPORT ubjs_result ubjs_writer_builder_set_would_write_f (ubjs_writer_builder *this, ubjs_writer_would_write_f would_write_f)
 Sets the would-write callback for builder. More...
 
UBJS_EXPORT ubjs_result ubjs_writer_builder_set_would_print_f (ubjs_writer_builder *this, ubjs_writer_would_print_f would_print_f)
 Sets the would-print callback for builder. More...
 
UBJS_EXPORT ubjs_result ubjs_writer_builder_set_debug_f (ubjs_writer_builder *this, ubjs_writer_debug_f debug_f)
 Sets the debug callback for builder. More...
 
UBJS_EXPORT ubjs_result ubjs_writer_builder_set_free_f (ubjs_writer_builder *this, ubjs_writer_free_f free_f)
 Sets the userdata free callback for builder. More...
 
UBJS_EXPORT ubjs_result ubjs_writer_builder_build (ubjs_writer_builder *builder, ubjs_writer **pthis)
 Builds new writer. More...
 
UBJS_EXPORT ubjs_result ubjs_writer_free (ubjs_writer **pthis)
 Frees the writer. More...
 
UBJS_EXPORT ubjs_result ubjs_writer_get_userdata (ubjs_writer *this, void **puserdata)
 Gets userdata from the writer. More...
 
UBJS_EXPORT ubjs_result ubjs_writer_write (ubjs_writer *this, ubjs_prmtv *object)
 Writes a bytestream out of a primitive. More...
 
UBJS_EXPORT ubjs_result ubjs_writer_print (ubjs_writer *this, ubjs_prmtv *object)
 Pretty-prints out of a primitive. More...
 

Detailed Description

Bytestream writer and pretty-printer of ubjson primitives.

This file describes ubjs_writer structure, that writes ubjson primitives to bytestreams and also pretty-prints'em.

Since
0.2

Typedef Documentation

◆ ubjs_writer_debug_f

typedef void(* ubjs_writer_debug_f) (void *userdata, unsigned int len, char *message)

Callback to be executed just when writer issued a debug message.

Parameters
userdataUserdata..
lenLength.
messageMessage.
Since
0.6

◆ ubjs_writer_free_f

typedef void(* ubjs_writer_free_f) (void *userdata)

Callback when writer is about to be free-d.

Here you can cleanup your userdata.

Parameters
userdataUserdata.
Since
0.6

◆ ubjs_writer_would_print_f

typedef void(* ubjs_writer_would_print_f) (void *userdata, char *data, unsigned int length)

Callback when writer produced pretty-printed version of a primitive.

Parameters
userdataUserdata.
dataOutgoing printf()-ready data.
lenLength of the data.
Since
0.6

◆ ubjs_writer_would_write_f

typedef void(* ubjs_writer_would_write_f) (void *userdata, uint8_t *data, unsigned int length)

Callback when writer produced bytes out of a primitive.

Parameters
userdataUserdata.
dataOutgoing data.
lenLength of the data.
Since
0.6

Function Documentation

◆ ubjs_writer_builder_build()

UBJS_EXPORT ubjs_result ubjs_writer_builder_build ( ubjs_writer_builder builder,
ubjs_writer **  pthis 
)

Builds new writer.

Parameters
builderBuilder.
pthisPointer to where put newly created writer.
Returns
UR_ERROR if any of lib/pthis/context/context->free is 0, else UR_OK.
Since
0.4

References UR_ERROR, and UR_OK.

◆ ubjs_writer_builder_free()

UBJS_EXPORT ubjs_result ubjs_writer_builder_free ( ubjs_writer_builder **  pthis)

Frees the writer builder.

Parameters
pthisPointer to where lies builder.
Returns
UR_OK if succedeed, otherwise UR_ERROR.
Since
0.6

References UR_ERROR, and UR_OK.

◆ ubjs_writer_builder_new()

UBJS_EXPORT ubjs_result ubjs_writer_builder_new ( ubjs_library lib,
ubjs_writer_builder **  pthis 
)

Creates new writer builder.

Parameters
libLibrary.
pthisPointer to where but new builder.
Returns
UR_OK if succedeed, otherwise UR_ERROR.
Since
0.6

References UR_ERROR, and UR_OK.

◆ ubjs_writer_builder_set_debug_f()

UBJS_EXPORT ubjs_result ubjs_writer_builder_set_debug_f ( ubjs_writer_builder this,
ubjs_writer_debug_f  debug_f 
)

Sets the debug callback for builder.

Parameters
thisBuilder.
debug_fCallback.
Returns
UR_OK if succedeed, otherwise UR_ERROR.
Since
0.6

References UR_ERROR, and UR_OK.

◆ ubjs_writer_builder_set_free_f()

UBJS_EXPORT ubjs_result ubjs_writer_builder_set_free_f ( ubjs_writer_builder this,
ubjs_writer_free_f  free_f 
)

Sets the userdata free callback for builder.

Parameters
thisBuilder.
free_fcallback.
Returns
UR_OK if succedeed, otherwise UR_ERROR.
Since
0.6

References UR_ERROR, and UR_OK.

◆ ubjs_writer_builder_set_userdata()

UBJS_EXPORT ubjs_result ubjs_writer_builder_set_userdata ( ubjs_writer_builder this,
void *  userdata 
)

Sets the userdata for builder.

Parameters
thisBuilder.
userdataUserdata.
Returns
UR_OK if succedeed, otherwise UR_ERROR.
Since
0.6

References UR_ERROR, and UR_OK.

◆ ubjs_writer_builder_set_would_print_f()

UBJS_EXPORT ubjs_result ubjs_writer_builder_set_would_print_f ( ubjs_writer_builder this,
ubjs_writer_would_print_f  would_print_f 
)

Sets the would-print callback for builder.

Parameters
thisBuilder.
would_print_fCallback.
Returns
UR_OK if succedeed, otherwise UR_ERROR.
Since
0.6

References UR_ERROR, and UR_OK.

◆ ubjs_writer_builder_set_would_write_f()

UBJS_EXPORT ubjs_result ubjs_writer_builder_set_would_write_f ( ubjs_writer_builder this,
ubjs_writer_would_write_f  would_write_f 
)

Sets the would-write callback for builder.

Parameters
thisBuilder.
would_write_fCallback.
Returns
UR_OK if succedeed, otherwise UR_ERROR.
Since
0.6

References UR_ERROR, and UR_OK.

◆ ubjs_writer_free()

UBJS_EXPORT ubjs_result ubjs_writer_free ( ubjs_writer **  pthis)

Frees the writer.

The call to context->free will occur here. After this, *pthis will be equal to 0.

Parameters
pthisPointer to the writer.
Returns
UR_ERROR if pthis is 0, else UR_OK.
Since
0.6

References UR_ERROR, and UR_OK.

◆ ubjs_writer_get_userdata()

UBJS_EXPORT ubjs_result ubjs_writer_get_userdata ( ubjs_writer this,
void **  puserdata 
)

Gets userdata from the writer.

Parameters
thisWriter.
puserdataPointer to where put userdata.
Returns
UR_ERROR if any of this/puserdata is 0, else UR_OK.
Since
0.6

References UR_ERROR, and UR_OK.

◆ ubjs_writer_print()

UBJS_EXPORT ubjs_result ubjs_writer_print ( ubjs_writer this,
ubjs_prmtv object 
)

Pretty-prints out of a primitive.

This produces the callback to context->would_print with fresh pretty-printout.

Parameters
thisWriter.
objectPrimitive.
Returns
UR_ERROR if any of this/object is 0, else UR_OK.
Since
0.6

References UR_ERROR, and UR_OK.

◆ ubjs_writer_write()

UBJS_EXPORT ubjs_result ubjs_writer_write ( ubjs_writer this,
ubjs_prmtv object 
)

Writes a bytestream out of a primitive.

This produces the callback to context->would_write with fresh bytestream.

Parameters
thisWriter.
objectPrimitive.
Returns
UR_ERROR if any of this/object is 0, else UR_OK.
Since
0.6

References UR_ERROR, and UR_OK.