--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicstools/bitmapfonttools/src/READER.CPP Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,168 @@
+/*
+* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Header READER.CPP
+*
+*/
+
+
+#include "READER.H"
+
+Reader::Reader()
+ {
+ iLexAnal = NULL;
+ }
+
+boolean Reader::Open(const String& aFilename)
+ {
+ boolean state;
+ String string = aFilename;
+ if (iLexAnal != NULL)
+ delete iLexAnal;
+ iLexAnal = new LexAnal(string.Text());
+
+ if (iLexAnal)
+ {
+ state = etrue;
+ iLex =& (iLexAnal->iLex);
+ iLexAnal->Read(); // reads first lexical
+ }
+ else
+ state = efalse;
+
+ return state;
+ }
+
+Reader::~Reader()
+ {
+ if (iLexAnal != NULL)
+ delete iLexAnal;
+ }
+
+boolean Reader::_EOF()
+ {
+ return ((iLex->iType) == ELexEOF);
+ }
+
+boolean Reader::NewLine()
+ {
+ boolean state;
+ if (iLex->iType == ELexNL)
+ {
+ iLexAnal->Read();
+ state = etrue;
+ }
+ else
+ {
+ Error(String("Newline expected"));
+ state = efalse;
+ }
+ return state;
+ }
+
+boolean Reader::Number(int& aNumber)
+ {
+ boolean state;
+ if (iLex->iType == ELexNumber)
+ {
+ aNumber = iLex->iNumber;
+ iLexAnal->Read();
+ state = etrue;
+ }
+ else
+ {
+ Error(String("Number expected"));
+ state = efalse;
+ }
+ return state;
+ }
+
+boolean Reader::IdentComp(const String& aIdent)
+ {
+ boolean state;
+ if (iLex->iType == ELexIdent)
+ {
+ if (aIdent == iLex->iText)
+ {
+ iLexAnal->Read();
+ state = etrue;
+ }
+ else
+ state = efalse;
+ }
+ else
+ {
+ state = efalse;
+ }
+ return state;
+ }
+
+boolean Reader::IdentCopy(String& aIdent)
+ {
+ boolean state;
+ if (iLex->iType == ELexIdent)
+ {
+ aIdent = iLex->iText;
+ iLexAnal->Read();
+ state = etrue;
+ }
+ else
+ {
+ Error(String("Identifier expected"));
+ state = efalse;
+ }
+ return state;
+ }
+
+boolean Reader::StringCopy(String& aString)
+ {
+ boolean state;
+ if (iLex->iType == ELexString)
+ {
+ aString = iLex->iText;
+ iLexAnal->Read();
+ state = etrue;
+ }
+ else
+ {
+ Error(String("String expected"));
+ state = efalse;
+ }
+ return state;
+ }
+
+boolean Reader::Operator(char& aCh)
+ {
+ boolean state;
+ if (iLex->iType == ELexOperator)
+ {
+ aCh = iLex->iText[0];
+ iLexAnal->Read();
+ state = etrue;
+ }
+ else
+ {
+ Error(String("Operator expected"));
+ state = efalse;
+ }
+ return state;
+ }
+
+EXPORT_C void Reader::Error(const String& aString)
+ {
+ cerr << "Error: " << aString;
+ iLexAnal->Report();
+ while ((iLex->iType != ELexNL) && (iLex->iType != ELexEOF))
+ iLexAnal->Read();
+ }