XMSTRING(3)
π XmString β bestie edition π
okay so this is XmString, from the library call manual (section 3, the C library girlies π«Ά). Buckle up, we're doing compound strings.
β¨ NAME β¨
XmString β the data type for a compound string. that's it, that's the name, and honestly? iconic.
πΈ SYNOPSIS πΈ
#include <Xm/Xm.h>
that's the whole vibe check. one include and you're in. π
π¦ DESCRIPTION π¦
so XmString is literally THE data type for a compound string. and a compound string is a sequence of components β like a little playlist of stuff, lowkey. the components include, but are not limited to, these baddies:
XmSTRING_COMPONENT_SEPARATORXmSTRING_COMPONENT_TABXmSTRING_COMPONENT_LAYOUT_POPXmSTRING_COMPONENT_DIRECTIONXmSTRING_COMPONENT_LAYOUT_PUSHXmSTRING_COMPONENT_CHARSETXmSTRING_COMPONENT_FONTLIST_ELEMENT_TAGXmSTRING_COMPONENT_LOCALEXmSTRING_COMPONENT_LOCALE_TEXTXmSTRING_COMPONENT_TAGXmSTRING_COMPONENT_TEXTXmSTRING_COMPONENT_ENDXmSTRING_COMPONENT_RENDITION_BEGINXmSTRING_COMPONENT_RENDITION_ENDXmSTRING_COMPONENT_UNKNOWNXmSTRING_COMPONENT_WIDECHAR_TEXT
and also a rendition tags table, text, and text component. so it's not just a list of components, bestie, it's a whole situation. π
when a compound string gets displayed, the rendition tags and the direction are what decide how that text shows up. like, they're the main characters of the render, no cap. π
not me about to tell you the most important thing: when you callXtGetValuesfor a resource whose type isXmString, you get back a copy of the compound string resource value. and you, yes YOU, are responsible for callingXmStringFreeto free the memory allocated for that copy. don't ghost it, it will leak. π
if you want the full lore on compound string components β and honestly the order the components are supposed to appear in β go read the XmStringComponentType reference page. and if you wanna know the algorithm that matches up the rendition tags used to display a compound string text component with a rendition in a render table, the XmRenderTable reference page has you. fr fr. π
π RELATED π
the whole friend group, in order, so you can go hang out with all of them:
XmParseMapping(3)XmParseMappingCreate(3)XmParseMappingFree(3)XmParseMappingGetValues(3)XmParseMappingSetValues(3)XmParseTable(3)XmParseTableFree(3)XmStringBaseline(3)XmStringByteCompare(3)XmStringByteStreamLength(3)XmStringCompare(3)XmStringComponentCreate(3)XmStringComponentType(3)XmStringConcat(3)XmStringConcatAndFree(3)XmStringCopy(3)XmStringCreate(3)XmStringCreateLocalized(3)XmStringCreateLtoR(3)XmStringCreateSimple(3)XmStringDirection(3)XmStringDirectionCreate(3)XmStringDirectionToDirection(3)XmStringDraw(3)XmStringDrawImage(3)XmStringDrawUnderline(3)XmStringEmpty(3)XmStringExtent(3)XmStringFree(3)XmStringFreeContext(3)XmStringGenerate(3)XmStringGetLtoR(3)XmStringGetNextComponent(3)XmStringGetNextSegment(3)XmStringGetNextTriple(3)XmStringHasSubstring(3)XmStringHeight(3)XmStringInitContext(3)XmStringIsVoid(3)XmStringLength(3)XmStringLineCount(3)XmStringNConcat(3)XmStringNCopy(3)XmStringParseText(3)XmStringPeekNextComponent(3)XmStringPeekNextTriple(3)XmStringPutRendition(3)XmStringSegmentCreate(3)XmStringSeparatorCreate(3)XmStringTable(3)XmStringTableParseStringArray(3)XmStringTableProposeTablist(3)XmStringTableToXmString(3)XmStringTableUnparse(3)XmStringToXmStringTable(3)XmStringUnparse(3)XmStringWidth(3)XmCvtXmStringToByteStream(3)XmCvtXmStringToCT(3)XmCvtCTToXmString(3)XmCvtByteStreamToXmString(3)
okay that's the whole page, you ate that. π β¨
this was XmString from the library call manual β that's the source and the version vibe, straight off the XmString(library call) footer, no extra dates or numbers attached because the page didn't give me any, and I would never make one up. π bye bestie, go free your strings. π¦π
π¦ where this page comes from
- alpine 3.24: motif-doc 2.5.2-r0 Β· LGPL-2.1-or-later
- arch rolling: openmotif 2.3.8-4 Β· LGPL-2.1-or-later
- centos-stream 9: motif-devel 2.3.4-32.el9 Β· LGPLv2+
- centos-stream 9: motif-devel 2.3.4-32.el9 Β· LGPLv2+
- epel 10: motif-devel 2.3.8-2.el10_2 Β· LicenseRef-Callaway-LGPLv2+
- fedora 43: motif-devel 2.3.8-1.fc43 Β· LicenseRef-Callaway-LGPLv2+
- fedora 43: motif-devel 2.3.8-1.fc43 Β· LicenseRef-Callaway-LGPLv2+
- fedora 43: motif-devel 2.3.8-2.fc43 Β· LicenseRef-Callaway-LGPLv2+
- fedora 43: motif-devel 2.3.8-2.fc43 Β· LicenseRef-Callaway-LGPLv2+
- fedora 44: motif-devel 2.3.8-3.fc44 Β· LicenseRef-Callaway-LGPLv2+
- fedora 44: motif-devel 2.3.8-3.fc44 Β· LicenseRef-Callaway-LGPLv2+
- nixos 26.05: motif 2.3.8
- nixpkgs unstable: motif 2.3.8
- opensuse-leap 16.0: motif-devel 2.3.8-bp160.1.1 Β· LGPL-2.1-or-later
- opensuse-leap 16.0: motif-devel 2.3.8-bp160.1.1 Β· LGPL-2.1-or-later
- opensuse-leap 16.0: motif-devel 2.3.8-bp160.1.1 Β· LGPL-2.1-or-later
- opensuse-leap 16.0: motif-devel 2.3.8-bp160.1.1 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms