150 lines
3.0 KiB
C++
150 lines
3.0 KiB
C++
#include "cdutils_k.h"
|
|
#include "cdutils_core.h"
|
|
#include "piconfig.h"
|
|
#include "pifile.h"
|
|
|
|
using namespace CDUtils;
|
|
|
|
|
|
KInterface::KInterface() {
|
|
core = CDCore::instance();
|
|
//piCoutObj << core;
|
|
k_file = PIStringAscii("k.dat");
|
|
k_file_size = 0;
|
|
CONNECTU(core, K_Sended, this, sended);
|
|
CONNECTU(core, K_Received, this, received);
|
|
CONNECTU(core, K_KeepNamesRequest, this, keepNamesRequest);
|
|
}
|
|
|
|
|
|
bool KInterface::test(int v) {
|
|
return core->k_.test(v);
|
|
}
|
|
|
|
|
|
CDType & KInterface::operator [](int v) {
|
|
return core->k_[v];
|
|
}
|
|
|
|
|
|
const CDType KInterface::operator [](int v) const {
|
|
return core->k_[v];
|
|
}
|
|
|
|
|
|
CDSection & KInterface::section(int v) {
|
|
CDSection & ret = core->k_.section(v);
|
|
piCout << "[get section]" << v << ret.name;
|
|
return ret;
|
|
}
|
|
|
|
const CDSection KInterface::section(int v) const {
|
|
return core->k_.section(v);
|
|
}
|
|
|
|
|
|
//CDSection & KInterface::section(const PIDeque<int> &path) {
|
|
// piCout << "error"; return root();
|
|
// PIDeque<int> spath = path;
|
|
// CDSection & rs = core->k_;
|
|
// CDSection trs = rs;
|
|
// piCout << "[get section from path]" << path << rs.name;
|
|
// PIString tab;
|
|
// while (!spath.isEmpty()) {
|
|
// piCout << "!1" << tab << rs.alias << rs.name;
|
|
// rs = rs.section(spath.take_front());
|
|
// tab += " ";
|
|
//// rs = trs;
|
|
// }
|
|
// piCout << "!2" << tab << rs.alias << rs.name;
|
|
// return rs;
|
|
//}
|
|
|
|
|
|
const CDSection KInterface::section(const PIDeque<int> &path) const {
|
|
PIDeque<int> spath = path;
|
|
CDSection rs = core->k_;
|
|
CDSection trs = rs;
|
|
//piCout << "[get section from path]" << path << rs.name;
|
|
PIString tab;
|
|
while (!spath.isEmpty()) {
|
|
//piCout << "!1" << tab << rs.alias << rs.name;
|
|
trs = rs.section(spath.take_front());
|
|
tab += " ";
|
|
rs = trs;
|
|
}
|
|
//piCout << "!2" << tab << rs.alias << rs.name;
|
|
return rs;
|
|
}
|
|
|
|
|
|
CDSection & KInterface::root() {
|
|
piCout << "[root]" << core->k_.name;
|
|
return core->k_;
|
|
}
|
|
|
|
|
|
const CDSection KInterface::root() const {
|
|
return core->k_;
|
|
}
|
|
|
|
|
|
int KInterface::count(bool recursive) const {
|
|
return core->k_.count(recursive);
|
|
}
|
|
|
|
|
|
void KInterface::send() {
|
|
core->K_Send();
|
|
}
|
|
|
|
void KInterface::request() {
|
|
core->K_Request();
|
|
}
|
|
|
|
|
|
bool KInterface::configure(const PIString & config, const PIString & sect) {
|
|
PIConfig conf(config, PIIODevice::ReadOnly);
|
|
PIConfig::Entry & e(conf.getValue(sect));
|
|
bool ret = false;
|
|
k_file = e.getValue("file", "k.dat", &ret);
|
|
return ret;
|
|
}
|
|
|
|
|
|
void KInterface::write(PIIODevice * d) {
|
|
core->k_write(d);
|
|
}
|
|
|
|
|
|
void KInterface::read(PIIODevice * d) {
|
|
core->k_read(d);
|
|
}
|
|
|
|
|
|
void KInterface::parse(PIIODevice * d) {
|
|
core->k_parse(d);
|
|
}
|
|
|
|
|
|
void KInterface::update(PIIODevice * d) {
|
|
core->k_update(d);
|
|
}
|
|
|
|
|
|
void KInterface::readFile() {
|
|
if (k_file.isEmpty()) return;
|
|
PIFile f(k_file, PIIODevice::ReadOnly);
|
|
read(&f);
|
|
k_file_size = f.size();
|
|
}
|
|
|
|
|
|
void KInterface::writeFile() {
|
|
if (k_file.isEmpty()) return;
|
|
PIFile f(k_file, PIIODevice::ReadWrite);
|
|
f.clear();
|
|
write(&f);
|
|
k_file_size = f.size();
|
|
}
|