?????????? ????????? - ??????????????? - /home/agenciai/public_html/cd38d8/CH01.xml.tar
???????
usr/share/doc/libXt/CH01.xml 0000644 00000270153 15125771601 0011500 0 ustar 00 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"> <chapter id='Intrinsics_and_Widgets'> <title>Intrinsics and Widgets</title> <para> The Intrinsics are a programming library tailored to the special requirements of user interface construction within a network window system, specifically the X Window System. The Intrinsics and a widget set make up an X Toolkit. </para> <sect1 id="Intrinsics"> <title>Intrinsics</title> <para> The Intrinsics provide the base mechanism necessary to build a wide variety of interoperating widget sets and application environments. The Intrinsics are a layer on top of Xlib, the C Library X Interface. They extend the fundamental abstractions provided by the X Window System while still remaining independent of any particular user interface policy or style. </para> <para> The Intrinsics use object-oriented programming techniques to supply a consistent architecture for constructing and composing user interface components, known as widgets. This allows programmers to extend a widget set in new ways, either by deriving new widgets from existing ones (subclassing) or by writing entirely new widgets following the established conventions. </para> <para> When the Intrinsics were first conceived, the root of the object hierarchy was a widget class named Core. In Release 4 of the Intrinsics, three nonwidget superclasses were added above Core. These superclasses are described in <xref linkend='Nonwidget_Objects' />. The name of the class now at the root of the Intrinsics class hierarchy is Object. The remainder of this specification refers uniformly to <emphasis remap='I'>widgets</emphasis> and <emphasis remap='I'>Core</emphasis> as if they were the base class for all Intrinsics operations. The argument descriptions for each Intrinsics procedure and <xref linkend='Nonwidget_Objects' /> describe which operations are defined for the nonwidget superclasses of Core. The reader may determine by context whether a specific reference to <emphasis remap='I'>widget</emphasis> actually means “widget” or “object.” </para> </sect1> <sect1 id="Languages"> <title>Languages</title> <para> The Intrinsics are intended to be used for two programming purposes. Programmers writing widgets will be using most of the facilities provided by the Intrinsics to construct user interface components from the simple, such as buttons and scrollbars, to the complex, such as control panels and property sheets. Application programmers will use a much smaller subset of the Intrinsics procedures in combination with one or more sets of widgets to construct and present complete user interfaces on an X display. The Intrinsics programming interfaces primarily intended for application use are designed to be callable from most procedural programming languages. Therefore, most arguments are passed by reference rather than by value. The interfaces primarily intended for widget programmers are expected to be used principally from the C language. In these cases, the usual C programming conventions apply. In this specification, the term <emphasis remap='I'>client</emphasis> refers to any module, widget, or application that calls an Intrinsics procedure. </para> <para> Applications that use the Intrinsics mechanisms must include the header files <filename class="headerfile"><X11/Intrinsic.h></filename> and <filename class="headerfile"><X11/StringDefs.h></filename>, or their equivalent, and they may also include <filename class="headerfile"><X11/Xatoms.h></filename> and <filename class="headerfile"><X11/Shell.h></filename>. In addition, widget implementations should include <filename class="headerfile"><X11/IntrinsicP.h></filename> instead of <filename class="headerfile"><X11/Intrinsic.h></filename>. </para> <para> The applications must also include the additional header files for each widget class that they are to use (for example, <filename class="headerfile"><X11/Xaw/Label.h></filename> or <filename class="headerfile"><X11/Xaw/Scrollbar.h>).</filename> On a POSIX-based system, the Intrinsics object library file is named <filename class="libraryfile">libXt.a</filename> and is usually referenced as -lXt when linking the application. </para> </sect1> <sect1 id="Procedures_and_Macros"> <title>Procedures and Macros</title> <para> All functions defined in this specification except those specified below may be implemented as C macros with arguments. C applications may use “#undef” to remove a macro definition and ensure that the actual function is referenced. Any such macro will expand to a single expression that has the same precedence as a function call and that evaluates each of its arguments exactly once, fully protected by parentheses, so that arbitrary expressions may be used as arguments. </para> <para> The following symbols are macros that do not have function equivalents and that may expand their arguments in a manner other than that described above: <xref linkend='XtCheckSubclass' xrefstyle='select: title'/>, <xref linkend='XtNew' xrefstyle='select: title'/>, <xref linkend='XtNumber' xrefstyle='select: title'/>, <xref linkend='XtOffsetOf' xrefstyle='select: title'/>, <xref linkend='XtOffset' xrefstyle='select: title'/>, and <xref linkend='XtSetArg' xrefstyle='select: title'/>. </para> </sect1> <sect1 id="Widgets"> <title>Widgets</title> <para> The fundamental abstraction and data type of the X Toolkit is the widget, which is a combination of an X window and its associated input and display semantics and which is dynamically allocated and contains state information. Some widgets display information (for example, text or graphics), and others are merely containers for other widgets (for example, a menu box). Some widgets are output-only and do not react to pointer or keyboard input, and others change their display in response to input and can invoke functions that an application has attached to them. </para> <para> Every widget belongs to exactly one widget class, which is statically allocated and initialized and which contains the operations allowable on widgets of that class. Logically, a widget class is the procedures and data associated with all widgets belonging to that class. These procedures and data can be inherited by subclasses. Physically, a widget class is a pointer to a structure. The contents of this structure are constant for all widgets of the widget class but will vary from class to class. (Here, “constant” means the class structure is initialized at compile time and never changed, except for a one-time class initialization and in-place compilation of resource lists, which takes place when the first widget of the class or subclass is created.) For further information, see <xref linkend='Creating_Widgets' /> </para> <para> The distribution of the declarations and code for a new widget class among a public .h file for application programmer use, a private .h file for widget programmer use, and the implementation .c file is described in <xref linkend='Widget_Classing' /> The predefined widget classes adhere to these conventions. </para> <para> A widget instance is composed of two parts: </para> <itemizedlist spacing='compact'> <listitem> <para> A data structure which contains instance-specific values. </para> </listitem> <listitem> <para> A class structure which contains information that is applicable to all widgets of that class. </para> </listitem> </itemizedlist> <para> Much of the input/output of a widget (for example, fonts, colors, sizes, or border widths) is customizable by users. </para> <para> This chapter discusses the base widget classes, Core, Composite, and Constraint, and ends with a discussion of widget classing. </para> <sect2 id="Core_Widgets"> <title>Core Widgets</title> <para> The Core widget class contains the definitions of fields common to all widgets. All widgets classes are subclasses of the Core class, which is defined by the <function>CoreClassPart</function> and <function>CorePart</function> structures. </para> <sect3 id="CoreClassPart_Structure"> <title>CoreClassPart Structure</title> <para> All widget classes contain the fields defined in the <function>CoreClassPart</function> structure. </para> <programlisting> typedef struct { WidgetClass superclass; <lineannotation>See <xref linkend="Widget_Classing" xrefstyle='select: title' /></lineannotation> String class_name; <lineannotation>See <xref linkend="Resource_Management" xrefstyle='select: title' /></lineannotation> Cardinal widget_size; <lineannotation>See <xref linkend="Widget_Classing" xrefstyle='select: title' /></lineannotation> XtProc class_initialize; <lineannotation>See <xref linkend="Widget_Classing" xrefstyle='select: title' /></lineannotation> XtWidgetClassProc class_part_initialize; <lineannotation>See <xref linkend="Widget_Classing" xrefstyle='select: title' /></lineannotation> XtEnum class_inited; <lineannotation>See <xref linkend="Widget_Classing" xrefstyle='select: title' /></lineannotation> XtInitProc initialize; <lineannotation>See <xref linkend='Creating_Widgets' xrefstyle='select: title' /></lineannotation> XtArgsProc initialize_hook; <lineannotation>See <xref linkend='Creating_Widgets' xrefstyle='select: title' /></lineannotation> XtRealizeProc realize; <lineannotation>See <xref linkend='Realizing_Widgets' xrefstyle='select: title' /></lineannotation> XtActionList actions; <lineannotation>See <xref linkend='Translation_Management' xrefstyle='select: title' /></lineannotation> Cardinal num_actions; <lineannotation>See <xref linkend='Translation_Management' xrefstyle='select: title' /></lineannotation> XtResourceList resources; <lineannotation>See <xref linkend="Resource_Management" xrefstyle='select: title' /></lineannotation> Cardinal num_resources; <lineannotation>See <xref linkend="Resource_Management" xrefstyle='select: title' /></lineannotation> XrmClass xrm_class; <lineannotation>Private to resource manager</lineannotation> Boolean compress_motion; <lineannotation>See <xref linkend='X_Event_Filters' xrefstyle='select: title' /></lineannotation> XtEnum compress_exposure; <lineannotation>See <xref linkend='X_Event_Filters' xrefstyle='select: title' /></lineannotation> Boolean compress_enterleave; <lineannotation>See <xref linkend='X_Event_Filters' xrefstyle='select: title' /></lineannotation> Boolean visible_interest; <lineannotation>See <xref linkend='Widget_Exposure_and_Visibility' xrefstyle='select: title' /></lineannotation> XtWidgetProc destroy; <lineannotation>See <xref linkend='Destroying_Widgets' xrefstyle='select: title' /></lineannotation> XtWidgetProc resize; <lineannotation>See <xref linkend='Geometry_Management' xrefstyle='select: title' /></lineannotation> XtExposeProc expose; <lineannotation>See <xref linkend='Widget_Exposure_and_Visibility' xrefstyle='select: title' /></lineannotation> XtSetValuesFunc set_values; <lineannotation>See <xref linkend='Reading_and_Writing_Widget_State' xrefstyle='select: title' /></lineannotation> XtArgsFunc set_values_hook; <lineannotation>See <xref linkend='Reading_and_Writing_Widget_State' xrefstyle='select: title' /></lineannotation> XtAlmostProc set_values_almost; <lineannotation>See <xref linkend='Reading_and_Writing_Widget_State' xrefstyle='select: title' /></lineannotation> XtArgsProc get_values_hook; <lineannotation>See <xref linkend='Reading_and_Writing_Widget_State' xrefstyle='select: title' /></lineannotation> XtAcceptFocusProc accept_focus; <lineannotation>See <xref linkend='Focusing_Events_on_a_Child' xrefstyle='select: title' /></lineannotation> XtVersionType version; <lineannotation>See <xref linkend="Widget_Classing" xrefstyle='select: title' /></lineannotation> XtPointer callback_private; <lineannotation>Private to callbacks</lineannotation> String tm_table; <lineannotation>See <xref linkend='Translation_Management' xrefstyle='select: title' /></lineannotation> XtGeometryHandler query_geometry; <lineannotation>See <xref linkend ='Geometry_Management' xrefstyle='select: title' /></lineannotation> XtStringProc display_accelerator; <lineannotation>See <xref linkend='Translation_Management' xrefstyle='select: title' /></lineannotation> XtPointer extension; <lineannotation>See <xref linkend="Widget_Classing" xrefstyle='select: title' /></lineannotation> } CoreClassPart; </programlisting> <para> All widget classes have the Core class fields as their first component. The prototypical <function>WidgetClass</function> and <function>CoreWidgetClass</function> are defined with only this set of fields. </para> <programlisting> typedef struct { CoreClassPart core_class; } WidgetClassRec, *WidgetClass, CoreClassRec, *CoreWidgetClass; </programlisting> <para> Various routines can cast widget class pointers, as needed, to specific widget class types. </para> <para> The single occurrences of the class record and pointer for creating instances of Core are </para> <para> In <filename class="headerfile">IntrinsicP.h</filename>: </para> <programlisting> extern WidgetClassRec widgetClassRec; #define coreClassRec widgetClassRec </programlisting> <para> In <filename class="headerfile">Intrinsic.h</filename>: </para> <programlisting> extern WidgetClass widgetClass, coreWidgetClass; </programlisting> <para> The opaque types <function>Widget</function> and <function>WidgetClass</function> and the opaque variable <function>widgetClass</function> are defined for generic actions on widgets. In order to make these types opaque and ensure that the compiler does not allow applications to access private data, the Intrinsics use incomplete structure definitions in <filename class="headerfile">Intrinsic.h</filename>: </para> <programlisting> typedef struct _WidgetClassRec *WidgetClass, *CoreWidgetClass; </programlisting> </sect3> <sect3 id="CorePart_Structure"> <title>CorePart Structure</title> <para> All widget instances contain the fields defined in the <function>CorePart</function> structure. </para> <programlisting> typedef struct _CorePart { Widget self; <lineannotation>Described below</lineannotation> WidgetClass widget_class; <lineannotation>See <xref linkend='Widget_Classing' xrefstyle='select: title' /></lineannotation> Widget parent; <lineannotation>See <xref linkend='Creating_Widgets' xrefstyle='select: title' /></lineannotation> Boolean being_destroyed; <lineannotation>See <xref linkend='Destroying_Widgets' xrefstyle='select: title' /></lineannotation> XtCallbackList destroy_callbacks; <lineannotation>See <xref linkend='Destroying_Widgets' xrefstyle='select: title' /></lineannotation> XtPointer constraints; <lineannotation>See <xref linkend='Constrained_Composite_Widgets' xrefstyle='select: title' /></lineannotation> Position x; <lineannotation>See <xref linkend='Geometry_Management' xrefstyle='select: title' /></lineannotation> Position y; <lineannotation>See <xref linkend='Geometry_Management' xrefstyle='select: title' /></lineannotation> Dimension width; <lineannotation>See <xref linkend='Geometry_Management' xrefstyle='select: title' /></lineannotation> Dimension height; <lineannotation>See <xref linkend='Geometry_Management' xrefstyle='select: title' /></lineannotation> Dimension border_width; <lineannotation>See <xref linkend='Geometry_Management' xrefstyle='select: title' /></lineannotation> Boolean managed; <lineannotation>See <xref linkend='Composite_Widgets_and_Their_Children' xrefstyle='select: title' /></lineannotation> Boolean sensitive; <lineannotation>See <xref linkend='Setting_and_Checking_the_Sensitivity_State_of_a_Widget' xrefstyle='select: title' /></lineannotation> Boolean ancestor_sensitive; <lineannotation>See <xref linkend='Setting_and_Checking_the_Sensitivity_State_of_a_Widget' xrefstyle='select: title' /></lineannotation> XtTranslations accelerators; <lineannotation>See <xref linkend='Translation_Management' xrefstyle='select: title' /></lineannotation> Pixel border_pixel; <lineannotation>See <xref linkend='Realizing_Widgets' xrefstyle='select: title' /></lineannotation> Pixmap border_pixmap; <lineannotation>See <xref linkend='Realizing_Widgets' xrefstyle='select: title' /></lineannotation> WidgetList popup_list; <lineannotation>See <xref linkend='Pop_Up_Widgets' xrefstyle='select: title' /></lineannotation> Cardinal num_popups; <lineannotation>See <xref linkend='Pop_Up_Widgets' xrefstyle='select: title' /></lineannotation> String name; <lineannotation>See <xref linkend='Resource_Management' xrefstyle='select: title' /></lineannotation> Screen *screen; <lineannotation>See <xref linkend='Realizing_Widgets' xrefstyle='select: title' /></lineannotation> Colormap colormap; <lineannotation>See <xref linkend='Realizing_Widgets' xrefstyle='select: title' /></lineannotation> Window window; <lineannotation>See <xref linkend='Realizing_Widgets' xrefstyle='select: title' /></lineannotation> Cardinal depth; <lineannotation>See <xref linkend='Realizing_Widgets' xrefstyle='select: title' /></lineannotation> Pixel background_pixel; <lineannotation>See <xref linkend='Realizing_Widgets' xrefstyle='select: title' /></lineannotation> Pixmap background_pixmap; <lineannotation>See <xref linkend='Realizing_Widgets' xrefstyle='select: title' /></lineannotation> Boolean visible; <lineannotation>See <xref linkend='Widget_Exposure_and_Visibility' xrefstyle='select: title' /></lineannotation> Boolean mapped_when_managed; <lineannotation>See <xref linkend='Composite_Widgets_and_Their_Children' xrefstyle='select: title' /></lineannotation> } CorePart; </programlisting> <para> All widget instances have the Core fields as their first component. The prototypical type <function>Widget</function> is defined with only this set of fields. </para> <programlisting> typedef struct { CorePart core; } WidgetRec, *Widget, CoreRec, *CoreWidget; </programlisting> <para> Various routines can cast widget pointers, as needed, to specific widget types. </para> <para> In order to make these types opaque and ensure that the compiler does not allow applications to access private data, the Intrinsics use incomplete structure definitions in <filename class="headerfile">Intrinsic.h</filename>. </para> <programlisting> typedef struct _WidgetRec *Widget, *CoreWidget; </programlisting> </sect3> <sect3 id="Core_Resources"> <title>Core Resources</title> <para> The resource names, classes, and representation types specified in the <function>coreClassRec</function> resource list are </para> <informaltable frame='topbot'> <?dbfo keep-together="always" ?> <tgroup cols='3' align='left' colsep='0' rowsep='0'> <colspec colname='c1' colwidth='1.0*'/> <colspec colname='c2' colwidth='1.0*'/> <colspec colname='c3' colwidth='1.0*'/> <thead> <row rowsep='1'> <entry>Name</entry> <entry>Class</entry> <entry>Representation</entry> </row> </thead> <tbody> <row> <entry>XtNaccelerators</entry> <entry>XtCAccelerators</entry> <entry>XtRAcceleratorTable</entry> </row> <row> <entry>XtNbackground</entry> <entry>XtCBackground</entry> <entry>XtRPixel</entry> </row> <row> <entry>XtNbackgroundPixmap</entry> <entry>XtCPixmap</entry> <entry>XtRPixmap</entry> </row> <row> <entry>XtNborderColor</entry> <entry>XtCBorderColor</entry> <entry>XtRPixel</entry> </row> <row> <entry>XtNborderPixmap</entry> <entry>XtCPixmap</entry> <entry>XtRPixmap</entry> </row> <row> <entry>XtNcolormap</entry> <entry>XtCColormap</entry> <entry>XtRColormap</entry> </row> <row> <entry>XtNdepth</entry> <entry>XtCDepth</entry> <entry>XtRInt</entry> </row> <row> <entry>XtNmappedWhenManaged</entry> <entry>XtCMappedWhenManaged</entry> <entry>XtRBoolean</entry> </row> <row> <entry>XtNscreen</entry> <entry>XtCScreen</entry> <entry>XtRScreen</entry> </row> <row> <entry>XtNtranslations</entry> <entry>XtCTranslations</entry> <entry>XtRTranslationTable</entry> </row> </tbody> </tgroup> </informaltable> <para> Additional resources are defined for all widgets via the <function>objectClassRec</function> and <function>rectObjClassRec</function> resource lists; see <xref linkend='Object_Objects' /> and <xref linkend='Rectangle_Objects' /> for details. </para> </sect3> <sect3 id="CorePart_Default_Values"> <title>CorePart Default Values</title> <para> The default values for the Core fields, which are filled in by the Intrinsics, from the resource lists, and by the initialize procedures, are </para> <informaltable frame='topbot'> <?dbfo keep-together="always" ?> <tgroup cols='2' align='left' colsep='0' rowsep='0'> <colspec colname='c1' colwidth='0.4*'/> <colspec colname='c2' colwidth='1.0*'/> <thead> <row rowsep='1'> <entry>Field</entry> <entry>Default Value</entry> </row> </thead> <tbody> <row> <entry>self</entry> <entry>Address of the widget structure (may not be changed).</entry> </row> <row> <entry>widget_class</entry> <entry><emphasis remap='I'>widget_class</emphasis> argument to <xref linkend='XtCreateWidget' xrefstyle='select: title'/> (may not be changed).</entry> </row> <row> <entry>parent</entry> <entry><emphasis remap='I'>parent</emphasis> argument to <xref linkend='XtCreateWidget' xrefstyle='select: title'/> (may not be changed).</entry> </row> <row> <entry>being_destroyed</entry> <entry>Parent's <emphasis remap='I'>being_destroyed</emphasis> value.</entry> </row> <row> <entry>destroy_callbacks</entry> <entry>NULL</entry> </row> <row> <entry>constraints</entry> <entry>NULL</entry> </row> <row> <entry>x</entry> <entry>0</entry> </row> <row> <entry>y</entry> <entry>0</entry> </row> <row> <entry>width</entry> <entry>0</entry> </row> <row> <entry>height</entry> <entry>0</entry> </row> <row> <entry>border_width</entry> <entry>1</entry> </row> <row> <entry>managed</entry> <entry><function>False</function></entry> </row> <row> <entry>sensitive</entry> <entry><function>True</function></entry> </row> <row> <entry>ancestor_sensitive</entry> <entry>logical AND of parent's <emphasis remap='I'>sensitive</emphasis> and <emphasis remap='I'>ancestor_sensitive</emphasis> values.</entry> </row> <row> <entry>accelerators</entry> <entry>NULL</entry> </row> <row> <entry>border_pixel</entry> <entry><function>XtDefaultForeground</function></entry> </row> <row> <entry>border_pixmap</entry> <entry><function>XtUnspecifiedPixmap</function></entry> </row> <row> <entry>popup_list</entry> <entry>NULL</entry> </row> <row> <entry>num_popups</entry> <entry>0</entry> </row> <row> <entry>name</entry> <entry><emphasis remap='I'>name</emphasis> argument to <xref linkend='XtCreateWidget' xrefstyle='select: title'/> (may not be changed).</entry> </row> <row> <entry>screen</entry> <entry>Parent's <emphasis remap='I'>screen</emphasis>; top-level widget gets screen from display specifier (may not be changed).</entry> </row> <row> <entry>colormap</entry> <entry>Parent's <emphasis remap='I'>colormap</emphasis> value.</entry> </row> <row> <entry>window</entry> <entry>NULL</entry> </row> <row> <entry>depth</entry> <entry>Parent's <emphasis remap='I'>depth</emphasis>; top-level widget gets root window depth.</entry> </row> <row> <entry>background_pixel</entry> <entry><function>XtDefaultBackground</function></entry> </row> <row> <entry>background_pixmap</entry> <entry><function>XtUnspecifiedPixmap</function></entry> </row> <row> <entry>visible</entry> <entry><function>True</function></entry> </row> <row> <entry>mapped_when_managed</entry> <entry><function>True</function></entry> </row> </tbody> </tgroup> </informaltable> <para> <function>XtUnspecifiedPixmap</function> is a symbolic constant guaranteed to be unequal to any valid Pixmap id, <function>None</function>, and <function>ParentRelative</function>. </para> </sect3> </sect2> <sect2 id="Composite_Widgets"> <title>Composite Widgets</title> <para> The Composite widget class is a subclass of the Core widget class (see <xref linkend='Composite_Widgets_and_Their_Children' />). Composite widgets are intended to be containers for other widgets. The additional data used by composite widgets are defined by the <function>CompositeClassPart</function> and <function>CompositePart</function> structures. </para> <sect3 id="CompositeClassPart_Structure"> <title>CompositeClassPart Structure</title> <para> In addition to the Core class fields, widgets of the Composite class have the following class fields. </para> <programlisting> typedef struct { XtGeometryHandler geometry_manager; <lineannotation>See <xref linkend='Geometry_Management' xrefstyle='select: title' /></lineannotation> XtWidgetProc change_managed; <lineannotation>See <xref linkend='Composite_Widgets_and_Their_Children' xrefstyle='select: title' /></lineannotation> XtWidgetProc insert_child; <lineannotation>See <xref linkend='Composite_Widgets_and_Their_Children' xrefstyle='select: title' /></lineannotation> XtWidgetProc delete_child; <lineannotation>See <xref linkend='Composite_Widgets_and_Their_Children' xrefstyle='select: title' /></lineannotation> XtPointer extension; <lineannotation>See <xref linkend='Widget_Classing' xrefstyle='select: title' /></lineannotation> } CompositeClassPart; </programlisting> <para> The extension record defined for <function>CompositeClassPart</function> with <emphasis remap='I'>record_type</emphasis> equal to <emphasis role='strong'>NULLQUARK</emphasis> is <function>CompositeClassExtensionRec</function>. </para> <programlisting> typedef struct { XtPointer next_extension; <lineannotation>See <xref linkend='Class_Extension_Records' xrefstyle='select: title' /></lineannotation> XrmQuark record_type; <lineannotation>See <xref linkend='Class_Extension_Records' xrefstyle='select: title' /></lineannotation> long version; <lineannotation>See <xref linkend='Class_Extension_Records' xrefstyle='select: title' /></lineannotation> Cardinal record_size; <lineannotation>See <xref linkend='Class_Extension_Records' xrefstyle='select: title' /></lineannotation> Boolean accepts_objects; <lineannotation>See <xref linkend='Creating_a_Widget_Instance' xrefstyle='select: title' /></lineannotation> Boolean allows_change_managed_set; <lineannotation>See <xref linkend='Bundling_Changes_to_the_Managed_Set' xrefstyle='select: title' /></lineannotation> } CompositeClassExtensionRec, *CompositeClassExtension; </programlisting> <para> Composite classes have the Composite class fields immediately following the Core class fields. </para> <programlisting> typedef struc
| ver. 1.6 |
Github
|
.
| PHP 8.2.30 | ??????????? ?????????: 0 |
proxy
|
phpinfo
|
???????????