[ Previous |
Next |
Contents |
Glossary |
Home |
Search ]
Motif 2.1 Programmer's Reference
XmParseMapping
Data type for a compound string parse mapping
Format
#include <Xm/Xm.h>
DESCRIPTION
XmParseMapping is an opaque data type for a parse mapping used by
XmStringParseText to create a compound string. A parse mapping contains a
pattern to be matched in text being parsed to create a compound string. It
also contains a compound string, or a function to be invoked to provide a
compound string, to be included in the compound string being created whenever
the pattern is matched.
An application uses a resource-style interface to specify components for an
XmParseMapping. XmParseMappingCreate creates a parse mapping, using a
resource-style argument list. XmParseMappingGetValues and
XmParseMappingSetValues retrieve and set the components of a parse mapping.
XmParseMappingFree recovers memory used by a parse mapping. XmParseTable is an
array of XmParseMapping objects.
The XmNinvokeParseProc resource is a function of type XmParseProc, which is
defined as follows:
XmIncludeStatus (*XmParseProc) (
text_in_out, text_end, type, tag, entry, pattern_length,
str_include, call_data)
XtPointer *
text_in_out;
XtPointer
text_end;
XmTextType
type;
XmStringTag tag;
XmParseMapping
entry;
int
pattern_length;
XmString *
str_include;
XtPointer
call_data;
A parse procedure provides an escape mechanism for arbitrarily complex
parsing. This procedure is invoked when a pattern in the input text is matched
with a pattern in a parse mapping whose XmNincludeStatus is XmINVOKE.
The input text is a pointer to the first byte of the pattern that was
matched to trigger the call to the parse procedure. The parse procedure
consumes as many bytes of the input string as it needs and sets the input text
pointer to the following byte. It returns a compound string to be included in
the compound string being constructed, and it also returns an XmIncludeStatus
indicating how the returned compound string should be handled. If the parse
procedure does not set the input text pointer ahead by at least one byte, the
parsing routine continues trying to match the input text with the patterns in
the remaining parse mappings in the parse table. Otherwise, the parsing
routine begins with the new input text pointer and tries to match the input
text with patterns in the parse mappings starting at the beginning of the
parse table.
text_in_outSpecifies the text being parsed. The value is a pointer to the first byte
of text matching the pattern that triggered the call to the parse procedure.
When the parse procedure returns, this argument is set to the position in the
text where parsing should resume--that is, to the byte following the last
character parsed by the parse procedure.
text_endSpecifies a pointer to the end of the text_in_out string. If
text_end is NULL, the string is scanned until a NULL character is
found. Otherwise, the string is scanned up to but not including the character
whose address is text_end.
typeSpecifies the type of text and the tag type. If a locale tag should be
created, type has a value of either XmMULTIBYTE_TEXT or
XmWIDECHAR_TEXT. If a charset should be created, type has a value of
XmCHARSET_TEXT.
tagSpecifies the tag to be used in creating the result. The type of string
tag created (charset or locale) depends on the text type and the passed in
tag value. If the tag value is NULL and if type
indicates that a charset string tag should be created, the string tag has the
value that is the result of mapping XmSTRING_DEFAULT_CHARSET. If type
indicates a locale string tag, the string tag has the value
_MOTIF_DEFAULT_LOCALE.
entrySpecifies the parse mapping that triggered the call to the parse
procedure.
pattern_lengthSpecifies the number of bytes in the input text, following
text_in_out, that constitute the matched pattern.
str_includeSpecifies a pointer to a compound string. The parse procedure creates a
compound string to be included in the compound string being constructed. The
parse procedure then returns the compound string in this argument.
call_dataSpecifies data passed by the application to the parsing routine.
The parse procedure returns an XmIncludeStatus indicating how
str_include is to be included in the compound string being
constructed. Following are the possible values:
XmINSERTConcatenate the result to the compound string being constructed and
continue parsing.
XmTERMINATEConcatenate the result to the compound string being constructed and
terminate parsing.
The following table defines a set of resources used by the programmer
to specify data. The codes in the access column indicate if the given resource
can be set at creation time (C), set by using XmParseMappingSetValues (S),
retrieved by using XmParseMappingGetValues (G), or is not applicable (N/A).
XmParseMapping Resource Set |
Name |
Class |
Type |
Default |
Access |
XmNclientData |
|
XtPointer |
NULL |
CSG |
XmNincludeStatus |
|
XmIncludeStatus |
XmINSERT |
CSG |
XmNinvokeParseProc |
|
XmParseProc |
NULL |
CSG |
XmNpattern |
|
XtPointer |
NULL |
CSG |
XmNpatternType |
|
XmTextType |
XmCHARSET_TEXT |
CSG |
XmNsubstitute |
|
XmString |
NULL |
CSG |
XmNclientDataSpecifies data to be used by the parse procedure.
XmNincludeStatusSpecifies how the result of the mapping is to be included in the compound
string being constructed. Unless the value is XmINVOKE, the result of the
mapping is the value of XmNsubstitute. Following are the possible values for
XmNincludeStatus:
XmINSERTConcatenate the result to the compound string being constructed and
continue parsing.
XmINVOKEInvoke the XmNinvokeParseProc on the text being parsed and use the
returned compound string instead of XmNsubstitute as the result to be inserted
into the compound string being constructed. The include status returned by the
parse procedure (XmINSERT or XmTERMINATE) determines how the returned compound
string is included.
XmTERMINATEConcatenate the result to the compound string being constructed and
terminate parsing.
XmNinvokeParseProcSpecifies the parse procedure to be invoked when XmNincludeStatus is
XmINVOKE.
XmNpatternSpecifies a pattern to be matched in the text being parsed. This is a
maximum of one character.
XmNpatternTypeSpecifies the type of the pattern that is the value of XmNpattern.
Following are the possible values:
XmCHARSET_TEXT
XmMULTIBYTE_TEXT
XmWIDECHAR_TEXT
XmNsubstituteSpecifies the compound string to be included in the compound string being
constructed when XmNincludeStatus is XmINSERT or XmTERMINATE.
RELATED
XmParseMappingCreate
(3), XmParseMappingFree
(3),
XmParseMappingGetValues
(3), XmParseMappingSetValues
(3),
XmParseTable
(3), and XmString
(3).
[ Previous |
Next |
Contents |
Glossary |
Home |
Search ]