예제 #1
0
파일: buffer.c 프로젝트: hemmecke/aldor
int
bufPuti(Buffer buf, int i)
{
	Length	pos0;
	int	ndig, digits[4 * bitsizeof(int)];	/* 4 > lg 10 */

	pos0 = bufPosition(buf);

	if (i == 0) {
		bufAdd1(buf, '0');
	}
	else {
		if (i < 0) {
			bufAdd1(buf, '-');
			i = - i;
		}
		for (ndig = 0; i; i /= 10, ndig++)
			digits[ndig] = i % 10;
		while (ndig--)
			bufAdd1(buf, '0' + (char) digits[ndig]);
	}
	bufAdd1(buf, char0);
	bufBack1(buf);
	return bufPosition(buf) - pos0;
}
예제 #2
0
파일: buffer.c 프로젝트: hemmecke/aldor
void
bufPutSInt(Buffer b, ULong i)
{
	bufAdd1(b, BYTE0(i));
	bufAdd1(b, BYTE1(i));
	bufAdd1(b, BYTE2(i));
	bufAdd1(b, BYTE3(i));
}
예제 #3
0
파일: buffer.c 프로젝트: hemmecke/aldor
int
bufPutc(Buffer b, int c)
{
	bufAdd1(b, (char) c);
	bufAdd1(b, char0);
	bufBack1(b);
	return c;
}
예제 #4
0
파일: include.c 프로젝트: pdo/aldor
local String
inclGetLine(FILE *file)
{
	int     c;
	String	s;

	bufStart(inclBuffer);
	while ((c = osGetc(file)) != EOF) {
		bufAdd1(inclBuffer, c);
		if (c == '\n') break;
	}
	bufAdd1(inclBuffer, char0);

	s = bufChars(inclBuffer);
	if (c == EOF && *s == 0) return 0;
	return s;
}
예제 #5
0
파일: buffer.c 프로젝트: hemmecke/aldor
int
bufPuts(Buffer b, const char *s)
{
	int	cc = strLength(s);
	bufAddn(b, s, cc);
	bufAdd1(b,char0);
	bufBack1(b);
	return cc;
}
예제 #6
0
파일: strops.c 프로젝트: hemmecke/aldor
String
strReplace(String txt, String orig, String repl)
{
	Buffer buf = bufNew();
	String s;
	int replLen;

	bufNeed(buf, strlen(orig));
	replLen = strlen(repl);
	while (true) {
		char *nxt = strstr(txt, orig);
		if (nxt == NULL)
			break;
		bufAddn(buf, txt, nxt-txt);
		bufAddn(buf, repl, replLen);
		txt = nxt;
		txt += strlen(orig);
	}
	bufAddn(buf, txt, strlen(txt));
	bufAdd1(buf, '\0');
	s = bufLiberate(buf);
	return s;
}
예제 #7
0
파일: buffer.c 프로젝트: hemmecke/aldor
void
bufPutHInt(Buffer b, UShort h)
{
	bufAdd1(b, HBYTE0(h));
	bufAdd1(b, HBYTE1(h));
}
예제 #8
0
파일: buffer.c 프로젝트: hemmecke/aldor
void
bufPutByte(Buffer b, UByte c)
{
	bufAdd1(b, UNBYTE1(c));
}