00001
00002
00003
00004
00005
00006
00007 #ifndef __UNICONFINI_H
00008 #define __UNICONFINI_H
00009
00010 #include "unitempgen.h"
00011 #include "wvlog.h"
00012 #include <sys/stat.h>
00013
00014 class WvFile;
00015
00025 class UniIniGen : public UniTempGen
00026 {
00027 public:
00028 typedef WvCallback<void> SaveCallback;
00029
00030 private:
00031 WvString filename;
00032 int create_mode;
00033 WvLog log;
00034 struct stat old_st;
00035 SaveCallback save_cb;
00036
00037 public:
00042 UniIniGen(WvStringParm filename, int _create_mode = 0666,
00043 SaveCallback _save_cb = SaveCallback());
00044
00045 virtual ~UniIniGen();
00046
00047
00048
00049 virtual void commit();
00050 virtual bool refresh();
00051 virtual void set(const UniConfKey &key, WvStringParm value);
00052
00053 private:
00054 #ifndef _WIN32
00055
00056 bool commit_atomic(WvStringParm real_filename);
00057 #endif
00058
00059 void save(WvStream &file, UniConfValueTree &parent);
00060 bool refreshcomparator(const UniConfValueTree *a,
00061 const UniConfValueTree *b, void *userdata);
00062 };
00063
00064
00065 #endif // __UNICONFINI_H