int CharCircularBuffer::removeChar(char *dest){//ret n char removed (0: buffer empty) if(isEmpty())return 0; *dest=buf[start]; start=inc(start); if(isEndLine(*dest))lineCount--; return 1; }
int CharCircularBuffer::removeLine(char *dest,unsigned int maxn){ //ret nchar readed, (max maxn char), terminate string with \0 (instead of \n or in maxn position) unsigned int c=0; if(lineCount==0)return 0; while( (!isEmpty()) && (!isEndLine(buf[start])) && (c<maxn) ){ dest[c]=buf[start]; start=inc(start); c++; } dest[c]='\0'; if(!isEmpty() && isEndLine(buf[start])){ lineCount--; start=inc(start); } return c; }
int CharCircularBuffer::addChar(char src){ //ret n char added (0: error, 1 ok) if(isFull())return 0; buf[end]=src; end=inc(end); if(isEndLine(src))lineCount++; return 1; }
//ret n char added (0: error, 1 ok) int CharCircularBuffer::addChar(char src) { if (isFull()) return 0; buf[end] = src; end = inc(end); if (isEndLine(src)) lineCount++; return 1; }
//ret nchar readed, (max maxn char), terminate string with \0 (instead of \n or in maxn position) int CharCircularBuffer::removeLine(char *dest, unsigned int maxn) { unsigned int c = 0; if (lineCount == 0) return 0; while ((!isEmpty()) && (!isEndLine(buf[start])) && (c < maxn - 1)) { dest[c] = buf[start]; start = inc(start); c++; } dest[c] = '\0'; if (!isEmpty() && isEndLine(buf[start])) { lineCount--; start = inc(start); } return c; }
int CharCircularBuffer::removeNChar(char *dest,unsigned int nx){ //ret n char removed (0: buffer empty, 0-n) unsigned int disp=getCount();//#posti disponibili nx=(disp>nx?nx:disp); for (int i=0;i<nx;i++){ if(isEndLine(buf[start]))lineCount--; dest[i]=buf[start]; start=inc(start); } return nx; }
int CharCircularBuffer::addNChar(char *src,unsigned int nx){ //ret n char added (0: error, 1 ok) unsigned int disp=n-getCount()-1;//#posti disponibili nx=(disp>nx?nx:disp); for (int i=0;i<nx;i++){ if(isEndLine(src[i]))lineCount++; buf[end]=src[i]; end=inc(end); } return nx; }