835c6c | 2001-06-17 | Martin Nilsson | |
|
b655bf | 2004-06-30 | Martin Stjernholm | |
|
24c6c1 | 2000-02-20 | Martin Nilsson | |
|
835c6c | 2001-06-17 | Martin Nilsson | |
|
24c6c1 | 2000-02-20 | Martin Nilsson | |
|
598a6e | 2009-03-24 | Martin Stjernholm | |
|
e5bab5 | 2000-04-06 | Kenneth Johansson | |
|
7bf145 | 1999-07-27 | David Hedbor | |
|
b8b31d | 2000-01-10 | Martin Nilsson | | inherit "rxmlhelp";
|
cd7d5f | 2000-02-16 | Martin Stjernholm | | #include <config.h>
|
ed8fe4 | 2002-10-23 | Martin Stjernholm | | #include <request_trace.h>
|
94892e | 2000-01-05 | Martin Stjernholm | |
|
36aaa1 | 2000-01-23 | Martin Nilsson | |
|
a1c9c8 | 2008-12-22 | Martin Stjernholm | | protected class RXMLTagSet
|
41940b | 2000-01-25 | Martin Stjernholm | |
|
480625 | 2000-01-11 | Martin Stjernholm | | {
|
f59931 | 2000-01-19 | Martin Stjernholm | | inherit RXML.TagSet;
|
84fff0 | 2000-01-18 | Martin Stjernholm | |
|
f59931 | 2000-01-19 | Martin Stjernholm | | string prefix = RXML_NAMESPACE;
|
411e69 | 2001-06-18 | Martin Stjernholm | | #if constant (thread_create)
|
0d7a53 | 2000-08-28 | Martin Stjernholm | | Thread.Mutex lists_mutex = Thread.Mutex();
#endif
|
41940b | 2000-01-25 | Martin Stjernholm | | array(RoxenModule) modules;
|
f59931 | 2000-01-19 | Martin Stjernholm | |
|
598a6e | 2009-03-24 | Martin Stjernholm | | int censor_request;
|
f59931 | 2000-01-19 | Martin Stjernholm | | void sort_on_priority()
{
|
411e69 | 2001-06-18 | Martin Stjernholm | | #if constant (thread_create)
|
0d7a53 | 2000-08-28 | Martin Stjernholm | | Thread.MutexKey lock = lists_mutex->lock();
#endif
|
69e4cd | 2000-03-09 | Martin Stjernholm | | int i = search (imported, Roxen.entities_tag_set);
|
89584d | 2000-02-10 | Martin Stjernholm | | array(RXML.TagSet) new_imported = imported[..i-1] + imported[i+1..];
|
5bb572 | 2000-02-10 | Martin Stjernholm | | array(RoxenModule) new_modules = modules[..i-1] + modules[i+1..];
|
96627a | 2001-07-16 | Martin Stjernholm | | array(string) module_ids = new_modules->module_identifier();
sort (module_ids, new_imported, new_modules);
|
41940b | 2000-01-25 | Martin Stjernholm | | array(int) priorities = new_modules->query ("_priority", 1);
|
f59931 | 2000-01-19 | Martin Stjernholm | | priorities = replace (priorities, 0, 4);
sort (priorities, new_imported, new_modules);
|
89584d | 2000-02-10 | Martin Stjernholm | | new_imported = reverse (new_imported) + ({imported[i]});
|
f59931 | 2000-01-19 | Martin Stjernholm | | if (equal (imported, new_imported)) return;
|
89584d | 2000-02-10 | Martin Stjernholm | | new_modules = reverse (new_modules) + ({modules[i]});
`->= ("imported", new_imported);
modules = new_modules;
|
f59931 | 2000-01-19 | Martin Stjernholm | | }
|
89584d | 2000-02-10 | Martin Stjernholm | | mixed `->= (string var, mixed val)
|
f59931 | 2000-01-19 | Martin Stjernholm | | {
|
598a6e | 2009-03-24 | Martin Stjernholm | | switch (var) {
case "modules": modules = val; break;
case "censor_request": censor_request = val; break;
default: ::`->= (var, val);
}
|
89584d | 2000-02-10 | Martin Stjernholm | | return val;
|
f59931 | 2000-01-19 | Martin Stjernholm | | }
|
5bb572 | 2000-02-10 | Martin Stjernholm | | void create (object rxml_object)
|
41940b | 2000-01-25 | Martin Stjernholm | | {
|
dd9a41 | 2001-08-24 | Martin Stjernholm | | ::create (rxml_object, "rxml_tag_set");
|
f1fae2 | 2003-06-24 | Henrik Grubbström (Grubba) | | prepare_context = rxml_prepare_context;
|
69e4cd | 2000-03-09 | Martin Stjernholm | | imported = ({Roxen.entities_tag_set});
|
41940b | 2000-01-25 | Martin Stjernholm | | modules = ({rxml_object});
}
|
411e69 | 2001-06-18 | Martin Stjernholm | |
|
f1fae2 | 2003-06-24 | Henrik Grubbström (Grubba) | | void rxml_prepare_context (RXML.Context ctx)
|
411e69 | 2001-06-18 | Martin Stjernholm | | {
RequestID id = ctx->id;
|
2024fc | 2001-11-27 | Martin Stjernholm | | mapping misc = ctx->misc;
|
411e69 | 2001-06-18 | Martin Stjernholm | |
PROF_ENTER( "rxml", "overhead" );
|
25d15b | 2001-11-23 | Martin Stjernholm | |
|
07c09d | 2001-11-27 | Martin Stjernholm | |
|
25d15b | 2001-11-23 | Martin Stjernholm | | if (mapping defines = id->misc->defines) {
|
07c09d | 2001-11-27 | Martin Stjernholm | | if (defines != misc) {
|
ed8fe4 | 2002-10-23 | Martin Stjernholm | | if (defines->rxml_misc) {
SIMPLE_TRACE_ENTER (owner, "Preparing for nested RXML parse - "
"moving away existing id->misc->defines");
ctx->id_defines = defines;
}
else
SIMPLE_TRACE_ENTER (owner, "Preparing for top level RXML parse - "
"replacing id->misc->defines");
|
07c09d | 2001-11-27 | Martin Stjernholm | |
misc->language = defines->language;
misc->present_languages = defines->present_languages;
id->misc->defines = misc;
}
|
ed8fe4 | 2002-10-23 | Martin Stjernholm | | else
SIMPLE_TRACE_ENTER (owner, "Preparing for %s RXML parse - "
"id->misc->defines is already the same as "
"RXML_CONTEXT->misc",
defines->rxml_misc ? "nested" : "top level");
|
b6aa49 | 2001-10-01 | Martin Stjernholm | | }
|
ed8fe4 | 2002-10-23 | Martin Stjernholm | | else {
SIMPLE_TRACE_ENTER (owner, "Preparing for top level RXML parse - "
"initializing id->misc->defines");
|
2024fc | 2001-11-27 | Martin Stjernholm | | id->misc->defines = misc;
|
ed8fe4 | 2002-10-23 | Martin Stjernholm | | }
|
2024fc | 2001-11-27 | Martin Stjernholm | | misc->rxml_misc = 1;
|
cfa6a6 | 2001-08-09 | Martin Stjernholm | |
|
598a6e | 2009-03-24 | Martin Stjernholm | | if (censor_request) {
id->rawauth = 0;
if (string auth = id->realauth) {
if (sscanf (auth, "%[^:]%*c", auth) == 2)
id->realauth = auth + ":";
else
id->realauth = 0;
}
if (m_delete (id->request_headers, "authorization")) {
string raw = id->raw;
int i = search (lower_case (raw), "authorization:");
if (i >= 0) {
id->raw = raw[..i - 1];
int j = search (raw, "\n", i);
if (j >= 0) id->raw += raw[j + 1..];
}
}
m_delete (id->request_headers, "proxy-authorization");
m_delete (id->misc, "proxyauth");
}
|
c1ac6c | 2001-07-02 | Martin Stjernholm | | #if ROXEN_COMPAT <= 1.3
if (old_rxml_compat) ctx->compatible_scope = 1;
#endif
|
411e69 | 2001-06-18 | Martin Stjernholm | |
|
2024fc | 2001-11-27 | Martin Stjernholm | | misc[" _ok"] = misc[" _prev_ok"] = 1;
misc[" _error"] = 200;
|
1f80e0 | 2002-01-30 | Martin Stjernholm | | ctx->add_scope ("header", misc[" _extra_heads"] = ([ ]));
|
2024fc | 2001-11-27 | Martin Stjernholm | | if(id->misc->stat) misc[" _stat"] = id->misc->stat;
|
411e69 | 2001-06-18 | Martin Stjernholm | | }
void eval_finish (RXML.Context ctx)
{
RequestID id = ctx->id;
|
2024fc | 2001-11-27 | Martin Stjernholm | | mapping misc = ctx->misc;
|
411e69 | 2001-06-18 | Martin Stjernholm | |
|
1f80e0 | 2002-01-30 | Martin Stjernholm | | mapping extra_heads = ctx->get_scope ("header");
|
4f2019 | 2002-01-29 | Martin Stjernholm | | #ifdef DEBUG
if (extra_heads != misc[" _extra_heads"])
|
1f80e0 | 2002-01-30 | Martin Stjernholm | | report_warning ("Warning: The \"header\" scope %O and "
"RXML_CONTEXT->misc[\" _extra_heads\"] %O "
"isn't the same mapping.\n",
extra_heads, misc[" _extra_heads"]);
|
4f2019 | 2002-01-29 | Martin Stjernholm | | #endif
if(sizeof(extra_heads))
|
cfa6a6 | 2001-08-09 | Martin Stjernholm | | if (id->misc->moreheads)
|
4f2019 | 2002-01-29 | Martin Stjernholm | | id->misc->moreheads |= extra_heads;
|
cfa6a6 | 2001-08-09 | Martin Stjernholm | | else
|
4f2019 | 2002-01-29 | Martin Stjernholm | | id->misc->moreheads = extra_heads;
|
cfa6a6 | 2001-08-09 | Martin Stjernholm | |
|
25d15b | 2001-11-23 | Martin Stjernholm | | if (mapping orig_defines = ctx->id_defines) {
|
ed8fe4 | 2002-10-23 | Martin Stjernholm | | SIMPLE_TRACE_LEAVE ("Finishing nested RXML parse - "
"restoring old id->misc->defines");
|
71d8e8 | 2001-08-10 | Martin Stjernholm | |
|
2024fc | 2001-11-27 | Martin Stjernholm | | if (int v = misc[" _error"]) orig_defines[" _error"] = v;
if (string v = misc[" _rettext"]) orig_defines[" _rettext"] = v;
|
25d15b | 2001-11-23 | Martin Stjernholm | | id->misc->defines = orig_defines;
|
71d8e8 | 2001-08-10 | Martin Stjernholm | | }
|
ed8fe4 | 2002-10-23 | Martin Stjernholm | | else {
SIMPLE_TRACE_LEAVE ("Finishing top level RXML parse - "
"leaving id->misc->defines");
m_delete (misc, "rxml_misc");
}
|
411e69 | 2001-06-18 | Martin Stjernholm | |
PROF_LEAVE( "rxml", "overhead" );
}
|
a1c9c8 | 2008-12-22 | Martin Stjernholm | | }
|
e7ed2e | 2000-01-08 | Martin Stjernholm | |
|
a1c9c8 | 2008-12-22 | Martin Stjernholm | | RXML.TagSet rxml_tag_set = RXMLTagSet (this);
|
cede49 | 2000-02-15 | Martin Stjernholm | | RXML.Type default_content_type = RXML.t_html (RXML.PXml);
|
5a3110 | 2000-02-15 | Martin Stjernholm | | RXML.Type default_arg_type = RXML.t_text (RXML.PEnt);
|
49a74b | 2000-01-14 | Martin Stjernholm | |
|
8e29c3 | 2000-03-04 | Martin Stjernholm | | int old_rxml_compat;
|
f59931 | 2000-01-19 | Martin Stjernholm | |
|
68d85b | 2000-02-11 | Martin Stjernholm | |
|
76b593 | 2000-06-23 | Martin Stjernholm | |
|
68d85b | 2000-02-11 | Martin Stjernholm | |
|
1c1cb0 | 2000-08-05 | Martin Stjernholm | | string parse_rxml(string what, RequestID id,
void|Stdio.File file,
void|mapping defines )
|
b796b5 | 1998-11-18 | Per Hedbor | | {
|
4254f6 | 2000-02-13 | Martin Stjernholm | | RXML.PXml parser;
|
c1ac6c | 2001-07-02 | Martin Stjernholm | | RXML.Context ctx = RXML_CONTEXT;
|
0ab987 | 2001-08-21 | Martin Stjernholm | | int orig_state_updated = -1;
|
950808 | 2001-08-22 | Martin Stjernholm | | int orig_dont_cache_result;
|
211b9a | 2000-01-10 | Martin Stjernholm | |
|
0ab987 | 2001-08-21 | Martin Stjernholm | | if (ctx && ctx->id == id) {
|
b0d417 | 2001-07-09 | Martin Stjernholm | | parser = default_content_type->get_parser (ctx, ctx->tag_set, 0);
|
0ab987 | 2001-08-21 | Martin Stjernholm | | orig_state_updated = ctx->state_updated;
|
950808 | 2001-08-22 | Martin Stjernholm | | if (ctx->frame)
orig_dont_cache_result = ctx->frame->flags & RXML.FLAG_DONT_CACHE_RESULT;
|
0ab987 | 2001-08-21 | Martin Stjernholm | | #ifdef RXML_PCODE_UPDATE_DEBUG
report_debug ("%O: Saved p-code update count %d before parse_rxml "
"with inherited context\n",
ctx, orig_state_updated);
#endif
}
|
1f47d9 | 2000-01-30 | Per Hedbor | | else {
|
411e69 | 2001-06-18 | Martin Stjernholm | | parser = rxml_tag_set->get_parser (default_content_type, id);
ctx = parser->context;
|
d2e56f | 2000-01-25 | Martin Nilsson | | }
|
c1ac6c | 2001-07-02 | Martin Stjernholm | | parser->recover_errors = 1;
|
1c1cb0 | 2000-08-05 | Martin Stjernholm | |
|
411e69 | 2001-06-18 | Martin Stjernholm | | if (defines) {
ctx->misc = id->misc->defines = defines;
if (!defines[" _error"])
defines[" _error"] = 200;
if (!defines[" _extra_heads"])
|
1f80e0 | 2002-01-30 | Martin Stjernholm | | ctx->add_scope ("header", defines[" _extra_heads"] = ([ ]));
|
411e69 | 2001-06-18 | Martin Stjernholm | | if (!defines[" _stat"] && id->misc->stat)
defines[" _stat"] = id->misc->stat;
}
else
defines = ctx->misc;
if (file) {
if (!defines[" _stat"])
defines[" _stat"] = file->stat();
|
c1ac6c | 2001-07-02 | Martin Stjernholm | | defines["_source file"] = file;
|
411e69 | 2001-06-18 | Martin Stjernholm | | }
|
05aee5 | 2000-01-13 | Martin Nilsson | |
|
f27ca0 | 2002-10-03 | Martin Stjernholm | | int orig_make_p_code = ctx->make_p_code;
ctx->make_p_code = 0;
|
0ab987 | 2001-08-21 | Martin Stjernholm | | mixed err = catch {
|
c1ac6c | 2001-07-02 | Martin Stjernholm | | if (ctx == RXML_CONTEXT)
|
411e69 | 2001-06-18 | Martin Stjernholm | | parser->finish (what);
|
211b9a | 2000-01-10 | Martin Stjernholm | | else
|
1c1cb0 | 2000-08-05 | Martin Stjernholm | | parser->write_end (what);
what = parser->eval();
|
0ab987 | 2001-08-21 | Martin Stjernholm | | };
|
f27ca0 | 2002-10-03 | Martin Stjernholm | | ctx->make_p_code = orig_make_p_code;
|
0ab987 | 2001-08-21 | Martin Stjernholm | |
if (file) m_delete (defines, "_source file");
if (orig_state_updated >= 0) {
#ifdef RXML_PCODE_UPDATE_DEBUG
report_debug ("%O: Restoring p-code update count from %d to %d "
"after parse_rxml with inherited context\n",
ctx, ctx->state_updated, orig_state_updated);
#endif
ctx->state_updated = orig_state_updated;
|
950808 | 2001-08-22 | Martin Stjernholm | | if (ctx->frame && !orig_dont_cache_result)
ctx->frame->flags &= ~RXML.FLAG_DONT_CACHE_RESULT;
|
0ab987 | 2001-08-21 | Martin Stjernholm | | }
if (err) {
|
1c1cb0 | 2000-08-05 | Martin Stjernholm | | #ifdef DEBUG
|
95f91d | 2000-06-19 | Henrik Grubbström (Grubba) | | if (!parser) {
|
4a8d2b | 2001-03-15 | Martin Nilsson | | report_debug("RXML: Parser destructed!\n");
|
95f91d | 2000-06-19 | Henrik Grubbström (Grubba) | | #if constant(_describe)
_describe(parser);
#endif /* constant(_describe) */
error("Parser destructed!\n");
}
|
1c1cb0 | 2000-08-05 | Martin Stjernholm | | #endif
|
211b9a | 2000-01-10 | Martin Stjernholm | | if (objectp (err) && err->thrown_at_unwind)
error ("Can't handle RXML parser unwinding in "
"compatibility mode (error=%O).\n", err);
else throw (err);
}
|
7517d4 | 2000-02-16 | Martin Stjernholm | |
return what;
}
|
76b593 | 2000-06-23 | Martin Stjernholm | | #define COMPAT_TAG_TYPE \
function(string,mapping(string:string),RequestID,void|Stdio.File,void|mapping: \
string|array(int|string))
#define COMPAT_CONTAINER_TYPE \
function(string,mapping(string:string),string,RequestID,void|Stdio.File,void|mapping: \
string|array(int|string))
class CompatTag
{
inherit RXML.Tag;
|
5e7100 | 2000-12-19 | Anders Johansson | | constant is_compat_tag=1;
|
76b593 | 2000-06-23 | Martin Stjernholm | |
string name;
int flags;
string|COMPAT_TAG_TYPE|COMPAT_CONTAINER_TYPE fn;
RXML.Type content_type = RXML.t_same;
void create (string _name, int empty, string|COMPAT_TAG_TYPE|COMPAT_CONTAINER_TYPE _fn)
{
name = _name, fn = _fn;
flags = empty && RXML.FLAG_EMPTY_ELEMENT;
|
e32821 | 2001-09-20 | Martin Nilsson | | result_types = result_types(RXML.PXml);
|
76b593 | 2000-06-23 | Martin Stjernholm | | }
class Frame
{
inherit RXML.Frame;
string raw_tag_text;
|
a49d43 | 2000-07-03 | Martin Stjernholm | | array do_enter (RequestID id)
{
if (args->preparse)
content_type = content_type (RXML.PXml);
}
|
76b593 | 2000-06-23 | Martin Stjernholm | | array do_return (RequestID id)
{
id->misc->line = "0";
|
af1be9 | 2001-11-15 | Martin Stjernholm | | if (!content) content = "";
|
76b593 | 2000-06-23 | Martin Stjernholm | | if (stringp (fn)) return ({fn});
|
eebd9b | 2000-11-06 | Martin Stjernholm | | if (!fn) {
result_type = result_type (RXML.PNone);
return ({propagate_tag()});
}
|
76b593 | 2000-06-23 | Martin Stjernholm | |
|
c1ac6c | 2001-07-02 | Martin Stjernholm | | mapping defines = RXML_CONTEXT->misc;
Stdio.File source_file = defines["_source file"];
|
76b593 | 2000-06-23 | Martin Stjernholm | |
string|array(string) result;
if (flags & RXML.FLAG_EMPTY_ELEMENT)
result = fn (name, args, id, source_file, defines);
|
a49d43 | 2000-07-03 | Martin Stjernholm | | else {
if(args->trimwhites) content = String.trim_all_whites(content);
|
76b593 | 2000-06-23 | Martin Stjernholm | | result = fn (name, args, content, id, source_file, defines);
|
a49d43 | 2000-07-03 | Martin Stjernholm | | }
|
76b593 | 2000-06-23 | Martin Stjernholm | |
if (arrayp (result)) {
result_type = result_type (RXML.PNone);
if (sizeof (result) && result[0] == 1) {
[string pname, mapping(string:string) pargs, string pcontent] =
(result[1..] + ({0, 0, 0}))[..2];
if (!pname || pname == name)
return ({!pargs && !pcontent ? propagate_tag () :
propagate_tag (pargs || args, pcontent || content)});
else
|
0c8841 | 2001-04-19 | Martin Stjernholm | | return ({RXML.make_unparsed_tag (
|
af1be9 | 2001-11-15 | Martin Stjernholm | | pname, pargs || args, pcontent || content)});
|
76b593 | 2000-06-23 | Martin Stjernholm | | }
else return result;
}
else if (result) {
if (args->noparse) result_type = result_type (RXML.PNone);
return ({result});
}
|
eebd9b | 2000-11-06 | Martin Stjernholm | | else {
result_type = result_type (RXML.PNone);
return ({propagate_tag()});
}
|
76b593 | 2000-06-23 | Martin Stjernholm | | }
}
}
|
d73452 | 2000-01-31 | Martin Nilsson | | class GenericTag {
inherit RXML.Tag;
|
0970f9 | 2000-03-16 | Martin Nilsson | | constant is_generic_tag=1;
|
d73452 | 2000-01-31 | Martin Nilsson | | string name;
int flags;
|
0970f9 | 2000-03-16 | Martin Nilsson | |
|
38bfe5 | 2000-02-08 | Martin Stjernholm | | function(string,mapping(string:string),string,RequestID,RXML.Frame:
array|string) _do_return;
|
d73452 | 2000-01-31 | Martin Nilsson | |
void create(string _name, int _flags,
|
38bfe5 | 2000-02-08 | Martin Stjernholm | | function(string,mapping(string:string),string,RequestID,RXML.Frame:
array|string) __do_return) {
|
d73452 | 2000-01-31 | Martin Nilsson | | name=_name;
flags=_flags;
_do_return=__do_return;
if(flags&RXML.FLAG_DONT_PREPARSE)
|
7b73ef | 2000-02-08 | Martin Stjernholm | | content_type = RXML.t_same;
|
d73452 | 2000-01-31 | Martin Nilsson | | }
class Frame {
inherit RXML.Frame;
|
38bfe5 | 2000-02-08 | Martin Stjernholm | | array do_return(RequestID id, void|mixed piece) {
|
1c1cb0 | 2000-08-05 | Martin Stjernholm | |
|
7b73ef | 2000-02-08 | Martin Stjernholm | | if (flags & RXML.FLAG_POSTPARSE)
|
4254f6 | 2000-02-13 | Martin Stjernholm | | result_type = result_type (RXML.PXml);
|
0cac27 | 2000-02-08 | Martin Stjernholm | | if (!(flags & RXML.FLAG_STREAM_CONTENT))
|
38bfe5 | 2000-02-08 | Martin Stjernholm | | piece = content || "";
array|string res = _do_return(name, args, piece, id, this_object());
|
7b73ef | 2000-02-08 | Martin Stjernholm | | return stringp (res) ? ({res}) : res;
|
d73452 | 2000-01-31 | Martin Nilsson | | }
}
}
|
1c1cb0 | 2000-08-05 | Martin Stjernholm | | class GenericPITag
{
inherit GenericTag;
void create (string _name, int _flags,
function(string,mapping(string:string),string,RequestID,RXML.Frame:
array|string) __do_return)
{
::create (_name, _flags | RXML.FLAG_PROC_INSTR, __do_return);
content_type = RXML.t_text;
}
}
|
f59931 | 2000-01-19 | Martin Stjernholm | | void add_parse_module (RoxenModule mod)
|
b796b5 | 1998-11-18 | Per Hedbor | | {
|
f59931 | 2000-01-19 | Martin Stjernholm | | RXML.TagSet tag_set =
|
dd9a41 | 2001-08-24 | Martin Stjernholm | | mod->query_tag_set ? mod->query_tag_set() : RXML.TagSet (mod, "");
|
f59931 | 2000-01-19 | Martin Stjernholm | | mapping(string:mixed) defs;
if (mod->query_tag_callers &&
mappingp (defs = mod->query_tag_callers()) &&
sizeof (defs))
|
76b593 | 2000-06-23 | Martin Stjernholm | | tag_set->add_tags (map (indices (defs),
lambda (string name) {
return CompatTag (name, 1, defs[name]);
}));
|
f59931 | 2000-01-19 | Martin Stjernholm | |
if (mod->query_container_callers &&
mappingp (defs = mod->query_container_callers()) &&
sizeof (defs))
|
76b593 | 2000-06-23 | Martin Stjernholm | | tag_set->add_tags (map (indices (defs),
lambda (string name) {
return CompatTag (name, 0, defs[name]);
}));
|
adc9df | 2000-03-14 | Martin Nilsson | | if (mod->query_simpletag_callers &&
mappingp (defs = mod->query_simpletag_callers()) &&
|
d73452 | 2000-01-31 | Martin Nilsson | | sizeof (defs))
tag_set->add_tags(Array.map(indices(defs),
lambda(string tag){ return GenericTag(tag, @defs[tag]); }));
|
1c1cb0 | 2000-08-05 | Martin Stjernholm | | if (mod->query_simple_pi_tag_callers &&
mappingp (defs = mod->query_simple_pi_tag_callers()) &&
sizeof (defs))
tag_set->add_tags (map (indices (defs),
lambda (string name) {
return GenericPITag (name, @defs[name]);
}));
|
f59931 | 2000-01-19 | Martin Stjernholm | | if (search (rxml_tag_set->imported, tag_set) < 0) {
|
0d7a53 | 2000-08-28 | Martin Stjernholm | | #ifdef THREADS
Thread.MutexKey lock = rxml_tag_set->lists_mutex->lock();
#endif
|
4efd21 | 2000-02-13 | Martin Stjernholm | | rxml_tag_set->modules += ({mod});
rxml_tag_set->imported += ({tag_set});
|
ac6752 | 2000-08-29 | Per Hedbor | | #ifdef THREADS
|
0d7a53 | 2000-08-28 | Martin Stjernholm | | lock = 0;
|
ac6752 | 2000-08-29 | Per Hedbor | | #endif
|
0d7a53 | 2000-08-28 | Martin Stjernholm | | remove_call_out (rxml_tag_set->sort_on_priority);
|
f59931 | 2000-01-19 | Martin Stjernholm | | call_out (rxml_tag_set->sort_on_priority, 0);
}
|
b796b5 | 1998-11-18 | Per Hedbor | | }
|
f59931 | 2000-01-19 | Martin Stjernholm | | void remove_parse_module (RoxenModule mod)
|
b796b5 | 1998-11-18 | Per Hedbor | | {
|
f59931 | 2000-01-19 | Martin Stjernholm | | int i = search (rxml_tag_set->modules, mod);
if (i >= 0) {
RXML.TagSet tag_set = rxml_tag_set->imported[i];
|
71a5c9 | 2000-02-12 | Martin Stjernholm | | rxml_tag_set->modules =
rxml_tag_set->modules[..i - 1] + rxml_tag_set->modules[i + 1..];
|
f59931 | 2000-01-19 | Martin Stjernholm | | rxml_tag_set->imported =
rxml_tag_set->imported[..i - 1] + rxml_tag_set->imported[i + 1..];
|
2cd6e8 | 2002-02-06 | Martin Stjernholm | |
|
49a74b | 2000-01-14 | Martin Stjernholm | | }
|
f59931 | 2000-01-19 | Martin Stjernholm | | }
|
b796b5 | 1998-11-18 | Per Hedbor | |
|
7517d4 | 2000-02-16 | Martin Stjernholm | | void ready_to_receive_requests (object this)
|
b796b5 | 1998-11-18 | Per Hedbor | | {
|
7517d4 | 2000-02-16 | Martin Stjernholm | | remove_call_out (rxml_tag_set->sort_on_priority);
rxml_tag_set->sort_on_priority();
|
b796b5 | 1998-11-18 | Per Hedbor | | }
|