Roxen.git/
server/
etc/
modules/
RXML.pmod/
module.pmod
Branch:
Tag:
Non-build tags
All tags
No tags
2000-03-11
2000-03-11 03:26:15 by Martin Nilsson <mani@lysator.liu.se>
c28dd2be45a7d6baa9a3d2e988a447075acbfe51 (
20
lines) (+
9
/-
11
)
[
Show
|
Annotate
]
Branch:
5.2
Default return value is now empty
Rev: server/etc/modules/RXML.pmod/module.pmod:1.77
2:
//! //! Created 1999-07-30 by Martin Stjernholm. //!
-
//! $Id: module.pmod,v 1.
76
2000/03/11
02
:
24
:
00
mast
Exp $
+
//! $Id: module.pmod,v 1.
77
2000/03/11
03
:
26
:
15
nilsson
Exp $
//! Kludge: Must use "RXML.refs" somewhere for the whole module to be //! loaded correctly.
1360:
//! the tag before do_process() is called. This may be Void if the //! content parsing didn't produce any result. //!
-
//! If the result from parsing the content is not Void, it's
-
//!
assigned to or added to the content variable. Assignment is used
-
//!
if the content type is nonsequential, addition otherwise. Thus
-
//!
earlier values are simply overridden for nonsequential types.
+
//! If
there is no do_return() and
the result from parsing the
+
//!
content is not Void, it's assigned to or added to the content
+
//!
variable. Assignment is used if the content type is
+
//!
nonsequential, addition otherwise. Thus
earlier values are
+
//! simply overridden for nonsequential types.
//! //! piece is used when the tag is operating in streaming mode (i.e. //! FLAG_STREAM_CONTENT is set). It's then set to each successive
1606:
#define EVSTAT_ENTERED 1 #define EVSTAT_LAST_ITER 2 #define EVSTAT_ITER_DONE 3
-
#define EVSTAT_RETURNED 4
+
int eval_state = EVSTAT_BEGIN; int iter; Parser subparser;
1932:
exec = 0; } }
-
-
/*
Fall through. */
-
case EVSTAT_RETURNED:
-
if (result == Void && !(flags & FLAG_EMPTY_ELEMENT))
+
else
if (result == Void && !(flags & FLAG_EMPTY_ELEMENT))
if (result_type->_parser_prog == PNone) { if (content_type->subtype_of (result_type)) result = content; } else if (stringp (content_type)) {
-
eval_state = EVSTAT_
RETURNED
; // Only need to record this state here.
+
eval_state = EVSTAT_
ITER_DONE
; // Only need to record this state here.
if (!exec) exec = ({content}); _exec_array (parser, exec, flags & FLAG_PARENT_SCOPE); // Might unwind. exec = 0;