







                            11

               ȥȥå



Intrinsics ϡͥåȥɥƥ(ä X 
ɥƥ)ˤ桼󥿥եۤü׷
碌ƺ줿ץߥ饤֥Ǥ롥 Intrinsics 
åȥåȤ碌 X Toolkit Ȥʤ롥

11..11..  ȥ

Intrinsics ϡϰϤμѤǤ륦åȥ
ȤȥץꥱĶۤ뤿ɬפʴŪʵ
󶡤롥ȥ󥷥 Xlib (C 饤֥ X 󥿥ե
)ξ̤ؤǤ롥ȥ󥷥 X ɥ
ब󶡤Ūݲĥ뤬Υ桼
եΥݥꥷ䥹˰¸ʤȤ X ħϤ
ΤޤޤǤ롥

ȥ󥷥ϥ֥Ȼظץߥ󥰵ѤѤ
ơ桼󥿥եǤιۡȹ礻Ԥ
Τ륢ƥ󶡤Ƥ롥Υ󥿥եǤ
åȤȤΤ롥ΥƥǤϡץ
ޤϿˡǥåȤĥ뤳ȤǤ롥Ĥޤꡤ
¸ΥåȤ鿷åȤƳФ (֥
)ˡޤϳΩƤ뵬˴Ťƿ
åȤǽ餫ˡΤ줫Ǥ롥

Intrinsics νۤǤϡ֥ȳؤΥ롼Ȥ Core
Ȥ̾Υ饹Ǥä Intrinsics Υ꡼ 4 Ǥϡ
åȤǤʤѡ饹 Core ξ̤ 3ɲä
Υѡ饹ˤĤƤ 12 Ϥ롥ߤϡ
ȥ󥷥Υ饹ؤΥ롼Ȥˤ륯饹 Object Ǥ
롥ܻͽΰʹߤεҤǤϡå  _C_o_r_e 
Intrinsics Фܥ饹ǤΤȤƱ
ΤȤưȥ󥷥γƼ³ΰ
12ϤǤϡɤ Core ΥåȤǤʤѡ
ФƤ뤫롥륦åȤȤ
Ҥºݤˤϡ֥åȡפȡ֥֥ȡפΤɤ
Τϡʸ̮ˤäȽǤǤ롥

11..22..  

ȥ󥷥2Υץߥ󥰤оݤȤΤǤ
롥åȤˤϡȥ󥷥󶡤
뵡ǽʬȤäơܥ䥹СΤ褦ʴñ
桼󥿥եǤ顤ѥͥ°ɽΤ褦ʣ
ǤޤǤ뤳ȤǤ롥ץꥱ
ˤϡȥ󥷥μ³Τ򥦥åȤ
ĤȤ߹碌ѤX Υǥץ쥤Ǵʥ桼









                             -2-


󥿥ե뤳ȤǤ롥ȥ󥷥Υץ
ߥ󥰥󥿥եΤ˥ץꥱǤѤ
ꤷʬϡƤμ³Ūץ줫ƤӽФ
褦߷פƤ롥äơۤȤɤΰϤ
ǤϤʤƻϤˤʤäƤ롥󥿥եΤ˥
åȥץߥ󥰤ꤷʬϡ C 줫Ȥ
뤳ȤԤƤ롥ξϡ̾ C Υץ
ߥ󥰤εŬѤ롥λͽˤ륯饤Ȥ
ϡȥ󥷥μ³ƤӽФǤդΥ⥸塼
롤åȡץꥱؤ

Intrinsics εѤ륢ץꥱϥإåե
<_X_1_1_/_I_n_t_r_i_n_s_i_c_._h>  <_X_1_1_/_S_t_r_i_n_g_D_e_f_s_._h> (ޤϤ
ʤ) <_X_1_1_/_X_a_t_o_m_s_._h> <_X_1_1_/_S_h_e_l_l_._h> ɬ󥯥롼
ʤФʤʤˡåȤμǤ
<_X_1_1_/_I_n_t_r_i_n_s_i_c_._h> ˡ <_X_1_1_/_I_n_t_r_i_n_s_i_c_P_._h> 򥤥󥯥
ɤʤФʤʤ

ץꥱξ⡤Ѥ륦åȤ˱ɲä
إåե򥤥󥯥롼ɤʤФʤʤ(㤨С
<_X_1_1_/_X_a_w_/_L_a_b_e_l_._h>  <_X_1_1_/_X_a_w_/_S_c_r_o_l_l_b_a_r_._h>)ޤPOSIX 
ΥƥǤϡIntrinsics Υ֥ȥ饤֥ե
 _l_i_b_X_t_._a Ǥꡤ̾ϥץꥱΥ󥯻
-lXt ǻȤ롥

11..33..  ³³ȥޥ

λͽƤδؿϡʲ˼㳰C 
ΰդΥޥȤƼƤ롥C Υץꥱ
Ǥϡ ``#undef'' Ѥƥޥ´ؿ
ؤλȤݾڤ뤳ȤǤ롥Τ褦ʥޥơͥ
礬ؿƤӽФƱǤñȤμŸ졤Ϥ
1٤Ĥɾ줺̤ȤäƴݸƤ
롥äơǤդμȤƻѤ뤳ȤǤ롥

ʲΥܥʴؿ˽Ҥ٤褦ˡǤ
ŸԤʤޥǤ: _X_t_C_h_e_c_k_S_u_b_c_l_a_s_s,
_X_t_N_e_w, _X_t_N_u_m_b_e_r, _X_t_O_f_f_s_e_t_O_f, _X_t_O_f_f_s_e_t, _X_t_S_e_t_A_r_g


11..44..  å


X ToolkitˤŪݲȥǡϥåȤǤ
롥åȤ X ΥɥȤȼϤɽΥ
ޥƥǤꡤưŪ˳Ƥ졤־ݻ롥
åȤˤϾ(㤨СƥȤ䥰եå)ɽ
Τ⤢Сñ¾ΥåȤΥƥʤȤʤ
(㤨Х˥塼ܥå)⤢롥ޤϤԤäƥݥ
Ϥ䥭ܡϤˤϱʤåȤ⤢С
Ϥ˱ɽѤꡤץꥱ󤬳Ƥǽ
ƤӽФȤǤ륦åȤ⤢롥











                             -3-


ƤΥåȤϡɬåȥ饹1Ĥ°
롥åȥ饹ŪʳơԤ졤
饹ΥåȤ¹ԤǤݻƤ롥Ū
ˤϡåȥ饹ϡΥ饹°ƤΥ
åȤ˴ط³ȥǡǤ롥μ³ȥǡ
֥饹˷Ѿ뤳ȤǤ롥ʪŪˤϡå
饹Ϲ¤ΤؤΥݥ󥿤Ǥ롥ι¤ΤƤϥ
åȥ饹ƱʤФɤΥåȤǤƱǤ뤬
饹ˤäưۤʤ롥 (ǡƱפȤΤϡ饹ι
¤ϥѥ˽ΤǡѹǤʤȤ̣
롥ٸ¤Υ饹 (one-time class
initialization)꥽ꥹȤΥץ쥤ѥ(in-
place compilation)㳰Ǥ롥ϥ饹䥵֥饹
ǽΥåȤ줿˹Ԥ)ܤ 2.5 
򻲾ȤΤȡ

ԤȡץꥱץޤΤΥѥ֥
 .h եˤ뿷åȥ饹ΤΥ
ɡåȥץޤΤΥץ饤١Ȥ .h ե
롤.c եμˤĤƤ 1.6 򻲾Ȥ뤳ȡͽ
Ƥ륦åȥ饹Ϥε˽äƤ롥

åȤΥ󥹥󥹤Τ2ĤʬǤ:

+o    󥹥󥹸ͭͤĥǡ¤

+o    Υ饹ƤΥåȤŬѤĥ
     饹¤

饹Ϥʬ(եȡ)ϥ桼
ޥ뤳ȤǤ롥

ξϤϴŪʥåȥ饹(Core, Composite,
Constraint)ˤĤƵåȤΥ饹ʬε
᤯롥


11..44..11..  CCoorree å

Core åȥ饹ϡƤΥåȤ˶̤ʥե
ɤݻ롥ƤΥåȥ饹 Core 饹
Υ֥饹Ǥꡤ _C_o_r_e_C_l_a_s_s_P_a_r_t ¤Τ _C_o_r_e_P_a_r_t ¤
ȤäƤ롥


11..44..11..11..  CCoorreeCCllaassssPPaarrtt ¤¤

_C_o_r_e_C_l_a_s_s_P_a_r_t ¤ΤƤեɤƤΥ
åȥ饹˴ޤޤƤ롥














                             -4-

__
||
typedef struct {
     WidgetClass superclass;       1.6 򻲾
     String class_name;            9 Ϥ򻲾
     Cardinal widget_size;         1.6 򻲾
     XtProc class_initialize;      1.6 򻲾
     XtWidgetClassProc class_part_initialize;1.6 򻲾
     XtEnum class_inited;          1.6 򻲾
     XtInitProc initialize;        2.5 򻲾
     XtArgsProc initialize_hook;   2.5 򻲾
     XtRealizeProc realize;        2.6 򻲾
     XtActionList actions;         10 Ϥ򻲾
     Cardinal num_actions;         10 Ϥ򻲾
     XtResourceList resources;     9 Ϥ򻲾
     Cardinal num_resources;       9 Ϥ򻲾
     XrmClass xrm_class;           ꥽ޥ͡Υץ饤١Ȥѿ
     Boolean compress_motion;      7.9 򻲾
     XtEnum compress_exposure;     7.9 򻲾
     Boolean compress_enterleave;  7.9 򻲾
     Boolean visible_interest;     7.10 򻲾
     XtWidgetProc destroy;         2.8 򻲾
     XtWidgetProc resize;          6 Ϥ򻲾
     XtExposeProc expose;          7.10 򻲾
     XtSetValuesFunc set_values;   9.7 򻲾
     XtArgsFunc set_values_hook;   9.7 򻲾
     XtAlmostProc set_values_almost;9.7 򻲾
     XtArgsProc get_values_hook;   9.7 򻲾
     XtAcceptFocusProc accept_focus;7.3 򻲾
     XtVersionType version;        1.6 򻲾
     XtPointer callback_private;   ХåΥץ饤١Ȥѿ
     String tm_table;              10 Ϥ򻲾
     XtGeometryHandler query_geometry;6 Ϥ򻲾
     XtStringProc display_accelerator;10 Ϥ򻲾
     XtPointer extension;          1.6 򻲾
} CoreClassPart;

||__

ƤΥåȥ饹κǽ Core 饹եɤ
롥ץȥפ _W_i_d_g_e_t_C_l_a_s_s  _C_o_r_e_W_i_d_g_e_t_C_l_a_s_s ϡ
եɤνȤä롥

__
||
typedef struct {
     CoreClassPart core_class;
} WidgetClassRec, *WidgetClass, CoreClassRec, *CoreWidgetClass;

||__

͡ʥ롼ˤơɬפ˱ƥåȥ饹ؤΥ
󥿤Υåȥ饹˥㥹ȤƤ褤











                             -5-


Core  Υ󥹥󥹤뤿Υ饹쥳ɤȥݥ
εʬʲ˼:

In _I_n_t_r_i_n_s_i_c_P_._h:

__
||
extern WidgetClassRec widgetClassRec;
#define coreClassRec widgetClassRec

||__

In _I_n_t_r_i_n_s_i_c_._h:

__
||
extern WidgetClass widgetClass, coreWidgetClass;

||__

opaque ʷǤ _W_i_d_g_e_t  _W_i_d_g_e_t_C_l_a_s_s  opaque ѿ
_w_i_d_g_e_t_C_l_a_s_s ϡåȤΰŪʥ뤿
롥η opaque ˤץꥱˤ
ץ饤١ȤʥǡؤΥ򥳥ѥ餬ػߤǤ褦
ˤ뤿ᡤIntrinsics  _I_n_t_r_i_n_s_i_c_._h ˤԴʹ¤
Ԥ:

__
||
typedef struct _WidgetClassRec *WidgetClass, *CoreWidgetClass;
||__



11..44..11..22..  CCoorreePPaarrtt ¤¤

åȤΥ󥹥󥹤 _C_o_r_e_P_a_r_t ¤Τ
եɤġ

























                             -6-

__
||
typedef struct _CorePart {
     Widget self;             
     WidgetClass widget_class;1.6 Ỳ
     Widget parent;           2.5 Ỳ
     Boolean being_destroyed; 2.8 Ỳ
     XtCallbackList destroy_callbacks;2.8 Ỳ
     XtPointer constraints;   3.6 Ỳ
     Position x;              6 ϻ
     Position y;              6 ϻ
     Dimension width;         6 ϻ
     Dimension height;        6 ϻ
     Dimension border_width;  6 ϻ
     Boolean managed;         3 ϻ
     Boolean sensitive;       7.7 Ỳ
     Boolean ancestor_sensitive;7.7 Ỳ
     XtTranslations accelerators;10 ϻ
     Pixel border_pixel;      2.6 Ỳ
     Pixmap border_pixmap;    2.6 Ỳ
     WidgetList popup_list;   5 ϻ
     Cardinal num_popups;     5 ϻ
     String name;             9 ϻ
     Screen *screen;          2.6 Ỳ
     Colormap colormap;       2.6Ỳ
     Window window;           2.6 Ỳ
     Cardinal depth;          2.6 Ỳ
     Pixel background_pixel;  2.6 Ỳ
     Pixmap background_pixmap;2.6 Ỳ
     Boolean visible;         7.10 Ỳ
     Boolean mapped_when_managed;3 ϻ
} CorePart;

||__

åȤΥ󥹥ƤˤơǽΥݡͥ
 Core եɤǤ롥ץȥ׷ _W_i_d_g_e_t ϡΥե
ɤνȤä롥

__
||
typedef struct {
     CorePart core;
} WidgetRec, *Widget, CoreRec, *CoreWidget;

||__

͡ʥ롼ǡɬפ˱ƥåȤؤΥݥ󥿤
ΥåȤη˥㥹Ȥ뤳ȤǤ롥

η opaque ˤץꥱˤץ饤١
ǡؤΥػߤ뤿ᡤIntrinsics  _I_n_t_r_i_n_-
_s_i_c_._h ǤԴʹ¤ΤѤƤ롥











                             -7-

__
||
typedef struct _WidgetRec *Widget, *CoreWidget;
||__



11..44..11..33..  CCoorree ꥽


_c_o_r_e_C_l_a_s_s_R_e_c ꥽ꥹ꥽̾ȥ
ɽʲ˼


------------------------------------------------------------------------
̾                   饹                 ɽ
------------------------------------------------------------------------
XtNaccelerators        XtCAccelerators        XtRAcceleratorTable
XtNbackground          XtCBackground          XtRPixel
XtNbackgroundPixmap    XtCPixmap              XtRPixmap
XtNborderColor         XtCBorderColor         XtRPixel
XtNborderPixmap        XtCPixmap              XtRPixmap
XtNcolormap            XtCColormap            XtRColormap
XtNdepth               XtCDepth               XtRInt
XtNmappedWhenManaged   XtCMappedWhenManaged   XtRBoolean
XtNscreen              XtCScreen              XtRScreen
XtNtranslations        XtCTranslations        XtRTranslationTable
------------------------------------------------------------------------


꥽ƤФɲäΥ꥽ϡ _o_b_j_e_c_t_C_l_a_s_s_R_e_c , _r_e_c_-
_t_O_b_j_C_l_a_s_s_R_e_c ꥽ꥹȤȤä롥ܤ 12.2
 12.3 򻲾Ȥ뤳ȡ


11..44..11..44..  CCoorreePPaarrtt Υǥե

Core γƥեɤΥǥեͤʲ˼
ϡIntrinsics ꥽ꥹȤͤѤ³
äꤹ롥


-----------------------------------------------------------------------------------------------------
ե                               ǥե
-----------------------------------------------------------------------------------------------------
self                                     åȹ¤ΤΥɥ쥹(ѹǤʤ)
widget_class                             _X_t_C_r_e_a_t_e_W_i_d_g_e_t Ϥ _w_i_d_g_e_t___c_l_a_s_s(ѹǤʤ)
parent                                   _X_t_C_r_e_a_t_e_W_i_d_g_e_t Ϥ _p_a_r_e_n_t(ѹǤʤ)
being_destroyed                          ƥåȤ _b_e_i_n_g___d_e_s_t_r_o_y_e_d ͡
destroy_callbacks                        NULL
constraints                              NULL
x                                        0
y                                        0
width                                    0










                             -8-


height                                   0
border_width                             1
managed                                  _F_a_l_s_e
sensitive                                _T_r_u_e
ancestor_sensitive                       ƥåȤ_s_e_n_s_i_t_i_v_e  _a_n_c_e_s_t_o_r___s_e_n_s_i_t_i_v_e ͤ
                                         ѡ
accelerators                             NULL
border_pixel                             _X_t_D_e_f_a_u_l_t_F_o_r_e_g_r_o_u_n_d
border_pixmap                            _X_t_U_n_s_p_e_c_i_f_i_e_d_P_i_x_m_a_p
popup_list                               NULL
num_popups                               0
name                                     _X_t_C_r_e_a_t_e_W_i_d_g_e_t Ϥ _n_a_m_e(ѹǤʤ)
screen                                   ƥåȤ _s_c_r_e_e_n ͡ȥåץ٥륦
                                         åȤϥǥץ쥤Ҥ饹꡼롥
                                         (ѹǤʤ)
colormap                                 ƥåȤ _c_o_l_o_r_m_a_p ͡
window                                   NULL
depth                                    ƥåȤ _d_e_p_t_h ͡ȥåץ٥륦
Ȥϥ롼ȥɥο롥
background_pixel                         _X_t_D_e_f_a_u_l_t_B_a_c_k_g_r_o_u_n_d
background_pixmap                        _X_t_U_n_s_p_e_c_i_f_i_e_d_P_i_x_m_a_p
visible                                  _T_r_u_e
mapped_when_managed                      _T_r_u_e
-----------------------------------------------------------------------------------------------------


_X_t_U_n_s_p_e_c_i_f_i_e_d_P_i_x_m_a_p ϥܥåǤ롥ͤͭ
ʥԥåޥåפ ID ơ _N_o_n_e, _P_a_r_e_n_t_R_e_l_a_t_i_v_e_, Τ
Ȥۤʤ뤳ȤݾڤƤ롥

11..44..22..  CCoommppoossiittee å

Composite åȥ饹 Core åȥ饹Υ
饹Ǥ(3Ϥ򻲾)Composite åȤ¾Υ
åȤΥƥʤˤ뤿ΤΤǤ롥Composite 
åȤȤɲäΥǡ _C_o_m_p_o_s_i_t_e_C_l_a_s_s_P_a_r_t ¤Τ
_C_o_m_p_o_s_i_t_e_P_a_r_t ¤Τ롥

11..44..22..11..  CCoommppoossiitteeCCllaassssPPaarrtt ¤¤

Composite 饹ΥåȤϡCore 饹եɤ˲
ưʲΥ饹եɤġ





















                             -9-

__
||
typedef struct {
     XtGeometryHandler geometry_manager;6 Ϥ򻲾
     XtWidgetProc change_managed;  3 Ϥ򻲾
     XtWidgetProc insert_child;    3 Ϥ򻲾
     XtWidgetProc delete_child;    3 Ϥ򻲾
     XtPointer extension;          1.6 򻲾
} CompositeClassPart;

||__

_r_e_c_o_r_d___t_y_p_e ͤ _N_U_L_L_Q_U_A_R_K Ǥ _C_o_m_p_o_s_i_t_e_C_l_a_s_s_P_a_r_t 
ĥ쥳ɤ _C_o_m_p_o_s_i_t_e_C_l_a_s_s_E_x_t_e_n_s_i_o_n_R_e_c Ǥ
롥

__
||
typedef struct {
     XtPointer next_extension;     1.6.12 򻲾
     XrmQuark record_type;         1.6.12 򻲾
     long version;                 1.6.12 򻲾
     Cardinal record_size;         1.6.12 򻲾
     Boolean accepts_objects;      2.5.2 򻲾
     Boolean allows_change_managed_set;3.4.3 򻲾
} CompositeClassExtensionRec, *CompositeClassExtension;

||__

Composite 饹 Composite 饹եɤġ
Core 饹եɤľ˵Ҥ롥

__
||
typedef struct {
     CoreClassPart core_class;
     CompositeClassPart composite_class;
} CompositeClassRec, *CompositeWidgetClass;

||__

Composite  Υ󥹥󥹤뤿Υ饹쥳ɤȥ
󥿤εʬʲ˼:

In _I_n_t_r_i_n_s_i_c_P_._h:

__
||
extern CompositeClassRec compositeClassRec;

||__

In _I_n_t_r_i_n_s_i_c_._h:











                            -10-

__
||
extern WidgetClass compositeWidgetClass;

||__

opaque ʷǤ _C_o_m_p_o_s_i_t_e_W_i_d_g_e_t  _C_o_m_p_o_s_i_t_e_W_i_d_g_e_t_C_l_a_s_s,
opaque ѿǤ _c_o_m_p_o_s_i_t_e_W_i_d_g_e_t_C_l_a_s_s 饹 Com-
posite ޤϤΥ֥饹Ǥ륦åȤˤŪ
Τ롥С̻ _C_o_m_p_o_s_i_t_e_C_l_a_s_s_E_x_-
_t_e_n_s_i_o_n ɽܥå _X_t_C_o_m_p_o_s_i_t_e_E_x_t_e_n_s_i_o_n_V_e_r_-
_s_i_o_n Ǥ(1.6.12 򻲾) _I_n_t_r_i_n_s_i_c_._h ǤԴʹ¤
Ȥ뤿ᡤѥϥץ饤١ȤʥǡؤΥ
μ¤˸Ĥ뤳ȤǤ롥

__
||
typedef struct _CompositeClassRec *CompositeWidgetClass;
||__



11..44..22..22..  CCoommppoossiitteePPaarrtt ¤¤

Core 󥹥󥹥եɤ˲äComposite 饹ϰʲ
󥹥󥹥եɤäƤ롥 _C_o_m_p_o_s_i_t_e_P_a_r_t 
¤ΤƤ롥

__
||
typedef struct {
     WidgetList children;     3 Ϥ򻲾
     Cardinal num_children;   3 Ϥ򻲾
     Cardinal num_slots;      3 Ϥ򻲾
     XtOrderProc insert_position;3.2 򻲾
} CompositePart;

||__

Composite åȤ Composite 󥹥󥹥եɤ
äƤ롥 Core 󥹥󥹥եɤľ˵Ҥ
롥

__
||
typedef struct {
     CorePart core;
     CompositePart composite;
} CompositeRec, *CompositeWidget;

||__

_I_n_t_r_i_n_s_i_c_._h ǤԴʹ¤ȤΤǡѥ
ϥץ饤١ȤʥǡؤΥμ¤˸Ĥ뤳ȤǤ
롥









                            -11-

__
||
typedef struct _CompositeRec *CompositeWidget;
||__



11..44..22..33..  CCoommppoossiittee ꥽

_c_o_m_p_o_s_i_t_e_C_l_a_s_s_R_e_c ꥽ꥹƤ꥽
̾饹ɽʲ˼


-------------------------------------------------------------
̾                饹              ɽ
-------------------------------------------------------------
XtNchildren         XtCReadOnly         XtRWidgetList
XtNinsertPosition   XtCInsertPosition   XtRFunction
XtNnumChildren      XtCReadOnly         XtRCardinal
-------------------------------------------------------------



11..44..22..44..  CCoommppoossiitteePPaarrtt Υǥե

Composite եɤΥǥեͤʲ˼ͤ
Composite ν³ Composite  ꥽ꥹȤȤä
ꤹ롥


-------------------------------------------
ե        ǥե
-------------------------------------------
children          NULL
num_children      0
num_slots         0
insert_position   Ǹؿ
-------------------------------------------


_c_h_i_l_d_r_e_n, _n_u_m___c_h_i_l_d_r_e_n, _i_n_s_e_r_t___p_o_s_i_t_i_o_n եɤϥ꥽
Ȥ롥 XtNinsertPosition ǽʥ꥽
롥 XtNchildren  XtNnumChildren ϡɤΥ饤Ȥ
ǤɤळȤϤǤ뤬 Composite åȥ饹μ
³Ȥʤѹ뤳ȤϤǤʤ


11..44..33..  CCoonnssttrraaiinntt å

Constraint åȤ Composite åȥ饹Υ
饹Ǥ(3.6 򻲾ȤΤ)Constraint åȤ
ҥåȤ줾ɲäξ֥ǡ롥
ƤϡҥåȤΥȥˤ륯饤
constraint ʤɤ롥constraint åȤѤ
ɲäΥǡ _C_o_n_s_t_r_a_i_n_t_C_l_a_s_s_P_a_r_t ¤Τ _C_o_n_s_t_r_a_i_n_t_P_a_r_t









                            -12-


¤Τ롥


11..44..33..11..  CCoonnssttrraaiinnttCCllaassssPPaarrtt ¤¤

Core, Composite 饹եɤ˲äConstraint 饹
åȤϰʲΥ饹եɤġ

__
||
typedef struct {
     XtResourceList resources;9 Ϥ򻲾
     Cardinal num_resources;  9 Ϥ򻲾
     Cardinal constraint_size;3.6 򻲾
     XtInitProc initialize;   3.6 򻲾
     XtWidgetProc destroy;    3.6 򻲾
     XtSetValuesFunc set_values;9.7.2 򻲾
     XtPointer extension;     1.6 򻲾
} ConstraintClassPart;

||__

_r_e_c_o_r_d___t_y_p_e ͤ _N_U_L_L_Q_U_A_R_K Ǥ _C_o_n_s_t_r_a_i_n_t_C_l_a_s_s_P_a_r_t 
ĥ쥳ɤ _C_o_n_s_t_r_a_i_n_t_C_l_a_s_s_E_x_t_e_n_s_i_o_n_R_e_c 
롥

__
||
typedef struct {
     XtPointer next_extension;1.6.12 Ỳ
     XrmQuark record_type;    1.6.12 Ỳ
     long version;            1.6.12 Ỳ
     Cardinal record_size;    1.6.12 Ỳ
     XtArgsProc get_values_hook;9.7.1 Ỳ
} ConstraintClassExtensionRec, *ConstraintClassExtension;

||__

Constraint 饹 Constraint 饹եɤġ
 Composite 饹եɤľ˵Ҥ롥

__
||
typedef struct _ConstraintClassRec {
     CoreClassPart core_class;
     CompositeClassPart composite_class;
     ConstraintClassPart constraint_class;
} ConstraintClassRec, *ConstraintWidgetClass;

||__

Constraint Υ󥹥󥹤뤿Υ饹쥳ɤȥ
󥿤εʬʲ˼:










                            -13-


_I_n_t_r_i_n_s_i_c_P_._h:

__
||
extern ConstraintClassRec constraintClassRec;

||__

_I_n_t_r_i_n_s_i_c_._h:

__
||
extern WidgetClass constraintWidgetClass;

||__

opaque Ǥ _C_o_n_s_t_r_a_i_n_t_W_i_d_g_e_t, _C_o_n_s_t_r_a_i_n_t_W_i_d_g_e_t_C_l_a_s_s 
opaque ѿǤ _c_o_n_s_t_r_a_i_n_t_W_i_d_g_e_t_C_l_a_s_s ϡ饹 Con-
straint 饹Υ֥饹Ǥ륦åȤΰŪ
Ԥ롥 _C_o_n_s_t_r_a_i_n_t_C_l_a_s_s_E_x_t_e_n_s_i_o_n С
̻ҤФ륷ܥå _X_t_C_o_n_s_t_r_a_i_n_t_E_x_t_e_n_s_i_o_n_-
_V_e_r_s_i_o_n Ǥ(1.6.12 򻲾) _I_n_t_r_i_n_s_i_c_._h ǤԴʹ
¤ȤΤǡץ饤١Ȥʥǡ˥褦
Ȥȡѥϳμ¤ˤ򸡽Ф롥

__
||
typedef struct _ConstraintClassRec *ConstraintWidgetClass;
||__



11..44..33..22..  CCoonnssttrraaiinnttPPaarrtt ¤¤

Core, Composite Υ󥹥󥹥եɤ˲äConstraint
饹ΥåȤϰʲ̤ѤΥ󥹥󥹥եɤ
ġΥեɤ _C_o_n_s_t_r_a_i_n_t_P_a_r_t ¤Τ롥

__
||
typedef struct {
        int empty;
} ConstraintPart;

||__

Constraint åȤ Constraint 󥹥󥹥ե
ġ Composite 󥹥󥹥եɤľ˵
롥














                            -14-

__
||
typedef struct {
     CorePart core;
     CompositePart composite;
     ConstraintPart constraint;
} ConstraintRec, *ConstraintWidget;

||__

_I_n_t_r_i_n_s_i_c_._h Դʹ¤ѤƤΤǡץ饤١
Ȥʥǡإ褦Ȥȡѥ餬μ¤ˤ
Ф롥

__
||
typedef struct _ConstraintRec *ConstraintWidget;
||__



11..44..33..33..  CCoonnssttrraaiinntt ꥽

_c_o_n_s_t_r_a_i_n_t_C_l_a_s_s_R_e_c  _c_o_r_e___c_l_a_s_s եɤ _c_o_n_-
_s_t_r_a_i_n_t___c_l_a_s_s _r_e_s_o_u_r_c_e_s եɤϤ NULL Ǥ
ꡤ_n_u_m___r_e_s_o_u_r_c_e_s եɤϥǤ롥ĤޤꡤConstraint
ФƤϡѡ饹ʾɲå꥽
뤳ȤϤǤʤ


11..55..  ͭͭη

ۤʤ륷ƥĶˤ륦åȤȥץꥱΥ
ɤΰܿ뤿ᡤIntrinsics ˤƤϡ̩
ɽ Intrinsics θġμŪ˰¸򤵤
褦ʣηƤ롥

Τ褦ʼηʲ˵󤲤:

BBoooolleeaann    ޤϥǤʤͤĥǡŪ˻ؼ
           ʤ¤ꡤ饤ȤϥǤʤͤ򥷥
           å _T_r_u_e ƱΤȤߤʤƤϤʤʤ

CCaarrddiinnaall   ʤȤ [0..2^16-1] ϰϤ̵
           

DDiimmeennssiioonn  ʤȤ [0..2^16-1] ϰϤ̵
           

PPoossiittiioonn   ʤȤ [-2^15..2^15-1] ϰϤդ
           ǡ

XXttPPooiinntteerr  char *, int *, ؿؤΥݥ󥿡¤ΤؤΥݥ
           long ͤʬǼǤ륵ĥǡǤ
           դηȴؿؤΥݥ󥿤ޤ long ͤ









                            -15-


           _X_t_P_o_i_n_t_e_r Ѵ뤳ȤǤη̤򸵤
           ӤƤANSI C ĶǤϡ _X_t_P_o_i_n_t_e_r
            void* Ȥ뤳ȤԤ롥

XXttAArrggVVaall   _X_t_P_o_i_n_t_e_r, _C_a_r_d_i_n_a_l, _D_i_m_e_n_s_i_o_n, _P_o_s_i_t_i_o_n ͤ
           ʬǼǤ륵Υǡ

XXttEEnnuumm     ̤Ǥͤ򾯤ʤȤ 128 ĥ󥳡ɤǤ
           ǡΤ2ĤϥܥåͤǤ
           _T_r_u_e  _F_a_l_s_e Ǥ롥ܥåͤǤ _T_R_U_E
            _T_r_u_e ʤ褦졤 _F_A_L_S_E 
           _F_a_l_s_e ʤ褦롥

Τ褦ʸͭη˲äʲ˼󥹥󥹥ѡȥ쥳
ɤФ빽¤ΤˤեɤΤʽϼ
Ǥ롥 _O_b_j_e_c_t_P_a_r_t, _R_e_c_t_O_b_j_P_a_r_t, _C_o_r_e_P_a_r_t, _C_o_m_p_o_s_i_t_e_P_a_r_t,
_S_h_e_l_l_P_a_r_t, _W_M_S_h_e_l_l_P_a_r_t, _T_o_p_L_e_v_e_l_S_h_e_l_l_P_a_r_t, _A_p_p_l_i_c_a_t_i_o_n_S_h_e_l_l_-
_P_a_r_t_. Τ褦ʹ¤Τϥץ饤١Ȥɲåեɤ
˻ĤȤ⤢롥 _O_b_j_e_c_t_P_a_r_t, _R_e_c_t_O_b_j_P_a_r_t, _C_o_r_e_P_a_r_t ¤
Τϡ̾ƱǤƤΥФΥեåȤ _O_b_j_e_c_t_R_e_c,
_R_e_c_t_O_b_j_R_e_c, _C_o_r_e_R_e_c (_W_i_d_g_e_t_R_e_c) Ʊˤʤ褦ʤ
Фʤʤʳˤϡ2ĤΥեɤΥեåȴ֤
ϤɤʴطꤷƤϤʤʤ


11..66..  åȤΥ饹

åȤ _w_i_d_g_e_t___c_l_a_s_s եɤϡåȥ饹
¤ΤؤƤ롥ι¤ΤϡΥ饹Υå
ƤƱͤȤʤäƤ롥äơåȤ
ƤӽФǽʼ³ľܼ뤳ȤϤʤ³(᥽
ɤȸƤФ)ϤΤ褦ˤƤǤϤʤåȥ饹
¤Τ̤ѤǤΤȤƼ롥Υ᥽åɤϡ
åȥ饹᥽åɤδ֤ǡ̤Υ
Ūʼ³ˤäƸƤӽФ롥Τ褦ʼ³
ϡΥ饹ȡΥ֥饹ƤΥåȤ
Ǥ롥

ƤΥåȥ饹 Core Υ֥饹Ǥꡤ
˥֥饹뤳ȤǤ롥֥饹Ԥȡ
¸Υ饹˻饹ȤˡɬפȤʤ륳ɤ
̤򸺤餹ȤǤ롥㤨СåȤ _X_t_R_e_-
_s_o_u_r_c_e_L_i_s_t ǻȤƤΥ꥽򵭽ҤɬפϤʤξ
ϡåȤΥ꥽Τѡ饹äƤ
ʤΤ򵭽ҤФ褤̾֥饹ϥѡ
μ³¿Ѿ(㤨С expose ³䥸
ϥɥ)

֥饹ϤꤹˤʤäƤޤȤ⤢롥
ѡ饹μ³Ѿʤ֥饹ʤ
СŬڤʥѡ饹Τɤͤľ
Ǥ롥











                            -16-


֥饹򤦤ޤѤ뤿ˡå̿̾
ΥϾܤƤ롥åȤ3ĤΥե
ǹ:

+o    ѥ֥å .h ե롥ϥ饤ȥ
     Ȥ䥢ץꥱѤ롥

+o    ץ饤١Ȥ .h ե롥ϥåȥ饹
     ֥饹Ǥ륦åȤѤ롥

+o    .c ե롥ΥեǥåȤ롥


11..66..11..  åȤ̿̿̾̾

Intrinsics ǤϡåȤꡤåȤ
ƥץꥱȤΩƤ뤿ƻڤѰդƤ롥
ץꥱκݡʸ֤ʸʸλȤ
ˤĤơѤ륦åȥ饹οΥ
ʤƤѤ褦ˡåȤ񤯺ݤˤϰʲΥ
ɥ饤˽٤Ǥ롥

+o    X 饤֥̿̾ΤŬѲǽʤΤѤ
     ȡ㤨С쥳Ǥ̾ˤϡʸ
     ʣñȤ߹碌Ȥˤϥ
     뤳(: background_pixmap)³̾ʸ
     ǻϤᡤʣñȤ߹碌ȤˤʸȤ
     (: _A_r_g_L_i_s_t, _X_t_S_e_t_V_a_l_u_e_s )

+o    ꥽֤̾귿ϥե̾ξƱǤ뤬
     ʣñȤ߹碌ȤϡϻȤ鷺
     ñκǽʸˤ롥ѥ餬֤θ
     ФǤ褦ˡ꥽̾Ƭ ``XtN'' Ȥץ
     եåդܥåʼ̻Ҥġ㤨С
     _b_a_c_k_g_r_o_u_n_d___p_i_x_m_a_p եɤб뼱̻Ҥ XtNback-
     groundPixmap Ǥꡤ ``backgroundPixmap'' Ȥ
     ʸ롥ͽ줿̾
     <_X_1_1_/_S_t_r_i_n_g_D_e_f_s_._h> ˵ҤƤ롥̾
     ˤϡѤǤ̾ޤʤȳǧ뤳ȡ

+o    ꥽饹ʸʸǻϤޤꡤñζڤ
     ʸȤʤ(: ``BorderWidth'')꥽饹ʸ
     ץեå ``XtC'' ǻϤޤ롤ܥåʼ̻Ҥ
     (: XtCBorderWidth)ͽ줿̾
     <_X_1_1_/_S_t_r_i_n_g_D_e_f_s_._h> ˵ҤƤ롥

+o    ꥽ɽʸ֤Ϸ̾ƱǤ
     (: ``TranslationTable'')ɽʸϥץեå
      ``XtR'' ǻϤޤ롤ܥåʼ̻Ҥ򤽤줾
     (: XtRTranslationTable)ͽ줿̾
     <_X_1_1_/_S_t_r_i_n_g_D_e_f_s_._h> ˵ҤƤ롥

+o    åȥ饹̾ʸǻϤޤꡤñ
     ڤʸȤʤ롥饹̾ AbcXyz Ǥ









                            -17-


     硤ˤäƷޤ̾Ĥ:

     -    ɲäΥåȹ¤Υѡ̾AbxXyz

     -    ʥåȥ󥹥󥹹¤̾ AbcXyzRec
           _AbcXyzRec

     -    åȥ󥹥󥹹¤ΤؤΥݥ󥿷
          ̾AbcXyzWidget

     -    ɲäΥ饹¤Υѡ̾AbcXyzClassPart

     -    ʥ饹¤̾AbcXyzClassRec  _AbcXyz-
          ClassRec

     -    饹¤ΤΥݥ󥿷̾AbcXyzWidgetClass

     -    饹¤ѿabcXyzClassRec

     -    饹¤ΥݥѿabcXyzWidgetClass

+o    ȥ󥹥졼ѤǤ륢³ϡ
     ³Ʊ̿̾˽ʤФʤʤĤޤꡤ
     ʸǻϤޤꡤñζڤʸˤ(: ``High-
     light'', ``NotifyClient'')

ܥåʼ̻ XtN..., XtC..., XtR... ϥޥ䥰
Хʥܥ롤뤤ϤξȤäƼ뤳Ȥ
롥̻Ҥ(ۤ)  _S_t_r_i_n_g Ǥ롥ݥ󥿤ͤΤ
ΤϽפǤϤʤ饤Ȥϡ2Ĥμ̻ҤۤʤäƤ
̾饹ɽʸ󤬰ۤʤȤߤʤƤϤʤʤ
ĶˤäƤϥХʥܥƥΰ˽񤭹
ळȤǤ뤬Τ褦ʾˤϡ̡˳ȯ
åȤƱ˻ȤȤʣĤ뤪줬
ˤդ뤳ȡ


11..66..22..  ѥ֥å ..hh եˤ륦åȤΥ֥
饹

åȥ饹Фѥ֥å .h եƤϰ
Ǥ롥Υեϥ饤ȤݡȤ롥

+o    ѡ饹Υѥ֥å .h եؤλȡ

+o    ΥåȤѡ饹ɲä뿷꥽
     ̾ȥ饹ؤΥܥåʼ̻ҡˤ
     ϡ̾ͤδ֤˶1Ĥ졤Ǹˤ϶䥳
     Ȥդʤ褦ˤʤФʤʤϡʣ
     饹ˡ褯ΤȤǥѥ餫
     Υ˥󥰤Фˤ뤿Ǥ롥

+o    Υ饹뿷꥽ǡƤФ
     









                            -18-


+o    åȤΥ󥹥󥹤˻Ȥ饹쥳ɥ
     ѿ

+o    Υ饹Υåȥ󥹥󥹤б C 
     η

+o    饹᥽åɤΤΥȥ꡼

㤨СʲΤ褦ʥѥ֥å .h եϡLabel 
åȤμǤ:


     #ifndef LABEL_H
     #define LABEL_H

     /* ꥽ */
     #define XtNjustify "justify"
     #define XtNforeground "foreground"
     #define XtNlabel "label"
     #define XtNfont "font"
     #define XtNinternalWidth "internalWidth"
     #define XtNinternalHeight "internalHeight"

     /* 饹쥳ɥݥ */
     extern WidgetClass labelWidgetClass;

     /* C ˤ Widget  */
     typedef struct _LabelRec      *LabelWidget;

     /* 饹᥽åɤΥȥ꡼ */
     extern void LabelSetText();
          /* Widget w */
          /* String text */

     extern String LabelGetText();
          /* Widget w */

     #endif LABEL_H


ƥȤξդ󥯥롼ɤѤС¾Υ
åȤΥѡ饹Ȥƥ󥯥롼ɤƤ뤫ɤ
򵤤ˤʤƤ⡤ץꥱʣΥåȤΥإ
ե򥤥󥯥롼ɤǤ롥

ե̾Ĺ¤륪ڥ졼ƥ󥰥ƥб
뤿ᡤѥ֥å .h ե̾ϥåȥ饹
̾κǽ10ʸȤ롥㤨СConstraint åȤ
Фѥ֥å .h ե̾ _C_o_n_s_t_r_a_i_n_t_._h Ǥ롥














                            -19-


11..66..33..  ץ饤١Ȥ ..hh եˤ륦åȤΥ
饹

åȤΤΥץ饤١Ȥ .h եϡΥ
åȤΥ֥饹Ǥ륦åȥ饹˥ݡȤ
롥ޤΥեƤϰʲǤ롥

+o    Υ饹Υѥ֥å .h եؤλȡ

+o    ѡ饹Υץ饤١Ȥ .h եؤλȡ

+o    Υ饹뿷꥽ɽФ륷
     ܥåʻҡˤƤϡ̾ͤδ֤˶
     1Ĥ졤Ǹˤ϶䥳Ȥդʤ褦ˤ
     ʤФʤʤ

+o    åȥ󥹥󥹤ѡ饹Υå
     ¤Τɲä롤եɤФ빽¤Υѡ
     

+o    ΥåȤФ롤ʥåȥ󥹥
     ¤Τ

+o    Υåȥ饹ѡ饹 constraint 
     ¤Τɲä롤եɤФ빽¤ΥѡȤ
     ԤΤϡåȥ饹 Con-
     straint Υ֥饹ξǤ롥

+o     constraint ¤ΤԤ
     ϡåȥ饹 Constraint Υ֥饹ξ
     Ǥ롥

+o    åȥ饹ѡȤ줿饹᥽åɤ
     Ѥ뿷³ƤФ뷿

+o    Υåȥ饹ѡ饹Υåȥ
     饹¤Τɲä롤եɤФ빽¤Υ
     

+o    ΥåȤФ봰ʥåȥ饹¤
     

+o    ΥåȤФ봰ʥåȥ饹ĥ
     ¤Τ(¸ߤ)

+o    饹ĥΥС̤뤿Υܥå
     (¸ߤ)

+o    Υ饹ΰŪʥ饹¤ΤġХʥ
     饹¤ѿ̾

+o    åȥ饹ѡȹ¤Τˤ뿷³Τ
     줾ФѾˤĤƤ










                            -20-


Label åȤΥץ饤١Ȥ .h եʲ˼
:


     #ifndef LABELP_H
     #define LABELP_H

     #include <X11/Label.h>

     /* Label åȤȤɽ */
     #define XtRJustify "Justify"

     /* Label åȥ쥳Ѥοե */
     typedef struct {
     /* ǽʥ꥽ */
          Pixel foreground;
          XFontStruct *font;
          String label;            /* ɽƥ */
          XtJustify justify;
          Dimension internal_width;/* οľΥԥ */
          Dimension internal_height;/* οʿΥԥ */

     /* ꥽ͳΥǡ */
          GC normal_GC;
          GC gray_GC;
          Pixmap gray_pixmap;
          Position label_x;
          Position label_y;
          Dimension label_width;
          Dimension label_height;
          Cardinal label_len;
          Boolean display_sensitive;
     } LabelPart;



     /* 󥹥󥹥쥳ɤδ */
     typedef struct _LabelRec {
          CorePart core;
          LabelPart label;
     } LabelRec;

     /* Label 饹᥽åɤη */
     typedef void (*LabelSetTextProc)();
          /* Widget w */
          /* String text */

     typedef String (*LabelGetTextProc)();
          /* Widget w */

     /* Label åȤΥ饹쥳ɤФ뿷ե */
     typedef struct {
          LabelSetTextProc set_text;
          LabelGetTextProc get_text;









                            -21-


          XtPointer extension;
     } LabelClassPart;

     /* 饹쥳ɤδ */
     typedef struct _LabelClassRec {
          CoreClassPart core_class;
          LabelClassPart label_class;
     } LabelClassRec;

     /* 饹쥳ѿ */
     extern LabelClassRec labelClassRec;

     #define LabelInheritSetText((LabelSetTextProc)_XtInherit)
     #define LabelInheritGetText((LabelGetTextProc)_XtInherit)
     #endif LABELP_H


ե̾Ĺ¤륪ڥ졼ƥ󥰥ƥб
뤿ᡤץ饤١Ȥ .h ե̾ϡåȥ
̾κǽ9ʸʸ P ³Τˤ롥㤨
СConstraint åȤФץ饤١Ȥ .h ե
̾ _C_o_n_s_t_r_a_i_n_P_._h Ǥ롥


11..66..44..
 ..cc եˤ륦åȤΥ֥饹

åȤ .c եϡ饹쥳ѿФ빽¤
ΤΥ˥饤ġϰʲʬʤ롥

+o    饹(: _s_u_p_e_r_c_l_a_s_s, _c_l_a_s_s___n_a_m_e, _w_i_d_g_e_t___s_i_z_e,
     _c_l_a_s_s___i_n_i_t_i_a_l_i_z_e, _c_l_a_s_s___i_n_i_t_e_d)

+o    ǡ(: _r_e_s_o_u_r_c_e_s and _n_u_m___r_e_s_o_u_r_c_e_s, _a_c_t_i_o_n_s and
     _n_u_m___a_c_t_i_o_n_s, _v_i_s_i_b_l_e___i_n_t_e_r_e_s_t, _c_o_m_p_r_e_s_s___m_o_t_i_o_n,  _c_o_m_-
     _p_r_e_s_s___e_x_p_o_s_u_r_e, _v_e_r_s_i_o_n)

+o    å(: _i_n_i_t_i_a_l_i_z_e, _r_e_a_l_i_z_e, _d_e_s_t_r_o_y, 
     åȸͭο)

_s_u_p_e_r_c_l_a_s_s եɤϥѡ饹ΥХʥ饹
ɤؤΥ쥳ɤϥѡ饹Υץ饤١Ȥ
.h եƤ롥Ū core åȤľ
ܤΥ֥饹ξ硤 _s_u_p_e_r_c_l_a_s_s  _w_i_d_g_e_t_C_l_a_s_s_R_e_c ¤Τ
ɥ쥹˽롥Υѡ饹ϡ饹Ϣ
䡤ѡ饹ηѾ䥨٥ԥ󥰤Τ
Ȥ(1.6.7 ᡤ1.6.9 ᡤ1.6.10 򻲾)

_c_l_a_s_s___n_a_m_e եɤϡΥ饹Υƥ̾ġ
̾ϥ꥽ޥ͡㤬Ѥ롥㤨СLabel 
Ȥʸ ``Label'' ġʣΥ饹Ʊ饹̾Υ
Ȥͭ뤳ȤǤ롥饹ν³¹Ԥ
ˤϡʸιŪʳƤԤʤФʤ餺
³θˤϲԤäƤϤʤʤ









                            -22-


_w_i_d_g_e_t___s_i_z_e եɤϡб륦åȥ󥹥󥹹
¤ΤΥǤ(饹¤ΤΥǤϤʤ)

_v_e_r_s_i_o_n եɤϥġ륭åȤμΥСֹ
ץꥱ󤬻ȤäƤ X Toolkit ȥåȤ
å¹Ի˹Ԥ˻Ȥ롥åȤ
ˤϡ򥦥åȥ饹¤Τνˡ
ΥܥåͤǤ _X_t_V_e_r_s_i_o_n  _v_e_r_s_i_o_n ˥åȤ
ʤФʤʤåȤΥХʥ꤬ Intrinsics ̤
Ǥμ¤ưȹͤˤϡ̤ͤǤ
_X_t_V_e_r_s_i_o_n_D_o_n_t_C_h_e_c_k ꤷƤ褤ۤʤӥ
Intrinsics 󥿥եФơåȤ̤Υ
ɤǥѥ뤹ɬפ硤ܥ _X_t_S_p_e_c_i_f_i_c_a_-
_t_i_o_n_R_e_l_e_a_s_e ȤȤ褤ˤĤƤ13Ϥ롥
_X_t_V_e_r_s_i_o_n ȤȡIntrinsics μϡŤǥѥ
뤵줿åȤΥХʥǧ뤳ȤǤ롥

_e_x_t_e_n_s_i_o_n եɤϾŪʾ̸ߴΤΤΤǤ롥
åȤΥ饹ѡȤ˥եɤɲäȡ֥
ι¤ΤΥ쥤ȤѤΤǡƥѥ뤷ľɬ
롥ƥѥ򤱤ʤСƥ饹ѡȤκǸ
ĥեɤɲå쥳ɤ򼨤ɬפȤɲå
򤳤ɲå쥳ɤ˻뤳ȡ

ʳΥեɤˤĤƤϡ줾ξϤ롥

 .c եˤϡ饹Υ󥹥󥹤˻Ȥä
ʥ饹¤ΥݥѿҤƤ롥Label 
åȤ .c եάΤʲ˼꥽
ơ֥ˤĤƤ9Ϥ롥



     /* Label ͭΥ꥽ */
     static XtResource resources[] = {
          {XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel),
             XtOffset(LabelWidget, label.foreground), XtRString,
             XtDefaultForeground},
          {XtNfont, XtCFont, XtRFontStruct, sizeof(XFontStruct *),
             XtOffset(LabelWidget, label.font),XtRString,
             XtDefaultFont},
          {XtNlabel, XtCLabel, XtRString, sizeof(String),
             XtOffset(LabelWidget, label.label), XtRString, NULL},
                    .
                    .
                    .
     }

     /* ³ */
     static void ClassInitialize();
     static void Initialize();
     static void Realize();
     static void SetText();
     static void GetText();









                            -23-


          .
          .
          .



     /* 饹쥳 */
     LabelClassRec labelClassRec = {
       {
         /* core_class Υե */
          /* superclass  */        (WidgetClass)&coreClassRec,
          /* class_name  */        "Label",
          /* widget_size */        sizeof(LabelRec),
          /* class_initialize      */ClassInitialize,
          /* class_part_initialize */NULL,
          /* class_inited          */False,
          /* initialize  */        Initialize,
          /* initialize_hook       */NULL,
          /* realize     */        Realize,
          /* actions     */        NULL,
          /* num_actions */        0,
          /* resources   */        resources,
          /* num_resources         */XtNumber(resources),
          /* xrm_class   */        NULLQUARK,
          /* compress_motion       */True,
          /* compress_exposure     */True,
          /* compress_enterleave   */True,
          /* visible_interest      */False,
          /* destroy     */        NULL,
          /* resize      */        Resize,
          /* expose      */        Redisplay,
          /* set_values  */        SetValues,
          /* set_values_hook       */NULL,
          /* set_values_almost     */XtInheritSetValuesAlmost,
          /* get_values_hook       */NULL,
          /* accept_focus          */NULL,
          /* version     */        XtVersion,
          /* callback_offsets      */NULL,
          /* tm_table    */        NULL,
          /* query_geometry        */XtInheritQueryGeometry,
          /* display_accelerator   */NULL,
          /* extension   */        NULL
       },
       {
         /* Label_class Υե*/
          /* get_text    */        GetText,
          /* set_text    */        SetText,
          /* extension   */        NULL
       }
     };

     /* 饹쥳ɥݥ */
     WidgetClass labelWidgetClass = (WidgetClass) &labelClassRec;










                            -24-


     /* ᥽åɥ롼 */
     void LabelSetText(w, text)
          Widget w;
          String text;
     {
          Label WidgetClass lwc = (Label WidgetClass)XtClass(w);
          XtCheckSubclass(w, labelWidgetClass, NULL);
          *(lwc->label_class.set_text)(w, text)
     }
     /* ץ饤١Ȥʼ³ */
          .
          .
          .



11..66..55..  åȥ饹ȥѡ饹λ

åȤΥ饹ˤϡ _X_t_C_l_a_s_s Ѥ롥

__
||
WidgetClass XtClass(_w)
      Widget _w;


_w         åȤꤹ롥 Must be of class Object
          or any subclass thereof.
||__

ؿ _X_t_C_l_a_s_s ϥåȤΥ饹¤ΤؤΥݥ󥿤


åȤΥѡ饹򻲾Ȥˤϡ _X_t_S_u_p_e_r_c_l_a_s_s 
Ѥ롥

__
||
WidgetClass XtSuperclass(_w)
      Widget _w;


_w         åȤꤹ롥 Must be of class Object
          or any subclass thereof.
||__

ؿ _X_t_S_u_p_e_r_c_l_a_s_s ϡåȤΥѡ饹Υ饹
¤Τ֤


11..66..66..  åȤΥ֥饹θ

åȤ°륵֥饹Ĵ٤ˤϡ _X_t_I_s_S_u_b_c_l_a_s_s 
Ѥ롥









                            -25-

__
||
Boolean XtIsSubclass(_w, _w_i_d_g_e_t___c_l_a_s_s)
      Widget _w;
      WidgetClass _w_i_d_g_e_t___c_l_a_s_s;


_w         饹å륦åȤޤϥ֥
          󥹥󥹤ꤹ롥Must be of class Object or
          any subclass thereof.

_w_i_d_g_e_t___c_l_a_s_s
          ƥȤΤΥåȥ饹ꤹ롥 Must
          be oobbjjeeccttCCllaassss or any subclass thereof.
||__

ؿ _X_t_I_s_S_u_b_c_l_a_s_s ϡꤷåȤΥ饹Ĵ١
줬ꤷ饹ƱΥ֥饹Ǥ _T_r_u_e 
åȤΥ饹ϡ֥饹򤤤ĤɤäΤ
褯ꤷ饹ľܤΥ֥饹ǤɬפϤ
Compoiste åȤäƤ륢ƥΥ饹
ɬפˤϡ _X_t_I_s_S_u_b_c_l_a_s_s Ȥäơå
˾ޤ֥ȤΥ饹°Ƥ뤫ɤĴ٤뤳
ȤǤ롥


ꤵ줿åȤIntrinsicsΥ饹Υ֥饹
°Ƥ뤫ɤĴ٤뤿ᡤIntrinsics ǤȤ߹ߥ饹
Τ줾ˤĤơ _X_t_I_s_S_u_b_c_l_a_s_s ƱΥޥؿ
Ƥ롥Τ褦ʼ³ˤ _X_t_I_s_O_b_j_e_c_t, _X_t_I_s_R_e_c_t_O_b_j,
_X_t_I_s_W_i_d_g_e_t, _X_t_I_s_C_o_m_p_o_s_i_t_e, _X_t_I_s_C_o_n_s_t_r_a_i_n_t, _X_t_I_s_S_h_e_l_l,
_X_t_I_s_O_v_e_r_r_i_d_e_S_h_e_l_l, _X_t_I_s_W_M_S_h_e_l_l, _X_t_I_s_V_e_n_d_o_r_S_h_e_l_l,
_X_t_I_s_T_r_a_n_s_i_e_n_t_S_h_e_l_l, _X_t_I_s_T_o_p_L_e_v_e_l_S_h_e_l_l, _X_t_I_s_A_p_p_l_i_c_a_t_i_o_n_S_h_e_l_l,
_X_t_I_s_S_e_s_s_i_o_n_S_h_e_l_l 롥

ΥޥȴؿΰεˡƱǤ롥

__
||
Boolean XtIs_<_c_l_a_s_s_> (_w)
      Widget _w;


_w         饹å륦åȤ֥ȤΥ
          󥹥󥹤ꤹ롥 Must be of class Object or
          any subclass thereof.
||__

Ȥ߹ߤΥ饹ľܻȤä _X_t_I_s_S_u_b_c_l_a_s_s ƤӽФ⡤
μ³Ȥ®Ȥ¿


åȤΥ饹åǥХåѤΥ顼å
ˤϡ <_X_1_1_/_I_n_t_r_i_n_s_i_c_P_._h> Ƥ
_X_t_C_h_e_c_k_S_u_b_c_l_a_s_s Ѥ뤳:









                            -26-

__
||
void XtCheckSubclass(_w, _w_i_d_g_e_t___c_l_a_s_s, _m_e_s_s_a_g_e)
      Widget _w;
      WidgetClass _w_i_d_g_e_t___c_l_a_s_s;
      String _m_e_s_s_a_g_e;


_w         å륦åȤޤϥ֥Ȥꤹ
          롥 Must be of class Object or any subclass
          thereof.

_w_i_d_g_e_t___c_l_a_s_s
          ƥȤ˻ȤåȤꤹ롥 Must be
          oobbjjeeccttCCllaassss or any subclass thereof.

_m_e_s_s_a_g_e   Ѥåꤹ롥
||__

ޥ _X_t_C_h_e_c_k_S_u_b_c_l_a_s_s ϡꤵ줿åȤΥ饹
Ĵ١줬ꤷ饹ޤϤΥ֥饹Ʊɤ
Ĵ٤롥åȤΥ饹ϥ֥饹򤤤Ĥɤä
ΤǤ褯ꤷ饹ľܤΥ֥饹ǤɬפϤ
ꤵ줿åȤΥ饹֥饹Ǥʤ硤
_X_t_C_h_e_c_k_S_u_b_c_l_a_s_s Ϳ줿ååȤμºݤ
饹Ԥ륯饹Ȥäƥ顼å
_X_t_E_r_r_o_r_M_s_g ƤӽФݡȤ줿롼Υȥ
Ǥϡ _X_t_C_h_e_c_k_S_u_b_c_l_a_s_s ȤݡȤ줿
ФåȤΥ饹򥯥饤Ȥμ¤Ϥ
褦ˤ٤Ǥ롥

_X_t_C_h_e_c_k_S_u_b_c_l_a_s_s ¹ԤΤϡѥΥܥ DEBUG
ƥ⥸塼򥳥ѥ뤷ȤǤ롥Ǥ
硤 _X_t_C_h_e_c_k_S_u_b_c_l_a_s_s ϶ʸȤ졤
륳ɤʤ


11..66..77..  ѡ饹ϢϢ

åȥ饹¤ΤΤۤȤɤϼʬȤƤݻ
롤Υեɤϥѡ饹¤Τбե
ɤ˥󥯤Ƥ롥󥯤ƤեɤȤ
ơIntrinsics ϥեɤͤ˥롥
ԤΤб륹ѥ饹ͤ˥夫(
ѡ饹ϢȤ)б륹ѥ饹ͤ˥
(ѡ饹ϢȤ)Ǥ롥ʬ
ȤƤݻեɤϰʲǤ:

åȥ饹ƤˤĤ:_c_l_a_s_s___n_a_m_e
                    _c_l_a_s_s___i_n_i_t_i_a_l_i_z_e
                    _w_i_d_g_e_t___s_i_z_e
                    _r_e_a_l_i_z_e
                    _v_i_s_i_b_l_e___i_n_t_e_r_e_s_t
                    _r_e_s_i_z_e
                    _e_x_p_o_s_e









                            -27-


                    _a_c_c_e_p_t___f_o_c_u_s
                    _c_o_m_p_r_e_s_s___m_o_t_i_o_n
                    _c_o_m_p_r_e_s_s___e_x_p_o_s_u_r_e
                    _c_o_m_p_r_e_s_s___e_n_t_e_r_l_e_a_v_e
                    _s_e_t___v_a_l_u_e_s___a_l_m_o_s_t
                    _t_m___t_a_b_l_e
                    _v_e_r_s_i_o_n
                    _a_l_l_o_c_a_t_e
                    _d_e_a_l_l_o_c_a_t_e

Composite åȥ饹ˤĤ:_g_e_o_m_e_t_r_y___m_a_n_a_g_e_r
                    _c_h_a_n_g_e___m_a_n_a_g_e_d
                    _i_n_s_e_r_t___c_h_i_l_d
                    _d_e_l_e_t_e___c_h_i_l_d
                    _a_c_c_e_p_t_s___o_b_j_e_c_t_s
                    _a_l_l_o_w_s___c_h_a_n_g_e___m_a_n_a_g_e_d___s_e_t

Constraint åȥ饹ˤĤ:_c_o_n_s_t_r_a_i_n_t___s_i_z_e

Shell åȥ饹ˤĤ:_r_o_o_t___g_e_o_m_e_t_r_y___m_a_n_a_g_e_r


ѡ饹Ϣξ硤θƤӽФԤ
ȡObject, RectObj, Core  饹¤ΤΥեɤǽ
졤ˤΥ֥饹¤ΤΥեɤ
롥ơΤ褦ˤƤΥåȤΥ饹¤
ޤǥ饹Ϣ򲼤äƤ椯ѡ饹饵֥饹
Ȥɤեɤʲ˼:

          _c_l_a_s_s___p_a_r_t___i_n_i_t_i_a_l_i_z_e
          _g_e_t___v_a_l_u_e_s___h_o_o_k
          _i_n_i_t_i_a_l_i_z_e
          _i_n_i_t_i_a_l_i_z_e___h_o_o_k
          _s_e_t___v_a_l_u_e_s
          _s_e_t___v_a_l_u_e_s___h_o_o_k
          _r_e_s_o_u_r_c_e_s


Constraint Υ֥饹ξˤϡ˲ä _C_o_n_s_t_r_a_i_n_t_-
_C_l_a_s_s_P_a_r_t ¤Τ _C_o_n_s_t_r_a_i_n_t_C_l_a_s_s_E_x_t_e_n_s_i_o_n_R_e_c ¤Τΰʲ
ΥեɤϢ뤵Ƥ(Ϣ뤵ƤΤ Con-
straint 饹餽Υ֥饹ޤǤǤ):
          _r_e_s_o_u_r_c_e_s
          _i_n_i_t_i_a_l_i_z_e
          _s_e_t___v_a_l_u_e_s
          _g_e_t___v_a_l_u_e_s___h_o_o_k


ѡ饹Ϣξ硤θƤӽФԤȥ
åȥ饹¤ΤΥեɤǽ˥졤ˤ
Υѡ饹ι¤ΤΥեɤ롥
ơΤ褦ˤ Core , RectObj, Object 饹¤ΤޤϢ
˾äƤ椯֥饹饹ѡ饹ؤȤɤ
եɤʲ˼:









                            -28-


          _d_e_s_t_r_o_y
          _a_c_t_i_o_n_s


Constraint Υ֥饹ξˤϡ֥饹 Constraint
饹ޤǤ _C_o_n_s_t_r_a_i_n_t_C_l_a_s_s_P_a_r_t λİʲΥեɤ
Ϣ뤵Ƥ롥

          _d_e_s_t_r_o_y


11..66..88..  饹ν:: ccllaassss__iinniittiiaalliizzee ³³
ccllaassss__ppaarrtt__iinniittiiaalliizzee ³³

饹쥳ɤ¿ϥѥ󥯻ƽ
ȤǤ롥ˤäƤϡ饹ϷС
Ͽɬפ¹Ի˰ٸ¤νԤɬפ뤳Ȥ⤢
롥

ץεư˼ưŪ˸ƤӽФ褦ʽ³
C ǤϺʤΤǡåȥ饹 class_initial-
ize ³뤳Ȥˤʤ롥μ³ Intrinsics 
ưŪˡİ٤ƤӽФ饹³ؤΥݥ
η _X_t_P_r_o_c Ǥ:

__
||
typedef void (*XtProc)(void);

||__

åȥ饹 _c_l_a_s_s___i_n_i_t_i_a_l_i_z_e եɤ NULL 
ꤵƤ硤Υåȥ饹Ͻ³
ʤȤ롥

٤Ԥ륯饹ν˲ä饹쥳ɤΥѡ
Υեɤ륯饹⤢롥νΥ
饹ФƤԤΤǤϤʤ֥饹ФƤԤ
롥ޤνϤΥ饹Υ饹ѡȽ³
ǹԤ졤Фݥ󥿤 _c_l_a_s_s___p_a_r_t___i_n_i_t_i_a_l_i_z_e ե
ɤ˳Ǽ롥class_part ³Υݥ󥿤η
_X_t_W_i_d_g_e_t_C_l_a_s_s_P_r_o_c Ǥ롥

__
||
typedef void (*XtWidgetClassProc)(WidgetClass);
      WidgetClass _w_i_d_g_e_t___c_l_a_s_s;


_w_i_d_g_e_t___c_l_a_s_s
          륯饹Υ饹¤ΤؤΥݥ󥿡
||__

饹νδ֡Υ饹ӤΥ֥饹ƤФ









                            -29-


륯饹ѡȽ³ϡѡ饹饵֥饹
ǡ饹쥳ɤˤĤƸƤӽФ롥μ³
ϡ饹Υ쥳ɤΥѡȤɬפȤưŪʽƹ
ǤäƤ롥Ǥ褯ȤΤϡ饹
Ѿ줿᥽åƤ褹뤳ȤǤ롥㤨С
åȥ饹 C ѡ饹 Core, Composite, A, B
ľ硤C Ф륯饹쥳ɤϺǽ Core 
class_part_initialize ³Ϥ롥μ³ϷѾ
 Core Υ᥽åɤƲ褷Υ饹쥳ɤ
Ƥ꥽ꥹȤȥơ֥Υƥɽ򥳥
ѥ뤹롥ˡComposite  class_part_initialize ³
ƤӽФ졤C Υ饹쥳ɤ composite ѡȤ
롥ǸˡA, B, C Ф class_part_initialize 
ǸƤӽФ롥ܤˤĤƤϡ1.6.9 򻲾
뤳ȡ饹եɤʤ饹䡤饹
եɤФɲýɬפȤʤ饹ξ
ϡ_c_l_a_s_s___p_a_r_t___i_n_i_t_i_a_l_i_z_e  NULL Ƥ褤

饹³̵ͭ˴ؤ餺ƤΥ饹
_c_l_a_s_s___i_n_i_t_e_d եɤϽͤ _F_a_l_s_e ǤʤФʤʤ

饹ΥåȤȤ _X_t_C_r_e_a_t_e_W_i_d_g_e_t
ϡåȥ饹ƤΥѡ饹ѡ饹
饵֥饹ν˽뤳Ȥݾڤ롥ν
ϡ _c_l_a_s_s___i_n_i_t_e_d եɤ򤽤줾å뤳Ȥˤ
ƹԤ_c_l_a_s_s___i_n_i_t_e_d եɤ _F_a_l_s_e ʤС
饹ƤΥѡ饹 class_initialize ³
class_part_initialize ³ƤӽФȤˤäƽ
 Intrinsics ϼ _c_l_a_s_s___i_n_i_t_e_d եɤ˥Ǥʤ
򥻥åȤ롥ΰٸ¤νʹߤϥ饹¤ΤѲ
ʤ

Label 饹Υ饹³ʲ˼:


     static void ClassInitialize()
     {
          XtSetTypeConverter(XtRString, XtRJustify, CvtStringToJustify,
                         NULL, 0, XtCacheNone, NULL);
     }



11..66..99..  åȥ饹ν

饹ΤϡΥ饹ޤϥ֥饹κǽ
åȤ줿ȤǤ롥åȤ뤳
ȤʤåȤˤϡ _X_t_I_n_i_t_i_a_l_i_z_e_W_i_d_g_e_t_C_l_a_s_s
Ѥ뤳ȡ














                            -30-

__
||
void XtInitializeWidgetClass(_o_b_j_e_c_t___c_l_a_s_s)
      WidgetClass _o_b_j_e_c_t___c_l_a_s_s;


_o_b_j_e_c_t___c_l_a_s_s
          륪֥ȥ饹ꤹ롥 _o_b_j_e_c_t_-
          _C_l_a_s_s ޤ _o_b_j_e_c_t_C_l_a_s_s ǤդΥ֥饹
          뤳ȤǤ롥
||__

ꤵ줿åȥ饹˽Ƥ硤
_X_t_I_n_i_t_i_a_l_i_z_e_W_i_d_g_e_t_C_l_a_s_s ¨¤롥

饹³˷СϿƤ硤η
СȤ褦ˤʤΤϡΥ饹ޤϥ֥饹
κǽΥ֥Ȥ뤫 _X_t_I_n_i_t_i_a_l_i_z_e_W_i_d_g_e_t_C_l_a_s_s
ƤӽФưʹߤǤ(9.6 Ỳ)


11..66..1100..  ѡ饹ηѾ

åȥ饹ϡȼΥɤ˥ѡ饹
äƤƤͳ˻ȤȤǤ롥ˤ褯Ѿ
ϰʲǤ:

     expose

     realize

     insert_child

     delete_child

     geometry_manager

     set_values_almost

 _x_y_z Ѿˤϡ饹쥳 _X_t_I_n_h_e_r_i_t_X_y_z
ꤹ뤳ȡ

³򥦥åȥ饹ѡ륯饹
ơ class_part_initialize ³μ³ѾǤ褦
ˤʤФʤʤCore  Constraint 쥳ɤ
Ϣ뤵줿Ϸ褷ƷѾ뤳ȤϤʤå
饹ʬΥѡ饹ʾưԤʤʤС
饹쥳Ϣ뤵줿³ˤ NULL ꤹ롥

ѾưϥեɤͤΤΡ̤ͤӤޥå
ˤΥեɤФ륹ѡ饹ͤ򥳥ԡ
뤳ȤˤäƹԤ롥̤(ѾȸƤФ)
Intrinsics ŪͤǤ ___X_t_I_n_h_e_r_i_t Ŭڤʷ
㥹ȤΤǤ롥 ___X_t_I_n_h_e_r_i_t ϡºݤ˸ƤӽФ줿
ˤϥ顼åФ³Ǥ롥









                            -31-


㤨С _C_o_m_p_o_s_i_t_e_P_._h ˤʲ˼:


     #define XtInheritGeometryManager ((XtGeometryHandler) _XtInherit)
     #define XtInheritChangeManaged ((XtWidgetProc) _XtInherit)
     #define XtInheritInsertChild ((XtArgsProc) _XtInherit)
     #define XtInheritDeleteChild ((XtWidgetProc) _XtInherit)


Composite  class_part_initialize ³κǽʬʲ
˼:


     static void CompositeClassPartInitialize(widgetClass)
       WidgetClass widgetClass;
     {
       CompositeWidgetClass wc = (CompositeWidgetClass)widgetClass;
       CompositeWidgetClass super = (CompositeWidgetClass)wc->core_class.superclass;

       if (wc->composite_class.geometry_manager == XtInheritGeometryManager) {
           wc->composite_class.geometry_manager = super->composite_class.geometry_manager;
       }

       if (wc->composite_class.change_managed == XtInheritChangeManaged) {
           wc->composite_class.change_managed = super->composite_class.change_managed;
       }
       .
       .
       .


³Ǥʤեɤ⡤³եɤƱˡǷѾ
뤳ȤǤ롥饹ϡͽ󤵤ƤͤǤդΤΤ򿷤
եɤФѾȤ뤳ȤǤ롥ʲ
ηѾƤ:

֥ȤФ:

     _X_t_I_n_h_e_r_i_t_A_l_l_o_c_a_t_e

     _X_t_I_n_h_e_r_i_t_D_e_a_l_l_o_c_a_t_e

Core Ф:

     _X_t_I_n_h_e_r_i_t_R_e_a_l_i_z_e

     _X_t_I_n_h_e_r_i_t_R_e_s_i_z_e

     _X_t_I_n_h_e_r_i_t_E_x_p_o_s_e

     _X_t_I_n_h_e_r_i_t_S_e_t_V_a_l_u_e_s_A_l_m_o_s_t

     _X_t_I_n_h_e_r_i_t_A_c_c_e_p_t_F_o_c_u_s










                            -32-


     _X_t_I_n_h_e_r_i_t_Q_u_e_r_y_G_e_o_m_e_t_r_y

     _X_t_I_n_h_e_r_i_t_T_r_a_n_s_l_a_t_i_o_n_s

     _X_t_I_n_h_e_r_i_t_D_i_s_p_l_a_y_A_c_c_e_l_e_r_a_t_o_r

Composite Ф:

     _X_t_I_n_h_e_r_i_t_G_e_o_m_e_t_r_y_M_a_n_a_g_e_r

     _X_t_I_n_h_e_r_i_t_C_h_a_n_g_e_M_a_n_a_g_e_d

     _X_t_I_n_h_e_r_i_t_I_n_s_e_r_t_C_h_i_l_d

     _X_t_I_n_h_e_r_i_t_D_e_l_e_t_e_C_h_i_l_d

Shell Ф:

     _X_t_I_n_h_e_r_i_t_R_o_o_t_G_e_o_m_e_t_r_y_M_a_n_a_g_e_r


11..66..1111..  ѡ饹θƤӽФ

åȤϥѡ饹ΤϢ뤵Ƥʤ
ΤƤӽФɬפ뤳Ȥ롥㤨СåȤ
expose ³Ǥϥѡ饹 _e_x_p_o_s_e ƤӽФƤ顤
åȸͭưդä뤳ȤǤ롥㤨Сͽ
֤ˤҥåȤ Composite 
insert_child ϡǽ˥ѡ饹 _i_n_s_e_r_t___c_h_i_l_d Ƥ
Ф줫 _X_t_M_a_n_a_g_e_C_h_i_l_d ƤӽФƻҥåȤ
åȤ˲ä褦ʼ³ˤǤ롥


                            Note

     饹᥽åɤǤ _X_t_S_u_p_e_r_c_l_a_s_s ȤäƤϤʤ餺
     ˼ȤΥѡ饹Υ饹
     åɤ򡤥ѡ饹Υ쥳ɤ̤ƸƤӽФ
     ʤФʤʤĤޤꥯ饹᥽åɤǤϼȤΥ
     饹ݥ󥿤ȤʤФʤ餺å
     Υ饹ݥ󥿤ȤäƤϤʤʤåȤ
     饹ϡȤƤ륯饹Υ֥饹
     ⤷ʤǤ롥

εѤϥѡ饹Υ٥ԥ
(_e_n_v_e_l_o_p_i_n_g)ȸ롥


11..66..1122..  饹ĥĥ쥳

¸ߤ륦åȥ饹¤Τ˿եɤɲ
뤳ȤˤɬפȤʤ롥֥饹Ƥƥѥ뤻
ˤ¸뤿ᡤ饹ѡȹ¤ΤκǸΥեɤ
ĥݥ󥿤ǤʤФʤʤ饹ФƳĥ쥳ɤ









                            -33-


Ƥʤ硤֥饹ϳĥݥ󥿤ͤ NULL 
ʤФʤʤ

ĥ쥳ɤ¸ߤ(Composite, Constraint, Shell 
饹)֥饹ϤΥեɤͤꤹ뤳Ȥ
Ǥ롥ϡ饹¤ΤŬڤʥѡȤФ
_e_x_t_e_n_s_i_o_n ݥ󥿤ˡɲäΥեɤŪ줿
ĥ쥳ɤ򥻥åȤ뤳ȤǹԤ _e_x_t_e_n_s_i_o_n եɤ
ɬܤǤϤʤĥ쥳ΥեɤѤ륳
ɤǤϡ_e_x_t_e_n_s_i_o_n եɤɬåͤ NULL
ξˤŬڤư褦ˤʤФʤʤ

ʣΥ֥饹ȥ饤֥꤬1Ĥ_e_x_t_e_n_s_i_o_nեɤ
Фĥ쥳ɤϢǤ褦ˤ뤿ᡤĥ쥳
ɤϢꥹȤǤʤФʤ餺ޤĥ쥳Ϲ¤
Ƭʬ4 ĤΥեɤǤʤФʤʤ:

__
||
struct {
     XtPointer next_extension;
     XrmQuark record_type;
     long version;
     Cardinal record_size;
};


_n_e_x_t___e_x_t_e_n_s_i_o_n
            ꥹμΥ쥳ɤޤ NULL ꤹ롥

_r_e_c_o_r_d___t_y_p_e ĥ쥳ɤΥ󥹥󥹤줾줬
            ¤Τꤹ롥

_v_e_r_s_i_o_n     С ID ɽܥåꤹ
            롥Ϲ¤ΤΤͿ롥

_r_e_c_o_r_d___s_i_z_e ĥ쥳ɤ˳Ƥ줿Хȿιפ
            롥
||__

_r_e_c_o_r_d___t_y_p_e եɤϳĥ쥳ɤƤ̤쥳
Ԥꥹγĥ쥳ɤ򸫤Ĥ뤿˻Ѥ
롥 _r_e_c_o_r_d___t_y_p_e ˤ̾ϿʸФ _X_r_m_-
_S_t_r_i_n_g_T_o_Q_u_a_r_k η̤Ƥ롥ɸȤƻȤ
褦ˡIntrinsics  ``XT'' 2ʸǻϤޤƤΥ쥳ɷ
ʸͽ󤷤Ƥ롥ޤ饹ѡȤνͭԤϥ饹ѡ
Ȥ extention եɤ˳Ƥ줿ĥ쥳ɤ _N_U_L_-
_L_Q_U_A_R_K ͤѤΥ饹դ˷ĥ쥳
ɤ̤롥

_v_e_r_s_i_o_n եɤϽͭǤ롥Ȥȡ
ĥ쥳ɥǡ¤ΤλĤʬѤƥѥ뤵
줿Хʥե̤뤳ȤǤ롥åȥ
Фץ饤١Ȥʥإåեˤϡ֥饹









                            -34-


եɤ뤿˻Ȥܥå򵭽Ҥ
Фʤʤ_r_e_c_o_r_d___s_i_z_e եɤͤ 4Ĥζ̤Υإ
եɤޤߡ̾ _s_i_z_e_o_f() Ȥäƽʤ
ʤʤ

_C_o_m_p_o_s_i_t_e_C_l_a_s_s_P_a_r_t  _C_o_n_s_t_r_a_i_n_t_C_l_a_s_s_P_a_r_t, _S_h_e_l_l_C_l_a_s_s_P_a_r_t 
饹ѡȳĥեɤ˳ǼƤͤϡ
ĥ쥳ɤؤƤʤФʤʤ

Intrinsics ˤϡåȺԤΥ饹ĥ쥳
ɤΰ֤ϢꥹǸĤ뤿Υ桼ƥƥؿ
롥δؿˤϥåȥ饹ȥ饹쥳Ǥ
_e_x_t_e_n_s_i_o_n եɤΥեåȤͿ롥

饹ĥ쥳ɤΰ֤򸫤Ĥ뤿ˤϡ _X_t_G_e_t_C_l_a_s_s_E_x_-
_t_e_n_s_i_o_n Ѥ뤳ȡ

__
||
XtPointer XtGetClassExtension(_o_b_j_e_c_t___c_l_a_s_s, _b_y_t_e___o_f_f_s_e_t, _t_y_p_e, _v_e_r_s_i_o_n, _r_e_c_o_r_d___s_i_z_e)
      WidgetClass _o_b_j_e_c_t___c_l_a_s_s;
      Cardinal _b_y_t_e___o_f_f_s_e_t;
      XrmQuark _t_y_p_e;
      long _v_e_r_s_i_o_n;
      Cardinal _r_e_c_o_r_d___s_i_z_e;


_o_b_j_e_c_t___c_l_a_s_s
          ĥꥹȤޤ४֥ȥ饹ꤹ
          롥

_b_y_t_e___o_f_f_s_e_t
          ĥ쥳ɤΥ饹쥳ɤΥ١ͤ
          ΥեåȤХȿǻꤹ롥

_t_y_p_e      ֤õ饹ĥ record_type ꤹ롥

_v_e_r_s_i_o_n   ޥå뤿ɬפǤ롤饹ĥκС
          ꤹ롥

_r_e_c_o_r_d___s_i_z_e
          ޥå뤿ɬפǤ롤饹ĥκĹ
          ꤹ롥뤤 0 ꤹ롥
||__

ꤵ줿֥ȥ饹λꤵ줿֤ˤĥ쥳
ɤΥꥹȤФƸԤ롥θǤϡꤵ줿
ꤵ줿Сʹߡꤵ줿 record_size (0Ǥ
)ʾΥȤ˥ޥåΤõ롥
_X_t_G_e_t_C_l_a_s_s_E_x_t_e_n_s_i_o_n ϡޥåĥ쥳ɤФΥ
ɤؤΥݥ󥿤֤ޥåΤ̵ NULL 
ƤӽФ¦ĥνͭԤǤʤС֤줿ĥ쥳
ѹԤäƤϤʤʤ










                            -35-






























































