#ifndef REPLXX_ESCAPE_HXX_INCLUDED
#define REPLXX_ESCAPE_HXX_INCLUDED 1

namespace replxx {

namespace EscapeSequenceProcessing {

// This is a typedef for the routine called by doDispatch().	It takes the
// current character
// as input, does any required processing including reading more characters and
// calling other
// dispatch routines, then eventually returns the final (possibly extended or
// special) character.
//
typedef char32_t (*CharacterDispatchRoutine)(char32_t);

// This structure is used by doDispatch() to hold a list of characters to test
// for and
// a list of routines to call if the character matches.	The dispatch routine
// list is one
// longer than the character list; the final entry is used if no character
// matches.
//
struct CharacterDispatch {
	unsigned int len;                   // length of the chars list
	const char* chars;                  // chars to test
	CharacterDispatchRoutine* dispatch; // array of routines to call
};

char32_t doDispatch(char32_t c);

}

}

#endif