289 lines
9.9 KiB
C
289 lines
9.9 KiB
C
|
/*---------------------------------------------------------------------------------*/
|
||
|
/* Includes */
|
||
|
/*---------------------------------------------------------------------------------*/
|
||
|
|
||
|
#ifndef _DRUMMER_H_
|
||
|
#define _DRUMMER_H_
|
||
|
|
||
|
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <string.h>
|
||
|
#include <stdarg.h>
|
||
|
#include <ctype.h>
|
||
|
|
||
|
#include <glob.h>
|
||
|
|
||
|
#include <libxml/tree.h>
|
||
|
#include <libxml/parser.h>
|
||
|
#include <libxml/xpath.h>
|
||
|
#include <libxml/xpathInternals.h>
|
||
|
#include <assert.h>
|
||
|
|
||
|
#include <node.h>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
/* Global definitions */
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
|
||
|
typedef short DRT_Boolean;
|
||
|
|
||
|
#define DRD_FALSE ( DRT_Boolean) 0
|
||
|
#define DRD_TRUE ( DRT_Boolean) 1
|
||
|
|
||
|
#define DRD_NO 'n'
|
||
|
#define DRD_YES 'y'
|
||
|
|
||
|
#define DRD_MAX(A,B) (((A) < (B)) ? (B) : (A))
|
||
|
#define DRD_MIN(A,B) (((A) > (B)) ? (B) : (A))
|
||
|
|
||
|
#define NDD_CMD_INDEX0_PRINT ( NDT_Command) 65
|
||
|
#define NDD_CMD_INDEX1_PRINT ( NDT_Command) 66
|
||
|
|
||
|
#define NAME_LEN (short) 256
|
||
|
#define NAME_SIZE (NAME_LEN + 1)
|
||
|
#define FILENAME_LEN (short) 1024
|
||
|
#define FILENAME_SIZE (FILENAME_LEN)
|
||
|
#define DESC_LEN (short) 2048
|
||
|
#define DESC_SIZE (DESC_LEN + 1)
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
/* Status definition */
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
|
||
|
typedef short DRT_Status;
|
||
|
|
||
|
#define DRS_OK ( DRT_Status) 0
|
||
|
|
||
|
#define DRS_KO ( DRT_Status) 1
|
||
|
#define DRS_NO_IDENT ( DRT_Status) -2
|
||
|
#define DRS_BAD_FORMAT ( DRT_Status) -3
|
||
|
#define DRS_ROLLBACK ( DRT_Status) -4
|
||
|
|
||
|
#define DRS_NO_DATA ( DRT_Status) 3
|
||
|
#define DRS_SIGNAL ( DRT_Status) 4
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
/* Kit_DS Indexes */
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
|
||
|
#define DRD_INSTRUMENT_DS_INDEX_NB (short)2
|
||
|
|
||
|
static NDT_Index_Type DRG_Instrument_DS_Index_Tab_Initial[DRD_INSTRUMENT_DS_INDEX_NB] =
|
||
|
{
|
||
|
(NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_LIST | NDD_INDEX_SUBTYPE_SORTED),
|
||
|
(NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_LIST | NDD_INDEX_SUBTYPE_SORTED)
|
||
|
};
|
||
|
|
||
|
static NDT_Index_Type DRG_Instrument_DS_Index_Tab_Final[DRD_INSTRUMENT_DS_INDEX_NB] =
|
||
|
{
|
||
|
(NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_TREE | NDD_INDEX_SUBTYPE_BALANCED),
|
||
|
(NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_TREE | NDD_INDEX_SUBTYPE_BALANCED)
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
/* Kit_DS Indexes */
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
|
||
|
#define DRD_KIT_DS_INDEX_NB (short)2
|
||
|
|
||
|
static NDT_Index_Type DRG_Kit_DS_Index_Tab_Initial[DRD_KIT_DS_INDEX_NB] =
|
||
|
{
|
||
|
(NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_LIST | NDD_INDEX_SUBTYPE_SORTED),
|
||
|
(NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_LIST | NDD_INDEX_SUBTYPE_SORTED)
|
||
|
};
|
||
|
|
||
|
static NDT_Index_Type DRG_Kit_DS_Index_Tab_Final[DRD_KIT_DS_INDEX_NB] =
|
||
|
{
|
||
|
(NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_TREE | NDD_INDEX_SUBTYPE_BALANCED),
|
||
|
(NDD_INDEX_STATUS_OPENED | NDD_INDEX_TYPE_TREE | NDD_INDEX_SUBTYPE_BALANCED)
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------------*/
|
||
|
/* XML XPATH Tags */
|
||
|
/*---------------------------------------------------------------------------------*/
|
||
|
|
||
|
#define STR(A) #A
|
||
|
#define TAG(A) STR(A)
|
||
|
|
||
|
#define XML_XPATH_ELEMENT(A) *[local-name()=(A)]
|
||
|
|
||
|
#define XML_XPATH_DRUMKIT_BASE_TAG XML_XPATH_ELEMENT('drumkit_info')
|
||
|
#define XML_XPATH_DRUMKIT_NAME_TAG XML_XPATH_ELEMENT('name')
|
||
|
#define XML_XPATH_DRUMKIT_INFO_TAG XML_XPATH_ELEMENT('info')
|
||
|
#define XML_XPATH_DRUMKIT_INSTRUMENTLIST_TAG XML_XPATH_ELEMENT('instrumentList')
|
||
|
#define XML_XPATH_DRUMKIT_INSTRUMENT_TAG XML_XPATH_ELEMENT('instrument')
|
||
|
#define XML_XPATH_DRUMKIT_ID_TAG XML_XPATH_ELEMENT('id')
|
||
|
#define XML_XPATH_DRUMKIT_INSTRUMENTCOMPONENT_TAG XML_XPATH_ELEMENT('instrumentComponent')
|
||
|
#define XML_XPATH_DRUMKIT_LAYER_TAG XML_XPATH_ELEMENT('layer')
|
||
|
#define XML_XPATH_DRUMKIT_FILENAME_TAG XML_XPATH_ELEMENT('filename')
|
||
|
|
||
|
#define XML_XPATH_DRUMKIT_BASE_STR TAG(/XML_XPATH_DRUMKIT_BASE_TAG)
|
||
|
#define XML_XPATH_DRUMKIT_ID_STR TAG(/XML_XPATH_DRUMKIT_ID_TAG)
|
||
|
#define XML_XPATH_DRUMKIT_NAME_STR TAG(/XML_XPATH_DRUMKIT_NAME_TAG)
|
||
|
#define XML_XPATH_DRUMKIT_LAYER_FILENAME_STR TAG(/XML_XPATH_DRUMKIT_INSTRUMENTCOMPONENT_TAG/XML_XPATH_DRUMKIT_LAYER_TAG[1]/XML_XPATH_DRUMKIT_FILENAME_TAG)
|
||
|
|
||
|
#define XML_XPATH_DRUMKIT_KIT_NAME_FULL TAG(/XML_XPATH_DRUMKIT_BASE_TAG/XML_XPATH_DRUMKIT_NAME_TAG)
|
||
|
#define XML_XPATH_DRUMKIT_KIT_INFO_FULL TAG(/XML_XPATH_DRUMKIT_BASE_TAG/XML_XPATH_DRUMKIT_INFO_TAG)
|
||
|
#define XML_XPATH_DRUMKIT_INSTRUMENT_FULL TAG(/XML_XPATH_DRUMKIT_BASE_TAG/XML_XPATH_DRUMKIT_INSTRUMENTLIST_TAG/XML_XPATH_DRUMKIT_INSTRUMENT_TAG[%i])
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------------*/
|
||
|
/* TypeDefs */
|
||
|
/*---------------------------------------------------------------------------------*/
|
||
|
|
||
|
typedef struct DRT_Instrument
|
||
|
{
|
||
|
short Id;
|
||
|
char Name[ NAME_SIZE];
|
||
|
char FileName[ FILENAME_SIZE];
|
||
|
double Gain;
|
||
|
char *Sample_Ptr;
|
||
|
long Sample_Size;
|
||
|
} DRT_Instrument;
|
||
|
|
||
|
|
||
|
|
||
|
typedef struct DRT_Kit
|
||
|
{
|
||
|
short Id;
|
||
|
char Name[ NAME_SIZE];
|
||
|
char Desc[ DESC_SIZE];
|
||
|
char FileName[ FILENAME_SIZE];
|
||
|
NDT_Root *Instrument_DS_Ptr;
|
||
|
} DRT_Kit;
|
||
|
|
||
|
|
||
|
/*
|
||
|
typedef struct DRT_Library
|
||
|
{
|
||
|
NDT_Root *Kit_DS;
|
||
|
} DRT_Library;
|
||
|
*/
|
||
|
|
||
|
|
||
|
typedef struct DRT_Base
|
||
|
{
|
||
|
NDT_Root *Kit_DS_Ptr;
|
||
|
} DRT_Base;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
/* Prototypes */
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
|
||
|
/*---------------------------------------------------------------------------------*/
|
||
|
/* DS Managers */
|
||
|
/*---------------------------------------------------------------------------------*/
|
||
|
|
||
|
NDT_Status DR_Instrument_Manager( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list *);
|
||
|
NDT_Status DR_Kit_Manager( NDT_Root *, NDT_Index_Id, NDT_Node *, NDT_Command, va_list *);
|
||
|
|
||
|
|
||
|
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
/* DR_Instrument_Add */
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
|
||
|
DRT_Status DR_Instrument_Add( DRT_Instrument **, NDT_Root *, char *, char *, double, char *, long);
|
||
|
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------------*/
|
||
|
/* DR_Instrument_Dump */
|
||
|
/*---------------------------------------------------------------------------------*/
|
||
|
|
||
|
DRT_Status DR_Instrument_Dump( DRT_Instrument *, long);
|
||
|
|
||
|
|
||
|
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
/* DR_Kit_Add */
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
|
||
|
DRT_Status DR_Kit_Add( DRT_Kit **, NDT_Root *, char *, char *, char *);
|
||
|
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------------*/
|
||
|
/* DR_Kit_Dump */
|
||
|
/*---------------------------------------------------------------------------------*/
|
||
|
|
||
|
DRT_Status DR_Kit_Dump( DRT_Kit *, long);
|
||
|
|
||
|
|
||
|
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
/* DR_Kits_Load */
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
|
||
|
DRT_Status DRT_Kits_Load( DRT_Base *);
|
||
|
|
||
|
|
||
|
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
/* DR_Kits_Dump */
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
|
||
|
DRT_Status DRT_Kits_Dump( DRT_Base *);
|
||
|
|
||
|
|
||
|
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
/* DR_Init */
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
|
||
|
DRT_Status DRT_Init( DRT_Base *);
|
||
|
|
||
|
|
||
|
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
/* DeInit */
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
|
||
|
DRT_Status DRT_DeInit( DRT_Base *);
|
||
|
|
||
|
|
||
|
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
/* main */
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
/* ArgC: argument number */
|
||
|
/* ArgV: Argument tab */
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
|
||
|
int main( int, char **);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
|
||
|
#endif
|