<!-- $XConsortium: StrCoC.sgm /main/9 1996/09/08 21:03:21 rws $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->

<RefEntry Id="CDEMMA.MAN408.rsml.1">
<RefMeta>
<RefEntryTitle>XmStringComponentType</RefEntryTitle>
<ManVolNum>library call</ManVolNum>
</RefMeta>
<RefNameDiv>
<RefName><StructName Role="typedef">XmStringComponentType</StructName></RefName>
<RefPurpose>Data type for compound string components
<IndexTerm>
<Primary>XmStringComponentType</Primary>
</IndexTerm><IndexTerm>
<Primary>data types</Primary>
<Secondary>XmStringComponentType</Secondary>
</IndexTerm></RefPurpose>
</RefNameDiv>
<!-- @OSF_COPYRIGHT@-->
<!-- COPYRIGHT NOTICE-->
<!-- Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.-->
<!-- ALL RIGHTS RESERVED (MOTIF). See the file named COPY.MOTIF.DOC for-->
<!-- the full copyright text.-->
<!-- -->
<!-- HISTORY-->
<RefSynopsisDiv>
<Synopsis>&npzwc;#include &lt;Xm/Xm.h>
</Synopsis>
</RefSynopsisDiv>
<RefSect1>
<Title>DESCRIPTION</Title>
<Para><StructName Role="typedef">XmStringComponentType</StructName> is the data type specifying compound string
component types. A compound string component identifies some
part of a compound string, and can have a value and length. A compound
string component can be one of the
following types. These component types are grouped
according to their length and value types.
</Para>
<Para>The following components have values of NULL and lengths of 0 (zero).
</Para>
<VariableList>
<VarListEntry>
<Term><SystemItem Class="Constant">XmSTRING_COMPONENT_SEPARATOR</SystemItem></Term>
<ListItem>
<Para>This component usually maps to a newline or carriage return in
displayed text.
</Para>
</ListItem>
</VarListEntry>
<VarListEntry>
<Term><SystemItem Class="Constant">XmSTRING_COMPONENT_TAB</SystemItem></Term>
<ListItem>
<Para>This component may be thought of as a text component containing only a
single tab.
</Para>
</ListItem>
</VarListEntry>
<VarListEntry>
<Term><SystemItem Class="Constant">XmSTRING_COMPONENT_LAYOUT_POP</SystemItem></Term>
<ListItem>
<Para>The layout direction is kept on a stack, with the current direction
kept on top of the stack. When this component is read, the most
recently read layout direction is popped off the stack and replaced by
the direction immediately before it.
</Para>
</ListItem>
</VarListEntry>
<VarListEntry>
<Term><SystemItem Class="Constant">XmSTRING_COMPONENT_END</SystemItem></Term>
<ListItem>
<Para>This component marks the end of a compound string. No other components
should follow. If an application does not place an
<SystemItem Class="Constant">XmSTRING_COMPONENT_END</SystemItem> component at the end of
an <StructName Role="typedef">XmString</StructName>, Motif automatically does it for the application.
</Para>
</ListItem>
</VarListEntry>
</VariableList>
<Para>The following component has a value of <StructName Role="typedef">XmDirection</StructName> and the
length of that direction.
</Para>
<VariableList>
<VarListEntry>
<Term><SystemItem Class="Constant">XmSTRING_COMPONENT_LAYOUT_PUSH</SystemItem></Term>
<ListItem>
<Para>The layout direction is kept on a stack, with the current direction
kept on top of the stack. This component replaces the current layout
direction, and causes another to be pushed onto the top of this stack.
</Para>
</ListItem>
</VarListEntry>
</VariableList>
<Para>The following component has a value of <StructName Role="typedef">XmStringDirection</StructName> and the
length of that direction.
</Para>
<VariableList>
<VarListEntry>
<Term><SystemItem Class="Constant">XmSTRING_COMPONENT_DIRECTION</SystemItem></Term>
<ListItem>
<Para>This component sets the string direction by overriding the previous
string direction.
</Para>
</ListItem>
</VarListEntry>
</VariableList>
<Para>The following components have values of type <StructName Role="typedef">char *</StructName> or some
equivalent type, and the lengths of these types.
</Para>
<VariableList>
<VarListEntry>
<Term><SystemItem Class="Constant">XmSTRING_COMPONENT_LOCALE_TEXT</SystemItem></Term>
<ListItem>
<Para>This component contains the multibyte text of a compound string.
</Para>
</ListItem>
</VarListEntry>
<VarListEntry>
<Term><SystemItem Class="Constant">XmSTRING_COMPONENT_WIDECHAR_TEXT</SystemItem></Term>
<ListItem>
<Para>This component contains the widechar text of a compound string.
</Para>
</ListItem>
</VarListEntry>
<VarListEntry>
<Term><SystemItem Class="Constant">XmSTRING_COMPONENT_TEXT</SystemItem></Term>
<ListItem>
<Para>This component contains the charset text of a compound string. Note
that a compound string cannot contain both charset and locale
(multibyte or widechar) text.
</Para>
</ListItem>
</VarListEntry>
<VarListEntry>
<Term><SystemItem Class="Constant">XmSTRING_COMPONENT_RENDITION_BEGIN</SystemItem></Term>
<ListItem>
<Para>This component marks the beginning of a new rendition. All text
following this component will be rendered using this rendition as the
primary one. If there is already a rendition in effect, it is kept in
memory and used to fill in any unspecified values in the primary
rendition. Renditions are kept until a corresponding
<SystemItem Class="Constant">XmSTRING_COMPONENT_RENDITION_END</SystemItem> component is encountered.
</Para>
</ListItem>
</VarListEntry>
<VarListEntry>
<Term><SystemItem Class="Constant">XmSTRING_COMPONENT_RENDITION_END</SystemItem></Term>
<ListItem>
<Para>This component signifies that the specified rendition will no longer
be used to render text, and will not be available to fill in
unspecified values of newer renditions.
</Para>
</ListItem>
</VarListEntry>
<VarListEntry>
<Term><SystemItem Class="Constant">XmSTRING_COMPONENT_UNKNOWN</SystemItem></Term>
<ListItem>
<Para>This component type signifies that the component contents belong to an
unknown component type.
</Para>
</ListItem>
</VarListEntry>
<VarListEntry>
<Term><SystemItem Class="Constant">XmSTRING_COMPONENT_LOCALE</SystemItem></Term>
<ListItem>
<Para>Use this component to specify the locale in which an internationalized
application is to execute.
The only valid character string for this component
is <SystemItem Class="Constant">_MOTIF_DEFAULT_LOCALE</SystemItem>.
</Para>
</ListItem>
</VarListEntry>
<VarListEntry>
<Term><SystemItem Class="Constant">XmSTRING_COMPONENT_TAG</SystemItem></Term>
<ListItem>
<Para>For charset text, this is the tag of the font to be used to display
the text. This tag is sometimes referred to as the charset tag or the
fontlist tag.
</Para>
</ListItem>
</VarListEntry>
<VarListEntry>
<Term><SystemItem Class="Constant">XmSTRING_COMPONENT_CHARSET</SystemItem></Term>
<ListItem>
<Para>This component is obsolete and remains for compatibility with previous
releases. It has been replaced by <SystemItem Class="Constant">XmSTRING_COMPONENT_TAG</SystemItem>.
</Para>
</ListItem>
</VarListEntry>
<VarListEntry>
<Term><SystemItem Class="Constant">XmSTRING_COMPONENT_FONTLIST_ELEMENT_TAG</SystemItem></Term>
<ListItem>
<Para>This component is obsolete and remains for compatibility with previous
releases. It has been replaced by <SystemItem Class="Constant">XmSTRING_COMPONENT_TAG</SystemItem>.
</Para>
</ListItem>
</VarListEntry>
</VariableList>
<Para>Some compound string components depend on values defined in other
components. The <SystemItem Class="Constant">XmSTRING_COMPONENT_TAB</SystemItem> component definition, for
example, depends on information in the
<SystemItem Class="Constant">XmSTRING_COMPONENT_RENDITION_BEGIN</SystemItem>. To account for these
dependencies, a typical compound string will have its member
components in the following order:
</Para>
<Synopsis>[
  [ <SystemItem Class="Constant">XmSTRING_COMPONENT_LAYOUT_PUSH</SystemItem> ]
  [ <SystemItem Class="Constant">XmSTRING_COMPONENT_RENDITION_BEGIN</SystemItem> ]*
  [ <SystemItem Class="Constant">XmSTRING_COMPONENT_TAG</SystemItem> | <SystemItem Class="Constant">XmSTRING_COMPONENT_LOCALE</SystemItem> ]
  [ <SystemItem Class="Constant">XmSTRING_COMPONENT_TAB</SystemItem> ]*
  [ <SystemItem Class="Constant">XmSTRING_COMPONENT_DIRECTION</SystemItem> ]
  [ <SystemItem Class="Constant">XmSTRING_COMPONENT_TEXT</SystemItem> |
    <SystemItem Class="Constant">XmSTRING_COMPONENT_LOCALE_TEXT</SystemItem> |
    <SystemItem Class="Constant">XmSTRING_COMPONENT_WIDECHAR_TEXT</SystemItem> ]
  [ <SystemItem Class="Constant">XmSTRING_COMPONENT_RENDITION_END</SystemItem> ]*
  [ <SystemItem Class="Constant">XmSTRING_COMPONENT_LAYOUT_POP</SystemItem> ]
  [ <SystemItem Class="Constant">XmSTRING_COMPONENT_SEPARATOR</SystemItem> ]
]*
<SystemItem Class="Constant">XmSTRING_COMPONENT_END</SystemItem>
</Synopsis>
</RefSect1>
</RefEntry>
<!--fickle 1.09 7/2/95-->
