15.7 Data Management

Xlib provides two ways to help you manage data within an application: the context manager and association tables. The former saves you the trouble of creating arrays and dynamically allocating memory for data to be used only within your application. The latter is a different way of doing the same thing, maintained for backwards compatibility with X10. We will describe only the context manager. If you are interested in investigating association tables, see Appendix B.

15.7.1 The Context Manager

Four routines are provided to let you associate data with a window locally in Xlib, rather than in the server as in properties. The context manager routines store and retrieve untyped data according to the display, a window ID, and an assigned context ID. The display argument to the context manager routine (returned from XOpenDisplay()) is used as an additional dimension to the array, not as a pointer to the display structure. No requests to the server are made.

First, you call XUniqueContext() to obtain an ID for a particular type of information you want to assign to windows. XUniqueContext() just provides a unique integer ID every time you call it (you can also make up your own if you wish). This ID indicates to the application what type of information is stored, but none of the calls require you to specify the data type. Then use XSaveContext() to store information into the context manager and XFindContext() to read it. If you plan to rewrite a particular piece of data ...

Get XLIB Programming Manual, Rel. 5, Third Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.