[Gtk2hs-commit] (main branch): Add `isA` function to GObjectClass
and gType* functions for each type
From: Axel S. <si...@co...> - 2008-07-22 20:38:54
|
Sun Jul 13 05:35:09 EDT 2008 ha...@fi... * Add `isA` function to GObjectClass and gType* functions for each type You can use this function to test the type of an object. For instance.. when (obj `isA` gTypeNotebook) doSomething $ castToNotebook obj hunk ./glib/System/Glib/GObject.chs.pp 44 + -- ** GType queries + isA, + hunk ./glib/System/Glib/GObject.chs.pp 71 -import System.Glib.GType (GType) +import System.Glib.GType (GType, typeInstanceIsA) hunk ./glib/System/Glib/GObject.chs.pp 237 +-- | Determine if this is an instance of a particular GTK type +-- +isA :: GObjectClass o => o -> GType -> Bool +isA obj gType = [_$_] + typeInstanceIsA ((unsafeForeignPtrToPtr.castForeignPtr.unGObject.toGObject) obj) gType + + hunk ./tools/hierarchyGen/TypeGen.hs 190 - indent 1.ss "castTo".ss n + indent 1.ss "castTo".ss n.ss ", gType".ss n hunk ./tools/hierarchyGen/TypeGen.hs 198 - . makeUpcast typeTable obj + . makeUpcast obj + . makeGType typeTable obj hunk ./tools/hierarchyGen/TypeGen.hs 202 -makeUpcast :: TypeTable -> [String] -> ShowS -makeUpcast table [obj] = id -- no casting for GObject -makeUpcast table (obj:_:_) = [_$_] +makeUpcast :: [String] -> ShowS +makeUpcast [obj] = id -- no casting for GObject +makeUpcast (obj:_:_) = [_$_] hunk ./tools/hierarchyGen/TypeGen.hs 206 - indent 0.ss "castTo".ss obj.ss " = castTo". + indent 0.ss "castTo".ss obj.ss " = castTo gType".ss obj.ss " \"".ss obj.ss "\"". + indent 0 + +makeGType :: TypeTable -> [String] -> ShowS +makeGType table [obj] = id -- no GType for GObject +makeGType table (obj:_:_) = [_$_] + indent 0.ss "gType".ss obj.ss " :: GType". + indent 0.ss "gType".ss obj.ss " =". hunk ./tools/hierarchyGen/TypeGen.hs 218 - ss " #} \"".ss obj.ss "\"". + ss " #}". |