version 2.98.0
remove PIFile::readLine() partially migrate PIConfig to text stream add more "override"
This commit is contained in:
@@ -267,33 +267,19 @@ void PIConfig::Entry::piCoutt(PICout s, const PIString & p) const {
|
||||
|
||||
PIConfig::PIConfig(const PIString & path, PIIODevice::DeviceMode mode) {
|
||||
_init();
|
||||
own_dev = true;
|
||||
dev = new PIFile(path, mode);
|
||||
if (!dev->isOpened())
|
||||
dev->open(path, mode);
|
||||
incdirs << PIFile::fileInfo(path).dir();
|
||||
parse();
|
||||
open(path, mode);
|
||||
}
|
||||
|
||||
|
||||
PIConfig::PIConfig(PIString * string, PIIODevice::DeviceMode mode) {
|
||||
_init();
|
||||
own_dev = true;
|
||||
dev = new PIIOString(string, mode);
|
||||
parse();
|
||||
open(string, mode);
|
||||
}
|
||||
|
||||
|
||||
PIConfig::PIConfig(PIIODevice * device, PIIODevice::DeviceMode mode) {
|
||||
_init();
|
||||
own_dev = false;
|
||||
dev = device;
|
||||
if (dev) {
|
||||
dev->open(mode);
|
||||
if (PIString(dev->className()) == "PIFile")
|
||||
incdirs << PIFile::fileInfo(((PIFile*)dev)->path()).dir();
|
||||
}
|
||||
parse();
|
||||
open(device, mode);
|
||||
}
|
||||
|
||||
|
||||
@@ -317,43 +303,57 @@ PIConfig::PIConfig(const PIString & path, PIStringList dirs) {
|
||||
dev = 0;
|
||||
return;
|
||||
}
|
||||
_setupDev();
|
||||
parse();
|
||||
}
|
||||
|
||||
|
||||
PIConfig::~PIConfig() {
|
||||
root.deleteBranch();
|
||||
if (own_dev && dev) delete dev;
|
||||
dev = 0;
|
||||
piForeach (PIConfig * c, inc_devs)
|
||||
delete c;
|
||||
inc_devs.clear();
|
||||
includes.clear();
|
||||
_destroy();
|
||||
}
|
||||
|
||||
|
||||
bool PIConfig::open(const PIString & path, PIIODevice::DeviceMode mode) {
|
||||
if (own_dev && dev) delete dev;
|
||||
_destroy();
|
||||
incdirs << PIFile::fileInfo(path).dir();
|
||||
own_dev = true;
|
||||
dev = new PIFile(path, mode);
|
||||
if (!dev->isOpened())
|
||||
dev->open(path, mode);
|
||||
_setupDev();
|
||||
parse();
|
||||
return dev->isOpened();
|
||||
}
|
||||
|
||||
|
||||
bool PIConfig::open(PIString * string, PIIODevice::DeviceMode mode) {
|
||||
if (own_dev && dev) delete dev;
|
||||
_destroy();
|
||||
own_dev = true;
|
||||
dev = new PIIOString(string, mode);
|
||||
_setupDev();
|
||||
parse();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool PIConfig::open(PIIODevice * device, PIIODevice::DeviceMode mode) {
|
||||
_destroy();
|
||||
own_dev = false;
|
||||
dev = device;
|
||||
if (dev) {
|
||||
dev->open(mode);
|
||||
if (dev->isTypeOf<PIFile>())
|
||||
incdirs << PIFile::fileInfo(((PIFile*)dev)->path()).dir();
|
||||
}
|
||||
_setupDev();
|
||||
parse();
|
||||
if (device) return device->isOpened();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void PIConfig::_init() {
|
||||
internal = false;
|
||||
delim = PIStringAscii(".");
|
||||
root.delim = delim;
|
||||
empty.delim = delim;
|
||||
@@ -361,6 +361,26 @@ void PIConfig::_init() {
|
||||
}
|
||||
|
||||
|
||||
void PIConfig::_destroy() {
|
||||
if (stream) {
|
||||
delete stream;
|
||||
stream = nullptr;
|
||||
}
|
||||
if (own_dev && dev) delete dev;
|
||||
dev = nullptr;
|
||||
piForeach (PIConfig * c, inc_devs)
|
||||
delete c;
|
||||
inc_devs.clear();
|
||||
}
|
||||
|
||||
|
||||
void PIConfig::_setupDev() {
|
||||
if (!dev) return;
|
||||
stream = new PIIOTextStream(dev);
|
||||
stream->setEncoding(PIIOTextStream::UTF8);
|
||||
}
|
||||
|
||||
|
||||
void PIConfig::_clearDev() {
|
||||
if (!dev) return;
|
||||
if (PIString(dev->className()) == "PIFile") {((PIFile*)dev)->clear(); return;}
|
||||
@@ -375,10 +395,8 @@ void PIConfig::_flushDev() {
|
||||
|
||||
|
||||
bool PIConfig::_isEndDev() {
|
||||
if (!dev) return true;
|
||||
if (PIString(dev->className()) == "PIFile") {return ((PIFile*)dev)->isEnd();}
|
||||
if (PIString(dev->className()) == "PIIOString") {return ((PIIOString*)dev)->isEnd();}
|
||||
return true;
|
||||
if (!stream) return true;
|
||||
return stream->isEnd();
|
||||
}
|
||||
|
||||
|
||||
@@ -390,19 +408,15 @@ void PIConfig::_seekToBeginDev() {
|
||||
|
||||
|
||||
PIString PIConfig::_readLineDev() {
|
||||
if (!dev) return PIString();
|
||||
if (PIString(dev->className()) == "PIFile") {return ((PIFile*)dev)->readLine();}
|
||||
if (PIString(dev->className()) == "PIIOString") {return ((PIIOString*)dev)->readLine();}
|
||||
return PIString();
|
||||
if (!stream) return PIString();
|
||||
return stream->readLine();
|
||||
}
|
||||
|
||||
|
||||
void PIConfig::_writeDev(const PIString & l) {
|
||||
//piCout << "write \"" << l << "\"";
|
||||
if (!dev) return;
|
||||
if (PIString(dev->className()) == "PIFile") {((PIFile*)dev)->write(l.toUTF8()); return;}
|
||||
if (PIString(dev->className()) == "PIIOString") {((PIIOString*)dev)->writeString(l); return;}
|
||||
dev->write(l.toByteArray());
|
||||
if (!stream) return;
|
||||
stream->append(l);
|
||||
}
|
||||
|
||||
|
||||
@@ -799,7 +813,6 @@ void PIConfig::parse() {
|
||||
includes << iconf << iconf->includes;
|
||||
updateIncludes();
|
||||
}
|
||||
//piCout << "includes" << includes;
|
||||
other.back() = src;
|
||||
} else {
|
||||
name = tree.back();
|
||||
|
||||
Reference in New Issue
Block a user