Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

137 lines
3.5 KiB

/*++
Copyright (c) 2000-2001 Microsoft Corporation
Module Name:
TstINIConfig.hxx
Abstract:
Class that manages the reading of the test scenario INI file. Each instance
of the CVsTstINIConfig class refers to one INI section with the file. Which
section is determined by the parameters passed to the constructor.
Author:
Stefan R. Steiner [ssteiner] 05-16-2000
Revision History:
--*/
#ifndef __H_TSTINICONFIG_
#define __H_TSTINICONFIG_
#include "bsstring.hxx"
//
// Type of harness component.
//
enum EVsTstINISectionType
{
eVsTstSectionType_UNKNOWN,
eVsTstSectionType_TestCoordinator, // The harness coordinator
eVsTstSectionType_TestRequesterApp, // The requester app (backup)
eVsTstSectionType_TestWriter, // The test writer
eVsTstSectionType_TestProvider, // The test provider
eVsTstSectionType_SENTINEL
};
//
// Boolean values. Note that it has a third value and that is
// random. Most test boolean options can have a random
// value.
//
enum EVsTstINIBoolType
{
eVsTstBool_False = 0,
eVsTstBool_True = 1,
eVsTstBool_Random = 2
};
enum EVsTstINIOptionType
{
eVsTstOptType_Unknown = 0, // For internal use only
eVsTstOptType_Comment = 1, // For internal use only
eVsTstOptType_Boolean = 2,
eVsTstOptType_String = 3,
eVsTstOptType_Number = 4
};
class CVsTstINIConfig
{
public:
//
// Initializes the object
//
CVsTstINIConfig(
IN EVsTstINISectionType eSectionType,
IN LPCWSTR pwszSectionQualifier = L"DEFAULT", // The XXX in [SectionType.XXX]
IN BOOL bWriteINIFile = TRUE, // If true, a default INI file will be written
// if the file doesn't exist.
IN LPCWSTR pwszINIFileName = NULL, // Full path to the INI file, if NULL, default
// path is used.
IN BOOL bContinueOnINIFileErrors = FALSE // If true, errors in INI file are skipped
);
virtual ~CVsTstINIConfig();
// Get the option type
EVsTstINIOptionType GetOptionType(
IN LPCWSTR pwszOptionName
);
// Gets a string value
VOID GetOptionValue(
IN LPCWSTR pwszOptionName,
OUT CBsString *pwsOptionValue,
OUT BOOL *pbOverridden = NULL
);
// Gets a boolean value
VOID GetOptionValue(
IN LPCWSTR pwszOptionName,
OUT EVsTstINIBoolType *peOptionValue,
OUT BOOL *pbOverridden = NULL
);
// Get a number value
VOID GetOptionValue(
IN LPCWSTR pwszOptionName,
OUT LONGLONG *pllOptionMinValue,
OUT LONGLONG *pllOptionMaxValue,
OUT BOOL *pbOverridden = NULL
);
private:
CVsTstINIConfig() {}; // No default constructor, no copying allowed
HRESULT LoadINIFileData();
HRESULT CreateDefaultINIFile();
HRESULT SetupDefaultValues();
EVsTstINISectionType m_eSectionType;
CBsString m_wsSectionName;
CBsString m_wsINIFileName;
BOOL m_bWriteINIFile;
LPVOID m_pvOptionsList;
BOOL m_bContinueOnINIFileErrors;
};
//
// Class which is thrown when an error is found in the INI file
//
class CVsTstINIConfigException
{
friend CVsTstINIConfig;
public:
CBsString& GetExceptionString() { return m_cwsExceptionString; }
private:
CBsString m_cwsExceptionString;
};
#endif // __H_TSTINICONFIG_