library/src/blockclass/subclasses/BP_StringUtils.cc
// == XML property operations ================================
//
//  (properties are members of nodes)
//
// If you supply a NULL node to any of the following methods
// they ill use this->curr_node as a parameter.  This can be
// used for easy recursing.
//
//
XML property operations
(properties are members of nodes)

If you supply a NULL node to any of the following methods
they ill use this->curr_node as a parameter.  This can be
used for easy recursing.
XML property operations ( properties are members of nodes ) If you supply a NULL node to any of the following methods they ill use this - > curr_node as a parameter . This can be used for easy recursing .
xmlAttr * BP_StringUtils::xmlGetTopPropertyForNode(xmlNode * node)
{
	if(!this->xml_parsed_ok)
		return NULL;
	xmlNode * top_node = NULL;
	if(!node)
		node = this->xml_curr_node;
	if(!node)
		return NULL;
	if(!node->properties)
		return NULL;
	if(!node->properties->prev)
		return node->properties;
	xmlAttr * iter = node->properties->prev;
	for(; iter->prev; iter = iter->prev){}
	return iter;
}
xmlAttr * BP_StringUtils :: xmlGetTopPropertyForNode ( xmlNode * node ) { if ( ! this -> xml_parsed_ok ) return NULL ; xmlNode * top_node = NULL ; if ( ! node ) node = this -> xml_curr_node ; if ( ! node ) return NULL ; if ( ! node -> properties ) return NULL ; if ( ! node -> properties -> prev ) return node -> properties ; xmlAttr * iter = node -> properties -> prev ; for ( ; iter -> prev ; iter = iter -> prev ) { } return iter ; }
XML property operations
(properties are members of nodes)
XML property operations ( properties are members of nodes )
// ensure we have parsed xml // top node // set current node // ensure we have a node, if not exit // ensure the node has properties // check to see if we have a prev node link (if not // we are the top link and can return without seaching) // set properties // walk backwards // return the top property