LispBM
Functions
lbm_channel.c File Reference
#include <lbm_channel.h>
#include <string.h>
#include <lbm_defines.h>
Include dependency graph for lbm_channel.c:

Functions

bool lbm_channel_more (lbm_char_channel_t *chan)
 
int lbm_channel_peek (lbm_char_channel_t *chan, unsigned int n, char *res)
 
bool lbm_channel_read (lbm_char_channel_t *chan, char *res)
 
bool lbm_channel_drop (lbm_char_channel_t *chan, unsigned int n)
 
bool lbm_channel_comment (lbm_char_channel_t *chan)
 
void lbm_channel_set_comment (lbm_char_channel_t *chan, bool comment)
 
bool lbm_channel_is_empty (lbm_char_channel_t *chan)
 
bool lbm_channel_is_full (lbm_char_channel_t *chan)
 
int lbm_channel_write (lbm_char_channel_t *chan, char c)
 
void lbm_channel_writer_close (lbm_char_channel_t *chan)
 
void lbm_channel_reader_close (lbm_char_channel_t *chan)
 
bool lbm_channel_reader_is_closed (lbm_char_channel_t *chan)
 
unsigned int lbm_channel_row (lbm_char_channel_t *chan)
 
unsigned int lbm_channel_column (lbm_char_channel_t *chan)
 
bool lbm_channel_may_block (lbm_char_channel_t *chan)
 
bool buffered_may_block (lbm_char_channel_t *chan)
 
bool buffered_more (lbm_char_channel_t *chan)
 
void buffered_writer_close (lbm_char_channel_t *chan)
 
void buffered_reader_close (lbm_char_channel_t *chan)
 
bool buffered_reader_is_closed (lbm_char_channel_t *chan)
 
int buffered_peek (lbm_char_channel_t *chan, unsigned int n, char *res)
 
bool buffered_channel_is_empty (lbm_char_channel_t *chan)
 
bool buffered_channel_is_full (lbm_char_channel_t *chan)
 
bool buffered_read (lbm_char_channel_t *chan, char *res)
 
bool buffered_drop (lbm_char_channel_t *chan, unsigned int n)
 
int buffered_write (lbm_char_channel_t *chan, char c)
 
unsigned int buffered_row (lbm_char_channel_t *chan)
 
unsigned int buffered_column (lbm_char_channel_t *chan)
 
bool buffered_comment (lbm_char_channel_t *chan)
 
void buffered_set_comment (lbm_char_channel_t *chan, bool comment)
 
void lbm_create_buffered_char_channel (lbm_buffered_channel_state_t *st, lbm_char_channel_t *chan)
 
bool string_may_block (lbm_char_channel_t *chan)
 
bool string_more (lbm_char_channel_t *chan)
 
void string_writer_close (lbm_char_channel_t *chan)
 
void string_reader_close (lbm_char_channel_t *chan)
 
bool string_reader_is_closed (lbm_char_channel_t *chan)
 
int string_peek (lbm_char_channel_t *chan, unsigned int n, char *res)
 
bool string_channel_is_empty (lbm_char_channel_t *chan)
 
bool string_channel_is_full (lbm_char_channel_t *chan)
 
bool string_read (lbm_char_channel_t *chan, char *res)
 
bool string_drop (lbm_char_channel_t *chan, unsigned int n)
 
int string_write (lbm_char_channel_t *chan, char c)
 
unsigned int string_row (lbm_char_channel_t *chan)
 
unsigned int string_column (lbm_char_channel_t *chan)
 
bool string_comment (lbm_char_channel_t *chan)
 
void string_set_comment (lbm_char_channel_t *chan, bool comment)
 
void lbm_create_string_char_channel (lbm_string_channel_state_t *st, lbm_char_channel_t *chan, char *str)
 
void lbm_create_string_char_channel_size (lbm_string_channel_state_t *st, lbm_char_channel_t *chan, char *str, unsigned int size)
 
void lbm_char_channel_set_dependency (lbm_char_channel_t *chan, lbm_value dep)
 

Function Documentation

◆ buffered_channel_is_empty()

bool buffered_channel_is_empty ( lbm_char_channel_t chan)

◆ buffered_channel_is_full()

bool buffered_channel_is_full ( lbm_char_channel_t chan)

◆ buffered_column()

unsigned int buffered_column ( lbm_char_channel_t chan)

◆ buffered_comment()

bool buffered_comment ( lbm_char_channel_t chan)

◆ buffered_drop()

bool buffered_drop ( lbm_char_channel_t chan,
unsigned int  n 
)

◆ buffered_may_block()

bool buffered_may_block ( lbm_char_channel_t chan)

◆ buffered_more()

bool buffered_more ( lbm_char_channel_t chan)

◆ buffered_peek()

int buffered_peek ( lbm_char_channel_t chan,
unsigned int  n,
char *  res 
)

◆ buffered_read()

bool buffered_read ( lbm_char_channel_t chan,
char *  res 
)

◆ buffered_reader_close()

void buffered_reader_close ( lbm_char_channel_t chan)

◆ buffered_reader_is_closed()

bool buffered_reader_is_closed ( lbm_char_channel_t chan)

◆ buffered_row()

unsigned int buffered_row ( lbm_char_channel_t chan)

◆ buffered_set_comment()

void buffered_set_comment ( lbm_char_channel_t chan,
bool  comment 
)

◆ buffered_write()

int buffered_write ( lbm_char_channel_t chan,
char  c 
)

◆ buffered_writer_close()

void buffered_writer_close ( lbm_char_channel_t chan)

◆ lbm_channel_column()

unsigned int lbm_channel_column ( lbm_char_channel_t chan)

Obtain current column from a channel.

Parameters
chanThe channel to query.

◆ lbm_channel_comment()

bool lbm_channel_comment ( lbm_char_channel_t chan)

Comment mode. Check if a channel is currently in comment mode.

Parameters
chanThe channel.
Returns
true if the channel is in comment mode, false otherwise.

◆ lbm_channel_drop()

bool lbm_channel_drop ( lbm_char_channel_t chan,
unsigned int  n 
)

Drop n characters from a channel.

Parameters
chanThe channel to drop characters from.
nThe number of characters to drop.
Returns
true on successfully dropping n characters, false otherwise.

◆ lbm_channel_is_empty()

bool lbm_channel_is_empty ( lbm_char_channel_t chan)

Check if a channel is empty. Data cannot be read from an empty channel.

Parameters
chanChannel to query.
Returns
True if empty, false otherwise.

◆ lbm_channel_is_full()

bool lbm_channel_is_full ( lbm_char_channel_t chan)

Check if a channel is full. Data cannot be written into a full channel.

Parameters
chanChannel to query.
Returns
True if channel is full, false otherwise.

◆ lbm_channel_may_block()

bool lbm_channel_may_block ( lbm_char_channel_t chan)

query if a channel has a potentially blocking interface. Buffered channels do, string backed channels don't.

◆ lbm_channel_more()

bool lbm_channel_more ( lbm_char_channel_t chan)

Check if there are more characters comming on a character channel. This returns false if the sender has closed the send side of the channel.

Parameters
chanThe channel.
Returns
True if sender end is still open false if closed.

◆ lbm_channel_peek()

int lbm_channel_peek ( lbm_char_channel_t chan,
unsigned int  n,
char *  res 
)

Peek into a character channel.

Parameters
chanThe channel to peek into.
nThe position to peek at.
resPointer to a character that will hold the result.
Returns
  • CHANNEL_SUCCESS: successfully peeked.
  • CHANNEL_MORE: The data you try to peek at has not yet arrived into the channel.
  • CHANNEL_END: The sender side is closed and you are peeking outside of valid data.

◆ lbm_channel_read()

bool lbm_channel_read ( lbm_char_channel_t chan,
char *  res 
)

Read a character from the head of the channel.

Parameters
chanThe channel to read from.
resThe resulting character is stored here.
Returns
true on success, otherwise false.

◆ lbm_channel_reader_close()

void lbm_channel_reader_close ( lbm_char_channel_t chan)

Close a channel reader side.

Parameters
chanChannel to close the reader side of.

◆ lbm_channel_reader_is_closed()

bool lbm_channel_reader_is_closed ( lbm_char_channel_t chan)

Check if the reader side of channel is closed.

Parameters
chanChannel to query.
Returns
True if closed, false otherwise.

◆ lbm_channel_row()

unsigned int lbm_channel_row ( lbm_char_channel_t chan)

Obtain current row number from a channel.

Parameters
chanThe channel to query.
Returns
The current row as seen by the calls to "read".

◆ lbm_channel_set_comment()

void lbm_channel_set_comment ( lbm_char_channel_t chan,
bool  comment 
)

Enter into or exit from comment mode.

Parameters
chanChannel to change mode of.
commentTrue to enter into comment mode and false to exit.

◆ lbm_channel_write()

int lbm_channel_write ( lbm_char_channel_t chan,
char  c 
)

Write a character onto the end of a channel.

Parameters
chanChannel to write to.
cCharacter to place onto the channel.
Returns
  • CHANNEL_SUCCESS: Successfully wrote.
  • CHANNEL_READER_CLOSED: The reader end is closed, you should abort writing.
  • CHANNEL_FULL: The channel is full and cannot accept the character. Try again later.

◆ lbm_channel_writer_close()

void lbm_channel_writer_close ( lbm_char_channel_t chan)

Close the writer side of a channel. \ param chan The channel to close the writer side of.

◆ lbm_char_channel_set_dependency()

void lbm_char_channel_set_dependency ( lbm_char_channel_t chan,
lbm_value  dep 
)

Set the dependency field of a channel. Garbage collection will ensure that the dependency is alive for at least as long as the channel itself.

Parameters
chanpointer to channel to set dependency in.
depdependency to associate with the channel.

◆ lbm_create_buffered_char_channel()

void lbm_create_buffered_char_channel ( lbm_buffered_channel_state_t st,
lbm_char_channel_t chan 
)

Create a buffered channel that can be read from and written to.

Parameters
stPointer to lbm_buffered_channel_state_t.
chanPointer to lbm_char_channel_t.

◆ lbm_create_string_char_channel()

void lbm_create_string_char_channel ( lbm_string_channel_state_t st,
lbm_char_channel_t chan,
char *  str 
)

Create a channel from a string. This channel can be read from but not written to.

Parameters
stPointer to lbm_string_channel_state.
chanPointer to lbm_char_channel_t.
strThe string to base the channel contents upon.

◆ lbm_create_string_char_channel_size()

void lbm_create_string_char_channel_size ( lbm_string_channel_state_t st,
lbm_char_channel_t chan,
char *  str,
unsigned int  size 
)

◆ string_channel_is_empty()

bool string_channel_is_empty ( lbm_char_channel_t chan)

◆ string_channel_is_full()

bool string_channel_is_full ( lbm_char_channel_t chan)

◆ string_column()

unsigned int string_column ( lbm_char_channel_t chan)

◆ string_comment()

bool string_comment ( lbm_char_channel_t chan)

◆ string_drop()

bool string_drop ( lbm_char_channel_t chan,
unsigned int  n 
)

◆ string_may_block()

bool string_may_block ( lbm_char_channel_t chan)

◆ string_more()

bool string_more ( lbm_char_channel_t chan)

◆ string_peek()

int string_peek ( lbm_char_channel_t chan,
unsigned int  n,
char *  res 
)

◆ string_read()

bool string_read ( lbm_char_channel_t chan,
char *  res 
)

◆ string_reader_close()

void string_reader_close ( lbm_char_channel_t chan)

◆ string_reader_is_closed()

bool string_reader_is_closed ( lbm_char_channel_t chan)

◆ string_row()

unsigned int string_row ( lbm_char_channel_t chan)

◆ string_set_comment()

void string_set_comment ( lbm_char_channel_t chan,
bool  comment 
)

◆ string_write()

int string_write ( lbm_char_channel_t chan,
char  c 
)

◆ string_writer_close()

void string_writer_close ( lbm_char_channel_t chan)