PIP  0.4.0_beta2
Platform-Independent Primitives
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PIConfig Class Reference

Configuration file. More...

+ Inheritance diagram for PIConfig:

Classes

class  Branch
 Branch is a list of entries of configuration file More...
 
class  Entry
 Entry of configuration file More...
 

Public Member Functions

 PIConfig (const PIString &path, PIIODevice::DeviceMode mode=PIIODevice::ReadWrite)
 Contructs and read configuration file at path "path" in mode "mode".
 
EntrygetValue (const PIString &vname, const PIString &def=PIString(), bool *exists=0)
 Returns top-level entry with name "vname", if doesn`t exists return entry with value "def" and set *exist to false.
 
EntrygetValue (const PIString &vname, const char *def, bool *exists=0)
 Returns top-level entry with name "vname" and default value "def".
 
EntrygetValue (const PIString &vname, const PIStringList &def, bool *exists=0)
 Returns top-level entry with name "vname" and default value "def".
 
EntrygetValue (const PIString &vname, const bool def, bool *exists=0)
 Returns top-level entry with name "vname" and default value "def".
 
EntrygetValue (const PIString &vname, const short def, bool *exists=0)
 Returns top-level entry with name "vname" and default value "def".
 
EntrygetValue (const PIString &vname, const int def, bool *exists=0)
 Returns top-level entry with name "vname" and default value "def".
 
EntrygetValue (const PIString &vname, const long def, bool *exists=0)
 Returns top-level entry with name "vname" and default value "def".
 
EntrygetValue (const PIString &vname, const uchar def, bool *exists=0)
 Returns top-level entry with name "vname" and default value "def".
 
EntrygetValue (const PIString &vname, const ushort def, bool *exists=0)
 Returns top-level entry with name "vname" and default value "def".
 
EntrygetValue (const PIString &vname, const uint def, bool *exists=0)
 Returns top-level entry with name "vname" and default value "def".
 
EntrygetValue (const PIString &vname, const ulong def, bool *exists=0)
 Returns top-level entry with name "vname" and default value "def".
 
EntrygetValue (const PIString &vname, const float def, bool *exists=0)
 Returns top-level entry with name "vname" and default value "def".
 
EntrygetValue (const PIString &vname, const double def, bool *exists=0)
 Returns top-level entry with name "vname" and default value "def".
 
Branch getValues (const PIString &vname)
 Returns top-level entries with names with substrings "vname".
 
void setValue (const PIString &name, const PIString &value, const PIString &type="s", bool write=true)
 Set top-level entry with name "name" value to "value", type to "type" and if "write" immediate write to file. Add new entry if there is no suitable exists.
 
void setValue (const PIString &name, const PIStringList &value, bool write=true)
 Set top-level entry with name "name" value to "value", type to "l" and if "write" immediate write to file. Add new entry if there is no suitable exists.
 
void setValue (const PIString &name, const char *value, bool write=true)
 Set top-level entry with name "name" value to "value", type to "s" and if "write" immediate write to file. Add new entry if there is no suitable exists.
 
void setValue (const PIString &name, const bool value, bool write=true)
 Set top-level entry with name "name" value to "value", type to "b" and if "write" immediate write to file. Add new entry if there is no suitable exists.
 
void setValue (const PIString &name, const short value, bool write=true)
 Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists.
 
void setValue (const PIString &name, const int value, bool write=true)
 Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists.
 
void setValue (const PIString &name, const long value, bool write=true)
 Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists.
 
void setValue (const PIString &name, const uchar value, bool write=true)
 Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists.
 
void setValue (const PIString &name, const ushort value, bool write=true)
 Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists.
 
void setValue (const PIString &name, const uint value, bool write=true)
 Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists.
 
void setValue (const PIString &name, const ulong value, bool write=true)
 Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists.
 
void setValue (const PIString &name, const float value, bool write=true)
 Set top-level entry with name "name" value to "value", type to "f" and if "write" immediate write to file. Add new entry if there is no suitable exists.
 
void setValue (const PIString &name, const double value, bool write=true)
 Set top-level entry with name "name" value to "value", type to "f" and if "write" immediate write to file. Add new entry if there is no suitable exists.
 
EntryrootEntry ()
 Returns root entry.
 
int entriesCount () const
 Returns top-level entries count.
 
bool isEntryExists (const PIString &name) const
 Returns if top-level entry with name "name" exists.
 
Branch allTree ()
 Returns all top-level entries.
 
Branch allLeaves ()
 Returns all entries without children.
 
void clear ()
 Remove all tree and file content.
 
void readAll ()
 Parse file and build internal tree.
 
void writeAll ()
 Write all internal tree to file.
 
const PIStringdelimiter () const
 Returns current tree delimiter, default ".".
 
void setDelimiter (const PIString &d)
 Set current tree delimiter.
 
- Public Member Functions inherited from PIFile
 PIFile (const PIString &path=PIString(), DeviceMode mode=ReadWrite)
 Constructs a file with path "path" nad open mode "type".
 
void flush ()
 Immediate write all buffered data to disk.
 
void seek (llong position)
 Move read/write position to "position".
 
void seekToBegin ()
 Move read/write position to the begin of the file.
 
void seekToEnd ()
 Move read/write position to the end of the file.
 
void seekToLine (llong line)
 Move read/write position to text line number "line".
 
char readChar ()
 Read one char and return it.
 
PIString readLine ()
 Read one text line and return it.
 
llong readAll (void *data)
 Read all file content to "data" and return readed bytes count. Position leaved unchanged.
 
PIByteArray readAll (bool forceRead=false)
 Read all file content to byte array and return it. Position leaved unchanged.
 
void setPath (const PIString &path)
 Set file path to "path" and reopen file if need.
 
llong size ()
 Returns file size.
 
llong pos ()
 Returns read/write position.
 
bool isEnd ()
 Returns if position is at the end of file.
 
bool isEmpty ()
 Returns if file is empty.
 
int precision () const
 Returns float numbers write precision.
 
void setPrecision (int prec)
 Set float numbers write precision to "prec_" digits.
 
int read (void *read_to, int max_size)
 Read from file to "read_to" no more than "max_size" and return readed bytes count.
 
int write (const void *data, int max_size)
 Write to file "data" with size "max_size" and return written bytes count.
 
PIFilewriteBinary (const char v)
 Write to file binary content of "v".
 
PIFilewriteBinary (const short v)
 Write to file binary content of "v".
 
PIFilewriteBinary (const int v)
 Write to file binary content of "v".
 
PIFilewriteBinary (const long v)
 Write to file binary content of "v".
 
PIFilewriteBinary (const llong v)
 Write to file binary content of "v".
 
PIFilewriteBinary (const uchar v)
 Write to file binary content of "v".
 
PIFilewriteBinary (const ushort v)
 Write to file binary content of "v".
 
PIFilewriteBinary (const uint v)
 Write to file binary content of "v".
 
PIFilewriteBinary (const ulong v)
 Write to file binary content of "v".
 
PIFilewriteBinary (const ullong v)
 Write to file binary content of "v".
 
PIFilewriteBinary (const float v)
 Write to file binary content of "v".
 
PIFilewriteBinary (const double v)
 Write to file binary content of "v".
 
PIFileoperator<< (const char v)
 Write to file text representation of "v".
 
PIFileoperator<< (const PIString &v)
 Write to file string "v".
 
PIFileoperator<< (const PIByteArray &v)
 Write to file text representation of "v".
 
PIFileoperator<< (short v)
 Write to file text representation of "v".
 
PIFileoperator<< (int v)
 Write to file text representation of "v".
 
PIFileoperator<< (long v)
 Write to file text representation of "v".
 
PIFileoperator<< (llong v)
 Write to file text representation of "v".
 
PIFileoperator<< (uchar v)
 Write to file text representation of "v".
 
PIFileoperator<< (ushort v)
 Write to file text representation of "v".
 
PIFileoperator<< (uint v)
 Write to file text representation of "v".
 
PIFileoperator<< (ulong v)
 Write to file text representation of "v".
 
PIFileoperator<< (ullong v)
 Write to file text representation of "v".
 
PIFileoperator<< (float v)
 Write to file text representation of "v" with precision precision()
 
PIFileoperator<< (double v)
 Write to file text representation of "v" with precision precision()
 
PIFileoperator>> (char &v)
 Read from file text representation of "v".
 
PIFileoperator>> (short &v)
 Read from file text representation of "v".
 
PIFileoperator>> (int &v)
 Read from file text representation of "v".
 
PIFileoperator>> (long &v)
 Read from file text representation of "v".
 
PIFileoperator>> (llong &v)
 Read from file text representation of "v".
 
PIFileoperator>> (uchar &v)
 Read from file text representation of "v".
 
PIFileoperator>> (ushort &v)
 Read from file text representation of "v".
 
PIFileoperator>> (uint &v)
 Read from file text representation of "v".
 
PIFileoperator>> (ulong &v)
 Read from file text representation of "v".
 
PIFileoperator>> (ullong &v)
 Read from file text representation of "v".
 
PIFileoperator>> (float &v)
 Read from file text representation of "v".
 
PIFileoperator>> (double &v)
 Read from file text representation of "v".
 
PIString constructFullPath () const
 Reimplement to construct full unambiguous string, describes this device, default returns path()
 
void clear ()
 Raise on new TCP connection received.
 
void remove ()
 Remove file.
 
void resize (llong new_size)
 Resize file to "new_size" with "fill" filling.
 
void resize (llong new_size, uchar fill)
 Resize file to "new_size" with "fill" filling.
 
- Public Member Functions inherited from PIIODevice
 PIIODevice ()
 Constructs a empty PIIODevice.
 
 PIIODevice (const PIString &path, DeviceMode mode=ReadWrite)
 Constructs a PIIODevice with path and mode. More...
 
DeviceMode mode () const
 Current open mode of device.
 
PIString path () const
 Current path of device.
 
void setPath (const PIString &path)
 Set path of device.
 
bool isReadable () const
 Return true if mode is ReadOnly or ReadWrite.
 
bool isWriteable () const
 Return true if mode is WriteOnly or ReadWrite.
 
bool isOpened () const
 Return true if device is successfully opened.
 
bool isClosed () const
 Return true if device is closed.
 
bool canRead () const
 Return true if device can read now.
 
bool canWrite () const
 Return true if device can write now.
 
void setReopenEnabled (bool yes=true)
 Set execution of open enabled while threaded read on closed device.
 
void setReopenTimeout (int msecs)
 Set timeout in milliseconds between open tryings if reopen is enabled.
 
bool isReopenEnabled () const
 Return reopen enable.
 
int reopenTimeout ()
 Return reopen timeout.
 
void setThreadedReadSlot (ReadRetFunc func)
 Set "threaded read slot". More...
 
void setThreadedReadData (void *d)
 Set custom data that will be passed to "threaded read slot".
 
void setThreadedReadBufferSize (int new_size)
 Set size of threaded read buffer. More...
 
int threadedReadBufferSize () const
 Return size of threaded read buffer.
 
const uchar * threadedReadBuffer () const
 Return content of threaded read buffer.
 
void * threadedReadData () const
 Return custom data that will be passed to "threaded read slot".
 
bool isThreadedRead () const
 Return true if threaded read is started.
 
void startThreadedRead ()
 Start threaded read.
 
void startThreadedRead (ReadRetFunc func)
 Start threaded read and assign "threaded read slot" to "func".
 
void stopThreadedRead ()
 Stop threaded read.
 
bool isThreadedWrite () const
 Return true if threaded write is started.
 
void startThreadedWrite ()
 Start threaded write.
 
void stopThreadedWrite ()
 Stop threaded write.
 
void clearThreadedWriteQueue ()
 Clear threaded write task queue.
 
void start ()
 Start both threaded read and threaded write.
 
void stop (bool wait=false)
 Stop both threaded read and threaded write and if "wait" block until both threads are stop.
 
PIByteArray read (int max_size)
 Read from device maximum "max_size" bytes and return them as PIByteArray.
 
PIByteArray readForTime (double timeout_ms)
 Read from device for "timeout_ms" milliseconds and return readed data as PIByteArray. Timeout should to be greater than 0.
 
int write (const PIByteArray &data)
 Write "data" to device.
 
ullong writeThreaded (const void *data, int max_size)
 Add task to threaded write queue and return task ID.
 
ullong writeThreaded (const PIByteArray &data)
 Add task to threaded write queue and return task ID.
 
bool configure (const PIString &config_file, const PIString &section, bool parent_section=false)
 Configure device from section "section" of file "config_file", if "parent_section" parent section also will be read.
 
bool open ()
 Open device.
 
bool open (const PIString &_path)
 Open device with path "path".
 
bool open (const DeviceMode &_mode)
 Open device with mode "mode".
 
bool open (const PIString &_path, const DeviceMode &_mode)
 Open device with path "path" and mode "mode".
 
bool close ()
 Close device.
 
bool initialize ()
 Initialize device.
 
void opened ()
 Raise if succesfull open.
 
void closed ()
 Raise if succesfull close.
 
void threadedReadEvent (uchar *readed, int size)
 Raise if read thread succesfull read some data.
 
void threadedWriteEvent (ullong id, int written_size)
 Raise if write thread succesfull write some data of task with ID "id".
 
- Public Member Functions inherited from PIThread
 PIThread (void *data, ThreadFunc func, bool startNow=false, int timer_delay=-1)
 Contructs thread with custom data "data", external function "func" and main cycle delay "timer_delay".
 
 PIThread (bool startNow=false, int timer_delay=-1)
 Contructs thread with main cycle delay "timer_delay".
 
void setData (void *d)
 Set common data passed to external function.
 
void setSlot (ThreadFunc func)
 Set external function that will be executed after every run()
 
void setPriority (PIThread::Priority prior)
 Set priority of thread.
 
PIThread::Priority priority () const
 Return priority of thread.
 
bool isRunning () const
 Return true if thread is running.
 
void needLockRun (bool need)
 Set necessity of lock every run with internal mutex.
 
PIMutexmutex ()
 Return internal mutex.
 
bool start (int timer_delay)
 Start thread. More...
 
bool start (ThreadFunc func, int timer_delay)
 Start thread. More...
 
bool startOnce ()
 Start thread without internal loop. More...
 
bool startOnce (ThreadFunc func)
 Start thread without internal loop. More...
 
void stop (bool wait)
 Stop thread. More...
 
void terminate ()
 Strongly stop thread. More...
 
bool waitForStart (int timeout_msecs)
 Wait for thread start. More...
 
bool waitForFinish (int timeout_msecs)
 Wait for thread finish. More...
 
void lock ()
 Lock internal mutex.
 
void unlock ()
 Unlock internal mutex.
 
void started ()
 Raise on thread start.
 
void stopped ()
 Raise on thread stop.
 
- Public Member Functions inherited from PIObject
 PIObject (const PIString &name=PIString())
 Contructs PIObject with name "name".
 
PIString name () const
 Returns object name.
 
virtual const char * className () const
 Returns object class name.
 
bool debug () const
 Return if debug of this object is active.
 
void setName (const PIString &name)
 Set object name.
 
void setDebug (bool debug)
 Set object debug active.
 
const PIMap< PIString,
PIVariant > & 
properties () const
 Returns properties of the object.
 
int propertiesCount () const
 Returns properties count of the object.
 
PIVariant property (const PIString &name) const
 Returns property with name "name".
 
void setProperty (const PIString &name, const PIVariant &value)
 Set property with name "name" to "value". If there is no such property in object it will be added.
 
bool isPropertyExists (const PIString &name) const
 Returns if property with name "name" exists.
 

Additional Inherited Members

- Public Types inherited from PIIODevice
enum  DeviceMode { ReadOnly = 0x01, WriteOnly = 0x02, ReadWrite = 0x03 }
 Open modes for PIIODevice. More...
 
- Public Types inherited from PIThread
enum  Priority {
  piHighest, piHigh, piNormal, piLow,
  piLowerst
}
 Priority of thread. More...
 
- Static Public Member Functions inherited from PIFile
static PIFile openTemporary (PIIODevice::DeviceMode mode=PIIODevice::ReadWrite)
 Returns not opened temporary file with open mode "mode".
 
static bool isExists (const PIString &path)
 Returns if file with path "path" does exists.
 
static bool remove (const PIString &path)
 Remove file with path "path" and returns if remove was successful.
 
- Static Public Member Functions inherited from PIIODevice
static PIIODevicecreateFromFullPath (const PIString &full_path)
 Try to determine suitable device, create new one, configure it with configureFromFullPath() and returns it. More...
 
- Static Public Member Functions inherited from PIObject
static void piDisconnect (PIObject *src, const PIString &sig)
 Disconnect object "src" from all connections with event name "sig".
 
static void piDisconnect (PIObject *src)
 Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
 
static PIObjectfindByName (const PIString &name)
 Returns PIObject* with name "name" or 0, if there is no object found.
 
- Public Attributes inherited from PIIODevice
bool reopenEnabled
 setReopenEnabled, default "true"
 
int reopenTimeout
 setReopenTimeout in ms, default 1000
 
int threadedReadBufferSize
 setThreadedReadBufferSize in bytes, default 4096
 
- Protected Member Functions inherited from PIFile
PIString fullPathPrefix () const
 Reimplement to construct full unambiguous string prefix. Creating devices by unambiguous string.
 
void configureFromFullPath (const PIString &full_path)
 Reimplement to configure your device with parameters of full unambiguous string. Default implementation does nothing.
 
bool openDevice ()
 Reimplement to open device, return value will be set to "opened_" variable.
 
bool closeDevice ()
 Reimplement to close device, inverse return value will be set to "opened_" variable.
 
- Protected Member Functions inherited from PIIODevice
virtual bool init ()
 Function executed before first openDevice() or from constructor.
 
virtual bool configureDevice (const void *e_main, const void *e_parent=0)
 Reimplement to configure device from entries "e_main" and "e_parent", cast arguments to PIConfig::Entry*.
 
virtual bool threadedRead (uchar *readed, int size)
 Function executed when thread read some data, default implementation execute external slot "ret_func_".
 
- Protected Member Functions inherited from PIObject
PIObjectemitter () const
 Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
 
virtual void propertyChanged (const PIString &name)
 Virtual function executes after property with name "name" has been changed.
 

Detailed Description

Configuration file.

This class provide handle access to configuration file.

Synopsis

PIConfig reads configuration file and create internal dendritic representation of all entries of this file. You can easily read some values and write new.

piconfig.png

PIConfig supports also INI-style files with sections "[section]". In this case line with section name interpret as prefix to the next lines. For example, these configs are equal:

* ser.device = /dev/ttyS0
* ser.speed = 115200
* debug = true
*
* [ser]
* device = /dev/ttyS0
* speed = 115200
* []
* debug = true
*

Concepts

Each node of internal tree has type PIConfig::Entry. PIConfig has one root element rootEntry(). Any entry of configuration file is a child of this element.