git-svn-id: svn://db.shs.com.ru/libs@164 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2017-02-22 13:00:46 +00:00
parent 02e0bddd09
commit a74150ff71
14 changed files with 62 additions and 31 deletions

View File

@@ -141,8 +141,8 @@ bool CDType::calculate(PIEvaluator * e, PIVector<const CDType * > stack) {
}
PIVector<CDType::Enumerator> CDType::parseEnumComment(PIString c) {
PIVector<CDType::Enumerator> ret;
PIVariantTypes::Enum CDType::parseEnumComment(PIString c) {
PIVariantTypes::Enum ret;
if (c.isEmpty()) return ret;
if (type_ == "e") {
PIStringList sl = c.inBrackets('{', '}').split(",");
@@ -157,11 +157,11 @@ PIVector<CDType::Enumerator> CDType::parseEnumComment(PIString c) {
s.cutLeft(ind + 1).trim();
}
}
ret << CDType::Enumerator(cval, s);
ret << PIVariantTypes::Enumerator(cval, s);
++cval;
}
}
piCout << c << "=" << ret;
//piCout << c << "=" << ret;
return ret;
}
@@ -317,11 +317,11 @@ void CDSection::write(PIIODevice * d, const PIString & prefix) {
d->write(l.toUTF8());
l.clear(); l << ck.index() << ".v = " << ck.value() << " #" << ck.type() << " " << ck.name() << " \n";
d->write(l.toUTF8());
if (!ck.enumValues().isEmpty()) {
if (!ck.enumValues().enum_list.isEmpty()) {
l.clear(); l << ck.index() << ".ev = {";
//PIVector<CDType::Enumerator> el = ck.enumValues();
piForeachC (CDType::Enumerator & e, ck.enumValues())
l << e.first << " - " << e.second << ", ";
piForeachC (PIVariantTypes::Enumerator & e, ck.enumValues().enum_list)
l << e.value << " - " << e.name << ", ";
l.cutRight(2);
l << "} \n";
d->write(l.toUTF8());
@@ -497,11 +497,11 @@ PIVector<CDType * > CDSection::children(bool recursive) const {
}
PIVector<CDType::Enumerator> CDSection::enumValues() const {
PIVector<CDType::Enumerator> ret;
PIVariantTypes::Enum CDSection::enumValues() const {
PIVariantTypes::Enum ret;
PIMap<int, CDType>::const_iterator i;
for (i = k.begin(); i != k.end(); ++i)
ret << CDType::Enumerator(i.key(), i.value().name());
ret << PIVariantTypes::Enumerator(i.key(), i.value().name());
return ret;
}

View File

@@ -3,6 +3,7 @@
#include "pistring.h"
#include "pimap.h"
#include "pivarianttypes.h"
class PIIODevice;
class PIEvaluator;
@@ -18,7 +19,6 @@ class CDType {
friend class CDSection;
public:
enum cdT {cdNull, cdK, cdX, cdC};
typedef PIPair<int, PIString> Enumerator;
CDType();
CDType(int i, const PIString & n, const PIString & t, const PIString & v, const PIString & f, const PIString & c, cdT cd_t);
int index() const {return index_;}
@@ -35,19 +35,19 @@ public:
void setFormula(const PIString & formula);
void setComment(const PIString & comment) {comment_ = comment;}
operator double() const {return value_d;}
const PIVector<CDType::Enumerator> & enumValues() const {return enum_values;}
void setEnumValues(const PIVector<CDType::Enumerator> & ev) {enum_values = ev;}
const PIVariantTypes::Enum & enumValues() const {return enum_values;}
void setEnumValues(const PIVariantTypes::Enum & ev) {enum_values = ev;}
const PIString & errorString() const {return error_;}
PIDeque<int> path() const {return path_;}
protected:
bool calculate(PIEvaluator * e, PIVector<const CDType * > stack = PIVector<const CDType * >());
PIVector<CDType::Enumerator> parseEnumComment(PIString c);
PIVariantTypes::Enum parseEnumComment(PIString c);
cdT cd_type_;
int index_;
PIString name_, type_;
PIString value_s, formula_, comment_, error_;
PIVector<CDType::Enumerator> enum_values;
PIVariantTypes::Enum enum_values;
CDSection * parent;
PIDeque<int> path_;
double value_d;
@@ -85,7 +85,7 @@ public:
void calculate();
void makePath(PIDeque<int> p = PIDeque<int>());
PIVector<CDType * > children(bool recursive = true) const;
PIVector<CDType::Enumerator> enumValues() const;
PIVariantTypes::Enum enumValues() const;
PIString name;
PIString alias;