Файл src/xml_defines.h

См. исходные тексты.

Макросы

#define ATTRIBUTE(type, name)
#define DOCIMPL_ELEMENT_PUSH_IF_EQUAL(nam)
#define DOCIMPL_ELEMENT_BEGIN()   void DocumentImpl::element ( xml_loader *th, const char *name, const char **atts ) {
#define DOCIMPL_ELEMENT_END()   }
#define IGNORE_IF_NULL
#define TO_XML_ATTRIBUTE(name)   printf(" %s=\"%s\"",#name, to_string(ser.get##name ()));
#define TO_XML_SEQUENCE(name)
#define TO_XML_SEQUENCER(name, ref)
#define TO_XML_ELEMENT(name)
#define TO_XML_ELEMENTR(name, ref)
#define TO_XML_FUNC_BEGIN(name, ref)
#define TO_XML_FUNC_END()   }
#define TO_XML_HAS_NO_ELEMENTS()   printf("/>");
#define TO_XML_HAS_ELEMENTS_BEGIN()   printf(">");
#define TO_XML_HAS_ELEMENTS_END()   printf("</%s>", _element_name);
#define INIT_IF_MATCH(name)
#define DOCIMPL_ELEMENTS_FUNC_BEGIN(nam)
#define DOCIMPL_ELEMENTS_FUNC_END()
#define DOCIMPL_ELEMENTS_SUBELEMENT(nam)
#define DOCIMPL_ELEMENTS_SUBELEMENTR(nam, ref)
#define DOCIMPL_ELEMENTS_SUBSEQUENCE(nam)
#define DOCIMPL_ELEMENTS_SUBSEQUENCER(nam, ref)
#define APPLYXPATH_FUNC_BEGIN(nam)
#define APPLYXPATH_FUNC_END()   } \
#define APPLYXPATH_ATTRIBUTE(nam)
#define APPLYXPATH_SEQUENCE(nam)
#define APPLYXPATH_ELEMENT(nam)
#define DOCIMPL_APPLYXPATH_FUNC_BEGIN()
#define DOCIMPL_APPLYXPATH_FUNC_END()
#define DOCIMPL_APPLYXPATH_MATCH(name)


Макросы

#define APPLYXPATH_ATTRIBUTE ( nam   ) 

Макроопределение:

if((xp->text == #nam || xp->text == "*") && xp->type == XP_ATTR)                \
          res.push_back(&obj->_##nam);

См. определение в файле xml_defines.h строка 133

#define APPLYXPATH_ELEMENT ( nam   ) 

Макроопределение:

if((xp->text == #nam || xp->text == "*") && xp->type == XP_ELEMENT) {           \
          if(xpp == ite)                                                                            \
               res.push_back(obj->nam##s);                                                          \
          else                                                                                      \
               applyXPath(obj->nam##s, xpp, ite, res);                                         \
          if(xp->text == #nam && xp->type == XP_ELEMENT)                                       \
               return;                                                                                   \
     }

См. определение в файле xml_defines.h строка 152

#define APPLYXPATH_FUNC_BEGIN ( nam   ) 

Макроопределение:

void applyXPath(nam* obj, XPath::iterator xp, XPath::iterator ite, XPathResult& res) {    \
     if(xp == ite)                                                                                       \
          return;                                                                                             \
     XPath::iterator xpp = xp;                                                                           \
     xpp++;

См. определение в файле xml_defines.h строка 124

 
#define APPLYXPATH_FUNC_END (  )     } \

См. определение в файле xml_defines.h строка 131

#define APPLYXPATH_SEQUENCE ( nam   ) 

Макроопределение:

if((xp->text == #nam || xp->text == "*") && xp->type == XP_ELEMENT) {           \
          typeof(obj->nam##s.begin()) i = obj->nam##s.begin(), ie = obj->nam##s.end();\
          if(xpp == ite) {                                                                          \
               for(;i != ie;i++)                                                                    \
                    res.push_back(*i);                                                              \
          }                                                                                              \
          else {                                                                                         \
               for(;i != ie;i++)                                                                    \
                    ::applyXPath(*i ,xpp, ite, res);                                           \
          }                                                                                              \
          if(xp->text == #nam && xp->type == XP_ELEMENT)                                       \
               return;                                                                                   \
     }

См. определение в файле xml_defines.h строка 137

#define ATTRIBUTE ( type,
name   ) 

Макроопределение:

private: type _##name;   \
     public: void set##name(const type c) {                 \
          _##name = c;                                           \
     }                                                                \
     public: type get##name() const {                       \
          return _##name;                                             \
     }

См. определение в файле xml_defines.h строка 13

 
#define DOCIMPL_APPLYXPATH_FUNC_BEGIN (  ) 

Макроопределение:

XPathResult DocumentImpl::applyXPath(XPath xp) {                                          \
     XPathResult res;                                                                               \
     if(root == NULL)                                                                               \
          return res;                                                                                    \
     XPathEntry& top = *xp.begin();                                                                 \
     if(root_type != top.text && top.text != "*")                                         \
          return res;                                                                                    \
     if(top.type != XP_ELEMENT)                                                                     \
          return res;                                                                                    \
     if(xp.empty()) {                                                                               \
          res.push_back(root);                                                                      \
          return res;                                                                                    \
     }

См. определение в файле xml_defines.h строка 162

 
#define DOCIMPL_APPLYXPATH_FUNC_END (  ) 

Макроопределение:

return res;                                                                                         \
}

См. определение в файле xml_defines.h строка 177

#define DOCIMPL_APPLYXPATH_MATCH ( name   ) 

Макроопределение:

if((top.text == #name || top.text == "*") && top.type == XP_ELEMENT) {               \
          xpath_iterator<name> it(NULL, (name*)(root));                                        \
          it.getValueByPath(++xp.begin(), xp.end(), res);                                      \
     }

См. определение в файле xml_defines.h строка 181

 
#define DOCIMPL_ELEMENT_BEGIN (  )     void DocumentImpl::element ( xml_loader *th, const char *name, const char **atts ) {

См. определение в файле xml_defines.h строка 27

 
#define DOCIMPL_ELEMENT_END (  )     }

См. определение в файле xml_defines.h строка 30

#define DOCIMPL_ELEMENT_PUSH_IF_EQUAL ( nam   ) 

Макроопределение:

if(strcmp(name, #nam) == 0) {           \
          if(th->start_element_func.empty())                                                   \
               th->start_element_func.push(nam##_element);                                     \
          return;                                                                                        \
     }

См. определение в файле xml_defines.h строка 21

#define DOCIMPL_ELEMENTS_FUNC_BEGIN ( nam   ) 

Макроопределение:

void DocumentImpl::nam##_element ( xml_loader *th, const char *name, const char **atts ) {          \
     nam* parent = (nam*)th->get_parent();                                                                    \
     if(parent != NULL) {

См. определение в файле xml_defines.h строка 80

 
#define DOCIMPL_ELEMENTS_FUNC_END (  ) 

Макроопределение:

} else                                                           \
          th->push(instance<typeof(*parent)>(atts));        \
}

См. определение в файле xml_defines.h строка 85

#define DOCIMPL_ELEMENTS_SUBELEMENT ( nam   ) 

Макроопределение:

if(strcmp(name, #nam) == 0) {                     \
               nam* l = instance<nam>(atts);                \
               parent->nam##s = l;                               \
               th->push(l, nam##_element);                       \
               return;                                                \
          }

См. определение в файле xml_defines.h строка 90

#define DOCIMPL_ELEMENTS_SUBELEMENTR ( nam,
ref   ) 

Макроопределение:

if(strcmp(name, #nam) == 0) {                     \
               nam* l = instance<nam>(atts);                \
               parent->nam##s = l;                               \
               th->push(l, ref##_element);                       \
               return;                                                \
          }

См. определение в файле xml_defines.h строка 98

#define DOCIMPL_ELEMENTS_SUBSEQUENCE ( nam   ) 

Макроопределение:

if(strcmp(name, #nam) == 0) {                     \
               nam* l = instance<nam>(atts);                \
               parent->nam##s.push_back(l);                 \
               th->push(l, nam##_element);                       \
               return;                                                \
          }

См. определение в файле xml_defines.h строка 106

#define DOCIMPL_ELEMENTS_SUBSEQUENCER ( nam,
ref   ) 

Макроопределение:

if(strcmp(name, #nam) == 0) {                     \
               nam* l = instance<nam>(atts);                \
               printf("inserting new %s\n", #nam);               \
               parent->nam##s.push_back(l);                 \
               th->push(l, ref##_element);                       \
               ref##_element(th, name, atts);                    \
               return;                                                \
          }

См. определение в файле xml_defines.h строка 114

#define IGNORE_IF_NULL

Макроопределение:

if(*c == NULL)                                         \
          continue;

См. определение в файле xml_defines.h строка 32

Используется в result::ext::ext(), result::extension::extension() и result::location::location().

#define INIT_IF_MATCH ( name   ) 

Макроопределение:

else if(strcmp(*c, #name) == 0)                             \
     _##name = from_string<typeof(_##name)>(*(++c));

См. определение в файле xml_defines.h строка 76

Используется в result::ext::ext(), result::extension::extension() и result::location::location().

#define TO_XML_ATTRIBUTE ( name   )     printf(" %s=\"%s\"",#name, to_string(ser.get##name ()));

См. определение в файле xml_defines.h строка 36

#define TO_XML_ELEMENT ( name   ) 

Макроопределение:

if(ser.name##s)                                                  \
          to_xml(*ser.name##s);

См. определение в файле xml_defines.h строка 57

#define TO_XML_ELEMENTR ( name,
ref   ) 

Макроопределение:

if(ser.name##s)                                                  \
          to_xml(*ser.name##s, #ref);

См. определение в файле xml_defines.h строка 61

#define TO_XML_FUNC_BEGIN ( name,
ref   ) 

Макроопределение:

void to_xml(const name& ser) {                              \
     const char* _element_name = #ref;                      \
     printf("<%s",_element_name);

См. определение в файле xml_defines.h строка 65

 
#define TO_XML_FUNC_END (  )     }

См. определение в файле xml_defines.h строка 70

 
#define TO_XML_HAS_ELEMENTS_BEGIN (  )     printf(">");

См. определение в файле xml_defines.h строка 73

 
#define TO_XML_HAS_ELEMENTS_END (  )     printf("</%s>", _element_name);

См. определение в файле xml_defines.h строка 74

 
#define TO_XML_HAS_NO_ELEMENTS (  )     printf("/>");

См. определение в файле xml_defines.h строка 72

#define TO_XML_SEQUENCE ( name   ) 

Макроопределение:

{                                                                                    \
          typeof(ser.name##s.begin()) it = ser.name##s.begin();            \
          typeof(ser.name##s.begin()) ite = ser.name##s.end();             \
          for(;it != ite;it++)                                                       \
               if(*it)                                                                    \
                    ::to_xml(**it);                                                       \
     }

См. определение в файле xml_defines.h строка 39

#define TO_XML_SEQUENCER ( name,
ref   ) 

Макроопределение:

{                                                                                    \
          typeof(ser.name##s.begin()) it = ser.name##s.begin();            \
          typeof(ser.name##s.begin()) ite = ser.name##s.end();             \
          for(;it != ite;it++)                                                       \
               if(*it)                                                                    \
                    ::to_xml(**it, #ref);                                            \
     }

См. определение в файле xml_defines.h строка 48


Документация по XDataServer. Последние изменения: Thu Jul 12 11:49:43 2007. Создано системой  doxygen 1.5.2