I/O Stream

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

## Functions

int | (*raptor_iostream_init_func) ()
void | (*raptor_iostream_finish_func) ()
int | (*raptor_iostream_write_byte_func) ()
int | (*raptor_iostream_write_bytes_func) ()
int | (*raptor_iostream_write_end_func) ()
int | (*raptor_iostream_read_bytes_func) ()
int | (*raptor_iostream_read_eof_func) ()
raptor_iostream * | raptor_new_iostream_from_handler ()
raptor_iostream * | raptor_new_iostream_from_sink ()
raptor_iostream * | raptor_new_iostream_from_filename ()
raptor_iostream * | raptor_new_iostream_from_file_handle ()
raptor_iostream * | raptor_new_iostream_from_string ()
raptor_iostream * | raptor_new_iostream_to_sink ()
raptor_iostream * | raptor_new_iostream_to_filename ()
raptor_iostream * | raptor_new_iostream_to_file_handle ()
raptor_iostream * | raptor_new_iostream_to_string ()
void | raptor_free_iostream ()
int | raptor_iostream_hexadecimal_write ()
int | raptor_iostream_read_bytes ()
int | raptor_iostream_read_eof ()
unsigned long | raptor_iostream_tell ()
int | raptor_iostream_counted_string_write ()
int | raptor_iostream_decimal_write ()
int | raptor_iostream_string_write ()
int | raptor_iostream_write_byte ()
int | raptor_iostream_write_bytes ()
int | raptor_iostream_write_end ()
int | raptor_bnodeid_ntriples_write ()
int | raptor_string_escaped_write ()
int | raptor_term_escaped_write ()
int | raptor_uri_escaped_write ()
int | raptor_string_ntriples_write ()
int | raptor_string_python_write ()

## Types and Values

typedef | raptor_iostream
| raptor_iostream_handler
enum | raptor_escaped_write_bitflags

## 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.

## Functions

### raptor_iostream_init_func ()

    int
    (*raptor_iostream_init_func) (void *context);

Handler function for raptor_iostream initialising.

#### Parameters

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.

#### Parameters

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()`.

#### Parameters

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()`.

#### Parameters

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()`.

#### Parameters

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()`.

#### Parameters

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()`.

#### Parameters

context | stream context data |

#### Returns

non-0 if EOF

### raptor_new_iostream_from_handler ()

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

#### Returns

### raptor_new_iostream_from_sink ()

    raptor_iostream *
    raptor_new_iostream_from_sink (raptor_world *world);

#### Returns

### raptor_new_iostream_from_filename ()

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

#### Returns

### raptor_new_iostream_from_file_handle ()

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

#### Returns

### raptor_new_iostream_from_string ()

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

#### Returns

### raptor_new_iostream_to_sink ()

    raptor_iostream *
    raptor_new_iostream_to_sink (raptor_world *world);

#### Returns

### raptor_new_iostream_to_filename ()

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

#### Returns

### raptor_new_iostream_to_file_handle ()

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

#### Returns

### 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);

#### Returns

### raptor_free_iostream ()

    void
    raptor_free_iostream (raptor_iostream *iostr);

### raptor_iostream_hexadecimal_write ()

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

#### Returns

### raptor_iostream_read_bytes ()

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

#### Returns

### raptor_iostream_read_eof ()

    int
    raptor_iostream_read_eof (raptor_iostream *iostr);

#### Returns

### raptor_iostream_tell ()

    unsigned long
    raptor_iostream_tell (raptor_iostream *iostr);

#### Returns

### raptor_iostream_counted_string_write ()

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

#### Returns

### raptor_iostream_decimal_write ()

    int
    raptor_iostream_decimal_write (int integer,
                                   raptor_iostream *iostr);

#### Returns

### raptor_iostream_string_write ()

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

#### Returns

### raptor_iostream_write_byte ()

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

#### Returns

### raptor_iostream_write_bytes ()

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

#### Returns

### raptor_iostream_write_end ()

    int
    raptor_iostream_write_end (raptor_iostream *iostr);

#### Returns

### raptor_bnodeid_ntriples_write ()

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

#### Returns

### 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);

#### Returns

### raptor_term_escaped_write ()

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

#### Returns

### raptor_uri_escaped_write ()

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

#### Returns

### raptor_string_ntriples_write ()

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

#### Returns

### 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);

`raptor_string_python_write` is deprecated and should not be used in newly-written code.

#### Returns

## Types and Values

### raptor_iostream

    raptor_iostream* raptor_iostream;

Raptor I/O Stream class

### 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.

#### Members

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) |

### enum raptor_escaped_write_bitflags

Bit flags for `raptor_string_escaped_write()` and friends.

#### Members

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 |