Ginga  0.13.6.1771-df200
The iTV middleware.
ParserXercesC.cpp File Reference
#include "aux-ginga.h"
#include "ParserXercesC.h"
#include "Ncl.h"
#include <xercesc/framework/LocalFileInputSource.hpp>
#include <xercesc/parsers/XercesDOMParser.hpp>
Include dependency graph for ParserXercesC.cpp:

Classes

struct  EltData
 

Macros

#define WARN_SYNTAX(fmt, ...)   WARNING ("bad syntax: " fmt, ## __VA_ARGS__)
 
#define WARN_SYNTAX_ELT(elt, fmt, ...)   WARN_SYNTAX ("%s: " fmt, __error_elt ((elt)).c_str (), ## __VA_ARGS__)
 
#define WARN_SYNTAX_ELT_NOT_SUPPORTED(elt)   WARN_SYNTAX_ELT ((elt), "element is not supported")
 
#define ERROR_SYNTAX(fmt, ...)   ERROR ("bad syntax: " fmt, ## __VA_ARGS__)
 
#define ERROR_SYNTAX_ELT(elt, fmt, ...)   ERROR_SYNTAX ("%s: " fmt, __error_elt ((elt)).c_str (), ## __VA_ARGS__)
 
#define ERROR_SYNTAX_ELT_BAD_ATTRIBUTE(elt, name)
 
#define ERROR_SYNTAX_ELT_MISSING_ATTRIBUTE(elt, name)
 
#define ERROR_SYNTAX_ELT_MISSING_ID(elt)   ERROR_SYNTAX_ELT ((elt), "missing id")
 
#define ERROR_SYNTAX_ELT_DUPLICATED_ID(elt, value)
 
#define ERROR_SYNTAX_ELT_UNKNOWN_CHILD(elt, child)
 
#define CHECK_ELT_TAG(elt, expected, pvalue)
 
#define CHECK_ELT_ATTRIBUTE(elt, name, pvalue)
 
#define CHECK_ELT_ATTRIBUTE_NOT_SUPPORTED(elt, name)
 
#define CHECK_ELT_OPT_ATTRIBUTE(elt, name, pvalue, default)
 
#define CHECK_ELT_ID(elt, pvalue)
 
#define CHECK_ELT_OPT_ID(elt, pvalue, default)
 
#define CHECK_ELT_OPT_ID_AUTO(elt, pvalue, Elt)
 

Typedefs

typedef struct EltData EltData
 

Functions

XERCES_CPP_NAMESPACE_USE static GINGA_NAMESPACE_BEGIN string dom_elt_get_tag (const DOMElement *elt)
 
static bool dom_elt_has_attribute (const DOMElement *elt, const string &name)
 
static string dom_elt_get_attribute (const DOMElement *elt, const string &name)
 
static bool dom_elt_try_get_attribute (string &value, const DOMElement *elt, const string &name)
 
static list< DOMElement * > dom_elt_get_children (DOMElement *elt)
 
static G_GNUC_UNUSED bool elt_table_index (const string &tag, EltData **result)
 
static G_GNUC_UNUSED bool check_elt (const DOMElement *elt, string *errmsg)
 
static string __error_elt (const DOMElement *elt)
 

Variables

static map< string, EltDataelt_table
 
static map< string, Event::Typeevent_type_table
 
static map< string, Event::Transitionevent_transition_table
 
static map< string, Event::Transitionevent_action_type_table
 

Macro Definition Documentation

#define CHECK_ELT_ATTRIBUTE (   elt,
  name,
  pvalue 
)
Value:
G_STMT_START \
{ \
string result; \
if (unlikely (!dom_elt_try_get_attribute (result, (elt), (name)))) \
tryset ((pvalue), result); \
} \
G_STMT_END
#define tryset(p, x)
Definition: aux-glib.h:30
#define ERROR_SYNTAX_ELT_MISSING_ATTRIBUTE(elt, name)
Definition: ParserXercesC.cpp:182
#define unlikely
Definition: aux-glib.h:31
static bool dom_elt_try_get_attribute(string &value, const DOMElement *elt, const string &name)
Definition: ParserXercesC.cpp:69

Referenced by ParserXercesC::parseAssessmentStatement(), ParserXercesC::parseBind(), ParserXercesC::parseCausalConnector(), ParserXercesC::parseCompositeRule(), ParserXercesC::parseCompoundCondition(), ParserXercesC::parseCompoundStatement(), ParserXercesC::parseCondition(), ParserXercesC::parseDescriptor(), ParserXercesC::parseImportBase(), ParserXercesC::parseImportNCL(), ParserXercesC::parseLink(), ParserXercesC::parseMedia(), ParserXercesC::parsePort(), ParserXercesC::parseProperty(), ParserXercesC::parseRule(), ParserXercesC::parseSimpleAction(), ParserXercesC::parseSwitch(), and ParserXercesC::parseTransition().

#define CHECK_ELT_ATTRIBUTE_NOT_SUPPORTED (   elt,
  name 
)
Value:
G_STMT_START \
{ \
if (unlikely (dom_elt_has_attribute ((elt), (name)))) \
ERROR ("%s: attribute '%s' is not supported", \
__error_elt ((elt)).c_str (), \
string ((name)).c_str ()); \
} \
G_STMT_END
static const char char * c_str
Definition: ParserLibXML.cpp:65
static bool dom_elt_has_attribute(const DOMElement *elt, const string &name)
Definition: ParserXercesC.cpp:47
static string __error_elt(const DOMElement *elt)
Definition: ParserXercesC.cpp:154
#define unlikely
Definition: aux-glib.h:31
#define ERROR(fmt,...)
Definition: aux-ginga.h:106

Referenced by ParserXercesC::parseArea(), ParserXercesC::parseCompoundAction(), ParserXercesC::parseContext(), and ParserXercesC::parseSwitch().

#define CHECK_ELT_ID (   elt,
  pvalue 
)
Value:
G_STMT_START \
{ \
string result; \
if (unlikely (!dom_elt_try_get_attribute (result, (elt), "id"))) \
result = _prefix + result; \
if (unlikely (_doc->getEntityById (result) != nullptr)) \
tryset ((pvalue), result); \
} \
G_STMT_END
#define tryset(p, x)
Definition: aux-glib.h:30
#define unlikely
Definition: aux-glib.h:31
#define ERROR_SYNTAX_ELT_MISSING_ID(elt)
Definition: ParserXercesC.cpp:186
static bool dom_elt_try_get_attribute(string &value, const DOMElement *elt, const string &name)
Definition: ParserXercesC.cpp:69
#define ERROR_SYNTAX_ELT_DUPLICATED_ID(elt, value)
Definition: ParserXercesC.cpp:189

Referenced by ParserXercesC::parseArea(), ParserXercesC::parseCausalConnector(), ParserXercesC::parseCompositeRule(), ParserXercesC::parseContext(), ParserXercesC::parseDescriptor(), ParserXercesC::parseMedia(), ParserXercesC::parsePort(), ParserXercesC::parseRegion(), ParserXercesC::parseSwitch(), and ParserXercesC::parseTransition().

#define CHECK_ELT_OPT_ATTRIBUTE (   elt,
  name,
  pvalue,
  default 
)
Value:
G_STMT_START \
{ \
string result; \
if (!dom_elt_try_get_attribute (result, (elt), (name))) \
result = (default); \
tryset ((pvalue), result); \
} \
G_STMT_END
#define tryset(p, x)
Definition: aux-glib.h:30
static bool dom_elt_try_get_attribute(string &value, const DOMElement *elt, const string &name)
Definition: ParserXercesC.cpp:69

Referenced by ParserXercesC::parseCausalConnector(), ParserXercesC::parseCompoundStatement(), ParserXercesC::parseCondition(), ParserXercesC::parseDescriptor(), ParserXercesC::parseMedia(), ParserXercesC::parseNcl(), ParserXercesC::parseProperty(), and ParserXercesC::parseSimpleAction().

#define CHECK_ELT_OPT_ID (   elt,
  pvalue,
  default 
)
Value:
G_STMT_START \
{ \
string result; \
if (dom_elt_try_get_attribute (result, (elt), "id")) \
{ \
result = _prefix + result; \
if (unlikely (_doc->getEntityById (result) != nullptr)) \
} \
else \
{ \
result = _prefix + (default); \
} \
tryset ((pvalue), result); \
} \
G_STMT_END
#define tryset(p, x)
Definition: aux-glib.h:30
#define unlikely
Definition: aux-glib.h:31
static bool dom_elt_try_get_attribute(string &value, const DOMElement *elt, const string &name)
Definition: ParserXercesC.cpp:69
#define ERROR_SYNTAX_ELT_DUPLICATED_ID(elt, value)
Definition: ParserXercesC.cpp:189

Referenced by ParserXercesC::parseBody().

#define CHECK_ELT_OPT_ID_AUTO (   elt,
  pvalue,
  Elt 
)
Value:
G_STMT_START \
{ \
static int __opt_auto_id_##Elt = 1; \
string autoid = xstrbuild ("unnamed-%s-%d", \
G_STRINGIFY (Elt), \
(__opt_auto_id_##Elt)++); \
CHECK_ELT_OPT_ID ((elt), (pvalue), autoid); \
} \
G_STMT_END
string xstrbuild(const char *format,...)
Builds string from format.
Definition: aux-ginga.cpp:447
#define CHECK_ELT_OPT_ID(elt, pvalue, default)
Definition: ParserXercesC.cpp:252

Referenced by ParserXercesC::parseConnectorBase(), ParserXercesC::parseDescriptorBase(), ParserXercesC::parseLink(), ParserXercesC::parseRegionBase(), ParserXercesC::parseRule(), ParserXercesC::parseRuleBase(), and ParserXercesC::parseTransitionBase().

#define CHECK_ELT_TAG (   elt,
  expected,
  pvalue 
)
Value:
G_STMT_START \
{ \
string result = dom_elt_get_tag ((elt)); \
string expect = (expected); \
if (unlikely (result != expect)) \
ERROR_SYNTAX_ELT ((elt), "bad tagname '%s' (expected '%s')", \
result.c_str (), (expect).c_str ()); \
tryset ((string *)(pvalue), result); \
} \
G_STMT_END
#define tryset(p, x)
Definition: aux-glib.h:30
static const char char * c_str
Definition: ParserLibXML.cpp:65
XERCES_CPP_NAMESPACE_USE static GINGA_NAMESPACE_BEGIN string dom_elt_get_tag(const DOMElement *elt)
Definition: ParserXercesC.cpp:37
#define ERROR_SYNTAX_ELT(elt, fmt,...)
Definition: ParserXercesC.cpp:174
#define unlikely
Definition: aux-glib.h:31

Referenced by ParserXercesC::parseArea(), ParserXercesC::parseAssessmentStatement(), ParserXercesC::parseBind(), ParserXercesC::parseBody(), ParserXercesC::parseCausalConnector(), ParserXercesC::parseCompositeRule(), ParserXercesC::parseCompoundAction(), ParserXercesC::parseCompoundCondition(), ParserXercesC::parseCompoundStatement(), ParserXercesC::parseCondition(), ParserXercesC::parseConnectorBase(), ParserXercesC::parseContext(), ParserXercesC::parseDescriptor(), ParserXercesC::parseDescriptorBase(), ParserXercesC::parseHead(), ParserXercesC::parseImportBase(), ParserXercesC::parseImportNCL(), ParserXercesC::parseLink(), ParserXercesC::parseMedia(), ParserXercesC::parseNcl(), ParserXercesC::parsePort(), ParserXercesC::parseProperty(), ParserXercesC::parseRegion(), ParserXercesC::parseRegionBase(), ParserXercesC::parseRule(), ParserXercesC::parseRuleBase(), ParserXercesC::parseSimpleAction(), ParserXercesC::parseSwitch(), ParserXercesC::parseTransition(), and ParserXercesC::parseTransitionBase().

#define ERROR_SYNTAX (   fmt,
  ... 
)    ERROR ("bad syntax: " fmt, ## __VA_ARGS__)
#define ERROR_SYNTAX_ELT (   elt,
  fmt,
  ... 
)    ERROR_SYNTAX ("%s: " fmt, __error_elt ((elt)).c_str (), ## __VA_ARGS__)
#define ERROR_SYNTAX_ELT_BAD_ATTRIBUTE (   elt,
  name 
)
Value:
ERROR_SYNTAX_ELT ((elt), "bad value for attribute '%s': '%s'", \
string ((name)).c_str (), \
dom_elt_get_attribute ((elt), (name)).c_str ())
static const char char * c_str
Definition: ParserLibXML.cpp:65
#define ERROR_SYNTAX_ELT(elt, fmt,...)
Definition: ParserXercesC.cpp:174
static string dom_elt_get_attribute(const DOMElement *elt, const string &name)
Definition: ParserXercesC.cpp:57

Referenced by ParserXercesC::parseAssessmentStatement(), ParserXercesC::parseBind(), ParserXercesC::parseCompositeRule(), ParserXercesC::parseCompoundCondition(), ParserXercesC::parseCompoundStatement(), ParserXercesC::parseCondition(), ParserXercesC::parseDescriptor(), ParserXercesC::parseLink(), ParserXercesC::parseMedia(), ParserXercesC::parsePort(), ParserXercesC::parseRule(), ParserXercesC::parseSimpleAction(), and ParserXercesC::parseSwitch().

#define ERROR_SYNTAX_ELT_DUPLICATED_ID (   elt,
  value 
)
Value:
ERROR_SYNTAX_ELT ((elt), "duplicated id '%s'", \
string ((value)).c_str ())
static const char char * c_str
Definition: ParserLibXML.cpp:65
#define ERROR_SYNTAX_ELT(elt, fmt,...)
Definition: ParserXercesC.cpp:174
#define ERROR_SYNTAX_ELT_MISSING_ATTRIBUTE (   elt,
  name 
)
Value:
ERROR_SYNTAX_ELT ((elt), "missing required attribute '%s'", \
string ((name)).c_str ())
static const char char * c_str
Definition: ParserLibXML.cpp:65
#define ERROR_SYNTAX_ELT(elt, fmt,...)
Definition: ParserXercesC.cpp:174
#define ERROR_SYNTAX_ELT_MISSING_ID (   elt)    ERROR_SYNTAX_ELT ((elt), "missing id")
#define WARN_SYNTAX (   fmt,
  ... 
)    WARNING ("bad syntax: " fmt, ## __VA_ARGS__)
#define WARN_SYNTAX_ELT (   elt,
  fmt,
  ... 
)    WARN_SYNTAX ("%s: " fmt, __error_elt ((elt)).c_str (), ## __VA_ARGS__)

Typedef Documentation

typedef struct EltData EltData

Function Documentation

static string __error_elt ( const DOMElement *  elt)
inlinestatic
static G_GNUC_UNUSED bool check_elt ( const DOMElement *  elt,
string *  errmsg 
)
static
static string dom_elt_get_attribute ( const DOMElement *  elt,
const string &  name 
)
static
static bool dom_elt_has_attribute ( const DOMElement *  elt,
const string &  name 
)
static
static G_GNUC_UNUSED bool elt_table_index ( const string &  tag,
EltData **  result 
)
static

References tryset.

Referenced by check_elt().

Variable Documentation

map<string, EltData> elt_table
static
Initial value:
=
{
{"ncl", {{},{
{"id", G_TYPE_STRING},
{"title", G_TYPE_STRING},
{"xmlns", G_TYPE_STRING},
}}},
}
map<string, Event::Transition> event_action_type_table
static
Initial value:
=
{
{"start", Event::START},
{"stop", Event::STOP},
{"abort", Event::ABORT},
{"pause", Event::PAUSE},
{"resume", Event::RESUME},
}
Definition: Event.h:47
Definition: Event.h:50
Definition: Event.h:48
Definition: Event.h:49
Definition: Event.h:46
map<string, Event::Transition> event_transition_table
static
Initial value:
=
{
{"starts", Event::START},
{"stops", Event::STOP},
{"aborts", Event::ABORT},
{"pauses", Event::PAUSE},
{"resumes", Event::RESUME},
}
Definition: Event.h:47
Definition: Event.h:50
Definition: Event.h:48
Definition: Event.h:49
Definition: Event.h:46
map<string, Event::Type> event_type_table
static
Initial value:
=
{
{"presentation", Event::PRESENTATION},
{"attribution", Event::ATTRIBUTION},
{"selection", Event::SELECTION},
}
Definition: Event.h:34
Definition: Event.h:32
Definition: Event.h:33