add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
/* GObject - GLib Type, Object, Parameter and Signal Library
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
* Copyright (C) 1998-1999, 2000-2001 Tim Janik and Red Hat, Inc.
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General
|
|
|
|
* Public License along with this library; if not, write to the
|
|
|
|
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
|
|
|
* Boston, MA 02111-1307, USA.
|
|
|
|
*/
|
|
|
|
#include "gtype.h"
|
|
|
|
|
2001-02-17 06:32:00 +01:00
|
|
|
/*
|
|
|
|
* MT safe
|
|
|
|
*/
|
|
|
|
|
2000-11-05 06:07:26 +01:00
|
|
|
#include "gtypeplugin.h"
|
2001-02-17 06:32:00 +01:00
|
|
|
#include "gvaluecollector.h"
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
|
|
|
|
/* NOTE: some functions (some internal variants and exported ones)
|
|
|
|
* invalidate data portions of the TypeNodes. if external functions/callbacks
|
|
|
|
* are called, pointers to memory maintained by TypeNodes have to be looked up
|
|
|
|
* again. this affects most of the struct TypeNode fields, e.g. ->children or
|
2001-03-07 20:36:02 +01:00
|
|
|
* CLASSED_NODE_IFACES_ENTRIES() respectively IFACE_NODE_PREREQUISITES() (but
|
|
|
|
* not ->supers[]), as all those memory portions can get realloc()ed during
|
|
|
|
* callback invocation.
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
*
|
|
|
|
* TODO:
|
|
|
|
* - g_type_from_name() should do an ordered array lookup after fetching the
|
|
|
|
* the quark, instead of a second hashtable lookup.
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
* - speedup checks for virtual types, steal a bit somewhere
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
*
|
|
|
|
* FIXME:
|
|
|
|
* - force interface initialization for already existing classes
|
2001-01-31 07:27:41 +01:00
|
|
|
*
|
|
|
|
* LOCKING:
|
|
|
|
* lock handling issues when calling static functions are indicated by
|
|
|
|
* uppercase letter postfixes, all static functions have to have
|
|
|
|
* one of the below postfixes:
|
|
|
|
* - _I: [Indifferent about locking]
|
|
|
|
* function doesn't care about locks at all
|
|
|
|
* - _U: [Unlocked invocation]
|
|
|
|
* no read or write lock has to be held across function invocation
|
|
|
|
* (locks may be acquired and released during invocation though)
|
|
|
|
* - _L: [Locked invocation]
|
|
|
|
* a write lock or more than 0 read locks have to be held across
|
|
|
|
* function invocation
|
|
|
|
* - _W: [Write-locked invocation]
|
|
|
|
* a write lock has to be held across function invokation
|
|
|
|
* - _Wm: [Write-locked invocation, mutatable]
|
|
|
|
* like _W, but the write lock might be released and reacquired
|
|
|
|
* during invocation, watch your pointers
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
*/
|
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
static GStaticRWLock type_rw_lock = G_STATIC_RW_LOCK_INIT;
|
|
|
|
#define G_READ_LOCK(rw_lock) g_static_rw_lock_reader_lock (rw_lock)
|
|
|
|
#define G_READ_UNLOCK(rw_lock) g_static_rw_lock_reader_unlock (rw_lock)
|
|
|
|
#define G_WRITE_LOCK(rw_lock) g_static_rw_lock_writer_lock (rw_lock)
|
|
|
|
#define G_WRITE_UNLOCK(rw_lock) g_static_rw_lock_writer_unlock (rw_lock)
|
|
|
|
#define INVALID_RECURSION(func, arg, type_name) G_STMT_START{ \
|
|
|
|
static const gchar *_action = " invalidly modified type "; \
|
2001-02-18 00:30:48 +01:00
|
|
|
gpointer _arg = (gpointer) (arg); const gchar *_tname = (type_name), *_fname = (func); \
|
2001-01-31 07:27:41 +01:00
|
|
|
if (_arg) \
|
|
|
|
g_error ("%s(%p)%s`%s'", _fname, _arg, _action, _tname); \
|
|
|
|
else \
|
|
|
|
g_error ("%s()%s`%s'", _fname, _action, _tname); \
|
|
|
|
}G_STMT_END
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
#define g_return_val_if_uninitialized(condition, init_function, return_value) G_STMT_START{ \
|
|
|
|
if (!(condition)) \
|
|
|
|
{ \
|
|
|
|
g_log (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, \
|
|
|
|
"%s: initialization assertion failed, use %s() prior to this function", \
|
|
|
|
G_STRLOC, G_STRINGIFY (init_function)); \
|
|
|
|
return (return_value); \
|
|
|
|
} \
|
|
|
|
}G_STMT_END
|
|
|
|
|
2001-02-04 08:03:52 +01:00
|
|
|
#ifdef G_ENABLE_DEBUG
|
|
|
|
#define DEBUG_CODE(debug_type, code_block) G_STMT_START { \
|
|
|
|
if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type) \
|
|
|
|
{ code_block; } \
|
|
|
|
} G_STMT_END
|
|
|
|
#else /* !G_ENABLE_DEBUG */
|
|
|
|
#define DEBUG_CODE(debug_type, code_block) /* code_block */
|
|
|
|
#endif /* G_ENABLE_DEBUG */
|
2001-01-31 07:27:41 +01:00
|
|
|
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
#define TYPE_FUNDAMENTAL_FLAG_MASK (G_TYPE_FLAG_CLASSED | \
|
|
|
|
G_TYPE_FLAG_INSTANTIATABLE | \
|
|
|
|
G_TYPE_FLAG_DERIVABLE | \
|
|
|
|
G_TYPE_FLAG_DEEP_DERIVABLE)
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
#define TYPE_FLAG_MASK (G_TYPE_FLAG_ABSTRACT | G_TYPE_FLAG_VALUE_ABSTRACT)
|
2001-05-10 15:58:40 +02:00
|
|
|
#define SIZEOF_FUNDAMENTAL_INFO ((gssize) MAX (MAX (sizeof (GTypeFundamentalInfo), \
|
|
|
|
sizeof (gpointer)), \
|
|
|
|
sizeof (glong)))
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
/* --- typedefs --- */
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
typedef struct _TypeNode TypeNode;
|
|
|
|
typedef struct _CommonData CommonData;
|
|
|
|
typedef struct _IFaceData IFaceData;
|
|
|
|
typedef struct _ClassData ClassData;
|
|
|
|
typedef struct _InstanceData InstanceData;
|
|
|
|
typedef union _TypeData TypeData;
|
|
|
|
typedef struct _IFaceEntry IFaceEntry;
|
|
|
|
typedef struct _IFaceHolder IFaceHolder;
|
|
|
|
|
|
|
|
|
|
|
|
/* --- prototypes --- */
|
2001-01-31 07:27:41 +01:00
|
|
|
static inline GTypeFundamentalInfo* type_node_fundamental_info_L (TypeNode *node);
|
|
|
|
static void type_add_flags_W (TypeNode *node,
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
GTypeFlags flags);
|
2001-01-31 07:27:41 +01:00
|
|
|
static void type_data_make_W (TypeNode *node,
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
const GTypeInfo *info,
|
|
|
|
const GTypeValueTable *value_table);
|
2001-01-31 07:27:41 +01:00
|
|
|
static inline void type_data_ref_Wm (TypeNode *node);
|
|
|
|
static inline void type_data_unref_Wm (TypeNode *node,
|
|
|
|
gboolean uncached);
|
|
|
|
static void type_data_last_unref_Wm (GType type,
|
|
|
|
gboolean uncached);
|
2001-03-07 20:36:02 +01:00
|
|
|
static inline gpointer type_get_qdata_L (TypeNode *node,
|
|
|
|
GQuark quark);
|
|
|
|
static inline void type_set_qdata_W (TypeNode *node,
|
|
|
|
GQuark quark,
|
|
|
|
gpointer data);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
|
|
|
|
/* --- structures --- */
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
struct _GValue /* kludge, keep in sync with gvalue.h */
|
|
|
|
{
|
|
|
|
GType g_type;
|
|
|
|
};
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
struct _TypeNode
|
|
|
|
{
|
|
|
|
GTypePlugin *plugin;
|
|
|
|
guint n_children : 12;
|
|
|
|
guint n_supers : 8;
|
2001-03-07 20:36:02 +01:00
|
|
|
guint _prot_n_ifaces_prerequisites : 9;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
guint is_classed : 1;
|
|
|
|
guint is_instantiatable : 1;
|
2001-03-07 20:36:02 +01:00
|
|
|
guint free_flag : 1;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
GType *children;
|
|
|
|
TypeData *data;
|
|
|
|
GQuark qname;
|
2001-01-31 07:27:41 +01:00
|
|
|
GData *global_gdata;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
union {
|
2001-03-07 20:36:02 +01:00
|
|
|
IFaceEntry *iface_entries; /* for !iface types */
|
|
|
|
GType *prerequisistes;
|
|
|
|
} _prot;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
GType supers[1]; /* flexible array */
|
|
|
|
};
|
2001-03-07 20:36:02 +01:00
|
|
|
#define SIZEOF_BASE_TYPE_NODE() (G_STRUCT_OFFSET (TypeNode, supers))
|
|
|
|
#define MAX_N_SUPERS (255)
|
|
|
|
#define MAX_N_CHILDREN (4095)
|
|
|
|
#define MAX_N_IFACES (511)
|
|
|
|
#define MAX_N_PREREQUISITES (MAX_N_IFACES)
|
|
|
|
#define NODE_TYPE(node) (node->supers[0])
|
|
|
|
#define NODE_PARENT_TYPE(node) (node->supers[1])
|
2001-04-01 06:04:46 +02:00
|
|
|
#define NODE_NAME(node) (g_quark_to_string (node->qname))
|
2001-03-07 20:36:02 +01:00
|
|
|
#define NODE_IS_IFACE(node) (G_TYPE_IS_INTERFACE (NODE_TYPE (node)))
|
|
|
|
#define CLASSED_NODE_N_IFACES(node) ((node)->_prot_n_ifaces_prerequisites)
|
|
|
|
#define CLASSED_NODE_IFACES_ENTRIES(node) ((node)->_prot.iface_entries)
|
|
|
|
#define IFACE_NODE_N_PREREQUISITES(node) ((node)->_prot_n_ifaces_prerequisites)
|
|
|
|
#define IFACE_NODE_PREREQUISITES(node) ((node)->_prot.prerequisistes)
|
|
|
|
#define iface_node_get_holders_L(node) ((IFaceHolder*) type_get_qdata_L ((node), static_quark_iface_holder))
|
|
|
|
#define iface_node_set_holders_W(node, holders) (type_set_qdata_W ((node), static_quark_iface_holder, (holders)))
|
|
|
|
#define iface_node_get_dependants_array_L(n) ((GType*) type_get_qdata_L ((n), static_quark_dependants_array))
|
|
|
|
#define iface_node_set_dependants_array_W(n,d) (type_set_qdata_W ((n), static_quark_dependants_array, (d)))
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
struct _IFaceHolder
|
|
|
|
{
|
|
|
|
GType instance_type;
|
|
|
|
GInterfaceInfo *info;
|
|
|
|
GTypePlugin *plugin;
|
|
|
|
IFaceHolder *next;
|
|
|
|
};
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
struct _IFaceEntry
|
|
|
|
{
|
|
|
|
GType iface_type;
|
|
|
|
GTypeInterface *vtable;
|
|
|
|
};
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
struct _CommonData
|
|
|
|
{
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
guint ref_count;
|
|
|
|
GTypeValueTable *value_table;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
};
|
|
|
|
struct _IFaceData
|
|
|
|
{
|
|
|
|
CommonData common;
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
guint16 vtable_size;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
GBaseInitFunc vtable_init_base;
|
|
|
|
GBaseFinalizeFunc vtable_finalize_base;
|
|
|
|
};
|
|
|
|
struct _ClassData
|
|
|
|
{
|
|
|
|
CommonData common;
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
guint16 class_size;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
GBaseInitFunc class_init_base;
|
|
|
|
GBaseFinalizeFunc class_finalize_base;
|
|
|
|
GClassInitFunc class_init;
|
|
|
|
GClassFinalizeFunc class_finalize;
|
|
|
|
gconstpointer class_data;
|
|
|
|
gpointer class;
|
|
|
|
};
|
|
|
|
struct _InstanceData
|
|
|
|
{
|
|
|
|
CommonData common;
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
guint16 class_size;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
GBaseInitFunc class_init_base;
|
|
|
|
GBaseFinalizeFunc class_finalize_base;
|
|
|
|
GClassInitFunc class_init;
|
|
|
|
GClassFinalizeFunc class_finalize;
|
|
|
|
gconstpointer class_data;
|
|
|
|
gpointer class;
|
|
|
|
guint16 instance_size;
|
|
|
|
guint16 n_preallocs;
|
|
|
|
GInstanceInitFunc instance_init;
|
|
|
|
GMemChunk *mem_chunk;
|
|
|
|
};
|
|
|
|
union _TypeData
|
|
|
|
{
|
|
|
|
CommonData common;
|
|
|
|
IFaceData iface;
|
|
|
|
ClassData class;
|
|
|
|
InstanceData instance;
|
|
|
|
};
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
typedef struct {
|
|
|
|
gpointer cache_data;
|
|
|
|
GTypeClassCacheFunc cache_func;
|
|
|
|
} ClassCacheFunc;
|
|
|
|
|
|
|
|
|
|
|
|
/* --- variables --- */
|
2001-01-31 07:27:41 +01:00
|
|
|
static guint static_n_class_cache_funcs = 0;
|
|
|
|
static ClassCacheFunc *static_class_cache_funcs = NULL;
|
|
|
|
static GType static_last_fundamental_id = 0;
|
|
|
|
static GQuark static_quark_type_flags = 0;
|
2001-03-07 20:36:02 +01:00
|
|
|
static GQuark static_quark_iface_holder = 0;
|
|
|
|
static GQuark static_quark_dependants_array = 0;
|
2001-02-04 08:03:52 +01:00
|
|
|
GTypeDebugFlags _g_type_debug_flags = 0;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
|
|
|
|
/* --- externs --- */
|
fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000 Tim Janik <timj@gtk.org>
* gboxed.c: fixed dealing with collection/lcopy of NULL values.
* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
convenience macro.
* Makefile.am: cleanups, marshaller generation rules.
* gmarshal.[hc]: new files with GRuntime standard marshallers.
* glib-genmarshal.c: fix log domain, support gruntime standard
marshallers, suport G_TYPE_PARAM, come with extern "C" and
#include gmarshal.h.
* glib-genmarshal.1: reflect glib-genmarshal.c updates.
* gobject.[hc]: implement object constructor. rework parameter
changed notification queueing, we support queue freezes now and
don't dispatch from an idle handler anymore.
parameter->property rename hassle.
implemented ::properties_changed and ::notify::* signals for
property change notification (the later supports property names
as details). added signal connection and named data properties.
(g_signal_connect_object): new function to setup while_alive
connections.
(g_object_class_install_property): sink properties now, since they
are initially floating.
(g_object_steal_data):
(g_object_set_data_full):
(g_object_set_data):
(g_object_get_data): set/get data by using g_datalist_*() functions
directly.
(g_object_queue_param_changed): nuked.
(g_object_freeze_notify): start queueing of property changes (freeze/
thaw calls stack).
(g_object_notify): announce changes of a certain property directly.
(g_object_thaw_notify): process queue of property changes, therefore
emitting GObject::notify::detail with detail being the changed
properties names.
(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
G_WARN_INVALID_PARAM_ID().
* gparam.[hc]: param specs are now initially floating and need to be
sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
required by GObjectClass.constructor().
* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
and G_TYPE_CCALLBACK respectively.
* gsignal.[hc]: cleanups.
(signal_id_lookup): after walking the anchestry, try interfaces as well.
(g_signal_new): new function to create signals from varargs type list.
(g_signal_connect_closure): closure connection variant that works from
signal name+detail.
(g_signal_connect_data): c handler connection variant that works from
signal name+detail.
(g_signal_emit_valist): emit signal for an instance with paraneters
collected from a va_list.
(g_signal_emit): emit signal, taking parameters from varargs list.
(g_signal_emit_by_name): same as g_signal_emit, working from
signal name+detail.
(signal_emit_R): return whether return_value needs to be altered.
* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
the points that need to reflect the upcoming rename.
melt g_type_conforms_to() functionality into g_type_is_a(), as that
is what we really want (liskov substitution principle).
assorted changes to other files due to conforms_to->is_a.
* gvalue.[hc]: implemented g_value_set_instance() that sets a value
from an instantiatable type via the value_table's collect_value()
function (based on an idea from James Henstridge <james@daa.com.au>).
cleanups/fixes.
* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
2000-12-12 08:32:00 +01:00
|
|
|
const char *g_log_domain_gruntime = "GRuntime";
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
|
|
|
|
/* --- type nodes --- */
|
2001-01-31 07:27:41 +01:00
|
|
|
static GHashTable *static_type_nodes_ht = NULL;
|
|
|
|
static GType *static_branch_seqnos = NULL;
|
|
|
|
static TypeNode ***static_type_nodes = NULL;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
static inline TypeNode*
|
2001-01-31 07:27:41 +01:00
|
|
|
lookup_type_node_L (register GType utype)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
register GType ftype = G_TYPE_FUNDAMENTAL (utype);
|
|
|
|
register GType b_seqno = G_TYPE_BRANCH_SEQNO (utype);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
if (ftype < static_last_fundamental_id && b_seqno < static_branch_seqnos[ftype])
|
|
|
|
return static_type_nodes[ftype][b_seqno];
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
else
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
static TypeNode*
|
2001-01-31 07:27:41 +01:00
|
|
|
type_node_any_new_W (TypeNode *pnode,
|
|
|
|
GType ftype,
|
|
|
|
const gchar *name,
|
|
|
|
GTypePlugin *plugin,
|
|
|
|
GTypeFundamentalFlags type_flags)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
guint branch_last, n_supers;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
GType type;
|
|
|
|
TypeNode *node;
|
|
|
|
guint i, node_size = 0;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
n_supers = pnode ? pnode->n_supers + 1 : 0;
|
|
|
|
branch_last = static_branch_seqnos[ftype]++;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
type = G_TYPE_DERIVE_ID (ftype, branch_last);
|
2001-01-31 07:27:41 +01:00
|
|
|
g_assert ((type & G_TYPE_FLAG_RESERVED_ID_BIT) == 0);
|
|
|
|
if (!branch_last || g_bit_storage (branch_last - 1) < g_bit_storage (static_branch_seqnos[ftype] - 1))
|
|
|
|
static_type_nodes[ftype] = g_renew (TypeNode*, static_type_nodes[ftype], 1 << g_bit_storage (static_branch_seqnos[ftype] - 1));
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (!pnode)
|
2001-05-10 15:58:40 +02:00
|
|
|
node_size += SIZEOF_FUNDAMENTAL_INFO; /* fundamental type info */
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
node_size += SIZEOF_BASE_TYPE_NODE (); /* TypeNode structure */
|
2000-07-10 20:02:51 +02:00
|
|
|
node_size += (sizeof (GType) * (1 + n_supers + 1)); /* self + ancestors + 0 for ->supers[] */
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
node = g_malloc0 (node_size);
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
if (!pnode) /* offset fundamental types */
|
2001-05-10 15:58:40 +02:00
|
|
|
node = G_STRUCT_MEMBER_P (node, SIZEOF_FUNDAMENTAL_INFO);
|
2001-01-31 07:27:41 +01:00
|
|
|
static_type_nodes[ftype][branch_last] = node;
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
node->n_supers = n_supers;
|
|
|
|
if (!pnode)
|
|
|
|
{
|
|
|
|
node->supers[0] = type;
|
|
|
|
node->supers[1] = 0;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
node->is_classed = (type_flags & G_TYPE_FLAG_CLASSED) != 0;
|
|
|
|
node->is_instantiatable = (type_flags & G_TYPE_FLAG_INSTANTIATABLE) != 0;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
2001-03-07 20:36:02 +01:00
|
|
|
if (NODE_IS_IFACE (node))
|
|
|
|
{
|
|
|
|
IFACE_NODE_N_PREREQUISITES (node) = 0;
|
|
|
|
IFACE_NODE_PREREQUISITES (node) = NULL;
|
|
|
|
}
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
else
|
2001-03-07 20:36:02 +01:00
|
|
|
{
|
|
|
|
CLASSED_NODE_N_IFACES (node) = 0;
|
|
|
|
CLASSED_NODE_IFACES_ENTRIES (node) = NULL;
|
|
|
|
}
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
node->supers[0] = type;
|
2000-07-10 20:02:51 +02:00
|
|
|
memcpy (node->supers + 1, pnode->supers, sizeof (GType) * (1 + pnode->n_supers + 1));
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
node->is_classed = pnode->is_classed;
|
|
|
|
node->is_instantiatable = pnode->is_instantiatable;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
2001-03-07 20:36:02 +01:00
|
|
|
if (NODE_IS_IFACE (node))
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-03-07 20:36:02 +01:00
|
|
|
IFACE_NODE_N_PREREQUISITES (node) = 0;
|
|
|
|
IFACE_NODE_PREREQUISITES (node) = NULL;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2001-03-07 20:36:02 +01:00
|
|
|
CLASSED_NODE_N_IFACES (node) = CLASSED_NODE_N_IFACES (pnode);
|
|
|
|
CLASSED_NODE_IFACES_ENTRIES (node) = g_memdup (CLASSED_NODE_IFACES_ENTRIES (pnode),
|
|
|
|
sizeof (CLASSED_NODE_IFACES_ENTRIES (pnode)[0]) *
|
|
|
|
CLASSED_NODE_N_IFACES (node));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
i = pnode->n_children++;
|
|
|
|
pnode->children = g_renew (GType, pnode->children, pnode->n_children);
|
|
|
|
pnode->children[i] = type;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
node->plugin = plugin;
|
|
|
|
node->n_children = 0;
|
|
|
|
node->children = NULL;
|
|
|
|
node->data = NULL;
|
|
|
|
node->qname = g_quark_from_string (name);
|
2001-01-31 07:27:41 +01:00
|
|
|
node->global_gdata = NULL;
|
|
|
|
|
|
|
|
g_hash_table_insert (static_type_nodes_ht,
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
GUINT_TO_POINTER (node->qname),
|
|
|
|
GUINT_TO_POINTER (type));
|
|
|
|
return node;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline GTypeFundamentalInfo*
|
2001-01-31 07:27:41 +01:00
|
|
|
type_node_fundamental_info_L (TypeNode *node)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
GType ftype = G_TYPE_FUNDAMENTAL (NODE_TYPE (node));
|
|
|
|
|
|
|
|
if (ftype != NODE_TYPE (node))
|
2001-01-31 07:27:41 +01:00
|
|
|
node = lookup_type_node_L (ftype);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
2001-05-10 15:58:40 +02:00
|
|
|
return node ? G_STRUCT_MEMBER_P (node, - SIZEOF_FUNDAMENTAL_INFO) : NULL;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
static TypeNode*
|
2001-01-31 07:27:41 +01:00
|
|
|
type_node_fundamental_new_W (GType ftype,
|
|
|
|
const gchar *name,
|
|
|
|
GTypeFundamentalFlags type_flags)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
GTypeFundamentalInfo *finfo;
|
|
|
|
TypeNode *node;
|
2001-01-31 07:27:41 +01:00
|
|
|
guint i, flast;
|
|
|
|
|
|
|
|
flast = static_last_fundamental_id;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
g_assert (ftype == G_TYPE_FUNDAMENTAL (ftype));
|
|
|
|
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
type_flags &= TYPE_FUNDAMENTAL_FLAG_MASK;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
static_last_fundamental_id = MAX (static_last_fundamental_id, ftype + 1);
|
|
|
|
if (static_last_fundamental_id > flast)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
static_type_nodes = g_renew (TypeNode**, static_type_nodes, static_last_fundamental_id);
|
|
|
|
static_branch_seqnos = g_renew (GType, static_branch_seqnos, static_last_fundamental_id);
|
|
|
|
for (i = flast; i < static_last_fundamental_id; i++)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
static_type_nodes[i] = NULL;
|
|
|
|
static_branch_seqnos[i] = 0;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
g_assert (static_branch_seqnos[ftype] == 0);
|
|
|
|
|
|
|
|
node = type_node_any_new_W (NULL, ftype, name, NULL, type_flags);
|
|
|
|
|
|
|
|
finfo = type_node_fundamental_info_L (node);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
finfo->type_flags = type_flags;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return node;
|
|
|
|
}
|
|
|
|
|
|
|
|
static TypeNode*
|
2001-01-31 07:27:41 +01:00
|
|
|
type_node_new_W (TypeNode *pnode,
|
|
|
|
const gchar *name,
|
|
|
|
GTypePlugin *plugin)
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
g_assert (pnode);
|
|
|
|
g_assert (pnode->n_supers < MAX_N_SUPERS);
|
|
|
|
g_assert (pnode->n_children < MAX_N_CHILDREN);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
return type_node_any_new_W (pnode, G_TYPE_FUNDAMENTAL (NODE_TYPE (pnode)), name, plugin, 0);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
static inline IFaceEntry*
|
2001-01-31 07:27:41 +01:00
|
|
|
type_lookup_iface_entry_L (TypeNode *node,
|
2001-03-07 20:36:02 +01:00
|
|
|
TypeNode *iface_node)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-03-07 20:36:02 +01:00
|
|
|
if (NODE_IS_IFACE (iface_node) && CLASSED_NODE_N_IFACES (node))
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-03-07 20:36:02 +01:00
|
|
|
IFaceEntry *ifaces = CLASSED_NODE_IFACES_ENTRIES (node) - 1;
|
|
|
|
guint n_ifaces = CLASSED_NODE_N_IFACES (node);
|
|
|
|
GType iface_type = NODE_TYPE (iface_node);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
2000-12-13 01:44:18 +01:00
|
|
|
do
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
guint i;
|
|
|
|
IFaceEntry *check;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
2001-03-07 20:36:02 +01:00
|
|
|
i = (n_ifaces + 1) >> 1;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
check = ifaces + i;
|
|
|
|
if (iface_type == check->iface_type)
|
|
|
|
return check;
|
|
|
|
else if (iface_type > check->iface_type)
|
|
|
|
{
|
|
|
|
n_ifaces -= i;
|
|
|
|
ifaces = check;
|
|
|
|
}
|
|
|
|
else /* if (iface_type < check->iface_type) */
|
|
|
|
n_ifaces = i - 1;
|
|
|
|
}
|
|
|
|
while (n_ifaces);
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2001-03-07 20:36:02 +01:00
|
|
|
static inline gboolean
|
|
|
|
type_lookup_prerequisite (TypeNode *iface,
|
|
|
|
GType prerequisite_type)
|
|
|
|
{
|
|
|
|
if (NODE_IS_IFACE (iface) && IFACE_NODE_N_PREREQUISITES (iface))
|
|
|
|
{
|
|
|
|
GType *prerequisites = IFACE_NODE_PREREQUISITES (iface) - 1;
|
|
|
|
guint n_prerequisites = IFACE_NODE_N_PREREQUISITES (iface);
|
|
|
|
|
|
|
|
do
|
|
|
|
{
|
|
|
|
guint i;
|
|
|
|
GType *check;
|
|
|
|
|
|
|
|
i = (n_prerequisites + 1) >> 1;
|
|
|
|
check = prerequisites + i;
|
|
|
|
if (prerequisite_type == *check)
|
|
|
|
return TRUE;
|
|
|
|
else if (prerequisite_type > *check)
|
|
|
|
{
|
|
|
|
n_prerequisites -= i;
|
|
|
|
prerequisites = check;
|
|
|
|
}
|
|
|
|
else /* if (prerequisite_type < *check) */
|
|
|
|
n_prerequisites = i - 1;
|
|
|
|
}
|
|
|
|
while (n_prerequisites);
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
static inline gchar*
|
2001-01-31 07:27:41 +01:00
|
|
|
type_descriptive_name_L (GType type)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
if (type)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *node = lookup_type_node_L (type);
|
|
|
|
|
|
|
|
return node ? NODE_NAME (node) : "<unknown>";
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
return "<invalid>";
|
|
|
|
}
|
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
static inline gchar*
|
|
|
|
type_descriptive_name_U (GType type)
|
|
|
|
{
|
2001-02-18 00:30:48 +01:00
|
|
|
const gchar *name;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
name = type_descriptive_name_L (type);
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
|
2001-02-18 00:30:48 +01:00
|
|
|
return (gchar *)name;
|
2001-01-31 07:27:41 +01:00
|
|
|
}
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
/* --- type consistency checks --- */
|
|
|
|
static gboolean
|
2001-01-31 07:27:41 +01:00
|
|
|
check_plugin_U (GTypePlugin *plugin,
|
|
|
|
gboolean need_complete_type_info,
|
|
|
|
gboolean need_complete_interface_info,
|
|
|
|
const gchar *type_name)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
/* G_IS_TYPE_PLUGIN() and G_TYPE_PLUGIN_GET_CLASS() are external calls: _U
|
|
|
|
*/
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (!plugin)
|
|
|
|
{
|
|
|
|
g_warning ("plugin handle for type `%s' is NULL",
|
|
|
|
type_name);
|
|
|
|
return FALSE;
|
|
|
|
}
|
2000-11-05 06:07:26 +01:00
|
|
|
if (!G_IS_TYPE_PLUGIN (plugin))
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2000-11-05 06:07:26 +01:00
|
|
|
g_warning ("plugin pointer (%p) for type `%s' is invalid",
|
|
|
|
plugin, type_name);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return FALSE;
|
|
|
|
}
|
2000-11-05 06:07:26 +01:00
|
|
|
if (need_complete_type_info && !G_TYPE_PLUGIN_GET_CLASS (plugin)->complete_type_info)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
g_warning ("plugin for type `%s' has no complete_type_info() implementation",
|
|
|
|
type_name);
|
|
|
|
return FALSE;
|
|
|
|
}
|
2000-11-05 06:07:26 +01:00
|
|
|
if (need_complete_interface_info && !G_TYPE_PLUGIN_GET_CLASS (plugin)->complete_interface_info)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
g_warning ("plugin for type `%s' has no complete_interface_info() implementation",
|
|
|
|
type_name);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
2001-01-31 07:27:41 +01:00
|
|
|
check_type_name_U (const gchar *type_name)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
static const gchar *extra_chars = "-_+";
|
|
|
|
const gchar *p = type_name;
|
|
|
|
gboolean name_valid;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (!type_name[0] || !type_name[1] || !type_name[2])
|
|
|
|
{
|
|
|
|
g_warning ("type name `%s' is too short", type_name);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
/* check the first letter */
|
|
|
|
name_valid = (p[0] >= 'A' && p[0] <= 'Z') || (p[0] >= 'a' && p[0] <= 'z') || p[0] == '_';
|
|
|
|
for (p = type_name + 1; *p; p++)
|
|
|
|
name_valid &= ((p[0] >= 'A' && p[0] <= 'Z') ||
|
|
|
|
(p[0] >= 'a' && p[0] <= 'z') ||
|
|
|
|
(p[0] >= '0' && p[0] <= '9') ||
|
|
|
|
strchr (extra_chars, p[0]));
|
|
|
|
if (!name_valid)
|
|
|
|
{
|
|
|
|
g_warning ("type name `%s' contains invalid characters", type_name);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
if (g_type_from_name (type_name))
|
|
|
|
{
|
|
|
|
g_warning ("cannot register existing type `%s'", type_name);
|
|
|
|
return FALSE;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
2001-01-31 07:27:41 +01:00
|
|
|
check_derivation_U (GType parent_type,
|
|
|
|
const gchar *type_name)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *pnode;
|
|
|
|
GTypeFundamentalInfo* finfo;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
pnode = lookup_type_node_L (parent_type);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (!pnode)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_warning ("cannot derive type `%s' from invalid parent type `%s'",
|
|
|
|
type_name,
|
2001-01-31 07:27:41 +01:00
|
|
|
type_descriptive_name_U (parent_type));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return FALSE;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
finfo = type_node_fundamental_info_L (pnode);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
/* ensure flat derivability */
|
|
|
|
if (!(finfo->type_flags & G_TYPE_FLAG_DERIVABLE))
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_warning ("cannot derive `%s' from non-derivable parent type `%s'",
|
|
|
|
type_name,
|
|
|
|
NODE_NAME (pnode));
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
/* ensure deep derivability */
|
|
|
|
if (parent_type != G_TYPE_FUNDAMENTAL (parent_type) &&
|
|
|
|
!(finfo->type_flags & G_TYPE_FLAG_DEEP_DERIVABLE))
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_warning ("cannot derive `%s' from non-fundamental parent type `%s'",
|
|
|
|
type_name,
|
|
|
|
NODE_NAME (pnode));
|
|
|
|
return FALSE;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
2001-02-17 06:32:00 +01:00
|
|
|
static gboolean
|
|
|
|
check_collect_format_I (const gchar *collect_format)
|
|
|
|
{
|
|
|
|
const gchar *p = collect_format;
|
|
|
|
gchar valid_format[] = { G_VALUE_COLLECT_INT, G_VALUE_COLLECT_LONG,
|
|
|
|
G_VALUE_COLLECT_DOUBLE, G_VALUE_COLLECT_POINTER,
|
|
|
|
0 };
|
|
|
|
|
|
|
|
while (*p)
|
|
|
|
if (!strchr (valid_format, *p++))
|
|
|
|
return FALSE;
|
|
|
|
return p - collect_format <= G_VALUE_COLLECT_FORMAT_MAX_LENGTH;
|
|
|
|
}
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
static gboolean
|
2001-01-31 07:27:41 +01:00
|
|
|
check_value_table_I (const gchar *type_name,
|
|
|
|
const GTypeValueTable *value_table)
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
{
|
|
|
|
if (!value_table)
|
|
|
|
return FALSE;
|
|
|
|
else if (value_table->value_init == NULL)
|
|
|
|
{
|
|
|
|
if (value_table->value_free || value_table->value_copy ||
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
value_table->value_peek_pointer ||
|
2001-02-17 06:32:00 +01:00
|
|
|
value_table->collect_format || value_table->collect_value ||
|
|
|
|
value_table->lcopy_format || value_table->lcopy_value)
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
g_warning ("cannot handle uninitializable values of type `%s'",
|
|
|
|
type_name);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
else /* value_table->value_init != NULL */
|
|
|
|
{
|
|
|
|
if (!value_table->value_free)
|
|
|
|
{
|
|
|
|
/* +++ optional +++
|
|
|
|
* g_warning ("missing `value_free()' for type `%s'", type_name);
|
|
|
|
* return FALSE;
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
if (!value_table->value_copy)
|
|
|
|
{
|
|
|
|
g_warning ("missing `value_copy()' for type `%s'", type_name);
|
|
|
|
return FALSE;
|
|
|
|
}
|
2001-02-17 06:32:00 +01:00
|
|
|
if ((value_table->collect_format || value_table->collect_value) &&
|
|
|
|
(!value_table->collect_format || !value_table->collect_value))
|
|
|
|
{
|
|
|
|
g_warning ("one of `collect_format' and `collect_value()' is unspecified for type `%s'",
|
|
|
|
type_name);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
if (value_table->collect_format && !check_collect_format_I (value_table->collect_format))
|
|
|
|
{
|
|
|
|
g_warning ("the `%s' specification for type `%s' is too long or invalid",
|
|
|
|
"collect_format",
|
|
|
|
type_name);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
if ((value_table->lcopy_format || value_table->lcopy_value) &&
|
|
|
|
(!value_table->lcopy_format || !value_table->lcopy_value))
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
{
|
2001-02-17 06:32:00 +01:00
|
|
|
g_warning ("one of `lcopy_format' and `lcopy_value()' is unspecified for type `%s'",
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
type_name);
|
|
|
|
return FALSE;
|
|
|
|
}
|
2001-02-17 06:32:00 +01:00
|
|
|
if (value_table->lcopy_format && !check_collect_format_I (value_table->lcopy_format))
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
{
|
2001-02-17 06:32:00 +01:00
|
|
|
g_warning ("the `%s' specification for type `%s' is too long or invalid",
|
|
|
|
"lcopy_format",
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
type_name);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
2001-01-31 07:27:41 +01:00
|
|
|
check_type_info_L (TypeNode *pnode,
|
|
|
|
GType ftype,
|
|
|
|
const gchar *type_name,
|
|
|
|
const GTypeInfo *info)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
GTypeFundamentalInfo *finfo = type_node_fundamental_info_L (lookup_type_node_L (ftype));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
gboolean is_interface = G_TYPE_IS_INTERFACE (ftype);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
/* check instance members */
|
|
|
|
if (!(finfo->type_flags & G_TYPE_FLAG_INSTANTIATABLE) &&
|
|
|
|
(info->instance_size || info->n_preallocs || info->instance_init))
|
|
|
|
{
|
|
|
|
if (pnode)
|
|
|
|
g_warning ("cannot instantiate `%s', derived from non-instantiatable parent type `%s'",
|
|
|
|
type_name,
|
|
|
|
NODE_NAME (pnode));
|
|
|
|
else
|
|
|
|
g_warning ("cannot instantiate `%s' as non-instantiatable fundamental",
|
|
|
|
type_name);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
/* check class & interface members */
|
|
|
|
if (!(finfo->type_flags & G_TYPE_FLAG_CLASSED) &&
|
|
|
|
(info->class_init || info->class_finalize || info->class_data ||
|
|
|
|
(!is_interface && (info->class_size || info->base_init || info->base_finalize))))
|
|
|
|
{
|
|
|
|
if (pnode)
|
|
|
|
g_warning ("cannot create class for `%s', derived from non-classed parent type `%s'",
|
|
|
|
type_name,
|
|
|
|
NODE_NAME (pnode));
|
|
|
|
else
|
|
|
|
g_warning ("cannot create class for `%s' as non-classed fundamental",
|
|
|
|
type_name);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
/* check interface size */
|
|
|
|
if (is_interface && info->class_size < sizeof (GTypeInterface))
|
|
|
|
{
|
|
|
|
g_warning ("specified interface size for type `%s' is smaller than `GTypeInterface' size",
|
|
|
|
type_name);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
/* check class size */
|
|
|
|
if (finfo->type_flags & G_TYPE_FLAG_CLASSED)
|
|
|
|
{
|
|
|
|
if (info->class_size < sizeof (GTypeClass))
|
|
|
|
{
|
|
|
|
g_warning ("specified class size for type `%s' is smaller than `GTypeClass' size",
|
|
|
|
type_name);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
if (pnode && info->class_size < pnode->data->class.class_size)
|
|
|
|
{
|
|
|
|
g_warning ("specified class size for type `%s' is smaller "
|
|
|
|
"than the parent type's `%s' class size",
|
|
|
|
type_name,
|
|
|
|
NODE_NAME (pnode));
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/* check instance size */
|
|
|
|
if (finfo->type_flags & G_TYPE_FLAG_INSTANTIATABLE)
|
|
|
|
{
|
|
|
|
if (info->instance_size < sizeof (GTypeInstance))
|
|
|
|
{
|
|
|
|
g_warning ("specified instance size for type `%s' is smaller than `GTypeInstance' size",
|
|
|
|
type_name);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
if (pnode && info->instance_size < pnode->data->instance.instance_size)
|
|
|
|
{
|
|
|
|
g_warning ("specified instance size for type `%s' is smaller "
|
|
|
|
"than the parent type's `%s' instance size",
|
|
|
|
type_name,
|
|
|
|
NODE_NAME (pnode));
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
static TypeNode*
|
2001-01-31 07:27:41 +01:00
|
|
|
find_conforming_type_L (TypeNode *pnode,
|
|
|
|
TypeNode *iface)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
TypeNode *node = NULL;
|
|
|
|
guint i;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
if (type_lookup_iface_entry_L (pnode, iface))
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return pnode;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
for (i = 0; i < pnode->n_children && !node; i++)
|
2001-01-31 07:27:41 +01:00
|
|
|
node = find_conforming_type_L (lookup_type_node_L (pnode->children[i]), iface);
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return node;
|
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
2001-01-31 07:27:41 +01:00
|
|
|
check_add_interface_L (GType instance_type,
|
|
|
|
GType iface_type)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *node = lookup_type_node_L (instance_type);
|
|
|
|
TypeNode *iface = lookup_type_node_L (iface_type);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
TypeNode *tnode;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (!node || !node->is_instantiatable)
|
|
|
|
{
|
|
|
|
g_warning ("cannot add interfaces to invalid (non-instantiatable) type `%s'",
|
2001-01-31 07:27:41 +01:00
|
|
|
type_descriptive_name_L (instance_type));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return FALSE;
|
|
|
|
}
|
2001-03-07 20:36:02 +01:00
|
|
|
if (!iface || !NODE_IS_IFACE (iface))
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
g_warning ("cannot add invalid (non-interface) type `%s' to type `%s'",
|
2001-01-31 07:27:41 +01:00
|
|
|
type_descriptive_name_L (iface_type),
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
NODE_NAME (node));
|
|
|
|
return FALSE;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
tnode = lookup_type_node_L (NODE_PARENT_TYPE (iface));
|
|
|
|
if (NODE_PARENT_TYPE (tnode) && !type_lookup_iface_entry_L (node, tnode))
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
g_warning ("cannot add sub-interface `%s' to type `%s' which does not conform to super-interface `%s'",
|
|
|
|
NODE_NAME (iface),
|
|
|
|
NODE_NAME (node),
|
|
|
|
NODE_NAME (tnode));
|
|
|
|
return FALSE;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
tnode = find_conforming_type_L (node, iface);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (tnode)
|
|
|
|
{
|
|
|
|
g_warning ("cannot add interface type `%s' to type `%s', since type `%s' already conforms to interface",
|
|
|
|
NODE_NAME (iface),
|
|
|
|
NODE_NAME (node),
|
|
|
|
NODE_NAME (tnode));
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
2001-01-31 07:27:41 +01:00
|
|
|
check_interface_info_L (TypeNode *iface,
|
|
|
|
GType instance_type,
|
|
|
|
const GInterfaceInfo *info)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
if ((info->interface_finalize || info->interface_data) && !info->interface_init)
|
|
|
|
{
|
|
|
|
g_warning ("interface type `%s' for type `%s' comes without initializer",
|
|
|
|
NODE_NAME (iface),
|
2001-01-31 07:27:41 +01:00
|
|
|
type_descriptive_name_L (instance_type));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return FALSE;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* --- type info (type node data) --- */
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
static void
|
2001-01-31 07:27:41 +01:00
|
|
|
type_data_make_W (TypeNode *node,
|
|
|
|
const GTypeInfo *info,
|
|
|
|
const GTypeValueTable *value_table)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
TypeData *data;
|
|
|
|
GTypeValueTable *vtable = NULL;
|
|
|
|
guint vtable_size = 0;
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_assert (node->data == NULL && info != NULL);
|
|
|
|
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
if (!value_table)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *pnode = lookup_type_node_L (NODE_PARENT_TYPE (node));
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
|
|
|
|
if (pnode)
|
|
|
|
vtable = pnode->data->common.value_table;
|
|
|
|
else
|
|
|
|
{
|
|
|
|
static const GTypeValueTable zero_vtable = { NULL, };
|
|
|
|
|
|
|
|
value_table = &zero_vtable;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (value_table)
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
{
|
|
|
|
/* need to setup vtable_size since we have to allocate it with data in one chunk */
|
|
|
|
vtable_size = sizeof (GTypeValueTable);
|
|
|
|
if (value_table->collect_format)
|
|
|
|
vtable_size += strlen (value_table->collect_format);
|
|
|
|
if (value_table->lcopy_format)
|
|
|
|
vtable_size += strlen (value_table->lcopy_format);
|
|
|
|
vtable_size += 2;
|
|
|
|
}
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (node->is_instantiatable) /* carefull, is_instantiatable is also is_classed */
|
|
|
|
{
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
data = g_malloc0 (sizeof (InstanceData) + vtable_size);
|
|
|
|
if (vtable_size)
|
|
|
|
vtable = G_STRUCT_MEMBER_P (data, sizeof (InstanceData));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
data->instance.class_size = info->class_size;
|
|
|
|
data->instance.class_init_base = info->base_init;
|
|
|
|
data->instance.class_finalize_base = info->base_finalize;
|
|
|
|
data->instance.class_init = info->class_init;
|
|
|
|
data->instance.class_finalize = info->class_finalize;
|
|
|
|
data->instance.class_data = info->class_data;
|
|
|
|
data->instance.class = NULL;
|
|
|
|
data->instance.instance_size = info->instance_size;
|
2000-12-29 03:16:51 +01:00
|
|
|
#ifdef DISABLE_MEM_POOLS
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
data->instance.n_preallocs = 0;
|
2000-12-29 03:16:51 +01:00
|
|
|
#else /* !DISABLE_MEM_POOLS */
|
|
|
|
data->instance.n_preallocs = MIN (info->n_preallocs, 1024);
|
|
|
|
#endif /* !DISABLE_MEM_POOLS */
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
data->instance.instance_init = info->instance_init;
|
|
|
|
data->instance.mem_chunk = NULL;
|
|
|
|
}
|
|
|
|
else if (node->is_classed) /* only classed */
|
|
|
|
{
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
data = g_malloc0 (sizeof (ClassData) + vtable_size);
|
|
|
|
if (vtable_size)
|
|
|
|
vtable = G_STRUCT_MEMBER_P (data, sizeof (ClassData));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
data->class.class_size = info->class_size;
|
|
|
|
data->class.class_init_base = info->base_init;
|
|
|
|
data->class.class_finalize_base = info->base_finalize;
|
|
|
|
data->class.class_init = info->class_init;
|
|
|
|
data->class.class_finalize = info->class_finalize;
|
|
|
|
data->class.class_data = info->class_data;
|
|
|
|
data->class.class = NULL;
|
|
|
|
}
|
2001-03-07 20:36:02 +01:00
|
|
|
else if (NODE_IS_IFACE (node))
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
data = g_malloc0 (sizeof (IFaceData) + vtable_size);
|
|
|
|
if (vtable_size)
|
|
|
|
vtable = G_STRUCT_MEMBER_P (data, sizeof (IFaceData));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
data->iface.vtable_size = info->class_size;
|
|
|
|
data->iface.vtable_init_base = info->base_init;
|
|
|
|
data->iface.vtable_finalize_base = info->base_finalize;
|
|
|
|
}
|
|
|
|
else
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
{
|
|
|
|
data = g_malloc0 (sizeof (CommonData) + vtable_size);
|
|
|
|
if (vtable_size)
|
|
|
|
vtable = G_STRUCT_MEMBER_P (data, sizeof (CommonData));
|
|
|
|
}
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
node->data = data;
|
|
|
|
node->data->common.ref_count = 1;
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
|
|
|
|
if (vtable_size)
|
2001-02-17 06:32:00 +01:00
|
|
|
{
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
gchar *p;
|
|
|
|
|
|
|
|
/* we allocate the vtable and its strings together with the type data, so
|
|
|
|
* children can take over their parent's vtable pointer, and we don't
|
|
|
|
* need to worry freeing it or not when the child data is destroyed
|
|
|
|
*/
|
2001-02-17 06:32:00 +01:00
|
|
|
*vtable = *value_table;
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
p = G_STRUCT_MEMBER_P (vtable, sizeof (*vtable));
|
|
|
|
p[0] = 0;
|
|
|
|
vtable->collect_format = p;
|
|
|
|
if (value_table->collect_format)
|
|
|
|
{
|
|
|
|
strcat (p, value_table->collect_format);
|
|
|
|
p += strlen (value_table->collect_format);
|
|
|
|
}
|
|
|
|
p++;
|
|
|
|
p[0] = 0;
|
|
|
|
vtable->lcopy_format = p;
|
|
|
|
if (value_table->lcopy_format)
|
|
|
|
strcat (p, value_table->lcopy_format);
|
2001-02-17 06:32:00 +01:00
|
|
|
}
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
node->data->common.value_table = vtable;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000 Tim Janik <timj@gtk.org>
* gboxed.c: fixed dealing with collection/lcopy of NULL values.
* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
convenience macro.
* Makefile.am: cleanups, marshaller generation rules.
* gmarshal.[hc]: new files with GRuntime standard marshallers.
* glib-genmarshal.c: fix log domain, support gruntime standard
marshallers, suport G_TYPE_PARAM, come with extern "C" and
#include gmarshal.h.
* glib-genmarshal.1: reflect glib-genmarshal.c updates.
* gobject.[hc]: implement object constructor. rework parameter
changed notification queueing, we support queue freezes now and
don't dispatch from an idle handler anymore.
parameter->property rename hassle.
implemented ::properties_changed and ::notify::* signals for
property change notification (the later supports property names
as details). added signal connection and named data properties.
(g_signal_connect_object): new function to setup while_alive
connections.
(g_object_class_install_property): sink properties now, since they
are initially floating.
(g_object_steal_data):
(g_object_set_data_full):
(g_object_set_data):
(g_object_get_data): set/get data by using g_datalist_*() functions
directly.
(g_object_queue_param_changed): nuked.
(g_object_freeze_notify): start queueing of property changes (freeze/
thaw calls stack).
(g_object_notify): announce changes of a certain property directly.
(g_object_thaw_notify): process queue of property changes, therefore
emitting GObject::notify::detail with detail being the changed
properties names.
(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
G_WARN_INVALID_PARAM_ID().
* gparam.[hc]: param specs are now initially floating and need to be
sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
required by GObjectClass.constructor().
* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
and G_TYPE_CCALLBACK respectively.
* gsignal.[hc]: cleanups.
(signal_id_lookup): after walking the anchestry, try interfaces as well.
(g_signal_new): new function to create signals from varargs type list.
(g_signal_connect_closure): closure connection variant that works from
signal name+detail.
(g_signal_connect_data): c handler connection variant that works from
signal name+detail.
(g_signal_emit_valist): emit signal for an instance with paraneters
collected from a va_list.
(g_signal_emit): emit signal, taking parameters from varargs list.
(g_signal_emit_by_name): same as g_signal_emit, working from
signal name+detail.
(signal_emit_R): return whether return_value needs to be altered.
* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
the points that need to reflect the upcoming rename.
melt g_type_conforms_to() functionality into g_type_is_a(), as that
is what we really want (liskov substitution principle).
assorted changes to other files due to conforms_to->is_a.
* gvalue.[hc]: implemented g_value_set_instance() that sets a value
from an instantiatable type via the value_table's collect_value()
function (based on an idea from James Henstridge <james@daa.com.au>).
cleanups/fixes.
* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
2000-12-12 08:32:00 +01:00
|
|
|
g_assert (node->data->common.value_table != NULL); /* paranoid */
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
static inline void
|
2001-01-31 07:27:41 +01:00
|
|
|
type_data_ref_Wm (TypeNode *node)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
if (!node->data)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *pnode = lookup_type_node_L (NODE_PARENT_TYPE (node));
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
GTypeInfo tmp_info;
|
|
|
|
GTypeValueTable tmp_value_table;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
g_assert (node->plugin != NULL);
|
|
|
|
|
|
|
|
if (pnode)
|
2001-01-31 07:27:41 +01:00
|
|
|
{
|
|
|
|
type_data_ref_Wm (pnode);
|
|
|
|
if (node->data)
|
|
|
|
INVALID_RECURSION ("g_type_plugin_*", node->plugin, NODE_NAME (node));
|
|
|
|
}
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
memset (&tmp_info, 0, sizeof (tmp_info));
|
|
|
|
memset (&tmp_value_table, 0, sizeof (tmp_value_table));
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
2000-11-05 06:07:26 +01:00
|
|
|
g_type_plugin_use (node->plugin);
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
g_type_plugin_complete_type_info (node->plugin, NODE_TYPE (node), &tmp_info, &tmp_value_table);
|
2001-01-31 07:27:41 +01:00
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
if (node->data)
|
|
|
|
INVALID_RECURSION ("g_type_plugin_*", node->plugin, NODE_NAME (node));
|
|
|
|
|
|
|
|
check_type_info_L (pnode, G_TYPE_FUNDAMENTAL (NODE_TYPE (node)), NODE_NAME (node), &tmp_info);
|
|
|
|
type_data_make_W (node, &tmp_info,
|
|
|
|
check_value_table_I (NODE_NAME (node),
|
|
|
|
&tmp_value_table) ? &tmp_value_table : NULL);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
g_assert (node->data->common.ref_count > 0);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
node->data->common.ref_count += 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline void
|
2001-01-31 07:27:41 +01:00
|
|
|
type_data_unref_Wm (TypeNode *node,
|
|
|
|
gboolean uncached)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
g_assert (node->data && node->data->common.ref_count);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (node->data->common.ref_count > 1)
|
|
|
|
node->data->common.ref_count -= 1;
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (!node->plugin)
|
|
|
|
{
|
|
|
|
g_warning ("static type `%s' unreferenced too often",
|
|
|
|
NODE_NAME (node));
|
|
|
|
return;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
type_data_last_unref_Wm (NODE_TYPE (node), uncached);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2001-01-31 07:27:41 +01:00
|
|
|
type_node_add_iface_entry_W (TypeNode *node,
|
|
|
|
GType iface_type)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
IFaceEntry *entries;
|
|
|
|
guint i;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
2001-03-07 20:36:02 +01:00
|
|
|
g_assert (node->is_instantiatable && CLASSED_NODE_N_IFACES (node) < MAX_N_IFACES);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
2001-03-07 20:36:02 +01:00
|
|
|
entries = CLASSED_NODE_IFACES_ENTRIES (node);
|
|
|
|
for (i = 0; i < CLASSED_NODE_N_IFACES (node); i++)
|
|
|
|
if (entries[i].iface_type == iface_type)
|
|
|
|
{
|
|
|
|
g_warning ("failed to add interface, type `%s' already conforms to interface type `%s'",
|
|
|
|
type_descriptive_name_L (NODE_TYPE (node)),
|
|
|
|
type_descriptive_name_L (iface_type));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
else if (entries[i].iface_type > iface_type)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
break;
|
2001-03-07 20:36:02 +01:00
|
|
|
CLASSED_NODE_N_IFACES (node) += 1;
|
|
|
|
CLASSED_NODE_IFACES_ENTRIES (node) = g_renew (IFaceEntry,
|
|
|
|
CLASSED_NODE_IFACES_ENTRIES (node),
|
|
|
|
CLASSED_NODE_N_IFACES (node));
|
|
|
|
entries = CLASSED_NODE_IFACES_ENTRIES (node);
|
|
|
|
g_memmove (entries + i + 1, entries + i, sizeof (entries[0]) * (CLASSED_NODE_N_IFACES (node) - i - 1));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
entries[i].iface_type = iface_type;
|
|
|
|
entries[i].vtable = NULL;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
for (i = 0; i < node->n_children; i++)
|
2001-01-31 07:27:41 +01:00
|
|
|
type_node_add_iface_entry_W (lookup_type_node_L (node->children[i]), iface_type);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2001-01-31 07:27:41 +01:00
|
|
|
type_add_interface_W (TypeNode *node,
|
|
|
|
TypeNode *iface,
|
|
|
|
const GInterfaceInfo *info,
|
|
|
|
GTypePlugin *plugin)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
IFaceHolder *iholder = g_new0 (IFaceHolder, 1);
|
|
|
|
|
|
|
|
/* we must not call any functions of GInterfaceInfo from within here, since
|
|
|
|
* we got most probably called from _within_ a type registration function
|
|
|
|
*/
|
2001-03-07 20:36:02 +01:00
|
|
|
g_assert (node->is_instantiatable && NODE_IS_IFACE (iface) && ((info && !plugin) || (!info && plugin)));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
2001-03-07 20:36:02 +01:00
|
|
|
iholder->next = iface_node_get_holders_L (iface);
|
|
|
|
iface_node_set_holders_W (iface, iholder);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
iholder->instance_type = NODE_TYPE (node);
|
|
|
|
iholder->info = info ? g_memdup (info, sizeof (*info)) : NULL;
|
|
|
|
iholder->plugin = plugin;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
type_node_add_iface_entry_W (node, NODE_TYPE (iface));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
2001-03-07 20:36:02 +01:00
|
|
|
static void
|
|
|
|
type_iface_add_prerequisite_W (TypeNode *iface,
|
|
|
|
TypeNode *prerequisite_node)
|
|
|
|
{
|
|
|
|
GType prerequisite_type = NODE_TYPE (prerequisite_node);
|
|
|
|
GType *prerequisites, *dependants;
|
|
|
|
guint n_dependants, i;
|
|
|
|
|
|
|
|
g_assert (NODE_IS_IFACE (iface) &&
|
|
|
|
IFACE_NODE_N_PREREQUISITES (iface) < MAX_N_PREREQUISITES &&
|
|
|
|
(prerequisite_node->is_instantiatable || NODE_IS_IFACE (prerequisite_node)));
|
|
|
|
|
|
|
|
prerequisites = IFACE_NODE_PREREQUISITES (iface);
|
|
|
|
for (i = 0; i < IFACE_NODE_N_PREREQUISITES (iface); i++)
|
|
|
|
if (prerequisites[i] == prerequisite_type)
|
|
|
|
return; /* we already have that prerequisiste */
|
|
|
|
else if (prerequisites[i] > prerequisite_type)
|
|
|
|
break;
|
|
|
|
IFACE_NODE_N_PREREQUISITES (iface) += 1;
|
|
|
|
IFACE_NODE_PREREQUISITES (iface) = g_renew (GType,
|
|
|
|
IFACE_NODE_PREREQUISITES (iface),
|
|
|
|
IFACE_NODE_N_PREREQUISITES (iface));
|
|
|
|
prerequisites = IFACE_NODE_PREREQUISITES (iface);
|
|
|
|
g_memmove (prerequisites + i + 1, prerequisites + i,
|
|
|
|
sizeof (prerequisites[0]) * (IFACE_NODE_N_PREREQUISITES (iface) - i - 1));
|
|
|
|
prerequisites[i] = prerequisite_type;
|
|
|
|
|
|
|
|
/* we want to get notified when prerequisites get added to prerequisite_node */
|
|
|
|
if (NODE_IS_IFACE (prerequisite_node))
|
|
|
|
{
|
|
|
|
dependants = iface_node_get_dependants_array_L (prerequisite_node);
|
|
|
|
n_dependants = dependants ? dependants[0] : 0;
|
|
|
|
n_dependants += 1;
|
|
|
|
dependants = g_renew (GType, dependants, n_dependants + 1);
|
|
|
|
dependants[n_dependants] = NODE_TYPE (iface);
|
|
|
|
dependants[0] = n_dependants;
|
|
|
|
iface_node_set_dependants_array_W (prerequisite_node, dependants);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* we need to notify all dependants */
|
|
|
|
dependants = iface_node_get_dependants_array_L (iface);
|
|
|
|
n_dependants = dependants ? dependants[0] : 0;
|
|
|
|
for (i = 1; i <= n_dependants; i++)
|
|
|
|
type_iface_add_prerequisite_W (lookup_type_node_L (dependants[i]), prerequisite_node);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
g_type_interface_add_prerequisite (GType interface_type,
|
|
|
|
GType prerequisite_type)
|
|
|
|
{
|
|
|
|
TypeNode *iface, *prerequisite_node;
|
|
|
|
IFaceHolder *holders;
|
|
|
|
|
|
|
|
g_return_if_fail (G_TYPE_IS_INTERFACE (interface_type));
|
|
|
|
g_return_if_fail (!g_type_is_a (interface_type, prerequisite_type));
|
|
|
|
g_return_if_fail (!g_type_is_a (prerequisite_type, interface_type));
|
|
|
|
|
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
iface = lookup_type_node_L (interface_type);
|
2001-03-09 10:14:32 +01:00
|
|
|
prerequisite_node = lookup_type_node_L (prerequisite_type);
|
2001-03-07 20:36:02 +01:00
|
|
|
if (!iface || !prerequisite_node || !NODE_IS_IFACE (iface))
|
|
|
|
{
|
|
|
|
g_warning ("interface type `%s' or prerequisite type `%s' invalid",
|
|
|
|
type_descriptive_name_L (interface_type),
|
|
|
|
type_descriptive_name_L (prerequisite_type));
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
holders = iface_node_get_holders_L (iface);
|
|
|
|
if (holders)
|
|
|
|
{
|
|
|
|
g_warning ("unable to add prerequisite `%s' to interface `%s' which is already in use for `%s'",
|
|
|
|
type_descriptive_name_L (prerequisite_type),
|
|
|
|
type_descriptive_name_L (interface_type),
|
|
|
|
type_descriptive_name_L (holders->instance_type));
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (prerequisite_node->is_instantiatable)
|
|
|
|
{
|
|
|
|
guint i;
|
2001-03-09 15:02:30 +01:00
|
|
|
|
|
|
|
for (i = 0; i < IFACE_NODE_N_PREREQUISITES (iface); i++)
|
|
|
|
{
|
|
|
|
TypeNode *prnode = lookup_type_node_L (IFACE_NODE_PREREQUISITES (iface)[i]);
|
|
|
|
|
|
|
|
if (prnode->is_instantiatable)
|
|
|
|
{
|
|
|
|
g_warning ("adding prerequisite `%s' to interface `%s' conflicts with existing prerequisite `%s'",
|
|
|
|
type_descriptive_name_L (prerequisite_type),
|
|
|
|
type_descriptive_name_L (interface_type),
|
|
|
|
type_descriptive_name_L (NODE_TYPE (prnode)));
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
2001-03-07 20:36:02 +01:00
|
|
|
|
2001-03-09 10:14:32 +01:00
|
|
|
for (i = 0; i < prerequisite_node->n_supers + 1; i++)
|
2001-03-07 20:36:02 +01:00
|
|
|
type_iface_add_prerequisite_W (iface, lookup_type_node_L (prerequisite_node->supers[i]));
|
|
|
|
}
|
|
|
|
else if (NODE_IS_IFACE (prerequisite_node))
|
|
|
|
{
|
|
|
|
GType *dependants;
|
|
|
|
guint n_dependants, i;
|
|
|
|
|
|
|
|
dependants = iface_node_get_dependants_array_L (prerequisite_node);
|
|
|
|
n_dependants = dependants ? dependants[0] : 0;
|
|
|
|
for (i = 1; i <= n_dependants; i++)
|
|
|
|
type_iface_add_prerequisite_W (iface, lookup_type_node_L (dependants[i]));
|
|
|
|
type_iface_add_prerequisite_W (iface, prerequisite_node);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
g_warning ("prerequisite `%s' for interface `%s' is not instantiatable or interface",
|
|
|
|
type_descriptive_name_L (prerequisite_type),
|
|
|
|
type_descriptive_name_L (interface_type));
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
}
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
static IFaceHolder*
|
2001-01-31 07:27:41 +01:00
|
|
|
type_iface_retrive_holder_info_Wm (TypeNode *iface,
|
|
|
|
GType instance_type)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-03-07 20:36:02 +01:00
|
|
|
IFaceHolder *iholder = iface_node_get_holders_L (iface);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
2001-03-07 20:36:02 +01:00
|
|
|
g_assert (NODE_IS_IFACE (iface));
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
while (iholder->instance_type != instance_type)
|
|
|
|
iholder = iholder->next;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (!iholder->info)
|
|
|
|
{
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
GInterfaceInfo tmp_info;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
g_assert (iholder->plugin != NULL);
|
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
type_data_ref_Wm (iface);
|
|
|
|
if (iholder->info)
|
|
|
|
INVALID_RECURSION ("g_type_plugin_*", iface->plugin, NODE_NAME (iface));
|
|
|
|
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
memset (&tmp_info, 0, sizeof (tmp_info));
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
2000-11-05 06:07:26 +01:00
|
|
|
g_type_plugin_use (iholder->plugin);
|
2001-04-01 06:04:46 +02:00
|
|
|
g_type_plugin_complete_interface_info (iholder->plugin, instance_type, NODE_TYPE (iface), &tmp_info);
|
2001-01-31 07:27:41 +01:00
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
if (iholder->info)
|
|
|
|
INVALID_RECURSION ("g_type_plugin_*", iholder->plugin, NODE_NAME (iface));
|
|
|
|
|
|
|
|
check_interface_info_L (iface, instance_type, &tmp_info);
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
iholder->info = g_memdup (&tmp_info, sizeof (tmp_info));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return iholder;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2001-01-31 07:27:41 +01:00
|
|
|
type_iface_blow_holder_info_Wm (TypeNode *iface,
|
|
|
|
GType instance_type)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-03-07 20:36:02 +01:00
|
|
|
IFaceHolder *iholder = iface_node_get_holders_L (iface);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
2001-03-07 20:36:02 +01:00
|
|
|
g_assert (NODE_IS_IFACE (iface));
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
while (iholder->instance_type != instance_type)
|
|
|
|
iholder = iholder->next;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (iholder->info && iholder->plugin)
|
|
|
|
{
|
|
|
|
g_free (iholder->info);
|
|
|
|
iholder->info = NULL;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
2000-11-05 06:07:26 +01:00
|
|
|
g_type_plugin_unuse (iholder->plugin);
|
2001-01-31 07:27:41 +01:00
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
|
|
|
|
type_data_unref_Wm (iface, FALSE);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* --- type structure creation/destruction --- */
|
|
|
|
GTypeInstance*
|
|
|
|
g_type_create_instance (GType type)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *node;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
GTypeInstance *instance;
|
|
|
|
GTypeClass *class;
|
|
|
|
guint i;
|
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type);
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (!node || !node->is_instantiatable)
|
|
|
|
{
|
|
|
|
g_warning ("cannot create new instance of invalid (non-instantiatable) type `%s'",
|
2001-01-31 07:27:41 +01:00
|
|
|
type_descriptive_name_U (type));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return NULL;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
/* G_TYPE_IS_ABSTRACT() is an external call: _U */
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
if (G_TYPE_IS_ABSTRACT (type))
|
|
|
|
{
|
|
|
|
g_warning ("cannot create instance of abstract (non-instantiatable) type `%s'",
|
2001-01-31 07:27:41 +01:00
|
|
|
type_descriptive_name_U (type));
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
return NULL;
|
|
|
|
}
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
class = g_type_class_ref (type);
|
|
|
|
|
|
|
|
if (node->data->instance.n_preallocs)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (!node->data->instance.mem_chunk)
|
|
|
|
node->data->instance.mem_chunk = g_mem_chunk_new (NODE_NAME (node),
|
|
|
|
node->data->instance.instance_size,
|
|
|
|
(node->data->instance.instance_size *
|
|
|
|
node->data->instance.n_preallocs),
|
|
|
|
G_ALLOC_AND_FREE);
|
|
|
|
instance = g_chunk_new0 (GTypeInstance, node->data->instance.mem_chunk);
|
2001-01-31 07:27:41 +01:00
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
else
|
2001-01-31 07:27:41 +01:00
|
|
|
instance = g_malloc0 (node->data->instance.instance_size); /* fine without read lock */
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
for (i = node->n_supers; i > 0; i--)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *pnode;
|
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
pnode = lookup_type_node_L (node->supers[i]);
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
if (pnode->data->instance.instance_init)
|
|
|
|
{
|
|
|
|
instance->g_class = pnode->data->instance.class;
|
|
|
|
pnode->data->instance.instance_init (instance, class);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
instance->g_class = class;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (node->data->instance.instance_init)
|
|
|
|
node->data->instance.instance_init (instance, class);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return instance;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
g_type_free_instance (GTypeInstance *instance)
|
|
|
|
{
|
|
|
|
TypeNode *node;
|
|
|
|
GTypeClass *class;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_return_if_fail (instance != NULL && instance->g_class != NULL);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
class = instance->g_class;
|
2001-01-31 07:27:41 +01:00
|
|
|
node = lookup_type_node_L (class->g_type);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (!node || !node->is_instantiatable || !node->data || node->data->class.class != (gpointer) class)
|
|
|
|
{
|
|
|
|
g_warning ("cannot free instance of invalid (non-instantiatable) type `%s'",
|
2001-01-31 07:27:41 +01:00
|
|
|
type_descriptive_name_L (class->g_type));
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
/* G_TYPE_IS_ABSTRACT() is an external call: _U */
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
if (G_TYPE_IS_ABSTRACT (NODE_TYPE (node)))
|
|
|
|
{
|
|
|
|
g_warning ("cannot free instance of abstract (non-instantiatable) type `%s'",
|
|
|
|
NODE_NAME (node));
|
|
|
|
return;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
instance->g_class = NULL;
|
2001-04-18 15:47:59 +02:00
|
|
|
memset (instance, 0xaa, node->data->instance.instance_size); /* FIXME: debugging hack */
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (node->data->instance.n_preallocs)
|
2001-01-31 07:27:41 +01:00
|
|
|
{
|
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
g_chunk_free (instance, node->data->instance.mem_chunk);
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
}
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
else
|
|
|
|
g_free (instance);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_type_class_unref (class);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2001-01-31 07:27:41 +01:00
|
|
|
type_propagate_iface_vtable_W (TypeNode *pnode,
|
|
|
|
TypeNode *iface,
|
|
|
|
GTypeInterface *vtable)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
IFaceEntry *entry = type_lookup_iface_entry_L (pnode, iface);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
guint i;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
entry->vtable = vtable;
|
|
|
|
for (i = 0; i < pnode->n_children; i++)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *node = lookup_type_node_L (pnode->children[i]);
|
|
|
|
|
|
|
|
type_propagate_iface_vtable_W (node, iface, vtable);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2001-01-31 07:27:41 +01:00
|
|
|
type_iface_vtable_init_Wm (TypeNode *iface,
|
|
|
|
TypeNode *node)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-07-11 22:08:50 +02:00
|
|
|
#ifndef G_DISABLE_ASSERT
|
2001-01-31 07:27:41 +01:00
|
|
|
IFaceEntry *entry = type_lookup_iface_entry_L (node, iface);
|
2001-07-11 22:08:50 +02:00
|
|
|
#endif
|
2001-01-31 07:27:41 +01:00
|
|
|
IFaceHolder *iholder = type_iface_retrive_holder_info_Wm (iface, NODE_TYPE (node));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
GTypeInterface *vtable;
|
|
|
|
|
|
|
|
g_assert (iface->data && entry && entry->vtable == NULL && iholder && iholder->info);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
vtable = g_malloc0 (iface->data->iface.vtable_size);
|
2001-01-31 07:27:41 +01:00
|
|
|
type_propagate_iface_vtable_W (node, iface, vtable);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
vtable->g_type = NODE_TYPE (iface);
|
|
|
|
vtable->g_instance_type = NODE_TYPE (node);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
if (iface->data->iface.vtable_init_base || iholder->info->interface_init)
|
|
|
|
{
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
if (iface->data->iface.vtable_init_base)
|
|
|
|
iface->data->iface.vtable_init_base (vtable);
|
|
|
|
if (iholder->info->interface_init)
|
|
|
|
iholder->info->interface_init (vtable, iholder->info->interface_data);
|
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
}
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2001-01-31 07:27:41 +01:00
|
|
|
type_iface_vtable_finalize_Wm (TypeNode *iface,
|
|
|
|
TypeNode *node,
|
|
|
|
GTypeInterface *vtable)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-07-11 22:08:50 +02:00
|
|
|
#ifndef G_DISABLE_ASSERT
|
2001-01-31 07:27:41 +01:00
|
|
|
IFaceEntry *entry = type_lookup_iface_entry_L (node, iface);
|
2001-07-11 22:08:50 +02:00
|
|
|
#endif
|
2001-03-07 20:36:02 +01:00
|
|
|
IFaceHolder *iholder = iface_node_get_holders_L (iface);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_assert (entry && entry->vtable == vtable);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
while (iholder->instance_type != NODE_TYPE (node))
|
|
|
|
iholder = iholder->next;
|
|
|
|
g_assert (iholder && iholder->info);
|
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
type_propagate_iface_vtable_W (node, iface, NULL);
|
|
|
|
if (iholder->info->interface_finalize || iface->data->iface.vtable_finalize_base)
|
|
|
|
{
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
if (iholder->info->interface_finalize)
|
|
|
|
iholder->info->interface_finalize (vtable, iholder->info->interface_data);
|
|
|
|
if (iface->data->iface.vtable_finalize_base)
|
|
|
|
iface->data->iface.vtable_finalize_base (vtable);
|
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
}
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
vtable->g_type = 0;
|
|
|
|
vtable->g_instance_type = 0;
|
|
|
|
g_free (vtable);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
type_iface_blow_holder_info_Wm (iface, NODE_TYPE (node));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2001-01-31 07:27:41 +01:00
|
|
|
type_class_init_Wm (TypeNode *node,
|
|
|
|
GTypeClass *pclass)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
GSList *slist, *init_slist = NULL;
|
|
|
|
GTypeClass *class;
|
|
|
|
IFaceEntry *entry;
|
|
|
|
TypeNode *bnode;
|
|
|
|
guint i;
|
|
|
|
|
|
|
|
g_assert (node->is_classed && node->data &&
|
|
|
|
node->data->class.class_size &&
|
|
|
|
!node->data->class.class);
|
|
|
|
|
|
|
|
class = g_malloc0 (node->data->class.class_size);
|
|
|
|
node->data->class.class = class;
|
|
|
|
|
|
|
|
if (pclass)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *pnode = lookup_type_node_L (pclass->g_type);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
memcpy (class, pclass, pnode->data->class.class_size);
|
|
|
|
}
|
|
|
|
class->g_type = NODE_TYPE (node);
|
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
/* stack all base class initialization functions, so we
|
|
|
|
* call them in ascending order.
|
|
|
|
*/
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
for (bnode = node; bnode; bnode = lookup_type_node_L (NODE_PARENT_TYPE (bnode)))
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (bnode->data->class.class_init_base)
|
2000-09-29 15:40:21 +02:00
|
|
|
init_slist = g_slist_prepend (init_slist, (gpointer) bnode->data->class.class_init_base);
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
for (slist = init_slist; slist; slist = slist->next)
|
|
|
|
{
|
2000-09-29 15:40:21 +02:00
|
|
|
GBaseInitFunc class_init_base = (GBaseInitFunc) slist->data;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
class_init_base (class);
|
|
|
|
}
|
|
|
|
g_slist_free (init_slist);
|
|
|
|
|
|
|
|
if (node->data->class.class_init)
|
|
|
|
node->data->class.class_init (class, (gpointer) node->data->class.class_data);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
/* ok, we got the class done, now initialize all interfaces */
|
2001-03-07 20:36:02 +01:00
|
|
|
for (entry = NULL, i = 0; i < CLASSED_NODE_N_IFACES (node); i++)
|
|
|
|
if (!CLASSED_NODE_IFACES_ENTRIES (node)[i].vtable)
|
|
|
|
entry = CLASSED_NODE_IFACES_ENTRIES (node) + i;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
while (entry)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
type_iface_vtable_init_Wm (lookup_type_node_L (entry->iface_type), node);
|
2000-06-10 08:41:55 +02:00
|
|
|
|
2001-03-07 20:36:02 +01:00
|
|
|
for (entry = NULL, i = 0; i < CLASSED_NODE_N_IFACES (node); i++)
|
|
|
|
if (!CLASSED_NODE_IFACES_ENTRIES (node)[i].vtable)
|
|
|
|
entry = CLASSED_NODE_IFACES_ENTRIES (node) + i;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2001-01-31 07:27:41 +01:00
|
|
|
type_data_finalize_class_ifaces_Wm (TypeNode *node)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
IFaceEntry *entry;
|
|
|
|
guint i;
|
|
|
|
|
|
|
|
g_assert (node->is_instantiatable && node->data && node->data->class.class && node->data->common.ref_count == 0);
|
|
|
|
|
|
|
|
g_message ("finalizing interfaces for %sClass `%s'",
|
2001-01-31 07:27:41 +01:00
|
|
|
type_descriptive_name_L (G_TYPE_FUNDAMENTAL (NODE_TYPE (node))),
|
|
|
|
type_descriptive_name_L (NODE_TYPE (node)));
|
2000-06-10 08:41:55 +02:00
|
|
|
|
2001-03-07 20:36:02 +01:00
|
|
|
for (entry = NULL, i = 0; i < CLASSED_NODE_N_IFACES (node); i++)
|
|
|
|
if (CLASSED_NODE_IFACES_ENTRIES (node)[i].vtable &&
|
|
|
|
CLASSED_NODE_IFACES_ENTRIES (node)[i].vtable->g_instance_type == NODE_TYPE (node))
|
|
|
|
entry = CLASSED_NODE_IFACES_ENTRIES (node) + i;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
while (entry)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
type_iface_vtable_finalize_Wm (lookup_type_node_L (entry->iface_type), node, entry->vtable);
|
2000-06-10 08:41:55 +02:00
|
|
|
|
2001-03-07 20:36:02 +01:00
|
|
|
for (entry = NULL, i = 0; i < CLASSED_NODE_N_IFACES (node); i++)
|
|
|
|
if (CLASSED_NODE_IFACES_ENTRIES (node)[i].vtable &&
|
|
|
|
CLASSED_NODE_IFACES_ENTRIES (node)[i].vtable->g_instance_type == NODE_TYPE (node))
|
|
|
|
entry = CLASSED_NODE_IFACES_ENTRIES (node) + i;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2001-01-31 07:27:41 +01:00
|
|
|
type_data_finalize_class_U (TypeNode *node,
|
|
|
|
ClassData *cdata)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
GTypeClass *class = cdata->class;
|
|
|
|
TypeNode *bnode;
|
|
|
|
|
|
|
|
g_assert (cdata->class && cdata->common.ref_count == 0);
|
|
|
|
|
|
|
|
if (cdata->class_finalize)
|
|
|
|
cdata->class_finalize (class, (gpointer) cdata->class_data);
|
|
|
|
|
|
|
|
/* call all base class destruction functions in descending order
|
|
|
|
*/
|
|
|
|
if (cdata->class_finalize_base)
|
|
|
|
cdata->class_finalize_base (class);
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
for (bnode = lookup_type_node_L (NODE_PARENT_TYPE (node)); bnode; bnode = lookup_type_node_L (NODE_PARENT_TYPE (bnode)))
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (bnode->data->class.class_finalize_base)
|
2001-01-31 07:27:41 +01:00
|
|
|
{
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
bnode->data->class.class_finalize_base (class);
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
}
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
class->g_type = 0;
|
|
|
|
g_free (cdata->class);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2001-01-31 07:27:41 +01:00
|
|
|
type_data_last_unref_Wm (GType type,
|
|
|
|
gboolean uncached)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *node = lookup_type_node_L (type);
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_return_if_fail (node != NULL && node->plugin != NULL);
|
|
|
|
|
|
|
|
if (!node->data || node->data->common.ref_count == 0)
|
|
|
|
{
|
|
|
|
g_warning ("cannot drop last reference to unreferenced type `%s'",
|
2001-01-31 07:27:41 +01:00
|
|
|
type_descriptive_name_U (type));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
if (node->is_classed && node->data && node->data->class.class && static_n_class_cache_funcs)
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
{
|
|
|
|
guint i;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
for (i = 0; i < static_n_class_cache_funcs; i++)
|
|
|
|
{
|
|
|
|
GTypeClassCacheFunc cache_func = static_class_cache_funcs[i].cache_func;
|
|
|
|
gpointer cache_data = static_class_cache_funcs[i].cache_data;
|
|
|
|
gboolean need_break;
|
|
|
|
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
need_break = cache_func (cache_data, node->data->class.class);
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
if (!node->data || node->data->common.ref_count == 0)
|
|
|
|
INVALID_RECURSION ("GType class cache function ", cache_func, NODE_NAME (node));
|
|
|
|
if (need_break)
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (node->data->common.ref_count > 1) /* may have been re-referenced meanwhile */
|
|
|
|
node->data->common.ref_count -= 1;
|
|
|
|
else
|
|
|
|
{
|
|
|
|
GType ptype = NODE_PARENT_TYPE (node);
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
TypeData *tdata;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
node->data->common.ref_count = 0;
|
|
|
|
|
|
|
|
if (node->is_instantiatable && node->data->instance.mem_chunk)
|
|
|
|
{
|
|
|
|
g_mem_chunk_destroy (node->data->instance.mem_chunk);
|
|
|
|
node->data->instance.mem_chunk = NULL;
|
|
|
|
}
|
|
|
|
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
tdata = node->data;
|
|
|
|
if (node->is_classed && tdata->class.class)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-03-07 20:36:02 +01:00
|
|
|
if (CLASSED_NODE_N_IFACES (node))
|
2001-01-31 07:27:41 +01:00
|
|
|
type_data_finalize_class_ifaces_Wm (node);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
node->data = NULL;
|
2001-01-31 07:27:41 +01:00
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
type_data_finalize_class_U (node, &tdata->class);
|
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
else
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
node->data = NULL;
|
2001-02-17 06:32:00 +01:00
|
|
|
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
/* freeing tdata->common.value_table and its contents is taking care of
|
|
|
|
* by allocating it in one chunk with tdata
|
|
|
|
*/
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
g_free (tdata);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
if (ptype)
|
2001-01-31 07:27:41 +01:00
|
|
|
type_data_unref_Wm (lookup_type_node_L (ptype), FALSE);
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
2000-11-05 06:07:26 +01:00
|
|
|
g_type_plugin_unuse (node->plugin);
|
2001-01-31 07:27:41 +01:00
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
void
|
|
|
|
g_type_add_class_cache_func (gpointer cache_data,
|
|
|
|
GTypeClassCacheFunc cache_func)
|
|
|
|
{
|
|
|
|
guint i;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
g_return_if_fail (cache_func != NULL);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
i = static_n_class_cache_funcs++;
|
|
|
|
static_class_cache_funcs = g_renew (ClassCacheFunc, static_class_cache_funcs, static_n_class_cache_funcs);
|
|
|
|
static_class_cache_funcs[i].cache_data = cache_data;
|
|
|
|
static_class_cache_funcs[i].cache_func = cache_func;
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
g_type_remove_class_cache_func (gpointer cache_data,
|
|
|
|
GTypeClassCacheFunc cache_func)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
gboolean found_it = FALSE;
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
guint i;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
g_return_if_fail (cache_func != NULL);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
for (i = 0; i < static_n_class_cache_funcs; i++)
|
|
|
|
if (static_class_cache_funcs[i].cache_data == cache_data &&
|
|
|
|
static_class_cache_funcs[i].cache_func == cache_func)
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
static_n_class_cache_funcs--;
|
|
|
|
g_memmove (static_class_cache_funcs + i,
|
|
|
|
static_class_cache_funcs + i + 1,
|
|
|
|
sizeof (static_class_cache_funcs[0]) * (static_n_class_cache_funcs - i));
|
|
|
|
static_class_cache_funcs = g_renew (ClassCacheFunc, static_class_cache_funcs, static_n_class_cache_funcs);
|
|
|
|
found_it = TRUE;
|
|
|
|
break;
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
|
|
|
|
if (!found_it)
|
|
|
|
g_warning (G_STRLOC ": cannot remove unregistered class cache func %p with data %p",
|
|
|
|
cache_func, cache_data);
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
}
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
/* --- type registration --- */
|
|
|
|
GType
|
|
|
|
g_type_register_fundamental (GType type_id,
|
|
|
|
const gchar *type_name,
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
const GTypeInfo *info,
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
const GTypeFundamentalInfo *finfo,
|
|
|
|
GTypeFlags flags)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
GTypeFundamentalInfo *node_finfo;
|
|
|
|
TypeNode *node;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
g_return_val_if_uninitialized (static_last_fundamental_id, g_type_init, 0);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_return_val_if_fail (type_id > 0, 0);
|
|
|
|
g_return_val_if_fail (type_name != NULL, 0);
|
|
|
|
g_return_val_if_fail (info != NULL, 0);
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
g_return_val_if_fail (finfo != NULL, 0);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
if (!check_type_name_U (type_name))
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return 0;
|
|
|
|
if (G_TYPE_FUNDAMENTAL (type_id) != type_id)
|
|
|
|
{
|
|
|
|
g_warning ("cannot register fundamental type `%s' with non-fundamental id (%u)",
|
|
|
|
type_name,
|
|
|
|
type_id);
|
|
|
|
return 0;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
if ((finfo->type_flags & G_TYPE_FLAG_INSTANTIATABLE) &&
|
|
|
|
!(finfo->type_flags & G_TYPE_FLAG_CLASSED))
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
g_warning ("cannot register instantiatable fundamental type `%s' as non-classed",
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
type_name);
|
|
|
|
return 0;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
if (lookup_type_node_L (type_id))
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
g_warning ("cannot register existing fundamental type `%s' (as `%s')",
|
|
|
|
type_descriptive_name_U (type_id),
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
type_name);
|
|
|
|
return 0;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
node = type_node_fundamental_new_W (type_id, type_name, finfo->type_flags);
|
|
|
|
node_finfo = type_node_fundamental_info_L (node);
|
|
|
|
type_add_flags_W (node, flags);
|
|
|
|
|
|
|
|
if (check_type_info_L (NULL, G_TYPE_FUNDAMENTAL (NODE_TYPE (node)), type_name, info))
|
|
|
|
type_data_make_W (node, info,
|
|
|
|
check_value_table_I (type_name, info->value_table) ? info->value_table : NULL);
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return NODE_TYPE (node);
|
|
|
|
}
|
|
|
|
|
|
|
|
GType
|
|
|
|
g_type_register_static (GType parent_type,
|
|
|
|
const gchar *type_name,
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
const GTypeInfo *info,
|
|
|
|
GTypeFlags flags)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
TypeNode *pnode, *node;
|
2001-01-31 07:27:41 +01:00
|
|
|
GType type = 0;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
g_return_val_if_uninitialized (static_last_fundamental_id, g_type_init, 0);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_return_val_if_fail (parent_type > 0, 0);
|
|
|
|
g_return_val_if_fail (type_name != NULL, 0);
|
|
|
|
g_return_val_if_fail (info != NULL, 0);
|
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
if (!check_type_name_U (type_name) ||
|
|
|
|
!check_derivation_U (parent_type, type_name))
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return 0;
|
|
|
|
if (info->class_finalize)
|
|
|
|
{
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
g_warning ("class finalizer specified for static type `%s'",
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
type_name);
|
|
|
|
return 0;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
pnode = lookup_type_node_L (parent_type);
|
|
|
|
type_data_ref_Wm (pnode);
|
|
|
|
if (check_type_info_L (pnode, G_TYPE_FUNDAMENTAL (parent_type), type_name, info))
|
|
|
|
{
|
|
|
|
node = type_node_new_W (pnode, type_name, NULL);
|
|
|
|
type_add_flags_W (node, flags);
|
|
|
|
type = NODE_TYPE (node);
|
|
|
|
type_data_make_W (node, info,
|
|
|
|
check_value_table_I (type_name, info->value_table) ? info->value_table : NULL);
|
|
|
|
}
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return type;
|
|
|
|
}
|
|
|
|
|
|
|
|
GType
|
|
|
|
g_type_register_dynamic (GType parent_type,
|
|
|
|
const gchar *type_name,
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
GTypePlugin *plugin,
|
|
|
|
GTypeFlags flags)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
TypeNode *pnode, *node;
|
|
|
|
GType type;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
g_return_val_if_uninitialized (static_last_fundamental_id, g_type_init, 0);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_return_val_if_fail (parent_type > 0, 0);
|
|
|
|
g_return_val_if_fail (type_name != NULL, 0);
|
|
|
|
g_return_val_if_fail (plugin != NULL, 0);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
if (!check_type_name_U (type_name) ||
|
|
|
|
!check_derivation_U (parent_type, type_name) ||
|
|
|
|
!check_plugin_U (plugin, TRUE, FALSE, type_name))
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return 0;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
pnode = lookup_type_node_L (parent_type);
|
|
|
|
node = type_node_new_W (pnode, type_name, plugin);
|
|
|
|
type_add_flags_W (node, flags);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
type = NODE_TYPE (node);
|
2001-01-31 07:27:41 +01:00
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return type;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
g_type_add_interface_static (GType instance_type,
|
|
|
|
GType interface_type,
|
|
|
|
const GInterfaceInfo *info)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
/* G_TYPE_IS_INSTANTIATABLE() is an external call: _U */
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_return_if_fail (G_TYPE_IS_INSTANTIATABLE (instance_type));
|
|
|
|
g_return_if_fail (g_type_parent (interface_type) == G_TYPE_INTERFACE);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
if (check_add_interface_L (instance_type, interface_type))
|
|
|
|
{
|
|
|
|
TypeNode *node = lookup_type_node_L (instance_type);
|
|
|
|
TypeNode *iface = lookup_type_node_L (interface_type);
|
|
|
|
|
|
|
|
if (check_interface_info_L (iface, NODE_TYPE (node), info))
|
|
|
|
type_add_interface_W (node, iface, info, NULL);
|
|
|
|
}
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
g_type_add_interface_dynamic (GType instance_type,
|
|
|
|
GType interface_type,
|
|
|
|
GTypePlugin *plugin)
|
|
|
|
{
|
|
|
|
TypeNode *node;
|
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
/* G_TYPE_IS_INSTANTIATABLE() is an external call: _U */
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_return_if_fail (G_TYPE_IS_INSTANTIATABLE (instance_type));
|
|
|
|
g_return_if_fail (g_type_parent (interface_type) == G_TYPE_INTERFACE);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (instance_type);
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
if (!check_plugin_U (plugin, FALSE, TRUE, NODE_NAME (node)))
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
if (check_add_interface_L (instance_type, interface_type))
|
|
|
|
{
|
|
|
|
TypeNode *iface = lookup_type_node_L (interface_type);
|
|
|
|
|
|
|
|
type_add_interface_W (node, iface, NULL, plugin);
|
|
|
|
}
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* --- public API functions --- */
|
|
|
|
gpointer
|
|
|
|
g_type_class_ref (GType type)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *node;
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
/* optimize for common code path
|
|
|
|
*/
|
2001-01-31 07:27:41 +01:00
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (node && node->is_classed && node->data &&
|
|
|
|
node->data->class.class && node->data->common.ref_count > 0)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
type_data_ref_Wm (node);
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return node->data->class.class;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (!node || !node->is_classed ||
|
|
|
|
(node->data && node->data->common.ref_count < 1))
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_warning ("cannot retrive class for invalid (unclassed) type `%s'",
|
2001-01-31 07:27:41 +01:00
|
|
|
type_descriptive_name_U (type));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return NULL;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
type_data_ref_Wm (node);
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (!node->data->class.class)
|
|
|
|
{
|
|
|
|
GType ptype = NODE_PARENT_TYPE (node);
|
2001-01-31 07:27:41 +01:00
|
|
|
GTypeClass *pclass = NULL;
|
|
|
|
|
|
|
|
if (ptype)
|
|
|
|
{
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
pclass = g_type_class_ref (ptype);
|
|
|
|
if (node->data->class.class)
|
|
|
|
INVALID_RECURSION ("g_type_plugin_*", node->plugin, NODE_NAME (node));
|
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
}
|
|
|
|
|
|
|
|
type_class_init_Wm (node, pclass);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return node->data->class.class;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
g_type_class_unref (gpointer g_class)
|
|
|
|
{
|
|
|
|
TypeNode *node;
|
|
|
|
GTypeClass *class = g_class;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_return_if_fail (g_class != NULL);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (class->g_type);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (node && node->is_classed && node->data &&
|
|
|
|
node->data->class.class == class && node->data->common.ref_count > 0)
|
2001-01-31 07:27:41 +01:00
|
|
|
type_data_unref_Wm (node, FALSE);
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
else
|
|
|
|
g_warning ("cannot unreference class of invalid (unclassed) type `%s'",
|
2001-01-31 07:27:41 +01:00
|
|
|
type_descriptive_name_L (class->g_type));
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
g_type_class_unref_uncached (gpointer g_class)
|
|
|
|
{
|
|
|
|
TypeNode *node;
|
|
|
|
GTypeClass *class = g_class;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
g_return_if_fail (g_class != NULL);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (class->g_type);
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
if (node && node->is_classed && node->data &&
|
|
|
|
node->data->class.class == class && node->data->common.ref_count > 0)
|
2001-01-31 07:27:41 +01:00
|
|
|
type_data_unref_Wm (node, TRUE);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
else
|
|
|
|
g_warning ("cannot unreference class of invalid (unclassed) type `%s'",
|
2001-01-31 07:27:41 +01:00
|
|
|
type_descriptive_name_L (class->g_type));
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
gpointer
|
|
|
|
g_type_class_peek (GType type)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *node;
|
|
|
|
gpointer class;
|
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (node && node->is_classed && node->data && node->data->class.class) /* common.ref_count _may_ be 0 */
|
2001-01-31 07:27:41 +01:00
|
|
|
class = node->data->class.class;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
else
|
2001-01-31 07:27:41 +01:00
|
|
|
class = NULL;
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
|
|
|
|
return class;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
gpointer
|
|
|
|
g_type_class_peek_parent (gpointer g_class)
|
|
|
|
{
|
|
|
|
TypeNode *node;
|
2001-01-31 07:27:41 +01:00
|
|
|
gpointer class;
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_return_val_if_fail (g_class != NULL, NULL);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (G_TYPE_FROM_CLASS (g_class));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (node && node->is_classed && node->data && NODE_PARENT_TYPE (node))
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
node = lookup_type_node_L (NODE_PARENT_TYPE (node));
|
|
|
|
class = node->data->class.class;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
else
|
|
|
|
class = NULL;
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
|
|
|
|
return class;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
gpointer
|
|
|
|
g_type_interface_peek (gpointer instance_class,
|
|
|
|
GType iface_type)
|
|
|
|
{
|
|
|
|
TypeNode *node;
|
|
|
|
TypeNode *iface;
|
2001-01-31 07:27:41 +01:00
|
|
|
gpointer vtable = NULL;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
GTypeClass *class = instance_class;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_return_val_if_fail (instance_class != NULL, NULL);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (class->g_type);
|
|
|
|
iface = lookup_type_node_L (iface_type);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (node && node->is_instantiatable && iface)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
IFaceEntry *entry = type_lookup_iface_entry_L (node, iface);
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (entry && entry->vtable)
|
2001-01-31 07:27:41 +01:00
|
|
|
vtable = entry->vtable;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
|
|
|
|
return vtable;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
2001-02-18 00:30:48 +01:00
|
|
|
G_CONST_RETURN gchar*
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_type_name (GType type)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *node;
|
|
|
|
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
g_return_val_if_uninitialized (static_last_fundamental_id, g_type_init, NULL);
|
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type);
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
return node ? NODE_NAME (node) : NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
GQuark
|
|
|
|
g_type_qname (GType type)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *node;
|
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type);
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return node ? node->qname : 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
GType
|
|
|
|
g_type_from_name (const gchar *name)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
GType type = 0;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
GQuark quark;
|
|
|
|
|
|
|
|
g_return_val_if_fail (name != NULL, 0);
|
|
|
|
|
|
|
|
quark = g_quark_try_string (name);
|
|
|
|
if (quark)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
type = GPOINTER_TO_UINT (g_hash_table_lookup (static_type_nodes_ht, GUINT_TO_POINTER (quark)));
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
return type;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
GType
|
|
|
|
g_type_parent (GType type)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *node;
|
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type);
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return node ? NODE_PARENT_TYPE (node) : 0;
|
|
|
|
}
|
|
|
|
|
2001-06-19 14:13:22 +02:00
|
|
|
guint
|
|
|
|
g_type_depth (GType type)
|
|
|
|
{
|
|
|
|
TypeNode *node;
|
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type);
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
|
|
|
|
return node ? node->n_supers + 1 : 0;
|
|
|
|
}
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
GType
|
|
|
|
g_type_next_base (GType type,
|
|
|
|
GType base_type)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
GType atype = 0;
|
|
|
|
TypeNode *node;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (node)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *base_node = lookup_type_node_L (base_type);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
if (base_node && base_node->n_supers < node->n_supers)
|
|
|
|
{
|
|
|
|
guint n = node->n_supers - base_node->n_supers;
|
|
|
|
|
|
|
|
if (node->supers[n] == base_type)
|
2001-01-31 07:27:41 +01:00
|
|
|
atype = node->supers[n - 1];
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
return atype;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
2001-03-07 20:36:02 +01:00
|
|
|
static inline gboolean
|
|
|
|
type_node_is_a_L (TypeNode *node,
|
|
|
|
TypeNode *iface_node,
|
|
|
|
/* support_inheritance */
|
|
|
|
gboolean support_interfaces,
|
|
|
|
gboolean support_prerequisites)
|
|
|
|
{
|
|
|
|
if (support_interfaces &&
|
|
|
|
node->is_instantiatable && NODE_IS_IFACE (iface_node) &&
|
|
|
|
type_lookup_iface_entry_L (node, iface_node) != NULL)
|
|
|
|
return TRUE;
|
|
|
|
else if (/* support_inheritance && */
|
|
|
|
iface_node->n_supers <= node->n_supers &&
|
|
|
|
node->supers[node->n_supers - iface_node->n_supers] == NODE_TYPE (iface_node))
|
|
|
|
return TRUE;
|
|
|
|
else if (support_prerequisites &&
|
|
|
|
NODE_IS_IFACE (node) &&
|
|
|
|
type_lookup_prerequisite (node, NODE_TYPE (iface_node)))
|
|
|
|
return TRUE;
|
|
|
|
else
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
gboolean
|
fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000 Tim Janik <timj@gtk.org>
* gboxed.c: fixed dealing with collection/lcopy of NULL values.
* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
convenience macro.
* Makefile.am: cleanups, marshaller generation rules.
* gmarshal.[hc]: new files with GRuntime standard marshallers.
* glib-genmarshal.c: fix log domain, support gruntime standard
marshallers, suport G_TYPE_PARAM, come with extern "C" and
#include gmarshal.h.
* glib-genmarshal.1: reflect glib-genmarshal.c updates.
* gobject.[hc]: implement object constructor. rework parameter
changed notification queueing, we support queue freezes now and
don't dispatch from an idle handler anymore.
parameter->property rename hassle.
implemented ::properties_changed and ::notify::* signals for
property change notification (the later supports property names
as details). added signal connection and named data properties.
(g_signal_connect_object): new function to setup while_alive
connections.
(g_object_class_install_property): sink properties now, since they
are initially floating.
(g_object_steal_data):
(g_object_set_data_full):
(g_object_set_data):
(g_object_get_data): set/get data by using g_datalist_*() functions
directly.
(g_object_queue_param_changed): nuked.
(g_object_freeze_notify): start queueing of property changes (freeze/
thaw calls stack).
(g_object_notify): announce changes of a certain property directly.
(g_object_thaw_notify): process queue of property changes, therefore
emitting GObject::notify::detail with detail being the changed
properties names.
(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
G_WARN_INVALID_PARAM_ID().
* gparam.[hc]: param specs are now initially floating and need to be
sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
required by GObjectClass.constructor().
* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
and G_TYPE_CCALLBACK respectively.
* gsignal.[hc]: cleanups.
(signal_id_lookup): after walking the anchestry, try interfaces as well.
(g_signal_new): new function to create signals from varargs type list.
(g_signal_connect_closure): closure connection variant that works from
signal name+detail.
(g_signal_connect_data): c handler connection variant that works from
signal name+detail.
(g_signal_emit_valist): emit signal for an instance with paraneters
collected from a va_list.
(g_signal_emit): emit signal, taking parameters from varargs list.
(g_signal_emit_by_name): same as g_signal_emit, working from
signal name+detail.
(signal_emit_R): return whether return_value needs to be altered.
* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
the points that need to reflect the upcoming rename.
melt g_type_conforms_to() functionality into g_type_is_a(), as that
is what we really want (liskov substitution principle).
assorted changes to other files due to conforms_to->is_a.
* gvalue.[hc]: implemented g_value_set_instance() that sets a value
from an instantiatable type via the value_table's collect_value()
function (based on an idea from James Henstridge <james@daa.com.au>).
cleanups/fixes.
* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
2000-12-12 08:32:00 +01:00
|
|
|
g_type_is_a (GType type,
|
|
|
|
GType iface_type)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-03-07 20:36:02 +01:00
|
|
|
TypeNode *node, *iface_node;
|
|
|
|
gboolean is_a;
|
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_LOCK (&type_rw_lock);
|
2001-03-07 20:36:02 +01:00
|
|
|
node = lookup_type_node_L (type);
|
|
|
|
iface_node = lookup_type_node_L (iface_type);
|
|
|
|
is_a = node && iface_node && type_node_is_a_L (node, iface_node, TRUE, TRUE);
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
2001-03-07 20:36:02 +01:00
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
return is_a;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
guint
|
|
|
|
g_type_fundamental_branch_last (GType type)
|
|
|
|
{
|
|
|
|
GType ftype = G_TYPE_FUNDAMENTAL (type);
|
2001-01-31 07:27:41 +01:00
|
|
|
guint last_type;
|
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
last_type = ftype < static_last_fundamental_id ? static_branch_seqnos[ftype] : 0;
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
|
|
|
|
return last_type;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
GType* /* free result */
|
|
|
|
g_type_children (GType type,
|
|
|
|
guint *n_children)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *node;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (node)
|
|
|
|
{
|
|
|
|
GType *children = g_new (GType, node->n_children + 1);
|
|
|
|
|
|
|
|
memcpy (children, node->children, sizeof (GType) * node->n_children);
|
|
|
|
children[node->n_children] = 0;
|
|
|
|
|
|
|
|
if (n_children)
|
|
|
|
*n_children = node->n_children;
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
return children;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (n_children)
|
|
|
|
*n_children = 0;
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
GType* /* free result */
|
|
|
|
g_type_interfaces (GType type,
|
|
|
|
guint *n_interfaces)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *node;
|
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (node && node->is_instantiatable)
|
|
|
|
{
|
2001-03-07 20:36:02 +01:00
|
|
|
GType *ifaces = g_new (GType, CLASSED_NODE_N_IFACES (node) + 1);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
guint i;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
2001-03-07 20:36:02 +01:00
|
|
|
for (i = 0; i < CLASSED_NODE_N_IFACES (node); i++)
|
|
|
|
ifaces[i] = CLASSED_NODE_IFACES_ENTRIES (node)[i].iface_type;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
ifaces[i] = 0;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (n_interfaces)
|
2001-03-07 20:36:02 +01:00
|
|
|
*n_interfaces = CLASSED_NODE_N_IFACES (node);
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return ifaces;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (n_interfaces)
|
|
|
|
*n_interfaces = 0;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
typedef struct _QData QData;
|
|
|
|
struct _GData
|
|
|
|
{
|
|
|
|
guint n_qdatas;
|
|
|
|
QData *qdatas;
|
|
|
|
};
|
|
|
|
struct _QData
|
|
|
|
{
|
|
|
|
GQuark quark;
|
|
|
|
gpointer data;
|
|
|
|
};
|
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
static inline gpointer
|
|
|
|
type_get_qdata_L (TypeNode *node,
|
|
|
|
GQuark quark)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
GData *gdata = node->global_gdata;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
if (quark && gdata && gdata->n_qdatas)
|
|
|
|
{
|
|
|
|
QData *qdatas = gdata->qdatas - 1;
|
|
|
|
guint n_qdatas = gdata->n_qdatas;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000 Tim Janik <timj@gtk.org>
* gboxed.c: fixed dealing with collection/lcopy of NULL values.
* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
convenience macro.
* Makefile.am: cleanups, marshaller generation rules.
* gmarshal.[hc]: new files with GRuntime standard marshallers.
* glib-genmarshal.c: fix log domain, support gruntime standard
marshallers, suport G_TYPE_PARAM, come with extern "C" and
#include gmarshal.h.
* glib-genmarshal.1: reflect glib-genmarshal.c updates.
* gobject.[hc]: implement object constructor. rework parameter
changed notification queueing, we support queue freezes now and
don't dispatch from an idle handler anymore.
parameter->property rename hassle.
implemented ::properties_changed and ::notify::* signals for
property change notification (the later supports property names
as details). added signal connection and named data properties.
(g_signal_connect_object): new function to setup while_alive
connections.
(g_object_class_install_property): sink properties now, since they
are initially floating.
(g_object_steal_data):
(g_object_set_data_full):
(g_object_set_data):
(g_object_get_data): set/get data by using g_datalist_*() functions
directly.
(g_object_queue_param_changed): nuked.
(g_object_freeze_notify): start queueing of property changes (freeze/
thaw calls stack).
(g_object_notify): announce changes of a certain property directly.
(g_object_thaw_notify): process queue of property changes, therefore
emitting GObject::notify::detail with detail being the changed
properties names.
(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
G_WARN_INVALID_PARAM_ID().
* gparam.[hc]: param specs are now initially floating and need to be
sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
required by GObjectClass.constructor().
* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
and G_TYPE_CCALLBACK respectively.
* gsignal.[hc]: cleanups.
(signal_id_lookup): after walking the anchestry, try interfaces as well.
(g_signal_new): new function to create signals from varargs type list.
(g_signal_connect_closure): closure connection variant that works from
signal name+detail.
(g_signal_connect_data): c handler connection variant that works from
signal name+detail.
(g_signal_emit_valist): emit signal for an instance with paraneters
collected from a va_list.
(g_signal_emit): emit signal, taking parameters from varargs list.
(g_signal_emit_by_name): same as g_signal_emit, working from
signal name+detail.
(signal_emit_R): return whether return_value needs to be altered.
* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
the points that need to reflect the upcoming rename.
melt g_type_conforms_to() functionality into g_type_is_a(), as that
is what we really want (liskov substitution principle).
assorted changes to other files due to conforms_to->is_a.
* gvalue.[hc]: implemented g_value_set_instance() that sets a value
from an instantiatable type via the value_table's collect_value()
function (based on an idea from James Henstridge <james@daa.com.au>).
cleanups/fixes.
* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
2000-12-12 08:32:00 +01:00
|
|
|
do
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
guint i;
|
|
|
|
QData *check;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
i = (n_qdatas + 1) / 2;
|
|
|
|
check = qdatas + i;
|
|
|
|
if (quark == check->quark)
|
|
|
|
return check->data;
|
|
|
|
else if (quark > check->quark)
|
|
|
|
{
|
|
|
|
n_qdatas -= i;
|
|
|
|
qdatas = check;
|
|
|
|
}
|
|
|
|
else /* if (quark < check->quark) */
|
|
|
|
n_qdatas = i - 1;
|
|
|
|
}
|
|
|
|
while (n_qdatas);
|
|
|
|
}
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
gpointer
|
|
|
|
g_type_get_qdata (GType type,
|
|
|
|
GQuark quark)
|
|
|
|
{
|
|
|
|
TypeNode *node;
|
|
|
|
gpointer data;
|
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type);
|
|
|
|
if (node)
|
|
|
|
{
|
|
|
|
data = type_get_qdata_L (node, quark);
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
g_return_val_if_fail (node != NULL, NULL);
|
|
|
|
data = NULL;
|
|
|
|
}
|
|
|
|
return data;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline void
|
|
|
|
type_set_qdata_W (TypeNode *node,
|
|
|
|
GQuark quark,
|
|
|
|
gpointer data)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
|
|
|
GData *gdata;
|
|
|
|
QData *qdata;
|
|
|
|
guint i;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
/* setup qdata list if necessary */
|
2001-01-31 07:27:41 +01:00
|
|
|
if (!node->global_gdata)
|
|
|
|
node->global_gdata = g_new0 (GData, 1);
|
|
|
|
gdata = node->global_gdata;
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
/* try resetting old data */
|
|
|
|
qdata = gdata->qdatas;
|
|
|
|
for (i = 0; i < gdata->n_qdatas; i++)
|
|
|
|
if (qdata[i].quark == quark)
|
|
|
|
{
|
|
|
|
qdata[i].data = data;
|
|
|
|
return;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
/* add new entry */
|
|
|
|
gdata->n_qdatas++;
|
|
|
|
gdata->qdatas = g_renew (QData, gdata->qdatas, gdata->n_qdatas);
|
|
|
|
qdata = gdata->qdatas;
|
|
|
|
for (i = 0; i < gdata->n_qdatas - 1; i++)
|
|
|
|
if (qdata[i].quark > quark)
|
|
|
|
break;
|
|
|
|
g_memmove (qdata + i + 1, qdata + i, sizeof (qdata[0]) * (gdata->n_qdatas - i - 1));
|
|
|
|
qdata[i].quark = quark;
|
|
|
|
qdata[i].data = data;
|
|
|
|
}
|
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
void
|
|
|
|
g_type_set_qdata (GType type,
|
|
|
|
GQuark quark,
|
|
|
|
gpointer data)
|
|
|
|
{
|
|
|
|
TypeNode *node;
|
|
|
|
|
|
|
|
g_return_if_fail (quark != 0);
|
|
|
|
|
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type);
|
|
|
|
if (node)
|
|
|
|
{
|
|
|
|
type_set_qdata_W (node, quark, data);
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
g_return_if_fail (node != NULL);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
type_add_flags_W (TypeNode *node,
|
|
|
|
GTypeFlags flags)
|
|
|
|
{
|
|
|
|
guint dflags;
|
|
|
|
|
|
|
|
g_return_if_fail ((flags & ~TYPE_FLAG_MASK) == 0);
|
|
|
|
g_return_if_fail (node != NULL);
|
|
|
|
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
if ((flags & TYPE_FLAG_MASK) && node->is_classed && node->data && node->data->class.class)
|
2001-01-31 07:27:41 +01:00
|
|
|
g_warning ("tagging type `%s' as abstract after class initialization", NODE_NAME (node));
|
|
|
|
dflags = GPOINTER_TO_UINT (type_get_qdata_L (node, static_quark_type_flags));
|
|
|
|
dflags |= flags;
|
|
|
|
type_set_qdata_W (node, static_quark_type_flags, GUINT_TO_POINTER (dflags));
|
|
|
|
}
|
|
|
|
|
2001-04-01 06:04:46 +02:00
|
|
|
void
|
|
|
|
g_type_query (GType type,
|
|
|
|
GTypeQuery *query)
|
|
|
|
{
|
|
|
|
TypeNode *node;
|
|
|
|
|
|
|
|
g_return_if_fail (query != NULL);
|
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type);
|
|
|
|
if (node && node->is_classed && !node->plugin && node->data)
|
|
|
|
{
|
|
|
|
/* type is classed and static, probably even instantiatable */
|
|
|
|
|
|
|
|
query->type = NODE_TYPE (node);
|
|
|
|
query->type_name = NODE_NAME (node);
|
|
|
|
query->class_size = node->data->class.class_size;
|
|
|
|
query->instance_size = node->is_instantiatable ? node->data->instance.instance_size : 0;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
/* node is not static and classed, won't allow query */
|
|
|
|
query->type = 0;
|
|
|
|
}
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
}
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
/* --- implementation details --- */
|
|
|
|
gboolean
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
g_type_check_flags (GType type,
|
|
|
|
guint flags)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *node;
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
gboolean result = FALSE;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
if (node)
|
|
|
|
{
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
guint fflags = flags & TYPE_FUNDAMENTAL_FLAG_MASK;
|
|
|
|
guint tflags = flags & TYPE_FLAG_MASK;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
if (fflags)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
GTypeFundamentalInfo *finfo = type_node_fundamental_info_L (node);
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
|
|
|
|
fflags = (finfo->type_flags & fflags) == fflags;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
fflags = TRUE;
|
|
|
|
|
|
|
|
if (tflags)
|
2001-01-31 07:27:41 +01:00
|
|
|
tflags = (tflags & GPOINTER_TO_UINT (type_get_qdata_L (node, static_quark_type_flags))) == tflags;
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
else
|
|
|
|
tflags = TRUE;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
result = tflags && fflags;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
return result;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
2000-07-11 02:49:09 +02:00
|
|
|
GTypePlugin*
|
|
|
|
g_type_get_plugin (GType type)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *node;
|
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type);
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
|
2000-07-11 22:28:14 +02:00
|
|
|
return node ? node->plugin : NULL;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
2000-11-11 01:03:19 +01:00
|
|
|
GTypePlugin*
|
|
|
|
g_type_interface_get_plugin (GType instance_type,
|
|
|
|
GType interface_type)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
TypeNode *node;
|
|
|
|
TypeNode *iface;
|
2000-11-11 01:03:19 +01:00
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
g_return_val_if_fail (G_TYPE_IS_INTERFACE (interface_type), NULL);
|
2000-11-11 01:03:19 +01:00
|
|
|
|
2001-01-31 07:27:41 +01:00
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (instance_type);
|
|
|
|
iface = lookup_type_node_L (interface_type);
|
|
|
|
if (node && iface)
|
2000-11-11 01:03:19 +01:00
|
|
|
{
|
2001-03-07 20:36:02 +01:00
|
|
|
IFaceHolder *iholder = iface_node_get_holders_L (iface);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
while (iholder && iholder->instance_type != instance_type)
|
|
|
|
iholder = iholder->next;
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
|
|
|
|
if (iholder)
|
|
|
|
return iholder->plugin;
|
2000-11-11 01:03:19 +01:00
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
else
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
|
|
|
|
g_return_val_if_fail (node == NULL, NULL);
|
|
|
|
g_return_val_if_fail (iface == NULL, NULL);
|
|
|
|
|
|
|
|
g_warning (G_STRLOC ": attempt to look up plugin for invalid instance/interface type pair.");
|
|
|
|
|
|
|
|
return NULL;
|
2000-11-11 01:03:19 +01:00
|
|
|
}
|
|
|
|
|
2000-07-26 00:47:41 +02:00
|
|
|
GType
|
|
|
|
g_type_fundamental_last (void)
|
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
GType type;
|
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
type = static_last_fundamental_id;
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
|
|
|
|
return type;
|
2000-07-26 00:47:41 +02:00
|
|
|
}
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
gboolean
|
fixed dealing with collection/lcopy of NULL values.
Mon Dec 11 04:44:11 2000 Tim Janik <timj@gtk.org>
* gboxed.c: fixed dealing with collection/lcopy of NULL values.
* gclosure.h: removed insane ramblings, added G_CALLBACK() a casting
convenience macro.
* Makefile.am: cleanups, marshaller generation rules.
* gmarshal.[hc]: new files with GRuntime standard marshallers.
* glib-genmarshal.c: fix log domain, support gruntime standard
marshallers, suport G_TYPE_PARAM, come with extern "C" and
#include gmarshal.h.
* glib-genmarshal.1: reflect glib-genmarshal.c updates.
* gobject.[hc]: implement object constructor. rework parameter
changed notification queueing, we support queue freezes now and
don't dispatch from an idle handler anymore.
parameter->property rename hassle.
implemented ::properties_changed and ::notify::* signals for
property change notification (the later supports property names
as details). added signal connection and named data properties.
(g_signal_connect_object): new function to setup while_alive
connections.
(g_object_class_install_property): sink properties now, since they
are initially floating.
(g_object_steal_data):
(g_object_set_data_full):
(g_object_set_data):
(g_object_get_data): set/get data by using g_datalist_*() functions
directly.
(g_object_queue_param_changed): nuked.
(g_object_freeze_notify): start queueing of property changes (freeze/
thaw calls stack).
(g_object_notify): announce changes of a certain property directly.
(g_object_thaw_notify): process queue of property changes, therefore
emitting GObject::notify::detail with detail being the changed
properties names.
(G_OBJECT_WARN_INVALID_PROPERTY_ID): saner macro variant of former
G_WARN_INVALID_PARAM_ID().
* gparam.[hc]: param specs are now initially floating and need to be
sunken with g_param_spec_sink(), support G_TYPE_PARAM values.
added G_PARAM_CONSTRUCT and G_PARAM_CONSTRUCT_ONLY parameter flags,
required by GObjectClass.constructor().
* gparamspecs.[hc]: added GParamSpecParam, GParamSpecPointer and
GParamSpecCCallback, param specs for G_TYPE_PARAM, G_TYPE_POINTER
and G_TYPE_CCALLBACK respectively.
* gsignal.[hc]: cleanups.
(signal_id_lookup): after walking the anchestry, try interfaces as well.
(g_signal_new): new function to create signals from varargs type list.
(g_signal_connect_closure): closure connection variant that works from
signal name+detail.
(g_signal_connect_data): c handler connection variant that works from
signal name+detail.
(g_signal_emit_valist): emit signal for an instance with paraneters
collected from a va_list.
(g_signal_emit): emit signal, taking parameters from varargs list.
(g_signal_emit_by_name): same as g_signal_emit, working from
signal name+detail.
(signal_emit_R): return whether return_value needs to be altered.
* gtype.[hc]: set log-domain to GRuntime, i'm slowly getting to all
the points that need to reflect the upcoming rename.
melt g_type_conforms_to() functionality into g_type_is_a(), as that
is what we really want (liskov substitution principle).
assorted changes to other files due to conforms_to->is_a.
* gvalue.[hc]: implemented g_value_set_instance() that sets a value
from an instantiatable type via the value_table's collect_value()
function (based on an idea from James Henstridge <james@daa.com.au>).
cleanups/fixes.
* gvaluetypes.[hc]: implement G_TYPE_CCALLBACK and G_TYPE_PARAM.
2000-12-12 08:32:00 +01:00
|
|
|
g_type_instance_is_a (GTypeInstance *type_instance,
|
|
|
|
GType iface_type)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-03-07 20:36:02 +01:00
|
|
|
TypeNode *node, *iface;
|
|
|
|
gboolean check;
|
|
|
|
|
|
|
|
if (!type_instance || !type_instance->g_class)
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type_instance->g_class->g_type);
|
|
|
|
iface = lookup_type_node_L (iface_type);
|
|
|
|
check = node && node->is_instantiatable && iface && type_node_is_a_L (node, iface, TRUE, FALSE);
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
|
|
|
|
return check;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
gboolean
|
|
|
|
g_type_class_is_a (GTypeClass *type_class,
|
|
|
|
GType is_a_type)
|
|
|
|
{
|
2001-03-07 20:36:02 +01:00
|
|
|
TypeNode *node, *iface;
|
|
|
|
gboolean check;
|
|
|
|
|
|
|
|
if (!type_class)
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type_class->g_type);
|
|
|
|
iface = lookup_type_node_L (is_a_type);
|
|
|
|
check = node && node->is_classed && iface && type_node_is_a_L (node, iface, FALSE, FALSE);
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
|
|
|
|
return check;
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
}
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
GTypeInstance*
|
|
|
|
g_type_check_instance_cast (GTypeInstance *type_instance,
|
|
|
|
GType iface_type)
|
|
|
|
{
|
2001-03-07 20:36:02 +01:00
|
|
|
if (type_instance)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-03-07 20:36:02 +01:00
|
|
|
if (type_instance->g_class)
|
|
|
|
{
|
|
|
|
TypeNode *node, *iface;
|
|
|
|
gboolean is_instantiatable, check;
|
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type_instance->g_class->g_type);
|
|
|
|
is_instantiatable = node && node->is_instantiatable;
|
|
|
|
iface = lookup_type_node_L (iface_type);
|
|
|
|
check = is_instantiatable && iface && type_node_is_a_L (node, iface, TRUE, FALSE);
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
if (check)
|
|
|
|
return type_instance;
|
|
|
|
|
|
|
|
if (is_instantiatable)
|
|
|
|
g_warning ("invalid cast from `%s' to `%s'",
|
|
|
|
type_descriptive_name_U (type_instance->g_class->g_type),
|
|
|
|
type_descriptive_name_U (iface_type));
|
|
|
|
else
|
|
|
|
g_warning ("invalid uninstantiatable type `%s' in cast to `%s'",
|
|
|
|
type_descriptive_name_U (type_instance->g_class->g_type),
|
|
|
|
type_descriptive_name_U (iface_type));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
g_warning ("invalid unclassed pointer in cast to `%s'",
|
|
|
|
type_descriptive_name_U (iface_type));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
2001-03-07 20:36:02 +01:00
|
|
|
else
|
|
|
|
g_warning ("invalid cast from (NULL) pointer to `%s'",
|
|
|
|
type_descriptive_name_U (iface_type));
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return type_instance;
|
|
|
|
}
|
|
|
|
|
|
|
|
GTypeClass*
|
|
|
|
g_type_check_class_cast (GTypeClass *type_class,
|
|
|
|
GType is_a_type)
|
|
|
|
{
|
2001-03-07 20:36:02 +01:00
|
|
|
if (type_class)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-03-07 20:36:02 +01:00
|
|
|
TypeNode *node, *iface;
|
|
|
|
gboolean is_classed, check;
|
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type_class->g_type);
|
|
|
|
is_classed = node && node->is_classed;
|
|
|
|
iface = lookup_type_node_L (is_a_type);
|
|
|
|
check = is_classed && iface && type_node_is_a_L (node, iface, FALSE, FALSE);
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
if (check)
|
|
|
|
return type_class;
|
|
|
|
|
|
|
|
if (is_classed)
|
|
|
|
g_warning ("invalid class cast from `%s' to `%s'",
|
|
|
|
type_descriptive_name_U (type_class->g_type),
|
|
|
|
type_descriptive_name_U (is_a_type));
|
|
|
|
else
|
|
|
|
g_warning ("invalid unclassed type `%s' in class cast to `%s'",
|
|
|
|
type_descriptive_name_U (type_class->g_type),
|
|
|
|
type_descriptive_name_U (is_a_type));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
2001-03-07 20:36:02 +01:00
|
|
|
else
|
|
|
|
g_warning ("invalid class cast from (NULL) pointer to `%s'",
|
|
|
|
type_descriptive_name_U (is_a_type));
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
return type_class;
|
|
|
|
}
|
|
|
|
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
gboolean
|
|
|
|
g_type_check_instance (GTypeInstance *type_instance)
|
|
|
|
{
|
|
|
|
/* this function is just here to make the signal system
|
|
|
|
* conveniently elaborated on instance checks
|
|
|
|
*/
|
2001-03-07 20:36:02 +01:00
|
|
|
if (type_instance)
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
{
|
2001-03-07 20:36:02 +01:00
|
|
|
if (type_instance->g_class)
|
|
|
|
{
|
|
|
|
TypeNode *node;
|
|
|
|
gboolean is_instantiatable;
|
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
|
|
|
node = lookup_type_node_L (type_instance->g_class->g_type);
|
|
|
|
is_instantiatable = node && node->is_instantiatable;
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
if (is_instantiatable)
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
g_warning ("instance of invalid non-instantiatable type `%s'",
|
|
|
|
type_descriptive_name_U (type_instance->g_class->g_type));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
g_warning ("instance with invalid (NULL) class pointer");
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
}
|
2001-03-07 20:36:02 +01:00
|
|
|
else
|
|
|
|
g_warning ("invalid (NULL) pointer instance");
|
|
|
|
|
|
|
|
return FALSE;
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
}
|
|
|
|
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
static inline gboolean
|
|
|
|
type_check_is_value_type_U (GType type)
|
|
|
|
{
|
|
|
|
GTypeFlags tflags = G_TYPE_FLAG_VALUE_ABSTRACT;
|
|
|
|
TypeNode *node;
|
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
2001-03-09 15:02:30 +01:00
|
|
|
restart_check:
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
node = lookup_type_node_L (type);
|
2001-03-09 15:02:30 +01:00
|
|
|
if (node)
|
|
|
|
{
|
|
|
|
if (node->data && node->data->common.ref_count > 0 &&
|
|
|
|
node->data->common.value_table->value_init)
|
|
|
|
tflags = GPOINTER_TO_UINT (type_get_qdata_L (node, static_quark_type_flags));
|
|
|
|
else if (NODE_IS_IFACE (node))
|
|
|
|
{
|
|
|
|
guint i;
|
|
|
|
|
|
|
|
for (i = 0; i < IFACE_NODE_N_PREREQUISITES (node); i++)
|
|
|
|
{
|
|
|
|
GType prtype = IFACE_NODE_PREREQUISITES (node)[i];
|
|
|
|
TypeNode *prnode = lookup_type_node_L (prtype);
|
|
|
|
|
|
|
|
if (prnode->is_instantiatable)
|
|
|
|
{
|
|
|
|
type = prtype;
|
|
|
|
goto restart_check;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
|
|
|
|
return !(tflags & G_TYPE_FLAG_VALUE_ABSTRACT);
|
|
|
|
}
|
|
|
|
|
|
|
|
gboolean
|
|
|
|
g_type_check_is_value_type (GType type)
|
|
|
|
{
|
|
|
|
return type_check_is_value_type_U (type);
|
|
|
|
}
|
|
|
|
|
|
|
|
gboolean
|
|
|
|
g_type_check_value (GValue *value)
|
|
|
|
{
|
|
|
|
return value && type_check_is_value_type_U (value->g_type);
|
|
|
|
}
|
|
|
|
|
|
|
|
gboolean
|
|
|
|
g_type_check_value_holds (GValue *value,
|
|
|
|
GType type)
|
|
|
|
{
|
|
|
|
return value && type_check_is_value_type_U (value->g_type) && g_type_is_a (value->g_type, type);
|
|
|
|
}
|
|
|
|
|
|
|
|
GTypeValueTable*
|
|
|
|
g_type_value_table_peek (GType type)
|
|
|
|
{
|
|
|
|
TypeNode *node;
|
2001-03-09 15:02:30 +01:00
|
|
|
GTypeValueTable *vtable;
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
|
|
|
|
G_READ_LOCK (&type_rw_lock);
|
2001-03-09 15:02:30 +01:00
|
|
|
restart_table_peek:
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
node = lookup_type_node_L (type);
|
2001-03-09 15:02:30 +01:00
|
|
|
if (!node)
|
|
|
|
{
|
|
|
|
g_warning ("type id `%u' is invalid", type);
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
if (!node->data || node->data->common.ref_count < 1)
|
|
|
|
{
|
|
|
|
g_warning ("can't peek value table for type `%s' which is not currently referenced",
|
|
|
|
type_descriptive_name_L (type));
|
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
if (node->data->common.value_table->value_init)
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
vtable = node->data->common.value_table;
|
2001-03-09 15:02:30 +01:00
|
|
|
else if (NODE_IS_IFACE (node))
|
|
|
|
{
|
|
|
|
guint i;
|
|
|
|
|
|
|
|
for (i = 0; i < IFACE_NODE_N_PREREQUISITES (node); i++)
|
|
|
|
{
|
|
|
|
GType prtype = IFACE_NODE_PREREQUISITES (node)[i];
|
|
|
|
TypeNode *prnode = lookup_type_node_L (prtype);
|
|
|
|
|
|
|
|
if (prnode->is_instantiatable)
|
|
|
|
{
|
|
|
|
type = prtype;
|
|
|
|
goto restart_table_peek;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
vtable = NULL;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
vtable = NULL;
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
G_READ_UNLOCK (&type_rw_lock);
|
|
|
|
|
|
|
|
return vtable;
|
|
|
|
}
|
|
|
|
|
2001-06-20 04:32:10 +02:00
|
|
|
G_CONST_RETURN gchar*
|
|
|
|
g_type_name_from_instance (GTypeInstance *instance)
|
|
|
|
{
|
|
|
|
if (!instance)
|
|
|
|
return "<NULL-instance>";
|
|
|
|
else
|
|
|
|
return g_type_name_from_class (instance->g_class);
|
|
|
|
}
|
|
|
|
|
|
|
|
G_CONST_RETURN gchar*
|
|
|
|
g_type_name_from_class (GTypeClass *g_class)
|
|
|
|
{
|
|
|
|
if (!g_class)
|
|
|
|
return "<NULL-class>";
|
|
|
|
else
|
|
|
|
return g_type_name (g_class->g_type);
|
|
|
|
}
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
/* --- foreign prototypes --- */
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
extern void g_value_types_init (void); /* sync with gvaluetypes.c */
|
|
|
|
extern void g_enum_types_init (void); /* sync with genums.c */
|
|
|
|
extern void g_param_type_init (void); /* sync with gparam.c */
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
extern void g_boxed_type_init (void); /* sync with gboxed.c */
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
extern void g_object_type_init (void); /* sync with gobject.c */
|
|
|
|
extern void g_param_spec_types_init (void); /* sync with gparamspecs.c */
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
extern void g_value_transforms_init (void); /* sync with gvaluetransform.c */
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
extern void g_signal_init (void); /* sync with gsignal.c */
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
|
|
|
|
|
|
|
|
/* --- initialization --- */
|
|
|
|
void
|
2001-06-29 04:50:46 +02:00
|
|
|
g_type_init_with_debug_flags (GTypeDebugFlags debug_flags)
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
{
|
2001-01-31 07:27:41 +01:00
|
|
|
G_LOCK_DEFINE_STATIC (type_init_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
static TypeNode *type0_node = NULL;
|
2001-02-18 00:30:48 +01:00
|
|
|
const gchar *env_string;
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
GTypeInfo info;
|
|
|
|
TypeNode *node;
|
|
|
|
GType type;
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_LOCK (type_init_lock);
|
|
|
|
|
|
|
|
G_WRITE_LOCK (&type_rw_lock);
|
|
|
|
|
|
|
|
if (static_last_fundamental_id)
|
|
|
|
{
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
G_UNLOCK (type_init_lock);
|
|
|
|
return;
|
|
|
|
}
|
2001-02-04 08:03:52 +01:00
|
|
|
|
|
|
|
/* setup GRuntime wide debugging flags */
|
|
|
|
_g_type_debug_flags = debug_flags & G_TYPE_DEBUG_MASK;
|
|
|
|
env_string = g_getenv ("GRUNTIME_DEBUG");
|
|
|
|
if (env_string != NULL)
|
|
|
|
{
|
|
|
|
static GDebugKey debug_keys[] = {
|
|
|
|
{ "objects", G_TYPE_DEBUG_OBJECTS },
|
|
|
|
{ "signals", G_TYPE_DEBUG_SIGNALS },
|
|
|
|
};
|
|
|
|
|
|
|
|
_g_type_debug_flags |= g_parse_debug_string (env_string,
|
|
|
|
debug_keys,
|
|
|
|
sizeof (debug_keys) / sizeof (debug_keys[0]));
|
|
|
|
env_string = NULL;
|
|
|
|
}
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
/* quarks */
|
2001-03-07 20:36:02 +01:00
|
|
|
static_quark_type_flags = g_quark_from_static_string ("-g-type-private--GTypeFlags");
|
|
|
|
static_quark_iface_holder = g_quark_from_static_string ("-g-type-private--IFaceHolder");
|
|
|
|
static_quark_dependants_array = g_quark_from_static_string ("-g-type-private--dependants-array");
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
/* type qname hash table */
|
2001-01-31 07:27:41 +01:00
|
|
|
static_type_nodes_ht = g_hash_table_new (g_direct_hash, g_direct_equal);
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
/* invalid type G_TYPE_INVALID (0)
|
|
|
|
*/
|
2001-01-31 07:27:41 +01:00
|
|
|
static_last_fundamental_id = 1;
|
|
|
|
static_type_nodes = g_renew (TypeNode**, static_type_nodes, static_last_fundamental_id);
|
|
|
|
static_type_nodes[0] = &type0_node;
|
|
|
|
static_branch_seqnos = g_renew (GType, static_branch_seqnos, static_last_fundamental_id);
|
|
|
|
static_branch_seqnos[0] = 1;
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
/* void type G_TYPE_NONE
|
|
|
|
*/
|
2001-01-31 07:27:41 +01:00
|
|
|
node = type_node_fundamental_new_W (G_TYPE_NONE, "void", 0);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
type = NODE_TYPE (node);
|
|
|
|
g_assert (type == G_TYPE_NONE);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
/* interface fundamental type G_TYPE_INTERFACE (!classed)
|
|
|
|
*/
|
|
|
|
memset (&info, 0, sizeof (info));
|
2001-01-31 07:27:41 +01:00
|
|
|
node = type_node_fundamental_new_W (G_TYPE_INTERFACE, "GInterface", G_TYPE_FLAG_DERIVABLE);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
type = NODE_TYPE (node);
|
2001-01-31 07:27:41 +01:00
|
|
|
type_data_make_W (node, &info, NULL);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
g_assert (type == G_TYPE_INTERFACE);
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_WRITE_UNLOCK (&type_rw_lock);
|
|
|
|
|
2000-11-05 06:07:26 +01:00
|
|
|
/* G_TYPE_TYPE_PLUGIN
|
|
|
|
*/
|
|
|
|
g_type_plugin_get_type ();
|
2001-01-31 07:27:41 +01:00
|
|
|
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
/* G_TYPE_* value types
|
|
|
|
*/
|
|
|
|
g_value_types_init ();
|
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
/* G_TYPE_ENUM & G_TYPE_FLAGS
|
|
|
|
*/
|
|
|
|
g_enum_types_init ();
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
/* G_TYPE_BOXED
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
*/
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
g_boxed_type_init ();
|
2001-01-31 07:27:41 +01:00
|
|
|
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
/* G_TYPE_PARAM
|
|
|
|
*/
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
g_param_type_init ();
|
2001-01-31 07:27:41 +01:00
|
|
|
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
/* G_TYPE_OBJECT
|
|
|
|
*/
|
|
|
|
g_object_type_init ();
|
2001-01-31 07:27:41 +01:00
|
|
|
|
define gstring in terms of gchar*. this typedef reflects the type name of
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
2000-06-25 00:30:10 +02:00
|
|
|
/* G_TYPE_PARAM_* pspec types
|
|
|
|
*/
|
|
|
|
g_param_spec_types_init ();
|
2001-01-31 07:27:41 +01:00
|
|
|
|
changed prototype of g_boxed_type_register_static() to contain an optional
Wed Mar 7 09:36:33 2001 Tim Janik <timj@gtk.org>
* gboxed.[hc]: changed prototype of g_boxed_type_register_static()
to contain an optional init function and a hint at whether the
boxed structure uses ref counting internally.
added g_value_set_boxed_take_ownership().
made G_TYPE_BOXED an abstract value type.
* genums.[hc]: made G_TYPE_ENUM and G_TYPE_FLAGS abstract value
types.
* glib-genmarshal.c: argument type changes, preparation for third-party
arg specification.
* gobject.[hc]: cleaned up get/set property code.
added g_strdup_value_contents() to improve warnings.
* gparam.[hc]: added g_param_value_convert(), taking over responsibility
of the old g_value_convert(). added G_PARAM_LAX_VALIDATION flag so
validation alterations may be valid a part of the property setting
process.
* gparamspecs.[hc]: made value comparisons stable (for sort applications).
added GParamSpecValueArray, a param spec for value arrays and
GParamSpecClosure. nuked the value exchange functions and
GParamSpecCCallback.
* gtype.[hc]: catch unintialized usages of the type system with
g_return_val_if_uninitialized(). introduced G_TYPE_FLAG_VALUE_ABSTRACT
to flag types that introduce a value table, but can't be used for
g_value_init(). cleaned up reserved type ids.
* gvalue.[hc]: code cleanups and saner checking.
nuked the value exchange API. implemented value transformations, we
can't really "convert" values, rather transforms are an anylogy to
C casts, real conversions need a param spec for validation, which is
why g_param_value_convert() does real conversions now.
* gvaluearray.[hc]: new files that implement a GValueArray, a struct
that can hold inhomogeneous arrays of value (to that extend that it
also allowes undefined values, i.e. G_VALUE_TYPE(value)==0).
this is exposed to the type system as a boxed type.
* gvaluetransform.c: new file implementing most of the former value
exchange functions as single-sided transformations.
* gvaluetypes.[hc]: nuked G_TYPE_CCALLBACK, added
g_value_set_string_take_ownership().
* *.h: s/G_IS_VALUE_/G_VALUE_HOLDS_/.
* *.[hc]: many fixes and cleanups.
* many warning improvements.
Tue Feb 27 18:35:15 2001 Tim Janik <timj@gtk.org>
* gobject.c (g_object_get_valist): urg, pass G_VALUE_NOCOPY_CONTENTS
into G_VALUE_LCOPY(), this needs proper documenting.
* gparam.c: fixed G_PARAM_USER_MASK.
* gtype.c (type_data_make_W):
(type_data_last_unref_Wm): fixed invalid memory freeing.
* gobject.c (g_object_last_unref): destroy signal handlers associated
with object, right before finalization.
* gsignal.c (g_signal_parse_name): catch destroyed nodes or signals
that don't actually support details.
* gobject.[hc]: got rid of property trailers. nuked GObject
properties "data" and the "signal" variants.
(g_object_connect): new convenience function to do multiple
signal connections at once.
(g_object_disconnect): likewise, for disconnections.
* gparam.[hc] (g_param_spec_pool_lookup): took out trailer support.
* gvalue.[hc]: marked g_value_fits_pointer() and g_value_peek_pointer()
as private (the latter got renamed from g_value_get_as_pointer()).
Wed Mar 7 09:32:06 2001 Tim Janik <timj@gtk.org>
* glib-object.h: add gvaluearray.h.
* gstring.[hc]: fixup naming of g_string_sprint*.
* gtypes.h: fixed GCompareDataFunc naming.
Wed Mar 7 09:33:27 2001 Tim Janik <timj@gtk.org>
* gobject/Makefile.am: shuffled rules to avoid excessive
rebuilds.
* gobject/gobject-sections.txt: updates.
* gobject/tmpl/*: bunch of updates, added another patch
from Eric Lemings <eric.b.lemings@lmco.com>.
2001-03-07 15:46:45 +01:00
|
|
|
/* Value Transformations
|
|
|
|
*/
|
|
|
|
g_value_transforms_init ();
|
|
|
|
|
added newly added gobject/ headers.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-25 22:36:35 +02:00
|
|
|
/* Signal system
|
|
|
|
*/
|
|
|
|
g_signal_init ();
|
2001-01-31 07:27:41 +01:00
|
|
|
|
|
|
|
G_UNLOCK (type_init_lock);
|
add reserved fundamental ids for gtk types (for transition time). added
Fri May 5 01:15:48 2000 Tim Janik <timj@gtk.org>
* gtype.h: add reserved fundamental ids for gtk types (for transition
time). added G_TYPE_FUNDAMENTAL_MAX for gtk.
Mon Apr 17 20:45:50 2000 Tim Janik <timj@gtk.org>
* glib-gobject.c (g_object_base_class_finalize): oops, don't unset
n_params prior to destructing them.
Tue Apr 11 04:28:10 2000 Tim Janik <timj@gtk.org>
* fixed a couple of bugs in the initial parameter/object
implementations, after getting beast running on GObject and GValue.
Fri Apr 7 04:27:49 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: completed parameter set/get implementations,
along with asyncronous parameter changed notification queue.
Sun Apr 2 04:54:36 2000 Tim Janik <timj@gtk.org>
* glib-gobject.[hc]: GObject implementation, that is facilities
for setting/getting quarked data and reference counting.
* glib-gparamspecs.[hc]: first actuall parameter implementations
for GLib, so far we have: char, uchar, bool, int, uint, long,
ulong, enum, flags, float, double, string and object. each of these
GParamSpecs is a new instantiatable type in its own respect,
so the .c file derives 13 new types from G_TYPE_PARAM and
defines over 50 (*2) conversion facilities.
* glib-gvaluecollector.h: generic varargs handling stubs for
GParamSpecs, private header file (does get installed for
inclusion into user code though).
* glib-gvalue.[hc]: GValue functionality implementation.
* glib-gparam.[hc]: basis GParamSpec implementation for
the virtual base type G_TYPE_PARAM.
* glib-genums.[hc]: enum/flags type implementation, based on
bseenum.[hc].
* glib-extra.[hc]: GLib additions, including 1.3 compatibility
routines and various other functions, from string manipulation
over list manipulation up to a unix signal GSource.
* glib-gtype.[hc]: GLib Type System implementation, heavily
based on BSE's dynamic type system.
2000-05-12 17:22:31 +02:00
|
|
|
}
|
2001-06-29 04:50:46 +02:00
|
|
|
|
|
|
|
void
|
|
|
|
g_type_init (void)
|
|
|
|
{
|
|
|
|
g_type_init_with_debug_flags (0);
|
|
|
|
}
|