83812f6752
where it will be ported to Haiku. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20216 a95241bf-73f2-0310-859d-f6bbb57e9c96
131 lines
3.3 KiB
C++
131 lines
3.3 KiB
C++
// DriverSettings.h
|
|
|
|
#ifndef USERLAND_FS_DRIVER_SETTINGS_H
|
|
#define USERLAND_FS_DRIVER_SETTINGS_H
|
|
|
|
struct driver_parameter;
|
|
struct driver_settings;
|
|
|
|
namespace UserlandFSUtil {
|
|
|
|
class DriverParameter;
|
|
class DriverParameterContainer;
|
|
|
|
// DriverParameterIterator
|
|
class DriverParameterIterator {
|
|
public:
|
|
DriverParameterIterator();
|
|
DriverParameterIterator(
|
|
const DriverParameterIterator& other);
|
|
~DriverParameterIterator();
|
|
|
|
bool HasNext() const;
|
|
bool GetNext(DriverParameter* parameter);
|
|
|
|
DriverParameterIterator& operator=(
|
|
const DriverParameterIterator& other);
|
|
|
|
private:
|
|
friend class DriverParameterContainer;
|
|
class Delegate;
|
|
|
|
DriverParameterIterator(Delegate* delegate);
|
|
void _SetTo(Delegate* delegate, bool addReference);
|
|
|
|
Delegate* fDelegate;
|
|
};
|
|
|
|
// DriverParameterContainer
|
|
class DriverParameterContainer {
|
|
public:
|
|
DriverParameterContainer();
|
|
virtual ~DriverParameterContainer();
|
|
|
|
int32 CountParameters() const;
|
|
const driver_parameter* GetParameters() const;
|
|
bool GetParameterAt(int32 index,
|
|
DriverParameter* parameter) const;
|
|
bool FindParameter(const char* name,
|
|
DriverParameter* parameter) const;
|
|
|
|
DriverParameterIterator GetParameterIterator() const;
|
|
DriverParameterIterator GetParameterIterator(
|
|
const char* name) const;
|
|
|
|
const char* GetParameterValue(const char* name,
|
|
const char* unknownValue = NULL,
|
|
const char* noValue = NULL) const;
|
|
bool GetBoolParameterValue(const char* name,
|
|
bool unknownValue = false,
|
|
bool noValue = false) const;
|
|
int32 GetInt32ParameterValue(const char* name,
|
|
int32 unknownValue = 0,
|
|
int32 noValue = 0) const;
|
|
int64 GetInt64ParameterValue(const char* name,
|
|
int64 unknownValue = 0,
|
|
int64 noValue = 0) const;
|
|
|
|
protected:
|
|
virtual const driver_parameter*
|
|
GetParametersAndCount(int32* count) const = 0;
|
|
|
|
private:
|
|
class Iterator;
|
|
class NameIterator;
|
|
};
|
|
|
|
// DriverSettings
|
|
class DriverSettings : public DriverParameterContainer {
|
|
public:
|
|
DriverSettings();
|
|
virtual ~DriverSettings();
|
|
|
|
status_t Load(const char* driverName);
|
|
void Unset();
|
|
|
|
protected:
|
|
virtual const driver_parameter*
|
|
GetParametersAndCount(int32* count) const;
|
|
|
|
private:
|
|
void* fSettingsHandle;
|
|
const driver_settings* fSettings;
|
|
};
|
|
|
|
// DriverParameter
|
|
class DriverParameter : public DriverParameterContainer {
|
|
public:
|
|
DriverParameter();
|
|
virtual ~DriverParameter();
|
|
|
|
void SetTo(const driver_parameter* parameter);
|
|
|
|
const char* GetName() const;
|
|
int32 CountValues() const;
|
|
const char* const* GetValues() const;
|
|
const char* ValueAt(int32 index,
|
|
const char* noValue = NULL) const;
|
|
bool BoolValueAt(int32 index,
|
|
bool noValue = false) const;
|
|
int32 Int32ValueAt(int32 index,
|
|
int32 noValue = 0) const;
|
|
int64 Int64ValueAt(int32 index,
|
|
int64 noValue = 0) const;
|
|
|
|
protected:
|
|
virtual const driver_parameter*
|
|
GetParametersAndCount(int32* count) const;
|
|
|
|
private:
|
|
const driver_parameter* fParameter;
|
|
};
|
|
|
|
} // namespace UserlandFSUtil
|
|
|
|
using UserlandFSUtil::DriverParameterIterator;
|
|
using UserlandFSUtil::DriverParameterContainer;
|
|
using UserlandFSUtil::DriverSettings;
|
|
using UserlandFSUtil::DriverParameter;
|
|
|
|
#endif // USERLAND_FS_DRIVER_SETTINGS_H
|