Commit 3a224b6a authored by Pavel Vainerman's avatar Pavel Vainerman

(2.0): - Небольшая оптимизация по работе со строковыми параметрами. - Устранил…

(2.0): - Небольшая оптимизация по работе со строковыми параметрами. - Устранил две небольших утечки памяти (пойманных valgrind-ом)
parent 33621363
...@@ -40,14 +40,14 @@ class ObjectIndex ...@@ -40,14 +40,14 @@ class ObjectIndex
// info // info
virtual const ObjectInfo* getObjectInfo( const ObjectId )=0; virtual const ObjectInfo* getObjectInfo( const ObjectId )=0;
virtual const ObjectInfo* getObjectInfo( const std::string name )=0; virtual const ObjectInfo* getObjectInfo( const std::string& name )=0;
// создание полного имени в репозитории по паре имя:узел // создание полного имени в репозитории по паре имя:узел
static std::string mkRepName( const std::string repname, const std::string nodename ); static std::string mkRepName( const std::string& repname, const std::string& nodename );
// создание имени узла по реальному и виртуальному // создание имени узла по реальному и виртуальному
static std::string mkFullNodeName( const std::string realnode, const std::string virtnode ); static std::string mkFullNodeName( const std::string& realnode, const std::string& virtnode );
// получить имя для регистрации в репозитории (т.е. без секции) // получить имя для регистрации в репозитории (т.е. без секции)
static std::string getBaseName( const std::string fname ); static std::string getBaseName( const std::string& fname );
// object id // object id
virtual ObjectId getIdByName(const std::string& name)=0; virtual ObjectId getIdByName(const std::string& name)=0;
......
...@@ -46,7 +46,7 @@ class ObjectIndex_Array: ...@@ -46,7 +46,7 @@ class ObjectIndex_Array:
virtual const ObjectInfo* getObjectInfo(const ObjectId); virtual const ObjectInfo* getObjectInfo(const ObjectId);
virtual const ObjectInfo* getObjectInfo( const std::string name ); virtual const ObjectInfo* getObjectInfo( const std::string& name );
virtual ObjectId getIdByName(const std::string& name); virtual ObjectId getIdByName(const std::string& name);
virtual std::string getMapName(const ObjectId id); virtual std::string getMapName(const ObjectId id);
virtual std::string getTextName(const ObjectId id); virtual std::string getTextName(const ObjectId id);
......
...@@ -41,23 +41,23 @@ class ObjectIndex_XML: ...@@ -41,23 +41,23 @@ class ObjectIndex_XML:
public ObjectIndex public ObjectIndex
{ {
public: public:
ObjectIndex_XML(const std::string xmlfile, int minSize=1000 ); ObjectIndex_XML(const std::string& xmlfile, int minSize=1000 );
ObjectIndex_XML(UniXML& xml, int minSize=1000 ); ObjectIndex_XML(UniXML& xml, int minSize=1000 );
virtual ~ObjectIndex_XML(); virtual ~ObjectIndex_XML();
virtual const UniSetTypes::ObjectInfo* getObjectInfo(const ObjectId); virtual const UniSetTypes::ObjectInfo* getObjectInfo(const ObjectId);
virtual const UniSetTypes::ObjectInfo* getObjectInfo( const std::string name ); virtual const UniSetTypes::ObjectInfo* getObjectInfo( const std::string& name );
virtual ObjectId getIdByName(const std::string& name); virtual ObjectId getIdByName(const std::string& name);
virtual std::string getMapName(const ObjectId id); virtual std::string getMapName(const ObjectId id);
virtual std::string getTextName(const ObjectId id); virtual std::string getTextName(const ObjectId id);
virtual std::ostream& printMap(std::ostream& os); virtual std::ostream& printMap(std::ostream& os);
friend std::ostream& operator<<(std::ostream& os, ObjectIndex_XML& oi ); friend std::ostream& operator<<(std::ostream& os, ObjectIndex_XML& oi );
protected: protected:
virtual void build(UniXML& xml); virtual void build(UniXML& xml);
unsigned int read_section( UniXML& xml, const std::string sec, unsigned int ind ); unsigned int read_section( UniXML& xml, const std::string& sec, unsigned int ind );
unsigned int read_nodes( UniXML& xml, const std::string sec, unsigned int ind ); unsigned int read_nodes( UniXML& xml, const std::string& sec, unsigned int ind );
private: private:
typedef std::map<std::string, ObjectId> MapObjectKey; typedef std::map<std::string, ObjectId> MapObjectKey;
......
...@@ -11,12 +11,12 @@ class ObjectIndex_idXML: ...@@ -11,12 +11,12 @@ class ObjectIndex_idXML:
public UniSetTypes::ObjectIndex public UniSetTypes::ObjectIndex
{ {
public: public:
ObjectIndex_idXML( const std::string xmlfile ); ObjectIndex_idXML( const std::string& xmlfile );
ObjectIndex_idXML(UniXML& xml); ObjectIndex_idXML(UniXML& xml);
virtual ~ObjectIndex_idXML(); virtual ~ObjectIndex_idXML();
virtual const UniSetTypes::ObjectInfo* getObjectInfo( const UniSetTypes::ObjectId ); virtual const UniSetTypes::ObjectInfo* getObjectInfo( const UniSetTypes::ObjectId );
virtual const UniSetTypes::ObjectInfo* getObjectInfo( const std::string name ); virtual const UniSetTypes::ObjectInfo* getObjectInfo( const std::string& name );
virtual UniSetTypes::ObjectId getIdByName( const std::string& name ); virtual UniSetTypes::ObjectId getIdByName( const std::string& name );
virtual std::string getMapName( const UniSetTypes::ObjectId id ); virtual std::string getMapName( const UniSetTypes::ObjectId id );
virtual std::string getTextName( const UniSetTypes::ObjectId id ); virtual std::string getTextName( const UniSetTypes::ObjectId id );
...@@ -26,8 +26,8 @@ class ObjectIndex_idXML: ...@@ -26,8 +26,8 @@ class ObjectIndex_idXML:
protected: protected:
virtual void build( UniXML& xml ); virtual void build( UniXML& xml );
void read_section( UniXML& xml, const std::string sec ); void read_section( UniXML& xml, const std::string& sec );
void read_nodes( UniXML& xml, const std::string sec ); void read_nodes( UniXML& xml, const std::string& sec );
private: private:
typedef std::map<UniSetTypes::ObjectId, UniSetTypes::ObjectInfo> MapObjects; typedef std::map<UniSetTypes::ObjectId, UniSetTypes::ObjectInfo> MapObjects;
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
*/ */
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
/*! \file /*! \file
* \author Vitaly Lipatov * \author Vitaly Lipatov, PavelVainerman
* \par * \par
* \bug НЕ РАБОТАЕТ функция findNode. (не ищет по полю name, если задать) * \bug НЕ РАБОТАЕТ функция findNode. (не ищет по полю name, если задать)
...@@ -46,15 +46,15 @@ class UniXML_iterator: ...@@ -46,15 +46,15 @@ class UniXML_iterator:
{} {}
UniXML_iterator() {} UniXML_iterator() {}
std::string getProp(const std::string name) const; std::string getProp( const std::string& name ) const;
std::string getPropUtf8(const std::string name) const; std::string getPropUtf8( const std::string& name ) const;
int getIntProp(const std::string name) const; int getIntProp( const std::string& name ) const;
/// if value if not positive ( <= 0 ), returns def /// if value if not positive ( <= 0 ), returns def
int getPIntProp(const std::string name, int def) const; int getPIntProp(const std::string& name, int def) const;
void setProp(const std::string name, const std::string text); void setProp( const std::string& name, const std::string& text );
bool findName(const std::string node, const std::string searchname); bool findName( const std::string& node, const std::string& searchname );
bool find(const std::string searchnode); bool find( const std::string& searchnode);
/*! Перейти к следующему узлу. Возвращает false, если некуда перейти */ /*! Перейти к следующему узлу. Возвращает false, если некуда перейти */
bool goNext(); bool goNext();
...@@ -146,11 +146,11 @@ public: ...@@ -146,11 +146,11 @@ public:
} }
// Загружает указанный файл // Загружает указанный файл
void open(const std::string filename); void open(const std::string& filename);
void close(); void close();
inline bool isOpen(){ return doc!=0; } inline bool isOpen(){ return doc!=0; }
UniXML(const std::string filename); UniXML( const std::string& filename );
UniXML(); UniXML();
...@@ -164,20 +164,20 @@ public: ...@@ -164,20 +164,20 @@ public:
void newDoc(const std::string& root_node, std::string xml_ver="1.0"); void newDoc(const std::string& root_node, std::string xml_ver="1.0");
// Получить свойство name указанного узла node // Получить свойство name указанного узла node
static std::string getProp(const xmlNode* node, const std::string name); static std::string getProp(const xmlNode* node, const std::string& name);
static std::string getPropUtf8(const xmlNode* node, const std::string name); static std::string getPropUtf8(const xmlNode* node, const std::string& name);
static int getIntProp(const xmlNode* node, const std::string name); static int getIntProp(const xmlNode* node, const std::string& name);
/// if value if not positive ( <= 0 ), returns def /// if value if not positive ( <= 0 ), returns def
static int getPIntProp(const xmlNode* node, const std::string name, int def); static int getPIntProp(const xmlNode* node, const std::string& name, int def);
// Установить свойство name указанного узла node // Установить свойство name указанного узла node
static void setProp(xmlNode* node, const std::string name, const std::string text); static void setProp(xmlNode* node, const std::string& name, const std::string& text);
// Добавить новый дочерний узел // Добавить новый дочерний узел
static xmlNode* createChild(xmlNode* node, const std::string title, const std::string text); static xmlNode* createChild(xmlNode* node, const std::string& title, const std::string& text);
// Добавить следующий узел // Добавить следующий узел
static xmlNode* createNext(xmlNode* node, const std::string title, const std::string text); static xmlNode* createNext(xmlNode* node, const std::string& title, const std::string& text);
// Удалить указанный узел и все вложенные узлы // Удалить указанный узел и все вложенные узлы
static void removeNode(xmlNode* node); static void removeNode(xmlNode* node);
...@@ -187,31 +187,30 @@ public: ...@@ -187,31 +187,30 @@ public:
// Сохранить в файл, если параметр не указан, сохраняет в тот файл // Сохранить в файл, если параметр не указан, сохраняет в тот файл
// который был загружен последним. // который был загружен последним.
bool save(const std::string filename="", int level = 2); bool save(const std::string& filename="", int level = 2);
// Переместить указатель к следующему узлу // Переместить указатель к следующему узлу
static xmlNode* nextNode(xmlNode* node); static xmlNode* nextNode(xmlNode* node);
// После проверки исправить рекурсивный алгоритм на обычный, // После проверки исправить рекурсивный алгоритм на обычный,
// используя ->parent // используя ->parent
xmlNode* findNode(xmlNode* node, const std::string searchnode, const std::string name = "") const; xmlNode* findNode(xmlNode* node, const std::string& searchnode, const std::string& name = "") const;
xmlNode* findNodeUtf8(xmlNode* node, const std::string searchnode, const std::string name = "") const; xmlNode* findNodeUtf8(xmlNode* node, const std::string& searchnode, const std::string& name = "") const;
xmlNode* extFindNode(xmlNode* node, int depth, int width, const std::string searchnode, const std::string name = "", bool top=true ); xmlNode* extFindNode(xmlNode* node, int depth, int width, const std::string& searchnode, const std::string& name = "", bool top=true );
xmlNode* extFindNodeUtf8(xmlNode* node, int depth, int width, const std::string searchnode, const std::string name = "", bool top=true ); xmlNode* extFindNodeUtf8(xmlNode* node, int depth, int width, const std::string& searchnode, const std::string& name = "", bool top=true );
protected: protected:
// Преобразование текстовой строки из XML в строку нашего внутреннего представления // Преобразование текстовой строки из XML в строку нашего внутреннего представления
static std::string xml2local(const std::string text); static std::string xml2local( const std::string& text );
// Преобразование текстовой строки из нашего внутреннего представления в строку для XML // Преобразование текстовой строки из нашего внутреннего представления в строку для XML
// Возвращает указатель на временный буфер, который один на все вызовы функции. // Возвращает указатель на временный буфер, который один на все вызовы функции.
static const xmlChar* local2xml(std::string text); static const xmlChar* local2xml( const std::string& text );
static std::string local2utf8(const std::string text); static std::string local2utf8( const std::string& text );
static int recur; static int recur;
}; };
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
#endif #endif
...@@ -56,19 +56,19 @@ string ObjectIndex::getNameById( const ObjectId id, const ObjectId node ) ...@@ -56,19 +56,19 @@ string ObjectIndex::getNameById( const ObjectId id, const ObjectId node )
return mkRepName(t,getMapName(node)); return mkRepName(t,getMapName(node));
} }
// ----------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------
string ObjectIndex::mkRepName( const std::string repname, const std::string nodename ) string ObjectIndex::mkRepName( const std::string& repname, const std::string& nodename )
{ {
return repname + sepName + nodename; return repname + sepName + nodename;
} }
// ----------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------
string ObjectIndex::mkFullNodeName( const std::string realnode, const std::string virtnode ) string ObjectIndex::mkFullNodeName( const std::string& realnode, const std::string& virtnode )
{ {
// realnode справа, что поиск и вырезание происходили быстрее // realnode справа, что поиск и вырезание происходили быстрее
// эта функция часто используется... // эта функция часто используется...
return virtnode + sepNode + realnode; return virtnode + sepNode + realnode;
} }
// ----------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------
std::string ObjectIndex::getBaseName( const std::string fname ) std::string ObjectIndex::getBaseName( const std::string& fname )
{ {
string::size_type pos = fname.rfind('/'); string::size_type pos = fname.rfind('/');
if( pos != string::npos ) if( pos != string::npos )
......
...@@ -117,7 +117,7 @@ const ObjectInfo* ObjectIndex_Array::getObjectInfo( const ObjectId id ) ...@@ -117,7 +117,7 @@ const ObjectInfo* ObjectIndex_Array::getObjectInfo( const ObjectId id )
} }
// ----------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------
const ObjectInfo* ObjectIndex_Array::getObjectInfo( const std::string name ) const ObjectInfo* ObjectIndex_Array::getObjectInfo( const std::string& name )
{ {
MapObjectKey::iterator it = mok.find(name); MapObjectKey::iterator it = mok.find(name);
if( it != mok.end() ) if( it != mok.end() )
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
using namespace UniSetTypes; using namespace UniSetTypes;
using namespace std; using namespace std;
// ----------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------
ObjectIndex_XML::ObjectIndex_XML( const string xmlfile, int minSize ): ObjectIndex_XML::ObjectIndex_XML( const string& xmlfile, int minSize ):
omap(minSize) omap(minSize)
{ {
UniXML xml; UniXML xml;
...@@ -115,7 +115,7 @@ void ObjectIndex_XML::build(UniXML& xml) ...@@ -115,7 +115,7 @@ void ObjectIndex_XML::build(UniXML& xml)
// omap[ind].id = ind; // omap[ind].id = ind;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string sec, unsigned int ind ) unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string& sec, unsigned int ind )
{ {
if( (unsigned)ind >= omap.size() ) if( (unsigned)ind >= omap.size() )
{ {
...@@ -214,7 +214,7 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string sec, ...@@ -214,7 +214,7 @@ unsigned int ObjectIndex_XML::read_section( UniXML& xml, const std::string sec,
return ind; return ind;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
unsigned int ObjectIndex_XML::read_nodes( UniXML& xml, const std::string sec, unsigned int ind ) unsigned int ObjectIndex_XML::read_nodes( UniXML& xml, const std::string& sec, unsigned int ind )
{ {
if( ind >= omap.size() ) if( ind >= omap.size() )
{ {
...@@ -293,7 +293,7 @@ const ObjectInfo* ObjectIndex_XML::getObjectInfo( const ObjectId id ) ...@@ -293,7 +293,7 @@ const ObjectInfo* ObjectIndex_XML::getObjectInfo( const ObjectId id )
return NULL; return NULL;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
const ObjectInfo* ObjectIndex_XML::getObjectInfo( const std::string name ) const ObjectInfo* ObjectIndex_XML::getObjectInfo( const std::string& name )
{ {
MapObjectKey::iterator it = mok.find(name); MapObjectKey::iterator it = mok.find(name);
if( it != mok.end() ) if( it != mok.end() )
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
using namespace UniSetTypes; using namespace UniSetTypes;
using namespace std; using namespace std;
// ----------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------
ObjectIndex_idXML::ObjectIndex_idXML( const string xmlfile ) ObjectIndex_idXML::ObjectIndex_idXML( const string& xmlfile )
{ {
UniXML xml; UniXML xml;
// try // try
...@@ -86,7 +86,7 @@ void ObjectIndex_idXML::build(UniXML& xml) ...@@ -86,7 +86,7 @@ void ObjectIndex_idXML::build(UniXML& xml)
read_nodes(xml,"nodes"); read_nodes(xml,"nodes");
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void ObjectIndex_idXML::read_section( UniXML& xml, const std::string sec ) void ObjectIndex_idXML::read_section( UniXML& xml, const std::string& sec )
{ {
string secRoot = xml.getProp( xml.findNode(xml.getFirstNode(),"RootSection"), "name"); string secRoot = xml.getProp( xml.findNode(xml.getFirstNode(),"RootSection"), "name");
if( secRoot.empty() ) if( secRoot.empty() )
...@@ -162,7 +162,7 @@ void ObjectIndex_idXML::read_section( UniXML& xml, const std::string sec ) ...@@ -162,7 +162,7 @@ void ObjectIndex_idXML::read_section( UniXML& xml, const std::string sec )
} }
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void ObjectIndex_idXML::read_nodes( UniXML& xml, const std::string sec ) void ObjectIndex_idXML::read_nodes( UniXML& xml, const std::string& sec )
{ {
xmlNode* root( xml.findNode(xml.getFirstNode(),sec) ); xmlNode* root( xml.findNode(xml.getFirstNode(),sec) );
if( !root ) if( !root )
...@@ -231,7 +231,7 @@ const ObjectInfo* ObjectIndex_idXML::getObjectInfo( const ObjectId id ) ...@@ -231,7 +231,7 @@ const ObjectInfo* ObjectIndex_idXML::getObjectInfo( const ObjectId id )
return NULL; return NULL;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
const ObjectInfo* ObjectIndex_idXML::getObjectInfo( const std::string name ) const ObjectInfo* ObjectIndex_idXML::getObjectInfo( const std::string& name )
{ {
const char* n = name.c_str(); const char* n = name.c_str();
for( MapObjects::iterator it=omap.begin(); it!=omap.end(); it++ ) for( MapObjects::iterator it=omap.begin(); it!=omap.end(); it++ )
......
...@@ -293,7 +293,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv ) ...@@ -293,7 +293,7 @@ void Configuration::initConfiguration( int argc, const char* const* argv )
param << this << name; param << this << name;
name = param.str(); name = param.str();
param << "=corbaname::" << it->host << ":" << it->port; param << "=corbaname::" << it->host << ":" << it->port;
new_argv[i+1] = strdup(param.str().c_str()); new_argv[i+1] = param.str().c_str(); // strdup(param.str().c_str());
if( ulog.is_info() ) if( ulog.is_info() )
ulog.info() << "(Configuration): внесли параметр " << param.str() << endl; ulog.info() << "(Configuration): внесли параметр " << param.str() << endl;
......
...@@ -46,7 +46,7 @@ using namespace std; ...@@ -46,7 +46,7 @@ using namespace std;
// Временная переменная для подсчёта рекурсии // Временная переменная для подсчёта рекурсии
int UniXML::recur=0; int UniXML::recur=0;
UniXML::UniXML(const string filename): UniXML::UniXML(const string& filename):
doc(0), doc(0),
filename(filename) filename(filename)
{ {
...@@ -80,7 +80,7 @@ void UniXML::newDoc(const string& root_node, string xml_ver) ...@@ -80,7 +80,7 @@ void UniXML::newDoc(const string& root_node, string xml_ver)
cur = getFirstNode(); cur = getFirstNode();
} }
void UniXML::open(const string _filename) void UniXML::open(const string& _filename)
{ {
// if(doc) // if(doc)
// close(); // close();
...@@ -112,45 +112,47 @@ void UniXML::close() ...@@ -112,45 +112,47 @@ void UniXML::close()
} }
/* FIXME: compatibility, remove later */ /* FIXME: compatibility, remove later */
string UniXML::getPropUtf8(const xmlNode* node, const string name) string UniXML::getPropUtf8(const xmlNode* node, const string& name)
{ {
return getProp(node, name); return getProp(node, name);
} }
string UniXML::getProp(const xmlNode* node, const string name) string UniXML::getProp(const xmlNode* node, const string& name)
{ {
const char * text = (const char*)::xmlGetProp((xmlNode*)node, (const xmlChar*)name.c_str()); const char * text = (const char*)::xmlGetProp((xmlNode*)node, (const xmlChar*)name.c_str());
if( !text ) if( text == NULL )
return ""; return "";
return string(text); string t(text);
xmlFree( (void*)text );
return t;
} }
int UniXML::getIntProp(const xmlNode* node, const string name ) int UniXML::getIntProp(const xmlNode* node, const string& name )
{ {
return UniSetTypes::uni_atoi(getProp(node, name)); return UniSetTypes::uni_atoi(getProp(node, name));
} }
int UniXML::getPIntProp(const xmlNode* node, const string name, int def ) int UniXML::getPIntProp(const xmlNode* node, const string& name, int def )
{ {
string param = getProp(node,name); string param = getProp(node,name);
if( param.empty() ) if( param.empty() )
return def; return def;
return UniSetTypes::uni_atoi(param); return UniSetTypes::uni_atoi(param);
} }
void UniXML::setProp(xmlNode* node, string name, string text) void UniXML::setProp(xmlNode* node, const string& name, const string& text )
{ {
::xmlSetProp(node, (const xmlChar*)name.c_str(), (const xmlChar*)text.c_str()); ::xmlSetProp(node, (const xmlChar*)name.c_str(), (const xmlChar*)text.c_str());
} }
xmlNode* UniXML::createChild(xmlNode* node, string title, string text) xmlNode* UniXML::createChild(xmlNode* node, const string& title, const string& text)
{ {
return ::xmlNewChild(node, NULL, (const xmlChar*)title.c_str(), (const xmlChar*)text.c_str()); return ::xmlNewChild(node, NULL, (const xmlChar*)title.c_str(), (const xmlChar*)text.c_str());
} }
xmlNode* UniXML::createNext(xmlNode* node, const string title, const string text) xmlNode* UniXML::createNext(xmlNode* node, const string& title, const string& text)
{ {
if( node->parent ) if( node->parent )
return createChild(node->parent, title,text); return createChild(node->parent, title,text);
...@@ -195,7 +197,7 @@ xmlNode* UniXML::copyNode(xmlNode* node, int recursive) ...@@ -195,7 +197,7 @@ xmlNode* UniXML::copyNode(xmlNode* node, int recursive)
} }
bool UniXML::save(const string filename, int level) bool UniXML::save(const string& filename, int level)
{ {
string fn(filename); string fn(filename);
if (fn.empty()) if (fn.empty())
...@@ -229,7 +231,7 @@ xmlNode* UniXML::nextNode(xmlNode* n) ...@@ -229,7 +231,7 @@ xmlNode* UniXML::nextNode(xmlNode* n)
return n; return n;
} }
xmlNode* UniXML::findNode(xmlNode* node, const string searchnode, const string name ) const xmlNode* UniXML::findNode(xmlNode* node, const string& searchnode, const string& name ) const
{ {
while (node != NULL) while (node != NULL)
{ {
...@@ -251,7 +253,7 @@ xmlNode* UniXML::findNode(xmlNode* node, const string searchnode, const string n ...@@ -251,7 +253,7 @@ xmlNode* UniXML::findNode(xmlNode* node, const string searchnode, const string n
return NULL; return NULL;
} }
xmlNode* UniXML::findNodeUtf8(xmlNode* node, const string searchnode, const string name ) const xmlNode* UniXML::findNodeUtf8(xmlNode* node, const string& searchnode, const string& name ) const
{ {
return findNode(node, searchnode, name); return findNode(node, searchnode, name);
} }
...@@ -263,7 +265,7 @@ xmlNode* UniXML::findNodeUtf8(xmlNode* node, const string searchnode, const stri ...@@ -263,7 +265,7 @@ xmlNode* UniXML::findNodeUtf8(xmlNode* node, const string searchnode, const stri
//width means number of nodes of the same level as node in 1-st parameter (width number includes first node) //width means number of nodes of the same level as node in 1-st parameter (width number includes first node)
//depth means number of times we can go to the children, if 0 we can't go only to elements of the same level //depth means number of times we can go to the children, if 0 we can't go only to elements of the same level
xmlNode* UniXML::extFindNode(xmlNode* node, int depth, int width, const string searchnode, const string name, bool top ) xmlNode* UniXML::extFindNode(xmlNode* node, int depth, int width, const string& searchnode, const string& name, bool top )
{ {
int i=0; int i=0;
while (node != NULL) while (node != NULL)
...@@ -289,7 +291,7 @@ xmlNode* UniXML::extFindNode(xmlNode* node, int depth, int width, const string s ...@@ -289,7 +291,7 @@ xmlNode* UniXML::extFindNode(xmlNode* node, int depth, int width, const string s
return NULL; return NULL;
} }
xmlNode* UniXML::extFindNodeUtf8(xmlNode* node, int depth, int width, const string searchnode, const string name, bool top ) xmlNode* UniXML::extFindNodeUtf8(xmlNode* node, int depth, int width, const string& searchnode, const string& name, bool top )
{ {
return extFindNode(node, depth, width, searchnode, name, top ); return extFindNode(node, depth, width, searchnode, name, top );
} }
...@@ -380,7 +382,7 @@ bool UniXML_iterator::goChildren() ...@@ -380,7 +382,7 @@ bool UniXML_iterator::goChildren()
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
string UniXML_iterator::getProp( const string name ) const string UniXML_iterator::getProp( const string& name ) const
{ {
return UniXML::getProp(curNode, name); return UniXML::getProp(curNode, name);
} }
...@@ -394,18 +396,18 @@ const string UniXML_iterator::getContent() const ...@@ -394,18 +396,18 @@ const string UniXML_iterator::getContent() const
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
string UniXML_iterator::getPropUtf8( const string name ) const string UniXML_iterator::getPropUtf8( const string& name ) const
{ {
return UniXML::getProp(curNode, name); return UniXML::getProp(curNode, name);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
int UniXML_iterator::getIntProp( const string name ) const int UniXML_iterator::getIntProp( const string& name ) const
{ {
return UniSetTypes::uni_atoi(UniXML::getProp(curNode, name)); return UniSetTypes::uni_atoi(UniXML::getProp(curNode, name));
} }
int UniXML_iterator::getPIntProp( const string name, int def ) const int UniXML_iterator::getPIntProp( const string& name, int def ) const
{ {
int i = getIntProp(name); int i = getIntProp(name);
if (i <= 0) if (i <= 0)
...@@ -414,13 +416,13 @@ int UniXML_iterator::getPIntProp( const string name, int def ) const ...@@ -414,13 +416,13 @@ int UniXML_iterator::getPIntProp( const string name, int def ) const
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
void UniXML_iterator::setProp( const string name, const string text ) void UniXML_iterator::setProp( const string& name, const string& text )
{ {
UniXML::setProp(curNode, name, text); UniXML::setProp(curNode, name, text);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
bool UniXML_iterator::findName( const std::string node, const std::string searchname ) bool UniXML_iterator::findName( const std::string& node, const std::string& searchname )
{ {
while( this->find(node) ) while( this->find(node) )
{ {
...@@ -433,12 +435,12 @@ bool UniXML_iterator::findName( const std::string node, const std::string search ...@@ -433,12 +435,12 @@ bool UniXML_iterator::findName( const std::string node, const std::string search
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
bool UniXML_iterator::find( const std::string searchnode ) bool UniXML_iterator::find( const std::string& searchnode )
{ {
// Функция ищет "в ширину и в глубь" // Функция ищет "в ширину и в глубь"
xmlNode* rnode = curNode; xmlNode* rnode = curNode;
while (curNode != NULL) while (curNode != NULL)
{ {
while( curNode->children ) while( curNode->children )
...@@ -450,14 +452,14 @@ bool UniXML_iterator::find( const std::string searchnode ) ...@@ -450,14 +452,14 @@ bool UniXML_iterator::find( const std::string searchnode )
} }
while( !curNode->next && curNode->parent ) while( !curNode->next && curNode->parent )
{ {
// выше исходного узла "подыматься" нельзя // выше исходного узла "подыматься" нельзя
if( curNode == rnode ) if( curNode == rnode )
break; break;
curNode = curNode->parent; curNode = curNode->parent;
} }
curNode = curNode->next; curNode = curNode->next;
if ( curNode && searchnode == (const char*)curNode->name ) if ( curNode && searchnode == (const char*)curNode->name )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment