Debugger Enablement (#19)

* Debugger Enablement: Switching CGO/gst utility functions from inline to concrete symbols

Unfortunately debug Go builds during linkage due to be unable to find the inline functions.  This commit converts the inline functions to concrete symbols.

The performance implications are untested.

* Debugger Enablement: gst-base: Switching CGO/gst utility functions from inline to concrete symbols

Unfortunately debug Go builds during linkage due to be unable to find the inline functions.  This commit converts the inline functions to concrete symbols.

The performance implications are untested.

enable debugger for base

* Debugger Enablement: gst-app: Switching CGO/gst utility functions from inline to concrete symbols

Unfortunately debug Go builds during linkage due to be unable to find the inline functions.  This commit converts the inline functions to concrete symbols.

The performance implications are untested.

* Debugger Enablement: Removing clashes with go-glib
This commit is contained in:
atishnazir
2021-08-13 08:56:29 +01:00
committed by GitHub
parent 65c198f532
commit caeddb51d0
6 changed files with 277 additions and 140 deletions

5
gst/app/gst.go.c Normal file
View File

@@ -0,0 +1,5 @@
#include "gst.go.h"
GstAppSink * toGstAppSink (void *p) { return (GST_APP_SINK(p)); }
GstAppSrc * toGstAppSrc (void *p) { return (GST_APP_SRC(p)); }

View File

@@ -4,7 +4,7 @@
#include <gst/app/gstappsink.h> #include <gst/app/gstappsink.h>
#include <gst/app/gstappsrc.h> #include <gst/app/gstappsrc.h>
inline GstAppSink * toGstAppSink (void *p) { return (GST_APP_SINK(p)); } extern GstAppSink * toGstAppSink (void *p);
inline GstAppSrc * toGstAppSrc (void *p) { return (GST_APP_SRC(p)); } extern GstAppSrc * toGstAppSrc (void *p);
#endif #endif

15
gst/base/gst.go.c Normal file
View File

@@ -0,0 +1,15 @@
#include "gst.go.h"
GstBaseSink * toGstBaseSink (void *p) { return GST_BASE_SINK_CAST(p); }
GstBaseSrc * toGstBaseSrc (void *p) { return GST_BASE_SRC_CAST(p); }
GstBaseTransform * toGstBaseTransform (void *p) { return GST_BASE_TRANSFORM(p); }
GstCollectPads * toGstCollectPads (void *p) { return GST_COLLECT_PADS(p); }
GstPushSrc * toGstPushSrc (void *p) { return GST_PUSH_SRC(p); }
GstBaseSinkClass * toGstBaseSinkClass (void *p) { return (GstBaseSinkClass *)p; }
GstBaseSrcClass * toGstBaseSrcClass (void *p) { return (GstBaseSrcClass *)p; }
GstBaseTransformClass * toGstBaseTransformClass (void *p) { return (GstBaseTransformClass *)p; }
GstPushSrcClass * toGstPushSrcClass (void *p) { return (GstPushSrcClass *)p; }
gint64 gstCollectDataDTS (GstCollectData * gcd) { return GST_COLLECT_PADS_DTS(gcd); }

View File

@@ -4,17 +4,17 @@
#include <gst/base/base.h> #include <gst/base/base.h>
#include <stddef.h> #include <stddef.h>
inline GstBaseSink * toGstBaseSink (void *p) { return GST_BASE_SINK_CAST(p); } extern GstBaseSink * toGstBaseSink (void *p);
inline GstBaseSrc * toGstBaseSrc (void *p) { return GST_BASE_SRC_CAST(p); } extern GstBaseSrc * toGstBaseSrc (void *p);
inline GstBaseTransform * toGstBaseTransform (void *p) { return GST_BASE_TRANSFORM(p); } extern GstBaseTransform * toGstBaseTransform (void *p);
inline GstCollectPads * toGstCollectPads (void *p) { return GST_COLLECT_PADS(p); } extern GstCollectPads * toGstCollectPads (void *p);
inline GstPushSrc * toGstPushSrc (void *p) { return GST_PUSH_SRC(p); } extern GstPushSrc * toGstPushSrc (void *p);
inline GstBaseSinkClass * toGstBaseSinkClass (void *p) { return (GstBaseSinkClass *)p; } extern GstBaseSinkClass * toGstBaseSinkClass (void *p);
inline GstBaseSrcClass * toGstBaseSrcClass (void *p) { return (GstBaseSrcClass *)p; } extern GstBaseSrcClass * toGstBaseSrcClass (void *p);
inline GstBaseTransformClass * toGstBaseTransformClass (void *p) { return (GstBaseTransformClass *)p; } extern GstBaseTransformClass * toGstBaseTransformClass (void *p);
inline GstPushSrcClass * toGstPushSrcClass (void *p) { return (GstPushSrcClass *)p; } extern GstPushSrcClass * toGstPushSrcClass (void *p);
inline gint64 gstCollectDataDTS (GstCollectData * gcd) { return GST_COLLECT_PADS_DTS(gcd); } extern gint64 gstCollectDataDTS (GstCollectData * gcd);
#endif #endif

170
gst/gst.go.c Normal file
View File

@@ -0,0 +1,170 @@
#include "gst.go.h"
GType objectGType (GObject *obj) { return G_OBJECT_TYPE(obj); };
GstAllocator * toGstAllocator (void *p) { return (GST_ALLOCATOR_CAST(p)); }
GstBin * toGstBin (void *p) { return (GST_BIN(p)); }
GstBinClass * toGstBinClass (void *p) { return (GST_BIN_CLASS(p)); }
GstBufferList * toGstBufferList (void *p) { return (GST_BUFFER_LIST(p)); }
GstBufferPool * toGstBufferPool (void *p) { return (GST_BUFFER_POOL(p)); }
GstBuffer * toGstBuffer (void *p) { return (GST_BUFFER(p)); }
GstBus * toGstBus (void *p) { return (GST_BUS(p)); }
GstCapsFeatures * toGstCapsFeatures (void *p) { return (GST_CAPS_FEATURES(p)); }
GstCaps * toGstCaps (void *p) { return (GST_CAPS(p)); }
GstChildProxy * toGstChildProxy (void *p) { return (GST_CHILD_PROXY(p)); }
GstClock * toGstClock (void *p) { return (GST_CLOCK(p)); }
GstContext * toGstContext (void *p) { return (GST_CONTEXT_CAST(p)); }
GstDevice * toGstDevice (void *p) { return (GST_DEVICE_CAST(p)); }
GstElementFactory * toGstElementFactory (void *p) { return (GST_ELEMENT_FACTORY(p)); }
GstElementClass * toGstElementClass (void *p) { return (GST_ELEMENT_CLASS(p)); }
GstElement * toGstElement (void *p) { return (GST_ELEMENT(p)); }
GstEvent * toGstEvent (void *p) { return (GST_EVENT(p)); }
GstGhostPad * toGstGhostPad (void *p) { return (GST_GHOST_PAD(p)); }
GstMemory * toGstMemory (void *p) { return (GST_MEMORY_CAST(p)); }
GstMessage * toGstMessage (void *p) { return (GST_MESSAGE(p)); }
GstMeta * toGstMeta (void *p) { return (GST_META_CAST(p)); }
GstMiniObject * toGstMiniObject (void *p) { return (GST_MINI_OBJECT(p)); }
GstObject * toGstObject (void *p) { return (GST_OBJECT(p)); }
GstPad * toGstPad (void *p) { return (GST_PAD(p)); }
GstPadTemplate * toGstPadTemplate (void *p) { return (GST_PAD_TEMPLATE(p)); }
GstPipeline * toGstPipeline (void *p) { return (GST_PIPELINE(p)); }
GstPluginFeature * toGstPluginFeature (void *p) { return (GST_PLUGIN_FEATURE(p)); }
GstPlugin * toGstPlugin (void *p) { return (GST_PLUGIN(p)); }
GstProxyPad * toGstProxyPad (void *p) { return (GST_PROXY_PAD(p)); }
GstQuery * toGstQuery (void *p) { return (GST_QUERY(p)); }
GstRegistry * toGstRegistry (void *p) { return (GST_REGISTRY(p)); }
GstSample * toGstSample (void *p) { return (GST_SAMPLE(p)); }
GstStreamCollection * toGstStreamCollection (void *p) { return (GST_STREAM_COLLECTION_CAST(p)); }
GstStream * toGstStream (void *p) { return (GST_STREAM_CAST(p)); }
GstStructure * toGstStructure (void *p) { return (GST_STRUCTURE(p)); }
GstTagList * toGstTagList (void *p) { return (GST_TAG_LIST(p)); }
GstTask * toGstTask (void *p) { return (GST_TASK_CAST(p)); }
GstTaskPool * toGstTaskPool (void *p) { return (GST_TASK_POOL_CAST(p)); }
GstURIHandler * toGstURIHandler (void *p) { return (GST_URI_HANDLER(p)); }
GstUri * toGstURI (void *p) { return (GST_URI(p)); }
/* Buffer Utilities */
GstBuffer * getBufferValue (GValue * val)
{
return gst_value_get_buffer(val);
}
gboolean bufferIsWritable (GstBuffer * buf)
{
return (gst_buffer_is_writable(buf));
}
GstBuffer * makeBufferWritable (GstBuffer * buf)
{
return (gst_buffer_make_writable(buf));
}
GType bufferListType ()
{
return GST_TYPE_BUFFER_LIST;
}
/* BufferList Utilities */
gboolean bufferListIsWritable (GstBufferList * bufList)
{
return gst_buffer_list_is_writable(bufList);
}
GstBufferList * makeBufferListWritable (GstBufferList * bufList)
{
return gst_buffer_list_make_writable(bufList);
}
void addToBufferList (GstBufferList * bufList, GstBuffer * buf)
{
gst_buffer_list_add(bufList, buf);
}
/* BufferPool utilities */
gboolean bufferPoolIsFlushing (GstBufferPool * pool)
{
return GST_BUFFER_POOL_IS_FLUSHING(pool);
}
/* Caps utilties */
gboolean capsIsWritable (GstCaps * caps)
{
return gst_caps_is_writable(caps);
}
GstCaps * makeCapsWritable (GstCaps * caps)
{
return gst_caps_make_writable(caps);
}
/* Context utilities */
gboolean contextIsWritable (GstContext * ctx)
{
return gst_context_is_writable(ctx);
}
GstContext * makeContextWritable (GstContext * ctx)
{
return gst_context_make_writable(ctx);
}
/* Event Utilities */
gboolean eventIsWritable (GstEvent * event)
{
return gst_event_is_writable(event);
}
GstEvent * makeEventWritable (GstEvent * event)
{
return gst_event_make_writable(event);
}
/* TOC Utilities */
gboolean entryTypeIsAlternative (GstTocEntryType * type) { return GST_TOC_ENTRY_TYPE_IS_ALTERNATIVE(type); }
gboolean entryTypeIsSequence (GstTocEntryType * type) { return GST_TOC_ENTRY_TYPE_IS_SEQUENCE(type); }
GstTocEntry * copyTocEntry (GstTocEntry * entry) { return gst_toc_entry_copy(entry); }
GstTocEntry * makeTocEntryWritable (GstTocEntry * entry) { return gst_toc_entry_make_writable(entry); }
GstTocEntry * tocEntryRef (GstTocEntry * entry) { return gst_toc_entry_ref(entry); }
void tocEntryUnref (GstTocEntry * entry) { gst_toc_entry_unref(entry); }
GstToc * copyToc (GstToc * toc) { return gst_toc_copy(toc); }
GstToc * makeTocWritable (GstToc * toc) { return gst_toc_make_writable(toc); }
GstToc * tocRef (GstToc * toc) { return gst_toc_ref(toc); }
void tocUnref (GstToc * toc) { gst_toc_unref(toc); }
/* TagList utilities */
gboolean tagListIsWritable (GstTagList * tagList) { return gst_tag_list_is_writable(tagList); }
GstTagList * makeTagListWritable (GstTagList * tagList) { return gst_tag_list_make_writable(tagList); }
/* Object Utilities */
gboolean gstElementIsURIHandler (GstElement * elem) { return (GST_IS_URI_HANDLER(elem)); }
gboolean gstObjectFlagIsSet (GstObject * obj, GstElementFlags flags) { return (GST_OBJECT_FLAG_IS_SET(obj, flags)); }
/* Element utilities */
GstTocSetter * toTocSetter (GstElement * elem) { return GST_TOC_SETTER(elem); }
GstTagSetter * toTagSetter (GstElement *elem) { return GST_TAG_SETTER(elem); }
/* Misc */
gpointer glistNext (GList * list)
{
return g_list_next(list);
}
int sizeOfGCharArray (gchar ** arr)
{
int i;
for (i = 0 ; 1 ; i = i + 1) {
if (arr[i] == NULL) { return i; };
}
}

View File

@@ -14,175 +14,122 @@ typedef struct _PadDestroyNotifyInfo {
Type Castings Type Castings
*/ */
inline GType objectGType (GObject *obj) { return G_OBJECT_TYPE(obj); }; extern GType objectGType (GObject *obj);
inline GObjectClass * toGObjectClass (void *p) { return (G_OBJECT_CLASS(p)); }
inline GstAllocator * toGstAllocator (void *p) { return (GST_ALLOCATOR_CAST(p)); } extern GstAllocator * toGstAllocator (void *p);
inline GstBin * toGstBin (void *p) { return (GST_BIN(p)); } extern GstBin * toGstBin (void *p);
inline GstBinClass * toGstBinClass (void *p) { return (GST_BIN_CLASS(p)); } extern GstBinClass * toGstBinClass (void *p);
inline GstBufferList * toGstBufferList (void *p) { return (GST_BUFFER_LIST(p)); } extern GstBufferList * toGstBufferList (void *p);
inline GstBufferPool * toGstBufferPool (void *p) { return (GST_BUFFER_POOL(p)); } extern GstBufferPool * toGstBufferPool (void *p);
inline GstBuffer * toGstBuffer (void *p) { return (GST_BUFFER(p)); } extern GstBuffer * toGstBuffer (void *p);
inline GstBus * toGstBus (void *p) { return (GST_BUS(p)); } extern GstBus * toGstBus (void *p);
inline GstCapsFeatures * toGstCapsFeatures (void *p) { return (GST_CAPS_FEATURES(p)); } extern GstCapsFeatures * toGstCapsFeatures (void *p);
inline GstCaps * toGstCaps (void *p) { return (GST_CAPS(p)); } extern GstCaps * toGstCaps (void *p);
inline GstChildProxy * toGstChildProxy (void *p) { return (GST_CHILD_PROXY(p)); } extern GstChildProxy * toGstChildProxy (void *p);
inline GstClock * toGstClock (void *p) { return (GST_CLOCK(p)); } extern GstClock * toGstClock (void *p);
inline GstContext * toGstContext (void *p) { return (GST_CONTEXT_CAST(p)); } extern GstContext * toGstContext (void *p);
inline GstDevice * toGstDevice (void *p) { return (GST_DEVICE_CAST(p)); } extern GstDevice * toGstDevice (void *p);
inline GstElementFactory * toGstElementFactory (void *p) { return (GST_ELEMENT_FACTORY(p)); } extern GstElementFactory * toGstElementFactory (void *p);
inline GstElementClass * toGstElementClass (void *p) { return (GST_ELEMENT_CLASS(p)); } extern GstElementClass * toGstElementClass (void *p);
inline GstElement * toGstElement (void *p) { return (GST_ELEMENT(p)); } extern GstElement * toGstElement (void *p);
inline GstEvent * toGstEvent (void *p) { return (GST_EVENT(p)); } extern GstEvent * toGstEvent (void *p);
inline GstGhostPad * toGstGhostPad (void *p) { return (GST_GHOST_PAD(p)); } extern GstGhostPad * toGstGhostPad (void *p);
inline GstMemory * toGstMemory (void *p) { return (GST_MEMORY_CAST(p)); } extern GstMemory * toGstMemory (void *p);
inline GstMessage * toGstMessage (void *p) { return (GST_MESSAGE(p)); } extern GstMessage * toGstMessage (void *p);
inline GstMeta * toGstMeta (void *p) { return (GST_META_CAST(p)); } extern GstMeta * toGstMeta (void *p);
inline GstMiniObject * toGstMiniObject (void *p) { return (GST_MINI_OBJECT(p)); } extern GstMiniObject * toGstMiniObject (void *p);
inline GstObject * toGstObject (void *p) { return (GST_OBJECT(p)); } extern GstObject * toGstObject (void *p);
inline GstPad * toGstPad (void *p) { return (GST_PAD(p)); } extern GstPad * toGstPad (void *p);
inline GstPadTemplate * toGstPadTemplate (void *p) { return (GST_PAD_TEMPLATE(p)); } extern GstPadTemplate * toGstPadTemplate (void *p);
inline GstPipeline * toGstPipeline (void *p) { return (GST_PIPELINE(p)); } extern GstPipeline * toGstPipeline (void *p);
inline GstPluginFeature * toGstPluginFeature (void *p) { return (GST_PLUGIN_FEATURE(p)); } extern GstPluginFeature * toGstPluginFeature (void *p);
inline GstPlugin * toGstPlugin (void *p) { return (GST_PLUGIN(p)); } extern GstPlugin * toGstPlugin (void *p);
inline GstProxyPad * toGstProxyPad (void *p) { return (GST_PROXY_PAD(p)); } extern GstProxyPad * toGstProxyPad (void *p);
inline GstQuery * toGstQuery (void *p) { return (GST_QUERY(p)); } extern GstQuery * toGstQuery (void *p);
inline GstRegistry * toGstRegistry (void *p) { return (GST_REGISTRY(p)); } extern GstRegistry * toGstRegistry (void *p);
inline GstSample * toGstSample (void *p) { return (GST_SAMPLE(p)); } extern GstSample * toGstSample (void *p);
inline GstStreamCollection * toGstStreamCollection (void *p) { return (GST_STREAM_COLLECTION_CAST(p)); } extern GstStreamCollection * toGstStreamCollection (void *p);
inline GstStream * toGstStream (void *p) { return (GST_STREAM_CAST(p)); } extern GstStream * toGstStream (void *p);
inline GstStructure * toGstStructure (void *p) { return (GST_STRUCTURE(p)); } extern GstStructure * toGstStructure (void *p);
inline GstTagList * toGstTagList (void *p) { return (GST_TAG_LIST(p)); } extern GstTagList * toGstTagList (void *p);
inline GstTask * toGstTask (void *p) { return (GST_TASK_CAST(p)); } extern GstTask * toGstTask (void *p);
inline GstTaskPool * toGstTaskPool (void *p) { return (GST_TASK_POOL_CAST(p)); } extern GstTaskPool * toGstTaskPool (void *p);
inline GstURIHandler * toGstURIHandler (void *p) { return (GST_URI_HANDLER(p)); } extern GstURIHandler * toGstURIHandler (void *p);
inline GstUri * toGstURI (void *p) { return (GST_URI(p)); } extern GstUri * toGstURI (void *p);
/* Buffer Utilities */ /* Buffer Utilities */
inline GstBuffer * getBufferValue (GValue * val) extern GstBuffer * getBufferValue (GValue * val);
{
return gst_value_get_buffer(val);
}
inline gboolean bufferIsWritable (GstBuffer * buf) extern gboolean bufferIsWritable (GstBuffer * buf);
{
return (gst_buffer_is_writable(buf));
}
inline GstBuffer * makeBufferWritable (GstBuffer * buf) extern GstBuffer * makeBufferWritable (GstBuffer * buf);
{
return (gst_buffer_make_writable(buf));
}
inline GType bufferListType () extern GType bufferListType ();
{
return GST_TYPE_BUFFER_LIST;
}
/* BufferList Utilities */ /* BufferList Utilities */
inline gboolean bufferListIsWritable (GstBufferList * bufList) extern gboolean bufferListIsWritable (GstBufferList * bufList);
{
return gst_buffer_list_is_writable(bufList);
}
inline GstBufferList * makeBufferListWritable (GstBufferList * bufList) extern GstBufferList * makeBufferListWritable (GstBufferList * bufList);
{
return gst_buffer_list_make_writable(bufList);
}
inline void addToBufferList (GstBufferList * bufList, GstBuffer * buf) extern void addToBufferList (GstBufferList * bufList, GstBuffer * buf);
{
gst_buffer_list_add(bufList, buf);
}
/* BufferPool utilities */ /* BufferPool utilities */
inline gboolean bufferPoolIsFlushing (GstBufferPool * pool) extern gboolean bufferPoolIsFlushing (GstBufferPool * pool);
{
return GST_BUFFER_POOL_IS_FLUSHING(pool);
}
/* Caps utilties */ /* Caps utilties */
inline gboolean capsIsWritable (GstCaps * caps) extern gboolean capsIsWritable (GstCaps * caps);
{
return gst_caps_is_writable(caps);
}
inline GstCaps * makeCapsWritable (GstCaps * caps) extern GstCaps * makeCapsWritable (GstCaps * caps);
{
return gst_caps_make_writable(caps);
}
/* Context utilities */ /* Context utilities */
inline gboolean contextIsWritable (GstContext * ctx) extern gboolean contextIsWritable (GstContext * ctx);
{
return gst_context_is_writable(ctx);
}
inline GstContext * makeContextWritable (GstContext * ctx) extern GstContext * makeContextWritable (GstContext * ctx);
{
return gst_context_make_writable(ctx);
}
/* Event Utilities */ /* Event Utilities */
inline gboolean eventIsWritable (GstEvent * event) extern gboolean eventIsWritable (GstEvent * event);
{
return gst_event_is_writable(event);
}
inline GstEvent * makeEventWritable (GstEvent * event) extern GstEvent * makeEventWritable (GstEvent * event);
{
return gst_event_make_writable(event);
}
/* TOC Utilities */ /* TOC Utilities */
inline gboolean entryTypeIsAlternative (GstTocEntryType * type) { return GST_TOC_ENTRY_TYPE_IS_ALTERNATIVE(type); } extern gboolean entryTypeIsAlternative (GstTocEntryType * type);
inline gboolean entryTypeIsSequence (GstTocEntryType * type) { return GST_TOC_ENTRY_TYPE_IS_SEQUENCE(type); } extern gboolean entryTypeIsSequence (GstTocEntryType * type);
inline GstTocEntry * copyTocEntry (GstTocEntry * entry) { return gst_toc_entry_copy(entry); } extern GstTocEntry * copyTocEntry (GstTocEntry * entry);
inline GstTocEntry * makeTocEntryWritable (GstTocEntry * entry) { return gst_toc_entry_make_writable(entry); } extern GstTocEntry * makeTocEntryWritable (GstTocEntry * entry);
inline GstTocEntry * tocEntryRef (GstTocEntry * entry) { return gst_toc_entry_ref(entry); } extern GstTocEntry * tocEntryRef (GstTocEntry * entry);
inline void tocEntryUnref (GstTocEntry * entry) { gst_toc_entry_unref(entry); } extern void tocEntryUnref (GstTocEntry * entry);
inline GstToc * copyToc (GstToc * toc) { return gst_toc_copy(toc); } extern GstToc * copyToc (GstToc * toc);
inline GstToc * makeTocWritable (GstToc * toc) { return gst_toc_make_writable(toc); } extern GstToc * makeTocWritable (GstToc * toc);
inline GstToc * tocRef (GstToc * toc) { return gst_toc_ref(toc); } extern GstToc * tocRef (GstToc * toc);
inline void tocUnref (GstToc * toc) { gst_toc_unref(toc); } extern void tocUnref (GstToc * toc);
/* TagList utilities */ /* TagList utilities */
inline gboolean tagListIsWritable (GstTagList * tagList) { return gst_tag_list_is_writable(tagList); } extern gboolean tagListIsWritable (GstTagList * tagList);
inline GstTagList * makeTagListWritable (GstTagList * tagList) { return gst_tag_list_make_writable(tagList); } extern GstTagList * makeTagListWritable (GstTagList * tagList);
/* Object Utilities */ /* Object Utilities */
inline GObjectClass * getGObjectClass (void * p) { return (G_OBJECT_GET_CLASS(p)); } extern gboolean gstElementIsURIHandler (GstElement * elem);
inline gboolean gstElementIsURIHandler (GstElement * elem) { return (GST_IS_URI_HANDLER(elem)); } extern gboolean gstObjectFlagIsSet (GstObject * obj, GstElementFlags flags);
inline gboolean gstObjectFlagIsSet (GstObject * obj, GstElementFlags flags) { return (GST_OBJECT_FLAG_IS_SET(obj, flags)); }
/* Element utilities */ /* Element utilities */
inline GstTocSetter * toTocSetter (GstElement * elem) { return GST_TOC_SETTER(elem); } extern GstTocSetter * toTocSetter (GstElement * elem);
inline GstTagSetter * toTagSetter (GstElement *elem) { return GST_TAG_SETTER(elem); } extern GstTagSetter * toTagSetter (GstElement *elem);
/* Misc */ /* Misc */
inline gpointer glistNext (GList * list) extern gpointer glistNext (GList * list);
{
return g_list_next(list);
}
inline int sizeOfGCharArray (gchar ** arr) extern int sizeOfGCharArray (gchar ** arr);
{
int i;
for (i = 0 ; 1 ; i = i + 1) {
if (arr[i] == NULL) { return i; };
}
}
#endif #endif