I/O Stream

I/O Stream — Providing streaming I/O writing to files, strings or user code.

Synopsis

typedef             raptor_iostream;
int                 (*raptor_iostream_init_func)        (void *context);
void                (*raptor_iostream_finish_func)      (void *context);
int                 (*raptor_iostream_write_byte_func)  (void *context,
                                                         const int byte);
int                 (*raptor_iostream_write_bytes_func) (void *context,
                                                         const void *ptr,
                                                         size_t size,
                                                         size_t nmemb);
int                 (*raptor_iostream_write_end_func)   (void *context);
int                 (*raptor_iostream_read_bytes_func)  (void *context,
                                                         void *ptr,
                                                         size_t size,
                                                         size_t nmemb);
int                 (*raptor_iostream_read_eof_func)    (void *context);
                    raptor_iostream_handler;
raptor_iostream *   raptor_new_iostream_from_handler    (raptor_world *world,
                                                         void *user_data,
                                                         const raptor_iostream_handler * const handler);
raptor_iostream *   raptor_new_iostream_from_sink       (raptor_world *world);
raptor_iostream *   raptor_new_iostream_from_filename   (raptor_world *world,
                                                         const char *filename);
raptor_iostream *   raptor_new_iostream_from_file_handle
                                                        (raptor_world *world,
                                                         FILE *handle);
raptor_iostream *   raptor_new_iostream_from_string     (raptor_world *world,
                                                         void *string,
                                                         size_t length);
raptor_iostream *   raptor_new_iostream_to_sink         (raptor_world *world);
raptor_iostream *   raptor_new_iostream_to_filename     (raptor_world *world,
                                                         const char *filename);
raptor_iostream *   raptor_new_iostream_to_file_handle  (raptor_world *world,
                                                         FILE *handle);
raptor_iostream *   raptor_new_iostream_to_string       (raptor_world *world,
                                                         void **string_p,
                                                         size_t *length_p,
                                                         raptor_data_malloc_handler const malloc_handler);
void                raptor_free_iostream                (raptor_iostream *iostr);
int                 raptor_iostream_hexadecimal_write   (unsigned int integer,
                                                         int width,
                                                         raptor_iostream *iostr);
int                 raptor_iostream_read_bytes          (void *ptr,
                                                         size_t size,
                                                         size_t nmemb,
                                                         raptor_iostream *iostr);
int                 raptor_iostream_read_eof            (raptor_iostream *iostr);
unsigned long       raptor_iostream_tell                (raptor_iostream *iostr);
int                 raptor_iostream_counted_string_write
                                                        (const void *string,
                                                         size_t len,
                                                         raptor_iostream *iostr);
int                 raptor_iostream_decimal_write       (int integer,
                                                         raptor_iostream *iostr);
int                 raptor_iostream_string_write        (const void *string,
                                                         raptor_iostream *iostr);
int                 raptor_iostream_write_byte          (const int byte,
                                                         raptor_iostream *iostr);
int                 raptor_iostream_write_bytes         (const void *ptr,
                                                         size_t size,
                                                         size_t nmemb,
                                                         raptor_iostream *iostr);
int                 raptor_iostream_write_end           (raptor_iostream *iostr);
int                 raptor_bnodeid_ntriples_write       (const unsigned char *bnodeid,
                                                         size_t len,
                                                         raptor_iostream *iostr);
enum                raptor_escaped_write_bitflags;
int                 raptor_string_escaped_write         (const unsigned char *string,
                                                         size_t len,
                                                         const char delim,
                                                         unsigned int flags,
                                                         raptor_iostream *iostr);
int                 raptor_term_escaped_write           (const raptor_term *term,
                                                         unsigned int flags,
                                                         raptor_iostream *iostr);
int                 raptor_uri_escaped_write            (raptor_uri *uri,
                                                         raptor_uri *base_uri,
                                                         unsigned int flags,
                                                         raptor_iostream *iostr);
int                 raptor_string_ntriples_write        (const unsigned char *string,
                                                         size_t len,
                                                         const char delim,
                                                         raptor_iostream *iostr);
int                 raptor_string_python_write          (const unsigned char *string,
                                                         size_t len,
                                                         const char delim,
                                                         unsigned int mode,
                                                         raptor_iostream *iostr);

Description

An class providing an I/O writer abstraction that allows generating output that can be stored or passed on to system files, strings allocated in memory (usually via raptor_stringbuffer), system file handles (FILE*) or to a user function.

Details

raptor_iostream

raptor_iostream* raptor_iostream;

Raptor I/O Stream class


raptor_iostream_init_func ()

int                 (*raptor_iostream_init_func)        (void *context);

Handler function for raptor_iostream initialising.

context :

stream context data

Returns :

non-0 on failure.

raptor_iostream_finish_func ()

void                (*raptor_iostream_finish_func)      (void *context);

Handler function for raptor_iostream terminating.

context :

stream context data

raptor_iostream_write_byte_func ()

int                 (*raptor_iostream_write_byte_func)  (void *context,
                                                         const int byte);

Handler function for implementing raptor_iostream_write_byte().

context :

stream context data

byte :

byte to write

Returns :

non-0 on failure.

raptor_iostream_write_bytes_func ()

int                 (*raptor_iostream_write_bytes_func) (void *context,
                                                         const void *ptr,
                                                         size_t size,
                                                         size_t nmemb);

Handler function for implementing raptor_iostream_write_bytes().

context :

stream context data

ptr :

pointer to bytes to write

size :

size of item

nmemb :

number of items

Returns :

non-0 on failure.

raptor_iostream_write_end_func ()

int                 (*raptor_iostream_write_end_func)   (void *context);

Handler function for implementing raptor_iostream_write_end().

context :

stream context data

Returns :

non-0 on failure.

raptor_iostream_read_bytes_func ()

int                 (*raptor_iostream_read_bytes_func)  (void *context,
                                                         void *ptr,
                                                         size_t size,
                                                         size_t nmemb);

Handler function for implementing raptor_iostream_read_bytes().

context :

stream context data

ptr :

pointer to buffer to read into

size :

size of buffer

nmemb :

number of items

Returns :

number of items read, 0 or < size on EOF, <0 on failure

raptor_iostream_read_eof_func ()

int                 (*raptor_iostream_read_eof_func)    (void *context);

Handler function for implementing raptor_iostream_read_eof().

context :

stream context data

Returns :

non-0 if EOF

raptor_iostream_handler

typedef struct {
  int version;

  /* V1 functions */
  raptor_iostream_init_func         init;
  raptor_iostream_finish_func       finish;
  raptor_iostream_write_byte_func   write_byte;
  raptor_iostream_write_bytes_func  write_bytes;
  raptor_iostream_write_end_func    write_end;

  /* V2 functions */
  raptor_iostream_read_bytes_func   read_bytes;
  raptor_iostream_read_eof_func     read_eof;
} raptor_iostream_handler;

I/O stream implementation handler structure.

int version;

interface version. Presently 1 or 2.

raptor_iostream_init_func init;

initialisation handler - optional, called at most once (V1)

raptor_iostream_finish_func finish;

finishing handler - optional, called at most once (V1)

raptor_iostream_write_byte_func write_byte;

write byte handler - required (for writing) (V1)

raptor_iostream_write_bytes_func write_bytes;

write bytes handler - required (for writing) (V1)

raptor_iostream_write_end_func write_end;

write end handler - optional (for writing), called at most once (V1)

raptor_iostream_read_bytes_func read_bytes;

read bytes handler - required (for reading) (V2)

raptor_iostream_read_eof_func read_eof;

read EOF handler - required (for reading) (V2)

raptor_new_iostream_from_handler ()

raptor_iostream *   raptor_new_iostream_from_handler    (raptor_world *world,
                                                         void *user_data,
                                                         const raptor_iostream_handler * const handler);

Create a new iostream over a user-defined handler

world :

raptor_world object

user_data :

pointer to context information to pass in to calls

handler :

pointer to handler methods

Returns :

new raptor_iostream object or NULL on failure

raptor_new_iostream_from_sink ()

raptor_iostream *   raptor_new_iostream_from_sink       (raptor_world *world);

Create a new read iostream from a sink, returning no data.

Provides an I/O source that returns end of input immediately on reads, and throw away all writes. Same as raptor_new_iostream_to_sink()

world :

raptor world

Returns :

new raptor_iostream object or NULL on failure

raptor_new_iostream_from_filename ()

raptor_iostream *   raptor_new_iostream_from_filename   (raptor_world *world,
                                                         const char *filename);

Constructor - create a new iostream reading from a filename.

world :

raptor world

filename :

Input filename to open and read from

Returns :

new raptor_iostream object or NULL on failure

raptor_new_iostream_from_file_handle ()

raptor_iostream *   raptor_new_iostream_from_file_handle
                                                        (raptor_world *world,
                                                         FILE *handle);

Constructor - create a new iostream reading from a file_handle.

The handle must already be open for reading. NOTE: This does not fclose the handle when it is finished.

world :

raptor world

handle :

Input file_handle to open and read from

Returns :

new raptor_iostream object or NULL on failure

raptor_new_iostream_from_string ()

raptor_iostream *   raptor_new_iostream_from_string     (raptor_world *world,
                                                         void *string,
                                                         size_t length);

Constructor - create a new iostream reading from a string.

world :

raptor world

string :

pointer to string

length :

length of string

Returns :

new raptor_iostream object or NULL on failure

raptor_new_iostream_to_sink ()

raptor_iostream *   raptor_new_iostream_to_sink         (raptor_world *world);

Create a new write iostream to a sink, throwing away all data.

Provides an that throw away all writes and returns end of input immediately on reads. Same as raptor_new_iostream_from_sink()

world :

raptor_world object

Returns :

new raptor_iostream object or NULL on failure

raptor_new_iostream_to_filename ()

raptor_iostream *   raptor_new_iostream_to_filename     (raptor_world *world,
                                                         const char *filename);

Constructor - create a new iostream writing to a filename.

world :

raptor world

filename :

Output filename to open and write to

Returns :

new raptor_iostream object or NULL on failure

raptor_new_iostream_to_file_handle ()

raptor_iostream *   raptor_new_iostream_to_file_handle  (raptor_world *world,
                                                         FILE *handle);

Constructor - create a new iostream writing to a FILE*.

The handle must already be open for writing. NOTE: This does not fclose the handle when it is finished.

world :

raptor world

handle :

FILE* handle to write to

Returns :

new raptor_iostream object or NULL on failure

raptor_new_iostream_to_string ()

raptor_iostream *   raptor_new_iostream_to_string       (raptor_world *world,
                                                         void **string_p,
                                                         size_t *length_p,
                                                         raptor_data_malloc_handler const malloc_handler);

Constructor - create a new iostream writing to a string.

If malloc_handler is null, raptor will allocate it using it's own memory allocator. *string_p is set to NULL on failure (and *length_p to 0 if length_p is not NULL).

world :

raptor world

string_p :

pointer to location to hold string

length_p :

pointer to location to hold length of string (or NULL)

malloc_handler :

pointer to malloc() to use to make string (or NULL)

Returns :

new raptor_iostream object or NULL on failure

raptor_free_iostream ()

void                raptor_free_iostream                (raptor_iostream *iostr);

Destructor - destroy an iostream.

iostr :

iostream object

raptor_iostream_hexadecimal_write ()

int                 raptor_iostream_hexadecimal_write   (unsigned int integer,
                                                         int width,
                                                         raptor_iostream *iostr);

Write an integer in hexadecimal to the iostream.

Always 0-fills the entire field and writes in uppercase A-F

integer :

unsigned integer to format as hexadecimal

width :

field width

iostr :

raptor iostream

Returns :

non-0 on failure

raptor_iostream_read_bytes ()

int                 raptor_iostream_read_bytes          (void *ptr,
                                                         size_t size,
                                                         size_t nmemb,
                                                         raptor_iostream *iostr);

Read bytes to the iostream.

ptr :

start of buffer to read objects into

size :

size of object

nmemb :

number of objects to read

iostr :

raptor iostream

Returns :

number of objects read, 0 or less than nmemb on EOF, <0 on failure

raptor_iostream_read_eof ()

int                 raptor_iostream_read_eof            (raptor_iostream *iostr);

Check if an read iostream has ended

iostr :

raptor read iostream

Returns :

non-0 if EOF (or not a read iostream)

raptor_iostream_tell ()

unsigned long       raptor_iostream_tell                (raptor_iostream *iostr);

Get the offset in the iostream.

iostr :

raptor iostream

Returns :

offset in iostream

raptor_iostream_counted_string_write ()

int                 raptor_iostream_counted_string_write
                                                        (const void *string,
                                                         size_t len,
                                                         raptor_iostream *iostr);

Write a counted string to the iostream.

string :

string

len :

string length

iostr :

raptor iostream

Returns :

non-0 on failure

raptor_iostream_decimal_write ()

int                 raptor_iostream_decimal_write       (int integer,
                                                         raptor_iostream *iostr);

Write an integer in decimal to the iostream.

integer :

integer to format as decimal

iostr :

raptor iostream

Returns :

non-0 on failure

raptor_iostream_string_write ()

int                 raptor_iostream_string_write        (const void *string,
                                                         raptor_iostream *iostr);

Write a NULL-terminated string to the iostream.

string :

string

iostr :

raptor iostream

Returns :

non-0 on failure

raptor_iostream_write_byte ()

int                 raptor_iostream_write_byte          (const int byte,
                                                         raptor_iostream *iostr);

Write a byte to the iostream.

byte :

byte to write

iostr :

raptor iostream

Returns :

non-0 on failure

raptor_iostream_write_bytes ()

int                 raptor_iostream_write_bytes         (const void *ptr,
                                                         size_t size,
                                                         size_t nmemb,
                                                         raptor_iostream *iostr);

Write bytes to the iostream.

ptr :

start of objects to write

size :

size of object

nmemb :

number of objects

iostr :

raptor iostream

Returns :

number of objects actually written, which may be less than nmemb. <0 on failure

raptor_iostream_write_end ()

int                 raptor_iostream_write_end           (raptor_iostream *iostr);

End writing to the iostream.

iostr :

raptor iostream

Returns :

non-0 on failure

raptor_bnodeid_ntriples_write ()

int                 raptor_bnodeid_ntriples_write       (const unsigned char *bnodeid,
                                                         size_t len,
                                                         raptor_iostream *iostr);

Write a blank node ID in a form legal for N-Triples with _: prefix

bnodeid :

bnode ID to write

len :

length of bnode ID

iostr :

raptor_iostream to write to

Returns :

non-0 on failure

enum raptor_escaped_write_bitflags

typedef enum {
  RAPTOR_ESCAPED_WRITE_BITFLAG_BS_ESCAPES_BF      = 1,
  RAPTOR_ESCAPED_WRITE_BITFLAG_BS_ESCAPES_TNRU    = 2,
  RAPTOR_ESCAPED_WRITE_BITFLAG_UTF8               = 4,
  RAPTOR_ESCAPED_WRITE_BITFLAG_SPARQL_URI_ESCAPES = 8,

  /* N-Triples - favour writing \u, \U over UTF8 */
  RAPTOR_ESCAPED_WRITE_NTRIPLES_LITERAL = RAPTOR_ESCAPED_WRITE_BITFLAG_BS_ESCAPES_TNRU | RAPTOR_ESCAPED_WRITE_BITFLAG_BS_ESCAPES_BF,
  RAPTOR_ESCAPED_WRITE_NTRIPLES_URI     = RAPTOR_ESCAPED_WRITE_BITFLAG_SPARQL_URI_ESCAPES,

  /* SPARQL literal: allows raw UTF8 for printable literals */
  RAPTOR_ESCAPED_WRITE_SPARQL_LITERAL = RAPTOR_ESCAPED_WRITE_BITFLAG_UTF8,

  /* SPARQL long literal: no BS-escapes allowed */
  RAPTOR_ESCAPED_WRITE_SPARQL_LONG_LITERAL = RAPTOR_ESCAPED_WRITE_BITFLAG_UTF8,

  /* SPARQL uri: have to escape certain characters */
  RAPTOR_ESCAPED_WRITE_SPARQL_URI     = RAPTOR_ESCAPED_WRITE_BITFLAG_UTF8 | RAPTOR_ESCAPED_WRITE_BITFLAG_SPARQL_URI_ESCAPES,

  /* Turtle (2013) escapes are like SPARQL */
  RAPTOR_ESCAPED_WRITE_TURTLE_URI     = RAPTOR_ESCAPED_WRITE_SPARQL_URI,
  RAPTOR_ESCAPED_WRITE_TURTLE_LITERAL = RAPTOR_ESCAPED_WRITE_SPARQL_LITERAL,
  RAPTOR_ESCAPED_WRITE_TURTLE_LONG_LITERAL = RAPTOR_ESCAPED_WRITE_SPARQL_LONG_LITERAL,

  /* JSON literals: \b \f \t \r \n and \u \U */
  RAPTOR_ESCAPED_WRITE_JSON_LITERAL = RAPTOR_ESCAPED_WRITE_BITFLAG_BS_ESCAPES_TNRU | RAPTOR_ESCAPED_WRITE_BITFLAG_BS_ESCAPES_BF
} raptor_escaped_write_bitflags;

Bit flags for raptor_string_escaped_write() and friends.

RAPTOR_ESCAPED_WRITE_BITFLAG_BS_ESCAPES_BF

Allow \b \f,

RAPTOR_ESCAPED_WRITE_BITFLAG_BS_ESCAPES_TNRU

ALlow \t \n \r \u

RAPTOR_ESCAPED_WRITE_BITFLAG_UTF8

Allow UTF-8 for printable U *

RAPTOR_ESCAPED_WRITE_BITFLAG_SPARQL_URI_ESCAPES

Must escape x00-x20<>\"{}|^` in URIs

RAPTOR_ESCAPED_WRITE_NTRIPLES_LITERAL

N-Triples literal

RAPTOR_ESCAPED_WRITE_NTRIPLES_URI

N-Triples URI

RAPTOR_ESCAPED_WRITE_SPARQL_LITERAL

SPARQL literal: allows raw UTF8 for printable literals

RAPTOR_ESCAPED_WRITE_SPARQL_LONG_LITERAL

SPARQL long literal: no BS-escapes allowed

RAPTOR_ESCAPED_WRITE_SPARQL_URI

SPARQL uri: have to escape certain characters

RAPTOR_ESCAPED_WRITE_TURTLE_URI

Turtle 2013 URIs (like SPARQL)

RAPTOR_ESCAPED_WRITE_TURTLE_LITERAL

Turtle 2013 literals (like SPARQL)

RAPTOR_ESCAPED_WRITE_TURTLE_LONG_LITERAL

Turtle 2013 long literals (like SPARQL)

RAPTOR_ESCAPED_WRITE_JSON_LITERAL

JSON literals: \b \f \t \r \n and \u \U

raptor_string_escaped_write ()

int                 raptor_string_escaped_write         (const unsigned char *string,
                                                         size_t len,
                                                         const char delim,
                                                         unsigned int flags,
                                                         raptor_iostream *iostr);

Write a UTF-8 string formatted using different escapes to a raptor_iostream

Supports writing escapes in the Python, N-Triples, Turtle, JSON, SPARQL styles to an iostream.

string :

UTF-8 string to write

len :

length of UTF-8 string

delim :

Terminating delimiter character for string (such as " or >) or \0 for no escaping.

flags :

bit flags - see raptor_escaped_write_bitflags

iostr :

raptor_iostream to write to

Returns :

non-0 on failure such as bad UTF-8 encoding.

raptor_term_escaped_write ()

int                 raptor_term_escaped_write           (const raptor_term *term,
                                                         unsigned int flags,
                                                         raptor_iostream *iostr);

Write a raptor_term formatted with escapes to a raptor_iostream

term :

term to write

flags :

bit flags - see raptor_escaped_write_bitflags

iostr :

raptor iostream

Returns :

non-0 on failure

raptor_uri_escaped_write ()

int                 raptor_uri_escaped_write            (raptor_uri *uri,
                                                         raptor_uri *base_uri,
                                                         unsigned int flags,
                                                         raptor_iostream *iostr);

Write a raptor_uri formatted with escapes to a raptor_iostream

uri :

uri to write

base_uri :

base uri to write relative to (or NULL)

flags :

bit flags - see raptor_escaped_write_bitflags

iostr :

raptor iostream

Returns :

non-0 on failure

raptor_string_ntriples_write ()

int                 raptor_string_ntriples_write        (const unsigned char *string,
                                                         size_t len,
                                                         const char delim,
                                                         raptor_iostream *iostr);

Write an UTF-8 string using N-Triples escapes to an iostream.

string :

UTF-8 string to write

len :

length of UTF-8 string

delim :

Terminating delimiter character for string (such as " or >) or \0 for no escaping.

iostr :

raptor_iostream to write to

Returns :

non-0 on failure such as bad UTF-8 encoding.

raptor_string_python_write ()

int                 raptor_string_python_write          (const unsigned char *string,
                                                         size_t len,
                                                         const char delim,
                                                         unsigned int mode,
                                                         raptor_iostream *iostr);

Write a UTF-8 string using Python-style escapes (N-Triples, Turtle, JSON) to a raptor_iostream

Deprecated: use raptor_string_escaped_write() where the features requested are bits that can be individually chosen.

string :

UTF-8 string to write

len :

length of UTF-8 string

delim :

Terminating delimiter character for string (such as " or >) or \0 for no escaping.

mode :

mode 0=N-Triples mode, 1=Turtle (allow raw UTF-8), 2=Turtle long string (allow raw UTF-8), 3=JSON

iostr :

raptor_iostream to write to

Returns :

non-0 on failure such as bad UTF-8 encoding.