graphicstools/bitmapfonttools/inc/LEXICAL.H
changeset 0 5d03bc08d59c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicstools/bitmapfonttools/inc/LEXICAL.H	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,110 @@
+/*
+* 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 LEXICAL.H
+*
+*/
+
+
+#ifndef __LEXICAL_H__
+#define __LEXICAL_H__
+
+#if defined(__VC32__) && !defined(__MSVCDOTNET__)
+#pragma warning( disable : 4511 )	// copy constructor could not be generated
+#pragma warning( disable : 4512 )	// assignment operator could not be generated
+#pragma warning( disable : 4514 )	// unreferenced inline function has been removed
+#pragma warning( disable : 4699 )	// Note: Using precompiled header %s
+#pragma warning( disable : 4710 )	// function not inlined
+#endif
+
+#include "STRNG.H"
+#include <stdlib.h>
+
+#if defined(__VC32__) && !defined(__MSVCDOTNET__)
+#include <iostream.h>
+#include <fstream.h>
+#else //!__VC32__ || __MSVCDOTNET__
+#include <iostream>
+#include <fstream>
+using namespace std;
+#endif //!__VC32__ || __MSVCDOTNET__
+
+#include "GDR.H"
+/**
+@publishedAll
+WARNING:Enum for internal use ONLY.  Compatibility is not guaranteed in future releases.
+*/
+enum LexType
+	{
+	ELexEOF,		// end of file
+	ELexNL,			// newline (newlines, white-space and comments stripped)
+	ELexNumber,		// integer (no optional plus or minus)
+	ELexIdent,		// identifier beginning with a..z, A..Z, or _ and continuing with 0..9
+	ELexString,		// string delimited at start by "
+	ELexOperator	// any other single character
+	};
+
+class Lexical
+/**
+@publishedAll
+WARNING: Class for internal use ONLY.  Compatibility is not guaranteed in future releases.
+*/
+	{
+public:
+	Lexical();
+	Lexical(const Lexical& aLex);
+	Lexical& operator = (const Lexical& aLex);
+	int CovertStringToHex();
+private:
+	int HexDigit(char aDigit, int& decimalEquivalent);
+public:
+	LexType iType;
+	int iNumber;	// for ELexNumber
+	char iText[MaxLineLen + 1];	// for ELexIdent, ELexString, ELexOperator
+friend ostream& operator << (ostream& out, Lexical& aLex);
+	};
+
+class LexAnal
+/**
+@publishedAll
+WARNING: Class for internal use ONLY.  Compatibility is not guaranteed in future releases.
+*/
+	{
+public:
+	LexAnal(const char* aFilename);
+	Lexical Read();	// read next lexical into iLex
+	Lexical ReadNextLine();	// read first lex on next line
+	void Report();
+	~LexAnal();
+public:
+	ifstream iFin;
+	Lexical iLex;
+	int iLineNo;
+	char iLine[MaxLineLen + 1];
+	char* iLexPtr;	// Position in current lexical
+	char* iCurPtr;	// Position of current lexical in line
+private:
+	void GetNextLex();
+	void GetNextLine();
+	void PurgeLastCR(char *aLine);
+	Lexical ReadEOF();
+	Lexical ReadNewLine(); 
+	Lexical ReadNumber();
+	Lexical ReadIdent();
+	Lexical ReadString();
+	Lexical ReadOperator();
+	String iFilename;
+};
+
+#endif