⛏️ index : haiku.git

/*
 * Copyright 2008, Haiku.
 * Distributed under the terms of the MIT license.
 *
 * Authors:
 *		Michael Pfeiffer <laplace@users.sourceforge.net>
 */

#include "CharacterClasses.h"
#include "Scanner.h"

#include <stdio.h>

void Print(Scanner* scanner)
{
	Position position = scanner->GetPosition();
	const char* filename = scanner->GetFileName();
	int ch = scanner->GetCurrentChar();
	printf("[%d, %d] (%s) %c\n", position.x, position.y, filename, ch);
}

void TestScanner()
{
	Scanner scanner("main.ppd");
	if (scanner.InitCheck() != B_OK) {
		fprintf(stderr, "Could not open file main.ppd\n");
		return;
	}
	
	scanner.NextChar();
	for (int i = 0; i < 10; i ++) {
		int ch = scanner.GetCurrentChar();
		if (ch == kEof) {
			fprintf(stderr, "Unexpected end of file!\n");
			return;
		}
		Print(&scanner);
		scanner.NextChar();
	}
	
	if (!scanner.Include("include.ppd")) {
		fprintf(stderr, "Could not include file include.ppd\n");
		return;
	}
	
	while (scanner.GetCurrentChar() != kEof) {
		Print(&scanner);
		scanner.NextChar();
	}
	
	BString string;
	string.Append('a', 1);
	printf("%d\n", (int)string.Length());
	string.Append((char)0, 1);
	string.Append('b', 1);
	printf("%d\n", (int)string.Length());	
	for (int i = 0; i < string.Length(); i ++) {
		printf("%c ", string.String()[i]);
	}
	
	printf("%d\n", '"');
}