1999-09-27 18:44:28 +00:00
|
|
|
// -*- C++ -*-
|
|
|
|
#ifndef _Trans_h_
|
|
|
|
#define _Trans_h_
|
|
|
|
|
|
|
|
#ifdef __GNUG__
|
|
|
|
#pragma interface
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "tex-accent.h"
|
|
|
|
#include "LString.h"
|
|
|
|
#include "trans_decl.h"
|
|
|
|
|
|
|
|
class LyXLex;
|
|
|
|
|
|
|
|
class TransManager;
|
|
|
|
|
|
|
|
/**
|
|
|
|
TransInterface: the interface that every translation class
|
|
|
|
should obey too.
|
|
|
|
Visitor pattern applied here
|
|
|
|
*/
|
|
|
|
class TransInterface {
|
|
|
|
public:
|
|
|
|
///
|
1999-10-02 16:21:10 +00:00
|
|
|
virtual string process(char,TransManager&)=0;
|
1999-09-27 18:44:28 +00:00
|
|
|
///
|
|
|
|
virtual bool isAccentDefined(tex_accent,KmodInfo&)=0;
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
DefaultTrans: the default translation class. Hols info
|
|
|
|
on tex-accents. Monostate
|
|
|
|
*/
|
|
|
|
class DefaultTrans: public TransInterface {
|
|
|
|
private:
|
|
|
|
///
|
|
|
|
static bool init_;
|
|
|
|
public:
|
|
|
|
///
|
|
|
|
DefaultTrans();
|
|
|
|
///
|
1999-10-02 16:21:10 +00:00
|
|
|
virtual string process(char,TransManager&);
|
1999-09-27 18:44:28 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
Trans: holds a .kmap file
|
|
|
|
*/
|
|
|
|
class Trans:public TransInterface {
|
|
|
|
public:
|
|
|
|
///
|
|
|
|
Trans();
|
|
|
|
///
|
|
|
|
virtual ~Trans();
|
|
|
|
|
|
|
|
///
|
1999-10-02 16:21:10 +00:00
|
|
|
int Load(string const &language);
|
1999-09-27 18:44:28 +00:00
|
|
|
///
|
|
|
|
bool IsDefined();
|
|
|
|
///
|
1999-10-02 16:21:10 +00:00
|
|
|
const string& GetName();
|
1999-09-27 18:44:28 +00:00
|
|
|
///
|
1999-10-02 16:21:10 +00:00
|
|
|
string process(char,TransManager&);
|
1999-09-27 18:44:28 +00:00
|
|
|
///
|
|
|
|
bool isAccentDefined(tex_accent,KmodInfo&);
|
|
|
|
|
|
|
|
private:
|
|
|
|
///
|
|
|
|
typedef KmodInfo kmod_list_decl;
|
|
|
|
///
|
|
|
|
typedef KmodException keyexc;
|
|
|
|
|
|
|
|
///
|
1999-10-02 16:21:10 +00:00
|
|
|
void AddDeadkey(tex_accent, const string&, const string&);
|
1999-09-27 18:44:28 +00:00
|
|
|
///
|
|
|
|
void FreeKeymap();
|
|
|
|
///
|
|
|
|
int Load(LyXLex &);
|
|
|
|
///
|
|
|
|
inline char* Match(char c);
|
|
|
|
///
|
|
|
|
void InsertException(keyexc &exclist, char c,
|
1999-10-02 16:21:10 +00:00
|
|
|
const string& data, bool = false,
|
1999-09-27 18:44:28 +00:00
|
|
|
tex_accent = TEX_NOACCENT);
|
|
|
|
///
|
|
|
|
void FreeException(keyexc& exclist);
|
|
|
|
|
|
|
|
///
|
1999-10-02 16:21:10 +00:00
|
|
|
string name_;
|
1999-09-27 18:44:28 +00:00
|
|
|
///
|
|
|
|
char *keymap_[256];
|
|
|
|
///
|
|
|
|
kmod_list_decl *kmod_list_[TEX_MAX_ACCENT+1];
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
char* Trans::Match(char c)
|
|
|
|
{
|
|
|
|
return keymap_[(unsigned char)c];
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|