00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118 #ifndef _PCONFIG
00119 #define _PCONFIG
00120
00121 #ifdef P_USE_PRAGMA
00122 #pragma interface
00123 #endif
00124
00125 #include "ptbuildopts.h"
00126 #ifdef P_CONFIG_FILE
00127
00128 class PXConfig;
00129
00150 class PConfig : public PObject
00151 {
00152 PCLASSINFO(PConfig, PObject);
00153
00154 public:
00159 enum Source {
00164 Environment,
00170 System,
00179 Application,
00180 NumSources
00181 };
00182
00188 PConfig(
00189 Source src = Application
00190 );
00192 PConfig(
00193 Source src,
00194 const PString & appname
00195 );
00197 PConfig(
00198 Source src,
00199 const PString & appname,
00200 const PString & manuf
00201 );
00203 PConfig(
00204 const PString & section,
00205 Source src = Application
00206 );
00208 PConfig(
00209 const PString & section,
00210 Source src,
00211 const PString & appname
00212 );
00214 PConfig(
00215 const PString & section,
00216 Source src,
00217 const PString & appname,
00218 const PString & manuf
00219 );
00221 PConfig(
00222 const PFilePath & filename,
00223 const PString & section
00224 );
00226
00236 virtual void SetDefaultSection(
00237 const PString & section
00238 );
00239
00249 virtual PString GetDefaultSection() const;
00250
00259 virtual PStringList GetSections() const;
00260
00266 virtual PStringList GetKeys() const;
00268 virtual PStringList GetKeys(
00269 const PString & section
00270 ) const;
00271
00277 virtual PStringToString GetAllKeyValues() const;
00279 virtual PStringToString GetAllKeyValues(
00280 const PString & section
00281 ) const;
00282
00283
00290 virtual void DeleteSection();
00292 virtual void DeleteSection(
00293 const PString & section
00294 );
00295
00304 virtual void DeleteKey(
00305 const PString & key
00306 );
00308 virtual void DeleteKey(
00309 const PString & section,
00310 const PString & key
00311 );
00312
00321 virtual BOOL HasKey(
00322 const PString & key
00323 ) const;
00325 virtual BOOL HasKey(
00326 const PString & section,
00327 const PString & key
00328 ) const;
00330
00343 virtual PString GetString(
00344 const PString & key
00345 ) const;
00347 virtual PString GetString(
00348 const PString & key,
00349 const PString & dflt
00350 ) const;
00352 virtual PString GetString(
00353 const PString & section,
00354 const PString & key,
00355 const PString & dflt
00356 ) const;
00357
00361 virtual void SetString(
00362 const PString & key,
00363 const PString & value
00364 );
00366 virtual void SetString(
00367 const PString & section,
00368 const PString & key,
00369 const PString & value
00370 );
00371
00372
00389 virtual BOOL GetBoolean(
00390 const PString & key,
00391 BOOL dflt = FALSE
00392 ) const;
00394 virtual BOOL GetBoolean(
00395 const PString & section,
00396 const PString & key,
00397 BOOL dflt = FALSE
00398 ) const;
00399
00406 virtual void SetBoolean(
00407 const PString & key,
00408 BOOL value
00409 );
00411 virtual void SetBoolean(
00412 const PString & section,
00413 const PString & key,
00414 BOOL value
00415 );
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427 virtual long GetInteger(
00428 const PString & key,
00429 long dflt = 0
00430 ) const;
00431
00432 virtual long GetInteger(
00433 const PString & section,
00434 const PString & key,
00435 long dflt = 0
00436 ) const;
00437
00444 virtual void SetInteger(
00445 const PString & key,
00446 long value
00447 );
00449 virtual void SetInteger(
00450 const PString & section,
00451 const PString & key,
00452 long value
00453 );
00454
00455
00465 virtual PInt64 GetInt64(
00466 const PString & key,
00467 PInt64 dflt = 0
00468 ) const;
00470 virtual PInt64 GetInt64(
00471 const PString & section,
00472 const PString & key,
00473 PInt64 dflt = 0
00474 ) const;
00475
00482 virtual void SetInt64(
00483 const PString & key,
00484 PInt64 value
00485 );
00487 virtual void SetInt64(
00488 const PString & section,
00489 const PString & key,
00490 PInt64 value
00491 );
00492
00493
00503 virtual double GetReal(
00504 const PString & key,
00505 double dflt = 0
00506 ) const;
00508 virtual double GetReal(
00509 const PString & section,
00510 const PString & key,
00511 double dflt = 0
00512 ) const;
00513
00521 virtual void SetReal(
00522 const PString & key,
00523 double value
00524 );
00526 virtual void SetReal(
00527 const PString & section,
00528 const PString & key,
00529 double value
00530 );
00531
00541 virtual PTime GetTime(
00542 const PString & key
00543 ) const;
00545 virtual PTime GetTime(
00546 const PString & key,
00547 const PTime & dflt
00548 ) const;
00550 virtual PTime GetTime(
00551 const PString & section,
00552 const PString & key
00553 ) const;
00555 virtual PTime GetTime(
00556 const PString & section,
00557 const PString & key,
00558 const PTime & dflt
00559 ) const;
00560
00564 virtual void SetTime(
00565 const PString & key,
00566 const PTime & value
00567 );
00569 virtual void SetTime(
00570 const PString & section,
00571 const PString & key,
00572 const PTime & value
00573 );
00575
00576
00577 protected:
00578
00580 PString defaultSection;
00581
00582
00583 private:
00584
00585 void Construct(
00586 Source src,
00587 const PString & appname,
00588 const PString & manuf
00589 );
00590 void Construct(
00591 const PFilePath & filename
00592 );
00593
00594
00595
00596 #ifdef _WIN32
00597 #include "msos/ptlib/config.h"
00598 #else
00599 #include "unix/ptlib/config.h"
00600 #endif
00601 };
00602
00603 #endif // P_CONFIG_FILE
00604
00605 #endif
00606
00607