#ifndef __GTK_REFLECTION_H_
#define __GTK_REFLECTION_H_

#include "gskgtk.h"

/* some just garishly random functions */

/* Return a list of names of arguments that can be "got" */
gboolean gtk_reflection_gettable_args      (GtkType       type,
                                            int          *n_args_out,
					    const char ***arg_names_out);

/* Return the type of an argument that can be set, or 0 for no-such-argument */
GtkType  gtk_reflection_arg_type_settable  (GtkType       type,
                                            const char   *name);

/* Set/get a list of names for the signal.  */
void               gtk_reflection_set_signal_param_names (guint signal_id,
							  ...);
const char *const *gtk_reflection_get_signal_param_names (guint signal_id);

/* "Implicit arguments": if a signal has a single argument,
 * you may declare it "implicit": then it requires no open tag
 * (except a type-name for object types). 
 */
void               gtk_reflection_set_implicit (guint signal_id);
gboolean           gtk_reflection_get_implicit (guint signal_id);


#endif
