The _X_t_S_u_p_e_r_c_l_a_s_s function returns a pointer to the widget's superclass class structure.
The _X_t_I_s_S_u_b_c_l_a_s_s function returns _T_r_u_e if the class of the specified widget is equal to or is a subclass of the specified class. The widget's class can be any number of subclasses down the chain and need not be an immediate subclass of the specified class. Composite widgets that need to restrict the class of the items they contain can use _X_t_I_s_S_u_b_c_l_a_s_s to find out if a widget belongs to the desired class of objects.
The _X_t_C_h_e_c_k_S_u_b_c_l_a_s_s macro determines if the class of the specified widget is equal to or is a subclass of the specified widget class. The widget can be any number of subclasses down the chain and need not be an immediate subclass of the specified widget class. If the specified widget is not a subclass, _X_t_C_h_e_c_k_S_u_b_c_l_a_s_s constructs an error message from the supplied message, the widget's actual class, and the expected class and calls _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 should be used at the entry point of exported routines to ensure that the client has passed in a valid widget class for the exported operation.
_X_t_C_h_e_c_k_S_u_b_c_l_a_s_s is only executed when the widget has been compiled with the compiler symbol DEBUG defined; otherwise, it is defined as the empty string and generates no code.
To test if a given widget belongs to a subclass of an Intrinsics-defined class, the Intrinsics defines macros or functions equivalent to _X_t_I_s_S_u_b_c_l_a_s_s for each of the built-in classes. These procedures are _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, and _X_t_I_s_S_e_s_s_i_o_n_S_h_e_l_l.
The