/*
    GDAM - Geoff & Dave's Audio Mixer
    Copyright (C) 1999    Dave Benson, Geoff Matters.

    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

    Contact:
        daveb@ffem.org <Dave Benson>
        geoff@ugcs.caltech.edu <Geoff Matters>
*/

#ifndef __GDAM_BINDING_FILE_H_
#define __GDAM_BINDING_FILE_H_

#include <gnome-xml/tree.h>
#include "gdammodel.h"
#include "gdaminputevent.h"

typedef struct _GdamBindingNodeTypeInfo {
   const char          *node_name;
   gboolean           (*parse)       (xmlNode *node, GtkObject *object);
} GdamBindingNodeTypeInfo;

gboolean gdam_binding_file_node_type_register (GdamBindingNodeTypeInfo *info);
GList *gdam_binding_file_node_type_list ();

/* XXX this file [and functions] must be renamed... */

gboolean gdam_binding_parse_range_xml_node    (xmlNode       *range_node,
                                               GtkObject     *object);
gboolean gdam_binding_parse_constant_xml_node (xmlNode       *range_node,
                                               GtkObject     *object);
gboolean gdam_binding_parse_variable_xml_node (xmlNode*       var_node,
                                               GtkObject     *object);
GdamInputEvent *parse_input_event	      (xmlNode 	     *node);

/* Under `Gdam-Binding-Interface' */
gboolean gdam_binding_file_process    (xmlNode*      nodes, 
                                       GdamModel*    model);

/* Under `Gdam-Trap-Descriptions' */
gboolean gdam_description_file_process(xmlNode*      xml_node);
#endif
