

Public Member Functions | |
| Item_nodeset_func (String *pxml_arg) | |
| Item_nodeset_func (Item *a, String *pxml_arg) | |
| Item_nodeset_func (Item *a, Item *b, String *pxml_arg) | |
| Item_nodeset_func (Item *a, Item *b, Item *c, String *pxml_arg) | |
| void | prepare_nodes () |
| void | prepare (String *nodeset) |
| enum Type | type () const |
| String * | val_str (String *str) |
| enum Item_result | result_type () const |
| void | fix_length_and_dec () |
| const char * | func_name () const |
Public Attributes | |
| String * | pxml |
| String | context_cache |
Protected Attributes | |
| String | tmp_value |
| String | tmp2_value |
| MY_XPATH_FLT * | fltbeg |
| MY_XPATH_FLT * | fltend |
| MY_XML_NODE * | nodebeg |
| MY_XML_NODE * | nodeend |
| uint | numnodes |
Definition at line 151 of file item_xmlfunc.cc.
| Item_nodeset_func::Item_nodeset_func | ( | String * | pxml_arg | ) | [inline] |
| void Item_nodeset_func::fix_length_and_dec | ( | ) | [inline, virtual] |
Implements Item_result_field.
Reimplemented in Item_nodeset_context_cache.
Definition at line 218 of file item_xmlfunc.cc.
References String::charset(), DTCollation::collation, Item::collation, MAX_BLOB_WIDTH, Item::max_length, and pxml.
00219 { 00220 max_length= MAX_BLOB_WIDTH; 00221 collation.collation= pxml->charset(); 00222 }
Here is the call graph for this function:

| const char* Item_nodeset_func::func_name | ( | ) | const [inline, virtual] |
Implements Item_func.
Reimplemented in Item_nodeset_func_rootelement, Item_nodeset_func_union, Item_nodeset_func_axisbyname, Item_nodeset_func_selfbyname, Item_nodeset_func_childbyname, Item_nodeset_func_descendantbyname, Item_nodeset_func_ancestorbyname, Item_nodeset_func_parentbyname, Item_nodeset_func_attributebyname, Item_nodeset_func_predicate, and Item_nodeset_func_elementbyindex.
Definition at line 223 of file item_xmlfunc.cc.
| void Item_nodeset_func::prepare | ( | String * | nodeset | ) | [inline] |
Definition at line 174 of file item_xmlfunc.cc.
References Item_func::args, fltbeg, fltend, String::length(), prepare_nodes(), String::ptr(), tmp_value, and Item::val_nodeset().
Referenced by Item_nodeset_func_elementbyindex::val_nodeset(), Item_nodeset_func_predicate::val_nodeset(), Item_nodeset_func_attributebyname::val_nodeset(), Item_nodeset_func_parentbyname::val_nodeset(), Item_nodeset_func_ancestorbyname::val_nodeset(), Item_nodeset_func_descendantbyname::val_nodeset(), Item_nodeset_func_childbyname::val_nodeset(), and Item_nodeset_func_selfbyname::val_nodeset().
00175 { 00176 prepare_nodes(); 00177 String *res= args[0]->val_nodeset(&tmp_value); 00178 fltbeg= (MY_XPATH_FLT*) res->ptr(); 00179 fltend= (MY_XPATH_FLT*) (res->ptr() + res->length()); 00180 nodeset->length(0); 00181 }
Here is the call graph for this function:

Here is the caller graph for this function:

| void Item_nodeset_func::prepare_nodes | ( | ) | [inline] |
Definition at line 168 of file item_xmlfunc.cc.
References String::length(), nodebeg, nodeend, numnodes, String::ptr(), and pxml.
Referenced by prepare(), and val_str().
00169 { 00170 nodebeg= (MY_XML_NODE*) pxml->ptr(); 00171 nodeend= (MY_XML_NODE*) (pxml->ptr() + pxml->length()); 00172 numnodes= nodeend - nodebeg; 00173 }
Here is the call graph for this function:

Here is the caller graph for this function:

| enum Item_result Item_nodeset_func::result_type | ( | ) | const [inline, virtual] |
Reimplemented from Item_str_func.
Definition at line 217 of file item_xmlfunc.cc.
References STRING_RESULT.
00217 { return STRING_RESULT; }
| enum Type Item_nodeset_func::type | ( | ) | const [inline, virtual] |
Reimplemented from Item_func.
Definition at line 182 of file item_xmlfunc.cc.
References Item::XPATH_NODESET.
00182 { return XPATH_NODESET; }
Implements Item.
Definition at line 183 of file item_xmlfunc.cc.
References String::alloc(), String::append(), bzero, DTCollation::collation, Item::collation, fltbeg, fltend, String::length(), my_charset_latin1, MY_XML_NODE_TEXT, nodebeg, numnodes, prepare_nodes(), String::ptr(), String::set_charset(), tmp2_value, and Item::val_nodeset().
00184 { 00185 prepare_nodes(); 00186 String *res= val_nodeset(&tmp2_value); 00187 fltbeg= (MY_XPATH_FLT*) res->ptr(); 00188 fltend= (MY_XPATH_FLT*) (res->ptr() + res->length()); 00189 String active; 00190 active.alloc(numnodes); 00191 bzero((char*) active.ptr(), numnodes); 00192 for (MY_XPATH_FLT *flt= fltbeg; flt < fltend; flt++) 00193 { 00194 MY_XML_NODE *node; 00195 uint j; 00196 for (j=0, node= nodebeg ; j < numnodes; j++, node++) 00197 { 00198 if (node->type == MY_XML_NODE_TEXT && 00199 node->parent == flt->num) 00200 active[j]= 1; 00201 } 00202 } 00203 00204 str->length(0); 00205 str->set_charset(collation.collation); 00206 for (uint i=0 ; i < numnodes; i++) 00207 { 00208 if(active[i]) 00209 { 00210 if (str->length()) 00211 str->append(" ", 1, &my_charset_latin1); 00212 str->append(nodebeg[i].beg, nodebeg[i].end - nodebeg[i].beg); 00213 } 00214 } 00215 return str; 00216 }
Here is the call graph for this function:

Definition at line 160 of file item_xmlfunc.cc.
Referenced by Item_nodeset_func_elementbyindex::val_nodeset(), and Item_nodeset_func_predicate::val_nodeset().
MY_XPATH_FLT* Item_nodeset_func::fltbeg [protected] |
Definition at line 155 of file item_xmlfunc.cc.
Referenced by prepare(), Item_nodeset_func_elementbyindex::val_nodeset(), Item_nodeset_func_predicate::val_nodeset(), Item_nodeset_func_attributebyname::val_nodeset(), Item_nodeset_func_parentbyname::val_nodeset(), Item_nodeset_func_ancestorbyname::val_nodeset(), Item_nodeset_func_descendantbyname::val_nodeset(), Item_nodeset_func_childbyname::val_nodeset(), Item_nodeset_func_selfbyname::val_nodeset(), Item_nodeset_func_union::val_nodeset(), and val_str().
MY_XPATH_FLT * Item_nodeset_func::fltend [protected] |
Definition at line 155 of file item_xmlfunc.cc.
Referenced by prepare(), Item_nodeset_func_elementbyindex::val_nodeset(), Item_nodeset_func_predicate::val_nodeset(), Item_nodeset_func_attributebyname::val_nodeset(), Item_nodeset_func_parentbyname::val_nodeset(), Item_nodeset_func_ancestorbyname::val_nodeset(), Item_nodeset_func_descendantbyname::val_nodeset(), Item_nodeset_func_childbyname::val_nodeset(), Item_nodeset_func_selfbyname::val_nodeset(), Item_nodeset_func_union::val_nodeset(), and val_str().
MY_XML_NODE* Item_nodeset_func::nodebeg [protected] |
Definition at line 156 of file item_xmlfunc.cc.
Referenced by prepare_nodes(), Item_nodeset_func_attributebyname::val_nodeset(), Item_nodeset_func_parentbyname::val_nodeset(), Item_nodeset_func_ancestorbyname::val_nodeset(), Item_nodeset_func_descendantbyname::val_nodeset(), Item_nodeset_func_childbyname::val_nodeset(), Item_nodeset_func_selfbyname::val_nodeset(), and val_str().
MY_XML_NODE * Item_nodeset_func::nodeend [protected] |
uint Item_nodeset_func::numnodes [protected] |
Definition at line 157 of file item_xmlfunc.cc.
Referenced by prepare_nodes(), Item_nodeset_func_ancestorbyname::val_nodeset(), Item_nodeset_func_descendantbyname::val_nodeset(), Item_nodeset_func_childbyname::val_nodeset(), Item_nodeset_func_union::val_nodeset(), and val_str().
Definition at line 159 of file item_xmlfunc.cc.
Referenced by fix_length_and_dec(), prepare_nodes(), and Item_nodeset_func_union::val_nodeset().
String Item_nodeset_func::tmp2_value [protected] |
String Item_nodeset_func::tmp_value [protected] |
1.4.7

