//typedef 
/*
struct dioName {
	uint8 dionum;
	char name[8];
} 
//dioName
;
*/

typedef struct Map {
  uint8 *key;
  uint32 val;
} Map;

//extern dioName *dioNames;
//extern int numDioNames;
#define Type Map
#define MapNull {0,0}
#include "array2.hh"
#undef Type
int MapCompareKey(Map a,Map b);

extern Map *DIOMapNamePin;

/*
int getCNfromDIO(int *dio_arch,int dio);
void initDioName(int *dio_arch,int dionum,char *name,int namenum);
void initDioNames(int *dio_arch,int diobase,int n,char *name);
char *getDioNameFromNumber(int num);
int getDioNumFromName(char *name);
void DumpDioInfo();
void addDioName(int dionum,char *name);
void delDioName(char *name);
*/

dioName *dioNames_New();
void dioNames_Free(dioName *dptr);
int dioNames_LookupName(dioName *dptr,char *name);
char *dioNames_LookupNum(dioName *dptr,int num);
void dioNames_Queue(dioName *dptr,int dionum,char *name);
void dioNames_Remove(dioName *dptr,char *name);

#define dioNameLen(dnptr) ((unsigned *)dnptr)[-1]
#define dioNameAPtr(bptr) (((unsigned *)bptr)-1)
#define dioNameBPtr(aptr) ((dioName *)(((unsigned *)aptr)+1))

/*
  Author: Michael Schmidt (michael@embeddedARM.com)
 */
