Remove useless code, add documentation
This commit is contained in:
parent
7c47ba78c0
commit
8de91295c9
63
buffer.c
63
buffer.c
|
@ -1,14 +1,16 @@
|
||||||
/*
|
/*
|
||||||
* File Name: buffer.c
|
* File Name: buffer.c
|
||||||
* Compiler: GCC 6.2.0
|
* Compiler: GCC 6.3.0
|
||||||
* Author: Victor Fernandes, 040772243
|
* Author: Victor Fernandes, 040772243
|
||||||
* Course: CST8152 - Compilers, Lab Section: 011
|
* Course: CST8152 - Compilers, Lab Section: 011
|
||||||
* Date: February 1, 2017
|
* Date: February 1, 2017
|
||||||
* Professor: Svillen Ranev
|
* Professor: Svillen Ranev
|
||||||
* A character buffer utility with three modes of self-incrementation
|
* A character buffer utility with three modes of self-incrementation
|
||||||
through dynamic memory allocation, and ability to set a mark flag.
|
through dynamic memory allocation, and ability to set a mark flag.
|
||||||
* Function list:
|
* Function list: b_create, b_addc, b_reset, b_free, b_isfull,
|
||||||
* TODO: Function list and finish algorithm descriptions
|
* b_size, b_capacity, b_setmark, b_mark, b_mode, b_incfactor,
|
||||||
|
* b_load, b_isempty, b_eob, b_getc, b_print, b_pack, b_rflag,
|
||||||
|
b_retract, b_retract_to_mark, b_getcoffset, b_cbhead
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
@ -83,7 +85,7 @@ Buffer* b_create(short init_capacity, char inc_factor, char o_mode) {
|
||||||
* Called functions: N/A
|
* Called functions: N/A
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return values: -1, 0, 1
|
* Return values: -1 (R_FAIL1), 0 (FALSE), 1 (TRUE)
|
||||||
*/
|
*/
|
||||||
int b_isfull(Buffer* const pBD) {
|
int b_isfull(Buffer* const pBD) {
|
||||||
if (!pBD) { return R_FAIL1; }
|
if (!pBD) { return R_FAIL1; }
|
||||||
|
@ -100,7 +102,7 @@ int b_isfull(Buffer* const pBD) {
|
||||||
* Called functions: N/A
|
* Called functions: N/A
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return value: -1, 0, 1
|
* Return value: -1 (R_FAIL1), 0 (FALSE), 1 (TRUE)
|
||||||
*/
|
*/
|
||||||
int b_isempty(Buffer* const pBD) {
|
int b_isempty(Buffer* const pBD) {
|
||||||
if (!pBD) { return R_FAIL1; }
|
if (!pBD) { return R_FAIL1; }
|
||||||
|
@ -117,7 +119,7 @@ int b_isempty(Buffer* const pBD) {
|
||||||
* Called functions: N/A
|
* Called functions: N/A
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return value: short
|
* Return value: -1 (R_FAIL1), short
|
||||||
*/
|
*/
|
||||||
short b_size(Buffer* const pBD) {
|
short b_size(Buffer* const pBD) {
|
||||||
if (!pBD) { return R_FAIL1; }
|
if (!pBD) { return R_FAIL1; }
|
||||||
|
@ -130,7 +132,7 @@ short b_size(Buffer* const pBD) {
|
||||||
* Called functions: N/A
|
* Called functions: N/A
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return value: short
|
* Return value: -1 (R_FAIL1), short
|
||||||
*/
|
*/
|
||||||
short b_capacity(Buffer* const pBD) {
|
short b_capacity(Buffer* const pBD) {
|
||||||
if (!pBD) { return R_FAIL1; }
|
if (!pBD) { return R_FAIL1; }
|
||||||
|
@ -143,7 +145,10 @@ short b_capacity(Buffer* const pBD) {
|
||||||
* Called functions: N/A
|
* Called functions: N/A
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return value: -2, -1, 0, 1
|
* Return value: -2 (R_FAIL2),
|
||||||
|
* -1 (multiplicative),
|
||||||
|
* 0 (fixed),
|
||||||
|
* 1 (additive)
|
||||||
*/
|
*/
|
||||||
int b_mode(Buffer* const pBD) {
|
int b_mode(Buffer* const pBD) {
|
||||||
if (!pBD) { return R_FAIL2; }
|
if (!pBD) { return R_FAIL2; }
|
||||||
|
@ -156,7 +161,7 @@ int b_mode(Buffer* const pBD) {
|
||||||
* Called functions: N/A
|
* Called functions: N/A
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return value: size_t
|
* Return value: size_t, 256 (ERR_INC_FACTOR)
|
||||||
*/
|
*/
|
||||||
size_t b_incfactor(Buffer* const pBD) {
|
size_t b_incfactor(Buffer* const pBD) {
|
||||||
if (!pBD) { return ERR_INC_FACTOR; }
|
if (!pBD) { return ERR_INC_FACTOR; }
|
||||||
|
@ -169,7 +174,7 @@ size_t b_incfactor(Buffer* const pBD) {
|
||||||
* Called functions: N/A
|
* Called functions: N/A
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return value: short
|
* Return value: short, -1 (R_FAIL1)
|
||||||
*/
|
*/
|
||||||
short b_mark(Buffer* const pBD) {
|
short b_mark(Buffer* const pBD) {
|
||||||
if (!pBD) { return R_FAIL1; }
|
if (!pBD) { return R_FAIL1; }
|
||||||
|
@ -182,7 +187,7 @@ short b_mark(Buffer* const pBD) {
|
||||||
* Called functions: N/A
|
* Called functions: N/A
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return value: char
|
* Return value: char, -1 (R_FAIL1)
|
||||||
*/
|
*/
|
||||||
char b_flag(Buffer* const pBD) {
|
char b_flag(Buffer* const pBD) {
|
||||||
if (!pBD) { return R_FAIL1; }
|
if (!pBD) { return R_FAIL1; }
|
||||||
|
@ -195,7 +200,7 @@ char b_flag(Buffer* const pBD) {
|
||||||
* Called functions: N/A
|
* Called functions: N/A
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return value: short
|
* Return value: short, -1 (R_FAIL1)
|
||||||
*/
|
*/
|
||||||
short b_getcoffset(Buffer* const pBD) {
|
short b_getcoffset(Buffer* const pBD) {
|
||||||
if (!pBD) { return R_FAIL1; }
|
if (!pBD) { return R_FAIL1; }
|
||||||
|
@ -208,7 +213,7 @@ short b_getcoffset(Buffer* const pBD) {
|
||||||
* Called functions: N/A
|
* Called functions: N/A
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return value: short
|
* Return value: char*, NULL
|
||||||
*/
|
*/
|
||||||
char* b_cbhead(Buffer* const pBD) {
|
char* b_cbhead(Buffer* const pBD) {
|
||||||
if (!pBD || !pBD->cb_head) { return NULL; }
|
if (!pBD || !pBD->cb_head) { return NULL; }
|
||||||
|
@ -221,7 +226,7 @@ char* b_cbhead(Buffer* const pBD) {
|
||||||
* Called functions: N/A
|
* Called functions: N/A
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return value: char*
|
* Return value: char*, NULL
|
||||||
*/
|
*/
|
||||||
char* b_setmark(Buffer* const pBD, short mark) {
|
char* b_setmark(Buffer* const pBD, short mark) {
|
||||||
if (!pBD || mark < 0 || mark > pBD->addc_offset) { return NULL; }
|
if (!pBD || mark < 0 || mark > pBD->addc_offset) { return NULL; }
|
||||||
|
@ -235,7 +240,7 @@ char* b_setmark(Buffer* const pBD, short mark) {
|
||||||
* Called functions: N/A
|
* Called functions: N/A
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return value: 1, 0
|
* Return value: 1, 0, -1 (R_FAIL1)
|
||||||
*/
|
*/
|
||||||
int b_eob(Buffer* const pBD) {
|
int b_eob(Buffer* const pBD) {
|
||||||
if (!pBD) { return R_FAIL1; }
|
if (!pBD) { return R_FAIL1; }
|
||||||
|
@ -250,8 +255,10 @@ possible and needed
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
- char symbol (1-255)
|
- char symbol (1-255)
|
||||||
* Return value: pBuffer or NULL
|
* Return value: pBuffer, NULL
|
||||||
* Algorithm:
|
* Algorithm: Function checks if the cb_head's character size reached
|
||||||
|
* maximum capacity and resizes if it's able (by the mode or SHRT_MAX),
|
||||||
|
* then adds one character to cb_head.
|
||||||
*/
|
*/
|
||||||
pBuffer b_addc(pBuffer const pBD, char symbol) {
|
pBuffer b_addc(pBuffer const pBD, char symbol) {
|
||||||
/* Variables used for calculating required space for reallocating cb_head
|
/* Variables used for calculating required space for reallocating cb_head
|
||||||
|
@ -329,7 +336,7 @@ pBuffer b_addc(pBuffer const pBD, char symbol) {
|
||||||
* Called functions: N/A
|
* Called functions: N/A
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return value: char
|
* Return value: char, -2 (R_FAIL2), -1 (R_FAIL1)
|
||||||
* Algorithm: Function will check if getc_offset is at the end
|
* Algorithm: Function will check if getc_offset is at the end
|
||||||
* of the character array. If so, set flag and return failure.
|
* of the character array. If so, set flag and return failure.
|
||||||
* Otherwise fetch character from cb_head, increment offset, and
|
* Otherwise fetch character from cb_head, increment offset, and
|
||||||
|
@ -363,7 +370,7 @@ char b_getc(Buffer* const pBD) {
|
||||||
* Called functions: b_isempty(), b_getc(), b_eob(), printf()
|
* Called functions: b_isempty(), b_getc(), b_eob(), printf()
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return value: int
|
* Return value: int, -1 (R_FAIL1)
|
||||||
*/
|
*/
|
||||||
int b_print(Buffer* const pBD) {
|
int b_print(Buffer* const pBD) {
|
||||||
int char_count = 0; /* Counter to track how many characters were sent to output */
|
int char_count = 0; /* Counter to track how many characters were sent to output */
|
||||||
|
@ -402,7 +409,7 @@ int b_print(Buffer* const pBD) {
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- FILE* const fi
|
- FILE* const fi
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return value: int
|
* Return value: int, -1 (R_FAIL1), -2 (LOAD_FAIL)
|
||||||
*/
|
*/
|
||||||
int b_load(FILE* const fi, Buffer* const pBD) {
|
int b_load(FILE* const fi, Buffer* const pBD) {
|
||||||
char char_buf; /* "Buffer" character to be loaded before adding to cb_head */
|
char char_buf; /* "Buffer" character to be loaded before adding to cb_head */
|
||||||
|
@ -434,7 +441,7 @@ int b_load(FILE* const fi, Buffer* const pBD) {
|
||||||
* Called functions: N/A
|
* Called functions: N/A
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return value: int
|
* Return value: 1 (TRUE), -1 (R_FAIL1)
|
||||||
*/
|
*/
|
||||||
int b_reset(Buffer* const pBD) {
|
int b_reset(Buffer* const pBD) {
|
||||||
if (!pBD) { return R_FAIL1; }
|
if (!pBD) { return R_FAIL1; }
|
||||||
|
@ -453,13 +460,13 @@ int b_reset(Buffer* const pBD) {
|
||||||
* Called functions: N/A
|
* Called functions: N/A
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return value: short
|
* Return value: short, -1 (R_FAIL1)
|
||||||
*/
|
*/
|
||||||
short b_retract_to_mark(Buffer* const pBD) {
|
short b_retract_to_mark(Buffer* const pBD) {
|
||||||
/* Check if any offsets are out of bounds */
|
/* Check if any offsets are out of bounds */
|
||||||
if(!pBD ||
|
if(!pBD ||
|
||||||
pBD->getc_offset < OFFSET_RESET || pBD->getc_offset > pBD->capacity ||
|
pBD->mark_offset < OFFSET_RESET ||
|
||||||
pBD->mark_offset < OFFSET_RESET || pBD->mark_offset > pBD->capacity) {
|
pBD->mark_offset > pBD->capacity){
|
||||||
return R_FAIL1;
|
return R_FAIL1;
|
||||||
}
|
}
|
||||||
pBD->getc_offset = pBD->mark_offset;
|
pBD->getc_offset = pBD->mark_offset;
|
||||||
|
@ -472,7 +479,7 @@ short b_retract_to_mark(Buffer* const pBD) {
|
||||||
* Called functions: N/A
|
* Called functions: N/A
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return value: short
|
* Return value: short, -1 (R_FAIL1)
|
||||||
*/
|
*/
|
||||||
short b_retract(Buffer* const pBD) {
|
short b_retract(Buffer* const pBD) {
|
||||||
if (!pBD) { return R_FAIL1; }
|
if (!pBD) { return R_FAIL1; }
|
||||||
|
@ -487,7 +494,7 @@ short b_retract(Buffer* const pBD) {
|
||||||
* Called functions: N/A
|
* Called functions: N/A
|
||||||
* Parameters:
|
* Parameters:
|
||||||
- pBuffer const pBD
|
- pBuffer const pBD
|
||||||
* Return value: char
|
* Return value: char, -1 (R_FAIL1)
|
||||||
*/
|
*/
|
||||||
char b_rflag(Buffer* const pBD) {
|
char b_rflag(Buffer* const pBD) {
|
||||||
if (!pBD) { return R_FAIL1; }
|
if (!pBD) { return R_FAIL1; }
|
||||||
|
@ -513,6 +520,10 @@ Buffer* b_pack(Buffer* const pBD) {
|
||||||
|
|
||||||
/* Configure new capacity value */
|
/* Configure new capacity value */
|
||||||
new_cap = pBD->addc_offset + 1;
|
new_cap = pBD->addc_offset + 1;
|
||||||
|
|
||||||
|
/* Avoid buffer destruction from overflow */
|
||||||
|
if (new_cap <= 0) { return NULL;}
|
||||||
|
|
||||||
old_addr = pBD->cb_head;
|
old_addr = pBD->cb_head;
|
||||||
|
|
||||||
/* Reallocate cb_head to new size */
|
/* Reallocate cb_head to new size */
|
||||||
|
|
Loading…
Reference in New Issue