Explorar el Código

[buffer.h] Making buffer_index_*w_word recieve start point

Vinicius Teshima hace 1 año
padre
commit
e97290fd4d
Se han modificado 1 ficheros con 8 adiciones y 6 borrados
  1. 8 6
      src/buffer.h

+ 8 - 6
src/buffer.h

@@ -55,8 +55,10 @@ struct ret_buffer_size_t_err buffer_remove_between(struct buffer buf,
 struct ret_size_t_err buffer_index_bw_word(struct buffer buf);
 struct ret_size_t_err buffer_index_fw_word(struct buffer buf);
 
-struct ret_size_t_err buffer_index_bw_char(struct buffer buf, char c);
-struct ret_size_t_err buffer_index_fw_char(struct buffer buf, char c);
+struct ret_size_t_err buffer_index_bw_char(struct buffer buf,
+					   size_t start, char c);
+struct ret_size_t_err buffer_index_fw_char(struct buffer buf,
+					   size_t start, char c);
 
 #if defined(BUFFER_IMP) || defined(IMP)
 
@@ -358,7 +360,7 @@ err: ;
 }
 
 struct ret_size_t_err
-buffer_index_bw_char(struct buffer buf, char c)
+buffer_index_bw_char(struct buffer buf, size_t start, char c)
 {
 	enum buffer_err err;
 	if ( buf.data.size == 0 ) {
@@ -376,7 +378,7 @@ buffer_index_bw_char(struct buffer buf, char c)
 	bool cond = false;
 	/* TODO: Find a way to not use ssize_t buf size_t */
 	ssize_t closest = -1;
-	for ( ssize_t i = 0; i < (ssize_t) buf.cur; ++i ) {
+	for ( ssize_t i = 0; i < (ssize_t) start; ++i ) {
 		cond = str[i] == c;
 		closest = ( cond ) * i + ( ! cond ) * closest;
 	}
@@ -398,7 +400,7 @@ err: ;
 }
 
 struct ret_size_t_err
-buffer_index_fw_char(struct buffer buf, char c)
+buffer_index_fw_char(struct buffer buf, size_t start, char c)
 {
 	enum buffer_err err;
 	if ( buf.data.size == 0 ) {
@@ -413,7 +415,7 @@ buffer_index_fw_char(struct buffer buf, char c)
 
 	const char *str = buf.data.items;
 
-	for ( size_t i = buf.cur; i < buf.data.size; ++i ) {
+	for ( size_t i = start; i < buf.data.size; ++i ) {
 		if ( str[i] == c ) {
 			return (struct ret_size_t_err) {
 				.f1 = i,