Fix gapi2xml.pl to accept nested namespaces
authorMaarten Bosmans <mkbosmans@gmail.com>
Fri, 5 Jun 2009 19:09:40 +0000 (21:09 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 5 Jun 2009 19:09:40 +0000 (21:09 +0200)
The perl script should accept nested namespaces, like N1.N2, for outputting
xml.  Making a Global class for static methods didn't work for functions like
n1_n2_function.  Another change is that N1 is stripped from the cname for the
element name.

Partially fixes bug #584744.

gstreamer-sharp/Gstreamer.metadata
gstreamer-sharp/gstreamer-api.raw
parser/gapi2xml.pl

index b510533..42ab744 100644 (file)
   <attr path="/api/namespace/class[@name='Value']" name="hidden">1</attr>
 
   <!-- GStreamer Base library -->
-  <attr path="/api/namespace/enum[@cname='GstBaseSrcFlags']" name="name">BaseSrcFlags</attr>
   <attr path="/api/namespace/enum[@cname='GstBaseSrcFlags']/member[@cname='GST_BASE_SRC_STARTED']" name="value">Gst.ElementFlags.Last &lt;&lt; 0</attr>
   <attr path="/api/namespace/enum[@cname='GstBaseSrcFlags']/member[@cname='GST_BASE_SRC_FLAG_LAST']" name="value">Gst.ElementFlags.Last &lt;&lt; 2</attr>
   <attr path="/api/namespace/enum[@cname='GstBaseSrcFlags']/member[@cname='GST_BASE_SRC_FLAG_LAST']" name="name">Last</attr>
 
-  <attr path="/api/namespace/callback[@cname='GstTypeFindHelperGetRangeFunction']" name="name">TypeFindHelperGetRangeFunction</attr>
   <attr path="/api/namespace/callback[@cname='GstTypeFindHelperGetRangeFunction']/parameters/parameter[@name='buffer']" name="pass_as">out</attr>
   <attr path="/api/namespace/callback[@cname='GstTypeFindHelperGetRangeFunction']/parameters/parameter[@name='buffer']" name="owned">true</attr>
 
-  <attr path="/api/namespace/object[@cname='GstAdapter']" name="name">Adapter</attr>
   <attr path="/api/namespace/object[@cname='GstAdapter']/method[@cname='gst_adapter_push']" name="hidden">1</attr>
   <attr path="/api/namespace/object[@cname='GstAdapter']/method[@cname='gst_adapter_peek']" name="hidden">1</attr>
   <attr path="/api/namespace/object[@cname='GstAdapter']/method[@cname='gst_adapter_copy']" name="hidden">1</attr>
   <attr path="/api/namespace/object[@cname='GstAdapter']/method[@cname='gst_adapter_take_buffer']" name="name">Take</attr>
   <attr path="/api/namespace/object[@cname='GstAdapter']/method[@cname='gst_adapter_take_buffer']/return-type" name="owned">true</attr>
 
-  <attr path="/api/namespace/object[@cname='GstBaseSink']" name="name">BaseSink</attr>
   <attr path="/api/namespace/object[@cname='GstBaseSink']/virtual_method[@cname='get_caps']/return-type" name="owned">true</attr>
   <attr path="/api/namespace/object[@cname='GstBaseSink']/virtual_method[@cname='buffer_alloc']/parameters/parameter[@name='buf']" name="owned">true</attr>
   <attr path="/api/namespace/object[@cname='GstBaseSink']/virtual_method[@cname='buffer_alloc']/parameters/parameter[@name='buf']" name="pass_as">out</attr>
   <attr path="/api/namespace/object[@cname='GstBaseSink']/virtual_method[@cname='get_times']/parameters/parameter[@name='start']" name="pass_as">out</attr>
   <attr path="/api/namespace/object[@cname='GstBaseSink']/virtual_method[@cname='get_times']/parameters/parameter[@name='end']" name="pass_as">out</attr>
 
-  <attr path="/api/namespace/object[@cname='GstBaseSrc']" name="name">BaseSrc</attr>
   <attr path="/api/namespace/object[@cname='GstBaseSrc']/virtual_method[@cname='get_caps']/return-type" name="owned">true</attr>
   <attr path="/api/namespace/object[@cname='GstBaseSrc']/virtual_method[@cname='create']/parameters/parameter[@name='buf']" name="owned">true</attr>
   <attr path="/api/namespace/object[@cname='GstBaseSrc']/virtual_method[@cname='create']/parameters/parameter[@name='buf']" name="pass_as">out</attr>
 
-  <attr path="/api/namespace/object[@cname='GstBaseTransform']" name="name">BaseTransform</attr>
   <attr path="/api/namespace/object[@cname='GstBaseTransform']/virtual_method[@cname='transform_caps']/return-type" name="owned">true</attr>
   <attr path="/api/namespace/object[@cname='GstBaseTransform']/virtual_method[@cname='prepare_output_buffer']/parameters/parameter[@name='buf']" name="owned">true</attr>
   <attr path="/api/namespace/object[@cname='GstBaseTransform']/virtual_method[@cname='prepare_output_buffer']/parameters/parameter[@name='buf']" name="pass_as">out</attr>
 
-  <attr path="/api/namespace/object[@cname='GstPushSrc']" name="name">PushSrc</attr>
   <attr path="/api/namespace/object[@cname='GstPushSrc']/virtual_method[@cname='create']/parameters/parameter[@name='buf']" name="owned">true</attr>
   <attr path="/api/namespace/object[@cname='GstPushSrc']/virtual_method[@cname='create']/parameters/parameter[@name='buf']" name="pass_as">out</attr>
 
   </add-node>
 
   <!-- GStreamer Controller library -->
-  <attr path="/api/namespace/enum[@cname='GstInterpolateMode']" name="name">InterpolateMode</attr>
-  <attr path="/api/namespace/enum[@cname='GstLFOWaveform']" name="name">LFOWaveform</attr>
   <attr path="/api/namespace/callback[@cname='GstControlSourceBind']" name="hidden">1</attr>
   <attr path="/api/namespace/callback[@cname='GstControlSourceGetValue']" name="hidden">1</attr>
   <attr path="/api/namespace/callback[@cname='GstControlSourceGetValueArray']" name="hidden">1</attr>
 
-  <attr path="/api/namespace/object[@cname='GstController']" name="name">Controller</attr>
   <attr path="/api/namespace/object[@cname='GstController']/property" name="hidden">1</attr>
   <attr path="/api/namespace/object[@cname='GstController']/method[@cname='gst_controller_get_all']" name="hidden">1</attr>
   <attr path="/api/namespace/object[@cname='GstController']/method[@cname='gst_controller_get_control_source']/return-type" name="owned">true</attr>
   <attr path="/api/namespace/object[@cname='GstController']/method[@cname='gst_controller_unset']" name="hidden">1</attr>
   <attr path="/api/namespace/object[@cname='GstController']/method[@cname='gst_controller_unset_all']" name="hidden">1</attr>
 
-  <attr path="/api/namespace/object[@cname='GstControlSource']" name="name">ControlSource</attr>
   <remove-node path="/api/namespace/object[@cname='GstControlSource']/class_struct" />
   <add-node path="/api/namespace/object[@cname='GstControlSource']">
     <class_struct cname="GstControlSourceClass">
   </add-node>
   <attr path="/api/namespace/object[@cname='GstControlSource']/method[@cname='gst_control_source_get_value']/parameters/parameter[@name='value']" name="pass_as">ref</attr>
 
-  <attr path="/api/namespace/object[@cname='GstInterpolationControlSource']" name="name">InterpolationControlSource</attr>
   <attr path="/api/namespace/object[@cname='GstInterpolationControlSource']/method[@cname='gst_interpolation_control_source_set']/parameters/parameter[@name='value']" name="pass_as">ref</attr>
   <attr path="/api/namespace/object[@cname='GstInterpolationControlSource']/method[@cname='gst_interpolation_control_source_set_from_list']" name="hidden">1</attr>
   <attr path="/api/namespace/object[@cname='GstInterpolationControlSource']/method[@cname='gst_interpolation_control_source_get_all']" name="hidden">1</attr>
-  <attr path="/api/namespace/object[@cname='GstLFOControlSource']" name="name">LFOControlSource</attr>
   <attr path="/api/namespace/struct[@cname='GstTimedValue']" name="hidden">1</attr>
   <attr path="/api/namespace/struct[@cname='GstValueArray']" name="hidden">1</attr>
 
   <!-- GStreamer Cdda library -->
-  <attr path="/api/namespace/enum[@cname='GstCddaBaseSrcMode']" name="name">CddaBaseSrcMode</attr>
-
-  <attr path="/api/namespace/object[@cname='GstCddaBaseSrc']" name="name">CddaBaseSrc</attr>
   <attr path="/api/namespace/object[@cname='GstCddaBaseSrc']/virtual_method[@cname='probe_devices']/return-type" name="null_term_array">true</attr>
   <attr path="/api/namespace/object[@cname='GstCddaBaseSrc']/virtual_method[@cname='read_sector']/return-type" name="owned">true</attr>
   <attr path="/api/namespace/object[@cname='GstCddaBaseSrc']/field[@cname='tags']" name="access">protected</attr>
   <attr path="/api/namespace/object[@cname='GstCddaBaseSrc']/field[@cname='tags']" name="writeable">true</attr>
 
-  <attr path="/api/namespace/struct[@cname='GstCddaBaseSrcTrack']" name="name">CddaBaseSrcTrack</attr>
   <attr path="/api/namespace/struct[@cname='GstCddaBaseSrcTrack']/field[@cname='_gst_reserved1']" name="array_len">4</attr>
   <remove-node path="/api/namespace/struct[@cname='GstCddaBaseSrcTrack']/field[@cname='_gst_reserved2']" />
 
 
   <!-- GStreamer Interfaces library -->
-  <attr path="/api/namespace/enum[@cname='GstColorBalanceType']" name="name">ColorBalanceType</attr>
-  <attr path="/api/namespace/enum[@cname='GstMixerFlags']" name="name">MixerFlags</attr>
-  <attr path="/api/namespace/enum[@cname='GstMixerMessageType']" name="name">MixerMessageType</attr>
-  <attr path="/api/namespace/enum[@cname='GstMixerTrackFlags']" name="name">MixerTrackFlags</attr>
-  <attr path="/api/namespace/enum[@cname='GstMixerType']" name="name">MixerType</attr>
-
   <attr path="/api/namespace/enum[@cname='GstNavigationCommand']" name="name">NavigationCommand</attr>
   <add-node path="/api/namespace/enum[@cname='GstNavigationCommand']">
     <member cname="GST_NAVIGATION_COMMAND_MENU1" name="DvdMenu" value="1" />
     <member cname="GST_NAVIGATION_COMMAND_MENU7" name="DvdChapterMenu" value="7" />
   </add-node>
 
-  <attr path="/api/namespace/enum[@cname='GstNavigationEventType']" name="name">NavigationEventType</attr>
-  <attr path="/api/namespace/enum[@cname='GstNavigationMessageType']" name="name">NavigationMessageType</attr>
-  <attr path="/api/namespace/enum[@cname='GstNavigationQueryType']" name="name">NavigationQueryType</attr>
-  <attr path="/api/namespace/enum[@cname='GstTunerChannelFlags']" name="name">TunerChannelFlags</attr>
-  <attr path="/api/namespace/interface[@cname='GstColorBalance']" name="name">ColorBalance</attr>
   <attr path="/api/namespace/interface[@cname='GstColorBalance']/virtual_method[@cname='list_channels']/return-type" name="element_type">GstColorBalanceChannel</attr>
   <attr path="/api/namespace/interface[@cname='GstColorBalance']/method[@cname='gst_color_balance_list_channels']/return-type" name="element_type">GstColorBalanceChannel</attr>
   <attr path="/api/namespace/interface[@cname='GstColorBalance']/method[@cname='gst_color_balance_value_changed']" name="name">EmitValueChanged</attr>
 
-  <attr path="/api/namespace/object[@cname='GstColorBalanceChannel']" name="name">ColorBalanceChannel</attr>
 
-  <attr path="/api/namespace/interface[@cname='GstMixer']" name="name">Mixer</attr>
   <attr path="/api/namespace/interface[@cname='GstMixer']/signal" name="hidden">1</attr>
   <attr path="/api/namespace/interface[@cname='GstMixer']/method[@cname='gst_mixer_list_tracks']/return-type" name="element_type">GstMixerTrack</attr>
   <attr path="/api/namespace/interface[@cname='GstMixer']/virtual_method[@cname='list_tracks']/return-type" name="element_type">GstMixerTrack</attr>
   <remove-attr path="/api/namespace/interface[@cname='GstMixer']/method[@cname='gst_mixer_options_list_changed']" name="shared" />
   <remove-node path="/api/namespace/interface[@cname='GstMixer']/method[@cname='gst_mixer_options_list_changed']/parameters/parameter[@name='mixer']" />
 
-  <attr path="/api/namespace/enum[@cname='GstMixerType']" name="name">MixerType</attr>
-
-  <attr path="/api/namespace/enum[@cname='GstMixerFlags']" name="name">MixerFlags</attr>
-
-  <attr path="/api/namespace/enum[@cname='GstMixerMessageType']" name="name">MixerMessageType</attr>
-
-  <attr path="/api/namespace/object[@cname='GstMixerTrack']" name="name">MixerTrack</attr>
   <attr path="/api/namespace/object[@cname='GstMixerTrack']/signal" name="hidden">1</attr>
 
-  <attr path="/api/namespace/object[@cname='GstMixerOptions']" name="name">MixerOptions</attr>
   <attr path="/api/namespace/object[@cname='GstMixerOptions']/field[@name='Values']" name="hidden">1</attr>
   <attr path="/api/namespace/object[@cname='GstMixerOptions']/signal" name="hidden">1</attr>
   <attr path="/api/namespace/object[@cname='GstMixerOptions']/method[@cname='gst_mixer_options_get_values']/return-type" name="element_type">gchar*</attr>
   <attr path="/api/namespace/object[@cname='GstMixerOptions']/virtual_method[@cname='get_values']/return-type" name="element_type">gchar*</attr>
   <move-node path="/api/namespace/object[@cname='GstMixerOptions']/method[@cname='gst_mixer_options_list_changed']">/api/namespace/interface[@cname='GstMixer']</move-node>
 
-  <attr path="/api/namespace/interface[@cname='GstNavigation']" name="name">Navigation</attr>
   <attr path="/api/namespace/interface[@cname='GstNavigation']/virtual_method[@cname='send_event']/parameters/parameter" name="owned">true</attr>
   <attr path="/api/namespace/interface[@cname='GstNavigation']/method[@cname='gst_navigation_message_get_type']" name="hidden">1</attr>
   <attr path="/api/namespace/interface[@cname='GstNavigation']/method[@cname='gst_navigation_message_new_angles_changed']" name="hidden">1</attr>
   <attr path="/api/namespace/interface[@cname='GstNavigation']/method[@cname='gst_navigation_event_parse_command']" name="hidden">1</attr>
 
 
-  <attr path="/api/namespace/interface[@cname='GstPropertyProbe']" name="name">PropertyProbe</attr>
-
-  <attr path="/api/namespace/interface[@cname='GstTuner']" name="name">Tuner</attr>
   <remove-node path="/api/namespace/interface[@cname='GstTuner']/method[@cname='gst_tuner_norm_changed']/parameters/parameter[@name='tuner']" />
   <remove-attr path="/api/namespace/interface[@cname='GstTuner']/method[@cname='gst_tuner_norm_changed']" name="shared" />
   <remove-node path="/api/namespace/interface[@cname='GstTuner']/method[@cname='gst_tuner_channel_changed']/parameters/parameter[@name='tuner']" />
   <attr path="/api/namespace/interface[@cname='GstTuner']/method[@cname='gst_tuner_frequency_changed']" name="name">EmitFrequencyChanged</attr>
   <attr path="/api/namespace/interface[@cname='GstTuner']/method[@cname='gst_tuner_signal_changed']" name="name">EmitSignalChanged</attr>
 
-  <attr path="/api/namespace/object[@cname='GstTunerChannel']" name="name">TunerChannel</attr>
   <move-node path="/api/namespace/object[@cname='GstTunerChannel']/method[@cname='gst_tuner_channel_changed']">/api/namespace/interface[@cname='GstTuner']</move-node>
 
-  <attr path="/api/namespace/object[@cname='GstTunerNorm']" name="name">TunerNorm</attr>
   <attr path="/api/namespace/object[@cname='GstTunerNorm']/field[@name='Framerate']" name="hidden">1</attr>
   <move-node path="/api/namespace/object[@cname='GstTunerNorm']/method[@cname='gst_tuner_norm_changed']">/api/namespace/interface[@cname='GstTuner']</move-node>
 
-  <attr path="/api/namespace/interface[@cname='GstVideoOrientation']" name="name">VideoOrientation</attr>
   <attr path="/api/namespace/interface[@cname='GstVideoOrientation']/virtual_method[@cname='get_hflip']/parameters/parameter[@name='flip']" name="pass_as">out</attr>
   <attr path="/api/namespace/interface[@cname='GstVideoOrientation']/virtual_method[@cname='get_vflip']/parameters/parameter[@name='flip']" name="pass_as">out</attr>
   <attr path="/api/namespace/interface[@cname='GstVideoOrientation']/virtual_method[@cname='get_hcenter']/parameters/parameter[@name='center']" name="pass_as">out</attr>
index 984fe05..a33dc2c 100644 (file)
     </class>
   </namespace>
   <namespace name="Gst.Base" library="libgstbase-0.10.dll">
-    <enum name="GstBaseSrcFlags" cname="GstBaseSrcFlags" type="flags">
+    <enum name="BaseSrcFlags" cname="GstBaseSrcFlags" type="flags">
       <member cname="GST_BASE_SRC_STARTED" name="Started" value="GST_ELEMENT_FLAG_LAST &lt;&lt; 0" />
       <member cname="GST_BASE_SRC_FLAG_LAST" name="FlagLast" value="GST_ELEMENT_FLAG_LAST &lt;&lt; 2" />
     </enum>
-    <callback name="GstTypeFindHelperGetRangeFunction" cname="GstTypeFindHelperGetRangeFunction">
+    <callback name="TypeFindHelperGetRangeFunction" cname="GstTypeFindHelperGetRangeFunction">
       <return-type type="GstFlowReturn" />
       <parameters>
         <parameter type="GstObject*" name="obj" />
         <parameter type="GstBuffer**" name="buffer" />
       </parameters>
     </callback>
-    <object name="GstAdapter" cname="GstAdapter" parent="GObject">
+    <object name="Adapter" cname="GstAdapter" parent="GObject">
       <class_struct cname="GstAdapterClass">
         <field name="ParentClass" cname="parent_class" type="GObjectClass" />
         <field name="GstReserved" cname="_gst_reserved" type="gpointer" array_len="GST_PADDING" />
         </parameters>
       </method>
     </object>
-    <object name="GstBaseSink" cname="GstBaseSink" parent="GstElement">
+    <object name="BaseSink" cname="GstBaseSink" parent="GstElement">
       <class_struct cname="GstBaseSinkClass">
         <field name="ParentClass" cname="parent_class" type="GstElementClass" />
         <method vm="get_caps" />
         <return-type type="GstFlowReturn" />
       </method>
     </object>
-    <object name="GstBaseSrc" cname="GstBaseSrc" parent="GstElement">
+    <object name="BaseSrc" cname="GstBaseSrc" parent="GstElement">
       <class_struct cname="GstBaseSrcClass">
         <field name="ParentClass" cname="parent_class" type="GstElementClass" />
         <method vm="get_caps" />
         <return-type type="GstFlowReturn" />
       </method>
     </object>
-    <object name="GstBaseTransform" cname="GstBaseTransform" parent="GstElement">
+    <object name="BaseTransform" cname="GstBaseTransform" parent="GstElement">
       <class_struct cname="GstBaseTransformClass">
         <field name="ParentClass" cname="parent_class" type="GstElementClass" />
         <method vm="transform_caps" />
         </parameters>
       </method>
     </object>
-    <object name="GstPushSrc" cname="GstPushSrc" parent="GstBaseSrc">
+    <object name="PushSrc" cname="GstPushSrc" parent="GstBaseSrc">
       <class_struct cname="GstPushSrcClass">
         <field name="ParentClass" cname="parent_class" type="GstBaseSrcClass" />
         <method vm="create" />
     </object>
   </namespace>
   <namespace name="Gst.Controller" library="libgstcontroller-0.10.dll">
-    <enum name="GstInterpolateMode" cname="GstInterpolateMode" type="enum">
+    <enum name="InterpolateMode" cname="GstInterpolateMode" type="enum">
       <member cname="GST_INTERPOLATE_NONE" name="None" />
       <member cname="GST_INTERPOLATE_TRIGGER" name="Trigger" />
       <member cname="GST_INTERPOLATE_LINEAR" name="Linear" />
       <member cname="GST_INTERPOLATE_CUBIC" name="Cubic" />
       <member cname="GST_INTERPOLATE_USER" name="User" />
     </enum>
-    <enum name="GstLFOWaveform" cname="GstLFOWaveform" type="enum">
+    <enum name="LFOWaveform" cname="GstLFOWaveform" type="enum">
       <member cname="GST_LFO_WAVEFORM_SINE" name="Sine" />
       <member cname="GST_LFO_WAVEFORM_SQUARE" name="Square" />
       <member cname="GST_LFO_WAVEFORM_SAW" name="Saw" />
       <member cname="GST_LFO_WAVEFORM_REVERSE_SAW" name="ReverseSaw" />
       <member cname="GST_LFO_WAVEFORM_TRIANGLE" name="Triangle" />
     </enum>
-    <callback name="GstControlSourceBind" cname="GstControlSourceBind">
+    <callback name="ControlSourceBind" cname="GstControlSourceBind">
       <return-type type="gboolean" />
       <parameters>
         <parameter type="GstControlSource*" name="self" />
         <parameter type="GParamSpec*" name="pspec" />
       </parameters>
     </callback>
-    <callback name="GstControlSourceGetValue" cname="GstControlSourceGetValue">
+    <callback name="ControlSourceGetValue" cname="GstControlSourceGetValue">
       <return-type type="gboolean" />
       <parameters>
         <parameter type="GstControlSource*" name="self" />
         <parameter type="GValue*" name="value" />
       </parameters>
     </callback>
-    <callback name="GstControlSourceGetValueArray" cname="GstControlSourceGetValueArray">
+    <callback name="ControlSourceGetValueArray" cname="GstControlSourceGetValueArray">
       <return-type type="gboolean" />
       <parameters>
         <parameter type="GstControlSource*" name="self" />
         <parameter type="GstValueArray*" name="value_array" />
       </parameters>
     </callback>
-    <object name="GstController" cname="GstController" parent="GObject">
+    <object name="Controller" cname="GstController" parent="GObject">
       <class_struct cname="GstControllerClass">
         <field name="ParentClass" cname="parent_class" type="GObjectClass" />
         <field name="GstReserved" cname="_gst_reserved" type="gpointer" array_len="GST_PADDING" />
         </parameters>
       </method>
     </object>
-    <object name="GstControlSource" cname="GstControlSource" parent="GObject">
+    <object name="ControlSource" cname="GstControlSource" parent="GObject">
       <class_struct cname="GstControlSourceClass">
         <field name="ParentClass" cname="parent_class" type="GObjectClass" />
         <field name="Bind" cname="bind" type="GstControlSourceBind" />
         </parameters>
       </method>
     </object>
-    <object name="GstInterpolationControlSource" cname="GstInterpolationControlSource" parent="GstControlSource">
+    <object name="InterpolationControlSource" cname="GstInterpolationControlSource" parent="GstControlSource">
       <class_struct cname="GstInterpolationControlSourceClass">
         <field name="ParentClass" cname="parent_class" type="GstControlSourceClass" />
         <field name="GstReserved" cname="_gst_reserved" type="gpointer" array_len="GST_PADDING" />
         <return-type type="void" />
       </method>
     </object>
-    <object name="GstLFOControlSource" cname="GstLFOControlSource" parent="GstControlSource">
+    <object name="LFOControlSource" cname="GstLFOControlSource" parent="GstControlSource">
       <class_struct cname="GstLFOControlSourceClass">
         <field name="ParentClass" cname="parent_class" type="GstControlSourceClass" />
         <field name="GstReserved" cname="_gst_reserved" type="gpointer" array_len="GST_PADDING" />
       </method>
       <constructor cname="gst_lfo_control_source_new" />
     </object>
-    <struct name="GstTimedValue" cname="GstTimedValue">
+    <struct name="TimedValue" cname="GstTimedValue">
       <field name="Timestamp" cname="timestamp" type="GstClockTime" />
       <field name="Value" cname="value" type="GValue" />
     </struct>
-    <struct name="GstValueArray" cname="GstValueArray">
+    <struct name="ValueArray" cname="GstValueArray">
       <field name="PropertyName" cname="property_name" type="gchar*" />
       <field name="Nbsamples" cname="nbsamples" type="gint" />
       <field name="SampleInterval" cname="sample_interval" type="GstClockTime" />
     </struct>
   </namespace>
   <namespace name="Gst.Cdda" library="libgstcdda-0.10.dll">
-    <enum name="GstCddaBaseSrcMode" cname="GstCddaBaseSrcMode" gtype="gst_cdda_base_src_mode_get_type" type="enum">
+    <enum name="CddaBaseSrcMode" cname="GstCddaBaseSrcMode" gtype="gst_cdda_base_src_mode_get_type" type="enum">
       <member cname="GST_CDDA_BASE_SRC_MODE_NORMAL" name="Normal" />
       <member cname="GST_CDDA_BASE_SRC_MODE_CONTINUOUS" name="Continuous" />
     </enum>
-    <object name="GstCddaBaseSrc" cname="GstCddaBaseSrc" parent="GstPushSrc">
+    <object name="CddaBaseSrc" cname="GstCddaBaseSrc" parent="GstPushSrc">
       <class_struct cname="GstCddaBaseSrcClass">
         <field name="PushsrcClass" cname="pushsrc_class" type="GstPushSrcClass" />
         <method vm="open" />
         <return-type type="GType" />
       </method>
     </object>
-    <struct name="GstCddaBaseSrcTrack" cname="GstCddaBaseSrcTrack">
+    <struct name="CddaBaseSrcTrack" cname="GstCddaBaseSrcTrack">
       <field name="IsAudio" cname="is_audio" type="gboolean" />
       <field name="Num" cname="num" type="guint" />
       <field name="Start" cname="start" type="guint" />
     </struct>
   </namespace>
   <namespace name="Gst.Interfaces" library="libgstinterfaces-0.10.dll">
-    <enum name="GstColorBalanceType" cname="GstColorBalanceType" gtype="gst_color_balance_type_get_type" type="enum">
+    <enum name="ColorBalanceType" cname="GstColorBalanceType" gtype="gst_color_balance_type_get_type" type="enum">
       <member cname="GST_COLOR_BALANCE_HARDWARE" name="Hardware" />
       <member cname="GST_COLOR_BALANCE_SOFTWARE" name="Software" />
     </enum>
-    <enum name="GstMixerFlags" cname="GstMixerFlags" gtype="gst_mixer_flags_get_type" type="flags">
+    <enum name="MixerFlags" cname="GstMixerFlags" gtype="gst_mixer_flags_get_type" type="flags">
       <member cname="GST_MIXER_FLAG_NONE" name="None" />
       <member cname="GST_MIXER_FLAG_AUTO_NOTIFICATIONS" name="AutoNotifications" value="1 &lt;&lt; 0" />
       <member cname="GST_MIXER_FLAG_HAS_WHITELIST" name="HasWhitelist" value="1 &lt;&lt; 1" />
       <member cname="GST_MIXER_FLAG_GROUPING" name="Grouping" value="1 &lt;&lt; 2" />
     </enum>
-    <enum name="GstMixerMessageType" cname="GstMixerMessageType" gtype="gst_mixer_message_type_get_type" type="enum">
+    <enum name="MixerMessageType" cname="GstMixerMessageType" gtype="gst_mixer_message_type_get_type" type="enum">
       <member cname="GST_MIXER_MESSAGE_INVALID" name="Invalid" />
       <member cname="GST_MIXER_MESSAGE_MUTE_TOGGLED" name="MuteToggled" />
       <member cname="GST_MIXER_MESSAGE_RECORD_TOGGLED" name="RecordToggled" />
       <member cname="GST_MIXER_MESSAGE_OPTIONS_LIST_CHANGED" name="OptionsListChanged" />
       <member cname="GST_MIXER_MESSAGE_MIXER_CHANGED" name="MixerChanged" />
     </enum>
-    <enum name="GstMixerTrackFlags" cname="GstMixerTrackFlags" gtype="gst_mixer_track_flags_get_type" type="flags">
+    <enum name="MixerTrackFlags" cname="GstMixerTrackFlags" gtype="gst_mixer_track_flags_get_type" type="flags">
       <member cname="GST_MIXER_TRACK_INPUT" name="Input" value="1 &lt;&lt; 0" />
       <member cname="GST_MIXER_TRACK_OUTPUT" name="Output" value="1 &lt;&lt; 1" />
       <member cname="GST_MIXER_TRACK_MUTE" name="Mute" value="1 &lt;&lt; 2" />
       <member cname="GST_MIXER_TRACK_NO_MUTE" name="NoMute" value="1 &lt;&lt; 7" />
       <member cname="GST_MIXER_TRACK_WHITELIST" name="Whitelist" value="1 &lt;&lt; 8" />
     </enum>
-    <enum name="GstMixerType" cname="GstMixerType" gtype="gst_mixer_type_get_type" type="enum">
+    <enum name="MixerType" cname="GstMixerType" gtype="gst_mixer_type_get_type" type="enum">
       <member cname="GST_MIXER_HARDWARE" name="Hardware" />
       <member cname="GST_MIXER_SOFTWARE" name="Software" />
     </enum>
-    <enum name="GstNavigationCommand" cname="GstNavigationCommand" gtype="gst_navigation_command_get_type" type="enum">
+    <enum name="NavigationCommand" cname="GstNavigationCommand" gtype="gst_navigation_command_get_type" type="enum">
       <member cname="GST_NAVIGATION_COMMAND_INVALID" name="Invalid" />
       <member cname="GST_NAVIGATION_COMMAND_MENU1" name="Menu1" value="1" />
       <member cname="GST_NAVIGATION_COMMAND_MENU2" name="Menu2" value="2" />
       <member cname="GST_NAVIGATION_COMMAND_PREV_ANGLE" name="PrevAngle" value="30" />
       <member cname="GST_NAVIGATION_COMMAND_NEXT_ANGLE" name="NextAngle" value="31" />
     </enum>
-    <enum name="GstNavigationEventType" cname="GstNavigationEventType" gtype="gst_navigation_event_type_get_type" type="enum">
+    <enum name="NavigationEventType" cname="GstNavigationEventType" gtype="gst_navigation_event_type_get_type" type="enum">
       <member cname="GST_NAVIGATION_EVENT_INVALID" name="Invalid" />
       <member cname="GST_NAVIGATION_EVENT_KEY_PRESS" name="KeyPress" value="1" />
       <member cname="GST_NAVIGATION_EVENT_KEY_RELEASE" name="KeyRelease" value="2" />
       <member cname="GST_NAVIGATION_EVENT_MOUSE_MOVE" name="MouseMove" value="5" />
       <member cname="GST_NAVIGATION_EVENT_COMMAND" name="Command" value="6" />
     </enum>
-    <enum name="GstNavigationMessageType" cname="GstNavigationMessageType" gtype="gst_navigation_message_type_get_type" type="enum">
+    <enum name="NavigationMessageType" cname="GstNavigationMessageType" gtype="gst_navigation_message_type_get_type" type="enum">
       <member cname="GST_NAVIGATION_MESSAGE_INVALID" name="Invalid" />
       <member cname="GST_NAVIGATION_MESSAGE_MOUSE_OVER" name="MouseOver" />
       <member cname="GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED" name="CommandsChanged" />
       <member cname="GST_NAVIGATION_MESSAGE_ANGLES_CHANGED" name="AnglesChanged" />
     </enum>
-    <enum name="GstNavigationQueryType" cname="GstNavigationQueryType" gtype="gst_navigation_query_type_get_type" type="enum">
+    <enum name="NavigationQueryType" cname="GstNavigationQueryType" gtype="gst_navigation_query_type_get_type" type="enum">
       <member cname="GST_NAVIGATION_QUERY_INVALID" name="Invalid" />
       <member cname="GST_NAVIGATION_QUERY_COMMANDS" name="Commands" value="1" />
       <member cname="GST_NAVIGATION_QUERY_ANGLES" name="Angles" value="2" />
     </enum>
-    <enum name="GstTunerChannelFlags" cname="GstTunerChannelFlags" gtype="gst_tuner_channel_flags_get_type" type="flags">
+    <enum name="TunerChannelFlags" cname="GstTunerChannelFlags" gtype="gst_tuner_channel_flags_get_type" type="flags">
       <member cname="GST_TUNER_CHANNEL_INPUT" name="Input" value="1 &lt;&lt; 0" />
       <member cname="GST_TUNER_CHANNEL_OUTPUT" name="Output" value="1 &lt;&lt; 1" />
       <member cname="GST_TUNER_CHANNEL_FREQUENCY" name="Frequency" value="1 &lt;&lt; 2" />
       <member cname="GST_TUNER_CHANNEL_AUDIO" name="Audio" value="1 &lt;&lt; 3" />
     </enum>
-    <interface name="GstColorBalance" cname="GstColorBalance">
+    <interface name="ColorBalance" cname="GstColorBalance">
       <class_struct cname="GstColorBalanceClass">
         <field name="Klass" cname="klass" type="GTypeInterface" />
         <field name="BalanceType" cname="balance_type" type="GstColorBalanceType" />
         </parameters>
       </method>
     </interface>
-    <interface name="GstMixer" cname="GstMixer">
+    <interface name="Mixer" cname="GstMixer">
       <class_struct cname="GstMixerClass">
         <field name="Klass" cname="klass" type="GTypeInterface" />
         <field name="MixerType" cname="mixer_type" type="GstMixerType" />
         </parameters>
       </method>
     </interface>
-    <interface name="GstNavigation" cname="GstNavigation">
+    <interface name="Navigation" cname="GstNavigation">
       <class_struct cname="GstNavigationInterface">
         <field name="GIface" cname="g_iface" type="GTypeInterface" />
         <method vm="send_event" />
         </parameters>
       </method>
     </interface>
-    <interface name="GstPropertyProbe" cname="GstPropertyProbe">
+    <interface name="PropertyProbe" cname="GstPropertyProbe">
       <class_struct cname="GstPropertyProbeInterface">
         <field name="Klass" cname="klass" type="GTypeInterface" />
         <method vm="probe_needed" />
         </parameters>
       </method>
     </interface>
-    <interface name="GstTuner" cname="GstTuner">
+    <interface name="Tuner" cname="GstTuner">
       <class_struct cname="GstTunerClass">
         <field name="Klass" cname="klass" type="GTypeInterface" />
         <method vm="list_channels" />
         </parameters>
       </method>
     </interface>
-    <interface name="GstVideoOrientation" cname="GstVideoOrientation">
+    <interface name="VideoOrientation" cname="GstVideoOrientation">
       <class_struct cname="GstVideoOrientationInterface">
         <field name="Parent" cname="parent" type="GTypeInterface" />
         <method vm="get_hflip" />
         </parameters>
       </method>
     </interface>
-    <interface name="GstXOverlay" cname="GstXOverlay">
+    <interface name="XOverlay" cname="GstXOverlay">
       <class_struct cname="GstXOverlayClass">
         <field name="Klass" cname="klass" type="GTypeInterface" />
         <method vm="set_xwindow_id" />
         </parameters>
       </method>
     </interface>
-    <object name="GstColorBalanceChannel" cname="GstColorBalanceChannel" parent="GObject">
+    <object name="ColorBalanceChannel" cname="GstColorBalanceChannel" parent="GObject">
       <class_struct cname="GstColorBalanceChannelClass">
         <field name="Parent" cname="parent" type="GObjectClass" />
         <method signal_vm="value_changed" />
         <return-type type="GType" />
       </method>
     </object>
-    <object name="GstMixerOptions" cname="GstMixerOptions" parent="GstMixerTrack">
+    <object name="MixerOptions" cname="GstMixerOptions" parent="GstMixerTrack">
       <class_struct cname="GstMixerOptionsClass">
         <field name="Parent" cname="parent" type="GstMixerTrackClass" />
         <method signal_vm="option_changed" />
         </parameters>
       </method>
     </object>
-    <object name="GstMixerTrack" cname="GstMixerTrack" parent="GObject">
+    <object name="MixerTrack" cname="GstMixerTrack" parent="GObject">
       <class_struct cname="GstMixerTrackClass">
         <field name="Parent" cname="parent" type="GObjectClass" />
         <method signal_vm="mute_toggled" />
         <return-type type="GType" />
       </method>
     </object>
-    <object name="GstTunerChannel" cname="GstTunerChannel" parent="GObject">
+    <object name="TunerChannel" cname="GstTunerChannel" parent="GObject">
       <class_struct cname="GstTunerChannelClass">
         <field name="Parent" cname="parent" type="GObjectClass" />
         <method signal_vm="frequency_changed" />
         <return-type type="GType" />
       </method>
     </object>
-    <object name="GstTunerNorm" cname="GstTunerNorm" parent="GObject">
+    <object name="TunerNorm" cname="GstTunerNorm" parent="GObject">
       <class_struct cname="GstTunerNormClass">
         <field name="Parent" cname="parent" type="GObjectClass" />
         <field name="GstReserved" cname="_gst_reserved" type="gpointer" array_len="GST_PADDING" />
       </method>
     </object>
   </namespace>
-</api>
+</api>
\ No newline at end of file
index b5d4cc0..303af1f 100755 (executable)
@@ -32,6 +32,9 @@ if (!$ARGV[2]) {
 }
 
 $ns = $ARGV[0];
+$ns_main = $ns;
+$ns_main =~ s/\..*//g;
+
 $libname = $ARGV[2];
 
 # Used by name mangling sub
@@ -231,7 +234,7 @@ foreach $cname (sort(keys(%edefs))) {
        $def = $edefs{$cname};
        $cname = $etypes{$cname} if (exists($etypes{$cname}));
        $enums{lc($cname)} = $cname;
-       $enum_elem = addNameElem($ns_elem, 'enum', $cname, $ns);
+       $enum_elem = addNameElem($ns_elem, 'enum', $cname, $ns_main);
        if ($def =~ /^deprecated/) {
                $enum_elem->setAttribute("deprecated", "1");
                $def =~ s/deprecated//g;
@@ -296,7 +299,7 @@ foreach $cbname (sort(keys(%fpdefs))) {
        next if ($cbname =~ /^_/);
        $cbcnt++;
        $fdef = $cb = $fpdefs{$cbname};
-       $cb_elem = addNameElem($ns_elem, 'callback', $cbname, $ns);
+       $cb_elem = addNameElem($ns_elem, 'callback', $cbname, $ns_main);
        $cb =~ /typedef\s+(.*)\(.*\).*\((.*)\);/;
        $ret = $1; $params = $2;
        addReturnElem($cb_elem, $ret);
@@ -318,7 +321,7 @@ foreach $type (sort(keys(%ifaces))) {
        delete $types{$inst};
        
        $ifacecnt++;
-       $iface_el = addNameElem($ns_elem, 'interface', $inst, $ns);
+       $iface_el = addNameElem($ns_elem, 'interface', $inst, $ns_main);
 
        $elem_table{lc($inst)} = $iface_el;
 
@@ -355,7 +358,7 @@ foreach $type (sort(keys(%objects))) {
        warn "Strange Class $inst\n" if (!$instdef && $debug);
 
        $classcnt++;
-       $obj_el = addNameElem($ns_elem, 'object', $inst, $ns);
+       $obj_el = addNameElem($ns_elem, 'object', $inst, $ns_main);
 
        $elem_table{lc($inst)} = $obj_el;
 
@@ -424,7 +427,7 @@ foreach $key (sort (keys (%types))) {
        } elsif ($types{$type} =~ /struct/ && $type =~ /^$ns/) {
                $def = $types{$type};
        } else {
-               $elem = addNameElem($ns_elem, 'alias', $key, $ns);
+               $elem = addNameElem($ns_elem, 'alias', $key, $ns_main);
                $elem->setAttribute('type', $lasttype);
                warn "alias $key to $lasttype\n" if $debug;
                next;
@@ -432,11 +435,11 @@ foreach $key (sort (keys (%types))) {
 
        # fixme: hack
        if ($key eq "GdkBitmap") {
-               $struct_el = addNameElem($ns_elem, 'object', $key, $ns);
+               $struct_el = addNameElem($ns_elem, 'object', $key, $ns_main);
        } elsif (exists($boxdefs{$key})) {
-               $struct_el = addNameElem($ns_elem, 'boxed', $key, $ns);
+               $struct_el = addNameElem($ns_elem, 'boxed', $key, $ns_main);
        } else {
-               $struct_el = addNameElem($ns_elem, 'struct', $key, $ns);
+               $struct_el = addNameElem($ns_elem, 'struct', $key, $ns_main);
        }
 
        if ($def =~ /^deprecated/) {
@@ -459,7 +462,7 @@ foreach $key (sort (keys (%types))) {
 foreach $key (sort (keys (%ptrs))) {
        next if $ptrs{$key} !~ /struct\s+(\w+)/;
        $type = $1;
-       $struct_el = addNameElem ($ns_elem, 'struct', $key, $ns);
+       $struct_el = addNameElem ($ns_elem, 'struct', $key, $ns_main);
        $struct_el->setAttribute('opaque', 'true');
        $elem_table{lc($key)} = $struct_el;
 }
@@ -761,6 +764,8 @@ sub addStaticFuncElems
 
        $ns_prefix = "";
        $global_el = "";
+       $ns_clean = lc($ns);
+       $ns_clean =~ s/\.//g;
 
        for ($i = 0; $i < $mcount; $i++) {
                $mname = $mnames[$i];
@@ -770,7 +775,7 @@ sub addStaticFuncElems
                if ($ns_prefix eq "") {
                        my (@toks) = split(/_/, $prefix);
                        for ($j = 0; $j < @toks; $j++) {
-                               if (join ("", @toks[0 .. $j]) eq lc($ns)) {
+                               if (join ("", @toks[0 .. $j]) eq $ns_clean) {
                                        $ns_prefix = join ("_", @toks[0 .. $j]);
                                        last;
                                }
@@ -885,7 +890,7 @@ sub addParamsElem
                if ($parm =~ /(.*)\(\s*\**\s*(\w+)\)\s+\((.*)\)/) {
                        my $ret = $1; my $cbn = $2; my $params = $3;
                        my $type = $parent->getAttribute('name') . StudlyCaps($cbn);
-                       $cb_elem = addNameElem($ns_elem, 'callback', $type, $ns);
+                       $cb_elem = addNameElem($ns_elem, 'callback', $type, $ns_main);
                        addReturnElem($cb_elem, $ret);
                        if ($params && ($params ne "void")) {
                                addParamsElem($cb_elem, split(/,/, $params));