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;
 }
示例#4
0
//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;
}
示例#5
0
//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;
}