2005-05-28 00:45:31 +02:00
|
|
|
/*
|
|
|
|
*
|
|
|
|
* The contents of this file are subject to the Initial
|
|
|
|
* Developer's Public License Version 1.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the
|
|
|
|
* License. You may obtain a copy of the License at
|
|
|
|
* http://www.ibphoenix.com/idpl.html.
|
|
|
|
*
|
|
|
|
* Software distributed under the License is distributed on
|
|
|
|
* an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
|
|
|
|
* express or implied. See the License for the specific
|
|
|
|
* language governing rights and limitations under the License.
|
|
|
|
*
|
|
|
|
* The contents of this file or any work derived from this file
|
|
|
|
* may not be distributed under any other license whatsoever
|
|
|
|
* without the express prior written permission of the original
|
|
|
|
* author.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* The Original Code was created by James A. Starkey for IBPhoenix.
|
|
|
|
*
|
|
|
|
* Copyright (c) 1997 - 2000, 2001, 2003 James A. Starkey
|
|
|
|
* Copyright (c) 1997 - 2000, 2001, 2003 Netfrastructure, Inc.
|
|
|
|
* All Rights Reserved.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _ConfigFile_h_
|
|
|
|
#define _ConfigFile_h_
|
|
|
|
|
|
|
|
#include "Lex.h"
|
|
|
|
#include "RefObject.h"
|
2008-04-24 17:49:43 +02:00
|
|
|
#include "../common/classes/fb_string.h"
|
2005-05-28 00:45:31 +02:00
|
|
|
|
|
|
|
static const int HASH_SIZE = 101;
|
|
|
|
static const int CONFIG_trace = 1;
|
|
|
|
static const int CONFIG_list = 2;
|
|
|
|
static const int CONFIG_verbose = 4;
|
|
|
|
|
|
|
|
START_NAMESPACE
|
|
|
|
class InputFile;
|
|
|
|
class Element;
|
|
|
|
class ConfObject;
|
|
|
|
|
|
|
|
class ConfigFile : public Lex, public RefObject
|
|
|
|
{
|
|
|
|
public:
|
2008-04-19 11:40:19 +02:00
|
|
|
explicit ConfigFile(int configFlags);
|
2008-04-20 12:40:58 +02:00
|
|
|
ConfigFile(const char* configFile, int configFlags);
|
2005-05-28 00:45:31 +02:00
|
|
|
|
|
|
|
//protected:
|
2007-04-18 13:55:29 +02:00
|
|
|
virtual ~ConfigFile();
|
2005-05-28 00:45:31 +02:00
|
|
|
|
|
|
|
public:
|
2007-04-18 13:55:29 +02:00
|
|
|
InputFile* openConfigFile();
|
2005-05-28 00:45:31 +02:00
|
|
|
|
2007-04-18 13:55:29 +02:00
|
|
|
void parse();
|
|
|
|
Element* parseObject();
|
|
|
|
Element* parseAttribute();
|
2005-05-28 00:45:31 +02:00
|
|
|
ConfObject* findObject(const char* objectType, const char* objectName);
|
2007-04-18 13:55:29 +02:00
|
|
|
const char* getRootDirectory();
|
2005-05-28 00:45:31 +02:00
|
|
|
ConfObject* getObject(const char* objectType);
|
|
|
|
Element* findGlobalAttribute(const char *attributeName);
|
2007-04-18 13:55:29 +02:00
|
|
|
const char* getInstallDirectory();
|
2008-04-24 17:49:43 +02:00
|
|
|
virtual Firebird::PathName expand(const Firebird::PathName& rawString);
|
2005-05-28 00:45:31 +02:00
|
|
|
|
2008-04-20 13:46:02 +02:00
|
|
|
const char* translate(const char* value, const Element* object);
|
2005-05-28 00:45:31 +02:00
|
|
|
void wildCardInclude(const char* fileName);
|
2008-04-20 12:40:58 +02:00
|
|
|
const Element* getObjects() const { return objects; }
|
2007-04-18 13:55:29 +02:00
|
|
|
|
|
|
|
private:
|
2008-04-20 13:46:02 +02:00
|
|
|
void init(int configFlags);
|
2008-04-20 12:40:58 +02:00
|
|
|
Element* objects;
|
2008-04-24 17:49:43 +02:00
|
|
|
Firebird::PathName rootDirectory;
|
|
|
|
Firebird::PathName installDirectory;
|
|
|
|
Firebird::PathName currentDirectory;
|
2007-04-18 13:55:29 +02:00
|
|
|
Element* hashTable [HASH_SIZE];
|
|
|
|
|
2005-05-28 00:45:31 +02:00
|
|
|
};
|
|
|
|
END_NAMESPACE
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|