39fbc9 | 2000-02-13 | Martin Stjernholm | |
|
5e5d86 | 2000-01-28 | Martin Stjernholm | |
|
cd7d5f | 2000-02-16 | Martin Stjernholm | |
|
5e5d86 | 2000-01-28 | Martin Stjernholm | |
|
d8769c | 2000-02-08 | Martin Stjernholm | |
|
5e5d86 | 2000-01-28 | Martin Stjernholm | |
|
cd7d5f | 2000-02-16 | Martin Stjernholm | | #include <config.h>
|
9f74bb | 2000-02-15 | Martin Stjernholm | |
|
39fbc9 | 2000-02-13 | Martin Stjernholm | | inherit RXML.PXml;
|
5e5d86 | 2000-01-28 | Martin Stjernholm | |
constant add_tag = 0;
constant add_tags = 0;
constant add_container = 0;
constant add_containers = 0;
|
9f74bb | 2000-02-15 | Martin Stjernholm | | static void init_entities()
{
if (type->quoting_scheme != "xml") {
#ifdef OLD_RXML_COMPAT
|
cede49 | 2000-02-15 | Martin Stjernholm | | clear_entities();
|
9f74bb | 2000-02-15 | Martin Stjernholm | | if (not_compat) {
#endif
array(RXML.TagSet) list = ({tag_set});
for (int i = 0; i < sizeof (list); i++) {
array(RXML.TagSet) sublist = list[i]->imported;
if (sizeof (sublist))
list = list[..i] + sublist + list[i + 1..];
}
for (int i = sizeof (list) - 1; i >= 0; i--)
if (list[i]->low_entities) add_entities (list[i]->low_entities);
#ifdef OLD_RXML_COMPAT
}
#endif
}
#ifdef OLD_RXML_COMPAT
if (not_compat)
#endif
_set_entity_callback (.utils.p_xml_entity_cb);
#ifdef OLD_RXML_COMPAT
else
_set_entity_callback (.utils.p_xml_compat_entity_cb);
#endif
}
void reset (RXML.Context ctx, RXML.Type _type, RXML.TagSet _tag_set)
{
context = ctx;
#ifdef DEBUG
if (type != _type) error ("Internal error: Type change in reset().\n");
if (tag_set != _tag_set) error ("Internal error: Tag set change in reset().\n");
#endif
#ifdef OLD_RXML_COMPAT
|
cede49 | 2000-02-15 | Martin Stjernholm | | if (!ctx) ctx = RXML.get_context();
|
fd9469 | 2000-02-15 | Martin Stjernholm | | int new_not_compat = !(ctx && ctx->id && ctx->id->conf->parse_html_compat);
|
9f74bb | 2000-02-15 | Martin Stjernholm | | if (new_not_compat == not_compat) return;
not_compat = new_not_compat;
init_entities();
#endif
}
|
5e5d86 | 2000-01-28 | Martin Stjernholm | | this_program clone (RXML.Context ctx, RXML.Type type, RXML.TagSet tag_set)
{
|
9f74bb | 2000-02-15 | Martin Stjernholm | | return [object(this_program)] _low_clone (ctx, type, tag_set, 1,
#ifdef OLD_RXML_COMPAT
not_compat
#endif
);
|
5e5d86 | 2000-01-28 | Martin Stjernholm | | }
static void create (
|
9f74bb | 2000-02-15 | Martin Stjernholm | | RXML.Context ctx, RXML.Type type, RXML.TagSet tag_set, void|int cloned,
#ifdef OLD_RXML_COMPAT
void|int orig_not_compat
#endif
)
|
5e5d86 | 2000-01-28 | Martin Stjernholm | | {
|
9f74bb | 2000-02-15 | Martin Stjernholm | | #ifdef OLD_RXML_COMPAT
|
cede49 | 2000-02-15 | Martin Stjernholm | | if (!ctx) ctx = RXML.get_context();
|
fd9469 | 2000-02-15 | Martin Stjernholm | | not_compat = !(ctx && ctx->id && ctx->id->conf->parse_html_compat);
|
9f74bb | 2000-02-15 | Martin Stjernholm | | #endif
|
5e5d86 | 2000-01-28 | Martin Stjernholm | | _tag_set_parser_create (ctx, type, tag_set);
|
9f74bb | 2000-02-15 | Martin Stjernholm | | if (cloned
#ifdef OLD_RXML_COMPAT
&& not_compat == orig_not_compat
#endif
)
return;
|
0923e9 | 2000-02-08 | Martin Stjernholm | |
|
9f74bb | 2000-02-15 | Martin Stjernholm | | if (!type->free_text) {
mixed_mode (1);
_set_data_callback (.utils.return_empty_array);
}
|
4703fd | 2000-02-11 | Martin Stjernholm | | ignore_tags (1);
|
5e5d86 | 2000-01-28 | Martin Stjernholm | | lazy_entity_end (1);
match_tag (0);
|
9f74bb | 2000-02-15 | Martin Stjernholm | |
init_entities();
|
5e5d86 | 2000-01-28 | Martin Stjernholm | | }
|
9f74bb | 2000-02-15 | Martin Stjernholm | | constant add_runtime_tag = 0;
constant remove_runtime_tag = 0;
|
5e5d86 | 2000-01-28 | Martin Stjernholm | |
#ifdef OBJ_COUNT_DEBUG
string _sprintf() {return "RXML.PEnt(" + __count + ")";}
#else
string _sprintf() {return "RXML.PEnt";}
#endif
|