hl2_src-leak-2017/src/utils/tfstats/textfile.h

76 lines
2.1 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: Interface of CTextFile.
//
// $Workfile: $
// $Date: $
//
//------------------------------------------------------------------------------------------------------
// $Log: $
//
// $NoKeywords: $
//=============================================================================//
#ifndef TEXTFILE_H
#define TEXTFILE_H
#ifdef WIN32
#pragma once
#endif
#include <stdio.h>
#include <string.h>
#include <string>
#define BUF_SIZE 5000
//------------------------------------------------------------------------------------------------------
// Purpose: CTextFile represents a configuration file. The default delimiters
// are { } = \n \r \t ; " and space. Also C++ style comments are ignored by default.
// CTextFile only supports reading, a 5000 character word /line buffer
// and only supports one pushback
//------------------------------------------------------------------------------------------------------
class CTextFile
{
private:
std::string filename;
char wordBuf[BUF_SIZE];
char peekBuf[BUF_SIZE];
bool fWordPushed;
bool noComments;
FILE* theFile;
char* delims;
char* stringDelims;
char* normalDelims;
char* blockDelims;
char getNextNonWSChar();
bool isDelim(char c);
const char* getToken(char* outputBuf);
public:
explicit CTextFile(const char* filename,bool eliminateComments=true){init(filename,eliminateComments);}
explicit CTextFile(const string& filename,bool eliminateComments=true){init(filename.c_str(),eliminateComments);}
void init(const char* filename,bool eliminateComments=true);
std::string& fileName(){return filename;}
void discardBlock();
const char* readString();
const char* readString(char* buf);
int readInt();
unsigned long readULong();
const char* getToken();
const char* getLine();
bool isValid(){return theFile!=NULL;}
char* currWord(){return wordBuf;}
void pushBack(const char* pushTok);
char* peekNext();
char* peekNextString();
bool eof();
void reset();
bool discard(char* test);
void discard(){getToken();}
~CTextFile();
};
#endif // TEXTFILE_H