Add C++ API for driver settings
Copied from the userlandfs utility classes, adjusted coding style, did some renaming and small interface changes.
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
/*
|
||||
* Copyright 2007-2013, Haiku, Inc. All Rights Reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* Authors:
|
||||
* Ingo Weinhold <[email protected]>
|
||||
*/
|
||||
#ifndef _B_DRIVER_SETTINGS_H
|
||||
#define _B_DRIVER_SETTINGS_H
|
||||
|
||||
|
||||
#include <SupportDefs.h>
|
||||
|
||||
|
||||
struct driver_parameter;
|
||||
struct driver_settings;
|
||||
struct entry_ref;
|
||||
|
||||
|
||||
namespace BPrivate {
|
||||
|
||||
|
||||
class BDriverParameter;
|
||||
class BDriverParameterContainer;
|
||||
|
||||
|
||||
class BDriverParameterIterator {
|
||||
public:
|
||||
BDriverParameterIterator();
|
||||
BDriverParameterIterator(
|
||||
const BDriverParameterIterator& other);
|
||||
~BDriverParameterIterator();
|
||||
|
||||
bool HasNext() const;
|
||||
BDriverParameter Next();
|
||||
|
||||
BDriverParameterIterator& operator=(
|
||||
const BDriverParameterIterator& other);
|
||||
|
||||
private:
|
||||
friend class BDriverParameterContainer;
|
||||
class Delegate;
|
||||
|
||||
private:
|
||||
BDriverParameterIterator(Delegate* delegate);
|
||||
void _SetTo(Delegate* delegate, bool addReference);
|
||||
|
||||
private:
|
||||
Delegate* fDelegate;
|
||||
};
|
||||
|
||||
|
||||
class BDriverParameterContainer {
|
||||
public:
|
||||
BDriverParameterContainer();
|
||||
virtual ~BDriverParameterContainer();
|
||||
|
||||
int32 CountParameters() const;
|
||||
const driver_parameter* Parameters() const;
|
||||
BDriverParameter ParameterAt(int32 index) const;
|
||||
bool FindParameter(const char* name,
|
||||
BDriverParameter* _parameter) const;
|
||||
BDriverParameter GetParameter(const char* name) const;
|
||||
|
||||
BDriverParameterIterator ParameterIterator() const;
|
||||
BDriverParameterIterator ParameterIterator(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;
|
||||
};
|
||||
|
||||
|
||||
class BDriverSettings : public BDriverParameterContainer {
|
||||
public:
|
||||
BDriverSettings();
|
||||
virtual ~BDriverSettings();
|
||||
|
||||
status_t Load(const char* driverNameOrAbsolutePath);
|
||||
status_t Load(const entry_ref& ref);
|
||||
status_t SetToString(const char* string);
|
||||
void Unset();
|
||||
|
||||
protected:
|
||||
virtual const driver_parameter* GetParametersAndCount(int32& _count) const;
|
||||
|
||||
private:
|
||||
void* fSettingsHandle;
|
||||
const driver_settings* fSettings;
|
||||
};
|
||||
|
||||
|
||||
class BDriverParameter : public BDriverParameterContainer {
|
||||
public:
|
||||
BDriverParameter();
|
||||
BDriverParameter(
|
||||
const driver_parameter* parameter);
|
||||
BDriverParameter(const BDriverParameter& other);
|
||||
virtual ~BDriverParameter();
|
||||
|
||||
void SetTo(const driver_parameter* parameter);
|
||||
|
||||
bool IsValid() const;
|
||||
|
||||
const char* Name() const;
|
||||
int32 CountValues() const;
|
||||
const char* const* Values() 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;
|
||||
|
||||
BDriverParameter& operator=(const BDriverParameter& other);
|
||||
|
||||
protected:
|
||||
virtual const driver_parameter* GetParametersAndCount(int32& _count) const;
|
||||
|
||||
private:
|
||||
const driver_parameter* fParameter;
|
||||
};
|
||||
|
||||
|
||||
} // namespace BPrivate
|
||||
|
||||
|
||||
using BPrivate::BDriverParameterIterator;
|
||||
using BPrivate::BDriverSettings;
|
||||
using BPrivate::BDriverParameter;
|
||||
|
||||
|
||||
#endif // _B_DRIVER_SETTINGS_H
|
||||
Reference in New Issue
Block a user