#ifndef SAMPLE_H
#define	SAMPLE_H

#define FALSE  0

#ifndef TRUE
	#define TRUE  !FALSE
#endif

#define SILENT 0
#define	QUIETE 1
#define VERBOSE 2
#define DEBUG 3

#define AE_ID 0
#define AE_NAME 1
#define AE_TYPE 2
#define MDE_MSG_ID 3
#define MDE_MSG_ID_TYPE 4
#define MDE_MSG_CATALOG 5
#define MDE_MSG_CATALOG_ID 6
#define MDE_MSG_CATALOG_TOKENS 7
#define MDE_MSG_CATALOG_TYPE 8
#define MDE_MSG_LOCALE 9
#define AEVT_ASSOC_ENGINE 10
#define AEVT_ASSOC_ENGINE_INFO 11
#define AEVT_RESOVLED_EVENTS 12
#define CI_LOCATION 13
#define CI_LOCATION_TYPE 14
#define CI_APPLICATION 15
#define CI_EXECUTION_ENVIRONMENT 16
#define CI_COMPONENT 17
#define CI_SUB_COMPONENT 18
#define CI_COMPONENT_ID_TYPE 19
#define CI_INSTANCE_ID 20
#define CI_PROCESS_ID 21
#define CI_THREAD_ID 22
#define CI_COMPONENT_TYPE 23
#define CDE_CONTEXT_ID 24
#define CDE_TYPE 25
#define CDE_NAME 26
#define CDE_CONTEXT_VALUE 27
#define EDE_NAME 28
#define EDE_TYPE 29
#define EDE_VALUES 30
#define EDE_HEXVALUE 31
#define EDE_CHILDREN 32
#define ST_TYPE 33
#define ST_REASONING_SCOPE 34
#define ST_SUCCESS_DISPOSITION 35
#define ST_SITUATION_QUALIFIER 36
#define ST_SITUATION_DISPOSITION 37
#define ST_REPORT_CATEGORY 38
#define ST_DEPENDENCY_DISPOSITION 39
#define ST_OPERATION_DISPOSITION 40
#define ST_PROCESSING_DISPOSITION 41
#define ST_AVAILABILITY_DISPOSITION 42
#define ST_ANY_TYPE 43
#define S_CATEGORY_NAME 44
#define S_SITUATION_TYPE 45
#define CBEVT_VERSION 46
#define CBEVT_LOCAL_INSTANCE_ID 47
#define CBEVT_GLOBAL_INSTANCE_ID 48
#define CBEVT_CREATION_TIME 49
#define CBEVT_SEVERITY 50
#define CBEVT_PRIORITY 51
#define CBEVT_REPORTER_COMP_ID 52
#define CBEVT_SOURCE_COMP_ID 53
#define CBEVT_SITUATION 54
#define CBEVT_CONT_DATA_ELEMS 55
#define CBEVT_MSG_DATA_ELEM 56
#define CBEVT_MSG 57
#define CBEVT_REPEAT_COUNT 58
#define CBEVT_ELAPSED_TIME 59
#define CBEVT_ASSOCIATED_EVENTS 60
#define CBEVT_EXT_NAME 61
#define CBEVT_EXTD_DATA_ELEMS 62
#define CBEVT_SEQUENCE_NUM 63
#define CBEVT_ANY 64
#define TOTAL_ATTR_COUNT 65


char* msg[] = {
	"AssociationEngine ID Setter/Getter",                    /* AE_ID 0 */
	"AssociationEngine Name Setter/Getter",                  /* AE_NAME 1 */
	"AssociationEngine Type Setter/Getter",                  /* AE_TYPE 2 */
	"MsgDataElement MsgID Setter/Getter",                    /* MDE_MSG_ID 3 */
	"MsgDataElement MsgIdType Setter/Getter",                /* MDE_MSG_ID_TYPE 4 */
	"MsgDataElement MsgCatalog Setter/Getter",               /* MDE_MSG_CATALOG 5 */
	"MsgDataElement MsgCatalogId Setter/Getter",             /* MDE_MSG_CATALOG_ID 6 */
    "MsgDataElement MsgCatalogTokens Setter/Getter",         /* MDE_MSG_CATALOG_TOKENS 7 */
	"MsgDataElement MsgCatalogType Setter/Getter",           /* MDE_MSG_CATALOG_TYPE 8 */
	"MsgDataElement MsgLocale Setter/Getter",				   /* MDE_MSG_LOCALE 9 */
	"AssociatedEvent Association Engine Setter/Getter",      /* AEVT_ASSOC_ENGINE 10 */
	"AssociatedEvent Association Engine Info Setter/Getter", /* AEVT_ASSOC_ENGINE_INFO 11 */
	"AssociatedEvent Resolved Events Setter/Getter",         /* AEVT_RESOVLED_EVENTS 12 */
	"ComponentIdentification Location Setter/Getter",        /* CI_LOCATION 13 */
	"ComponentIdentification Location Type Setter/Getter",   /* CI_LOCATION_TYPE 14 */
	"ComponentIdentification Application Setter/Getter",     /* CI_APPLICATION 15 */
	"ComponentIdentification Exec. Env. Setter/Getter",      /* CI_EXECUTION_ENVIRONMENT 16 */
	"ComponentIdentification Component Setter/Getter",       /* CI_COMPONENT 17 */
	"ComponentIdentification Sub Component Setter/Getter",   /* CI_SUB_COMPONENT 18 */
	"ComponentIdentification Comp Id Type Setter/Getter",    /* CI_COMPONENT_ID_TYPE 19 */
	"ComponentIdentification Instance Id Setter/Getter",     /* CI_INSTANCE_ID 20 */
	"ComponentIdentification Process Id Setter/Getter",      /* CI_PROCESS_ID 21 */
	"ComponentIdentification Thread Id Setter/Getter",       /* CI_THREAD_ID 22 */
	"ComponentIdentification Component Type Setter/Getter",  /* CI_COMPONENT_TYPE 23 */
	"ContextDataElement Context ID Setter/Getter",           /* CDE_CONTEXT_ID 24 */
	"ContextDataElement Type Setter/Getter",                 /* CDE_TYPE 25 */
	"ContextDataElement Name Setter/Getter",                 /* CDE_NAME 26 */
	"ContextDataElement Context Value Setter/Getter",        /* CDE_CONTEXT_VALUE 27 */
	"ExtendedDataElement Name Setter/Getter",                /* EDE_NAME 28 */
	"ExtendedDataElement Type Setter/Getter",                /* EDE_TYPE 29 */
	"ExtendedDataElement Values Setter/Getter",              /* EDE_VALUES 30 */
    "ExtendedDataElement HexValue Setter/Getter",            /* EDE_HEXVALUE 31 */
    "ExtendedDataElement Children Setter/Getter",            /* EDE_CHILDREN 32 */
    "SituationType Type Setter/Getter",                      /* ST_TYPE 33 */
    "SituationType Reasoning Scope Setter/Getter",           /* ST_REASONING_SCOPE 34 */
	"SituationType Success Disposition Setter/Getter",       /* ST_SUCCESS_DISPOSITION 35 */
	"SituationType Situation Qualifier Setter/Getter",       /* ST_SITUATION_QUALIFIER 36 */
	"SituationType Situation Disposition Setter/Getter",     /* ST_SITUATION_DISPOSITION 37 */
	"SituationType Report Category Setter/Getter",           /* ST_REPORT_CATEGORY 38 */
	"SituationType Dependency Disposition Setter/Getter",    /* ST_DEPENDENCY_DISPOSITION 39 */
	"SituationType Operation Disposition Setter/Getter",     /* ST_OPERATION_DISPOSITION 40 */
	"SituationType Processing Disposition Setter/Getter",    /* ST_PROCESSING_DISPOSITION 41 */
	"SituationType Availability Disposition Setter/Getter",  /* ST_AVAILABILITY_DISPOSITION 42 */
	"SituationType Any Type Setter/Getter",                  /* ST_ANY_TYPE 43 */
	"Situation CategoryName Setter/Getter",                  /* S_CATEGORY_NAME 44 */
	"Situation Type Setter/Getter",                          /* S_SITUATION_TYPE 45 */
	"CommonBaseEvent Version Setter/Getter",                 /* CBEVT_VERSION 46 */
	"CommonBaseEvent Local Instance Id Setter/Getter",       /* CBEVT_LOCAL_INSTANC_ID 47 */
	"CommonBaseEvent Global Instance Id Setter/Getter",      /* CBEVT_GLOBAL_INSTANCE_ID 48 */
	"CommonBaseEvent Creation Time Setter/Getter",           /* CBEVT_CREATION_TIME 49 */
	"CommonBaseEvent Severity Setter/Getter",                /* CBEVT_SEVERITY 50 */
	"CommonBaseEvent Priority Setter/Getter",                /* CBEVT_PRIORITY 51 */
	"CommonBaseEvent Reporter Comp Id Setter/Getter",        /* CBEVT_REPORTER_COMP_ID 52 */
	"CommonBaseEvent Source Comp Id Setter/Getter",          /* CBEVT_SOURCE_COMP_ID 53 */
	"CommonBaseEvent Situation Setter/Getter",               /* CBEVT_SITUATION 54 */
	"CommonBaseEvent ContextDataElements Setter/Getter",     /* CBEVT_CONT_DATA_ELEMS 55 */
	"CommonBaseEvent MsgDataElement Setter/Getter",          /* CBEVT_MSG_DATA_ELEM 56 */
	"CommonBaseEvent Msg Setter/Getter",                     /* CBEVT_MSG 57 */
	"CommonBaseEvent RepeatCount Setter/Getter",             /* CBEVT_REPEAT_COUNT 58 */
	"CommonBaseEvent ElapsedTime Setter/Getter",             /* CBEVT_ELAPSED_TIME 59 */
	"CommonBaseEvent AssociatedEvents Setter/Getter",        /* CBEVT_ASSOCIATED_EVENTS 60 */
	"CommonBaseEvent Extension Name Setter/Getter",          /* CBEVT_EXT_NAME 61 */
	"CommonBaseEvent ExtendedDataElements Setter/Getter",    /* CBEVT_EXTD_DATA_ELEMS 62 */
	"CommonBaseEvent Sequence Number Setter/Getter"          /* CBEVT_SEQUENCE_NUM 63 */
    "CommonBaseEvent Any Setter/Getter"                      /* CBEVT_ANY 64 */
};



void init();
void usage(void);
void parseArgs(int, char**);
void summary();
void CommonBaseEvent_TestSerializing(char*);
void CommonBaseEvent_TestDeserializing(char*, char*);
char* loadXMLFileToCanonicalString(char* file);

#endif












