2001-09-27 Mike Kestner <mkestner@speakeasy.net>

* glib/Object.cs : Docs for everything. Made Objects hash private.
	Some coding style cleanup.  Pruned some of the TODO methods from the
	commented header listing to make a more relistic picture of the
	remaining effort. Some GSignal stuff probly belongs here too.
	([Get|Set]Data): Killed some DllImports and set up methods to store
	arbitrary data in a managed hash table.

svn path=/trunk/gtk-sharp/; revision=1012
This commit is contained in:
Mike Kestner 2001-09-27 18:39:53 +00:00
parent 25000abee7
commit 4a2fa05bee
2 changed files with 86 additions and 64 deletions

View file

@ -1,3 +1,12 @@
2001-09-27 Mike Kestner <mkestner@speakeasy.net>
* glib/Object.cs : Docs for everything. Made Objects hash private.
Some coding style cleanup. Pruned some of the TODO methods from the
commented header listing to make a more relistic picture of the
remaining effort. Some GSignal stuff probly belongs here too.
([Get|Set]Data): Killed some DllImports and set up methods to store
arbitrary data in a managed hash table.
2001-09-27 Mike Kestner <mkestner@speakeasy.net> 2001-09-27 Mike Kestner <mkestner@speakeasy.net>
*.cs : Added .dll extension to a load of DllImports. *.cs : Added .dll extension to a load of DllImports.

View file

@ -12,8 +12,38 @@ namespace GLib {
using System.ComponentModel; using System.ComponentModel;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
/// <summary>
/// Object Class
/// </summary>
///
/// <remarks>
/// Wrapper class for GObject.
/// </remarks>
public class Object { public class Object {
protected static Hashtable Objects = new Hashtable();
// Private class and instance members
IntPtr _obj;
EventHandlerList _events;
Hashtable Data;
static Hashtable Objects = new Hashtable();
/// <summary>
/// GetObject Shared Method
/// </summary>
///
/// <remarks>
/// Used to obtain a CLI typed object associated with a
/// given raw object pointer. This method is primarily
/// used to wrap object references that are returned
/// by either the signal system or raw class methods that
/// return GObject references.
/// </remarks>
///
/// <returns>
/// The wrapper instance.
/// </returns>
public static Object GetObject(IntPtr o) public static Object GetObject(IntPtr o)
{ {
Object obj = (Object)Objects[(int)o]; Object obj = (Object)Objects[(int)o];
@ -21,23 +51,37 @@ namespace GLib {
return null; //FIXME: Call TypeParser here eventually. return null; //FIXME: Call TypeParser here eventually.
} }
private IntPtr _obj;
protected IntPtr RawObject /// <summary>
{ /// RawObject Property
/// </summary>
///
/// <remarks>
/// The raw GObject reference associated with this wrapper.
/// Only subclasses of Object should need to access this
/// unmanaged pointer.
/// </remarks>
protected IntPtr RawObject {
get { get {
return _obj; return _obj;
} }
set { set {
if ((Object)Objects[(int)value] != null) Objects.Remove((int)value); Objects [value] = this;
Objects[(int)value] = this;
_obj = value; _obj = value;
} }
} }
private EventHandlerList _events; /// <summary>
public EventHandlerList Events /// Events Property
{ /// </summary>
///
/// <remarks>
/// A list object containing all the events for this
/// object indexed by the Gtk+ signal name.
/// </remarks>
public EventHandlerList Events {
get { get {
if (_events == null) if (_events == null)
_events = new EventHandlerList (); _events = new EventHandlerList ();
@ -45,25 +89,36 @@ namespace GLib {
} }
} }
[DllImport("gobject-1.3.dll")] /// <summary>
static extern IntPtr g_object_get_data ( /// GetData Method
IntPtr obj, /// </summary>
String key ); ///
/// <remarks>
/// Accesses arbitrary data storage on the Object.
/// </remarks>
public IntPtr GetRawData (String key) public object GetData (String key)
{ {
return g_object_get_data (_obj, key); if (Data == null)
return null;
return Data [key];
} }
[DllImport("gobject-1.3")] /// <summary>
static extern void g_object_set_data ( /// SetData Method
IntPtr obj, /// </summary>
String key, ///
IntPtr data ); /// <remarks>
/// Stores arbitrary data on the Object.
/// </remarks>
public void SetRawData (String key, IntPtr value) public void SetData (String key, object val)
{ {
g_object_set_data (_obj, key, value); if (Data == null)
Data = new Hashtable ();
Data [key] = val;
} }
/* /*
@ -75,39 +130,10 @@ namespace GLib {
DestroyNotify destroy ); DestroyNotify destroy );
void (*GObjectGetPropertyFunc) (GObject *object,
guint property_id,
GValue *value,
GParamSpec *pspec);
void (*GObjectSetPropertyFunc) (GObject *object,
guint property_id,
const GValue *value,
GParamSpec *pspec);
void (*GObjectFinalizeFunc) (GObject *object);
#define G_TYPE_IS_OBJECT (type)
#define G_OBJECT (object)
#define G_IS_OBJECT (object)
#define G_OBJECT_CLASS (class)
#define G_IS_OBJECT_CLASS (class)
#define G_OBJECT_GET_CLASS (object)
#define G_OBJECT_TYPE (object)
#define G_OBJECT_TYPE_NAME (object)
#define G_OBJECT_CLASS_TYPE (class)
#define G_OBJECT_CLASS_NAME (class)
#define G_VALUE_HOLDS_OBJECT (value)
void g_object_class_install_property (GObjectClass *oclass,
guint property_id,
GParamSpec *pspec);
GParamSpec* g_object_class_find_property (GObjectClass *oclass, GParamSpec* g_object_class_find_property (GObjectClass *oclass,
const gchar *property_name); const gchar *property_name);
GParamSpec** g_object_class_list_properties (GObjectClass *oclass, GParamSpec** g_object_class_list_properties (GObjectClass *oclass,
guint *n_properties); guint *n_properties);
gpointer g_object_new (GType object_type,
const gchar *first_property_name,
...);
gpointer g_object_newv (GType object_type,
guint n_parameters,
GParameter *parameters);
gpointer g_object_ref (gpointer object); gpointer g_object_ref (gpointer object);
void g_object_unref (gpointer object); void g_object_unref (gpointer object);
void g_object_weak_ref (GObject *object, void g_object_weak_ref (GObject *object,
@ -159,23 +185,10 @@ void g_object_set_property (GObject *object,
void g_object_get_property (GObject *object, void g_object_get_property (GObject *object,
const gchar *property_name, const gchar *property_name,
GValue *value); GValue *value);
GObject* g_object_new_valist (GType object_type,
const gchar *first_property_name,
va_list var_args);
void g_object_set_valist (GObject *object,
const gchar *first_property_name,
va_list var_args);
void g_object_get_valist (GObject *object,
const gchar *first_property_name,
va_list var_args);
void g_object_watch_closure (GObject *object, void g_object_watch_closure (GObject *object,
GClosure *closure); GClosure *closure);
void g_object_run_dispose (GObject *object); void g_object_run_dispose (GObject *object);
void g_value_set_object (GValue *value,
gpointer v_object);
gpointer g_value_get_object (const GValue *value); gpointer g_value_get_object (const GValue *value);
GObject* g_value_dup_object (const GValue *value);
#define G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec)
*/ */
} }