// -*- C++ -*-
-#ifndef _Trans_h_
-#define _Trans_h_
+/**
+ * \file trans.h
+ * Copyright 2002 the LyX Team
+ * Read the file COPYING
+ *
+ * \author unknown
+ */
+
+#ifndef TRANS_H
+#define TRANS_H
-#ifdef __GNUG__
-#pragma interface
-#endif
+#include <map>
#include "tex-accent.h"
#include "LString.h"
class TransManager;
/**
- TransInterface: the interface that every translation class
- should obey too.
- Visitor pattern applied here
- */
-class TransInterface {
-public:
- ///
- virtual string process(char,TransManager&)=0;
- ///
- virtual bool isAccentDefined(tex_accent,KmodInfo&)=0;
-};
-
-/**
- DefaultTrans: the default translation class. Hols info
- on tex-accents. Monostate
+ Trans: holds a .kmap file
*/
-class DefaultTrans: public TransInterface {
-private:
- ///
- static bool init_;
-public:
- ///
- DefaultTrans();
- ///
- virtual string process(char,TransManager&);
-};
-
-
-/**
- Trans: holds a .kmap file
- */
-class Trans:public TransInterface {
+class Trans {
public:
///
Trans();
///
- virtual ~Trans();
+ ~Trans();
///
- int Load(string const &language);
+ int Load(string const & language);
///
- bool IsDefined();
+ bool IsDefined() const;
///
- const string& GetName();
+ string const & GetName() const;
///
- string process(char,TransManager&);
+ string const process(char, TransManager &);
///
- bool isAccentDefined(tex_accent,KmodInfo&);
-
+ bool isAccentDefined(tex_accent, KmodInfo &) const;
+
private:
///
- typedef KmodInfo kmod_list_decl;
- ///
- typedef KmodException keyexc;
-
- ///
- void AddDeadkey(tex_accent, const string&, const string&);
+ void AddDeadkey(tex_accent, string const &);
///
void FreeKeymap();
///
int Load(LyXLex &);
///
- inline char* Match(char c);
+ string const & Match(unsigned char c);
///
- void InsertException(keyexc &exclist, char c,
- const string& data, bool = false,
+ void InsertException(KmodException & exclist, char c,
+ string const & data, bool = false,
tex_accent = TEX_NOACCENT);
///
- void FreeException(keyexc& exclist);
+ void FreeException(KmodException & exclist);
///
string name_;
///
- char *keymap_[256];
+ std::map<int, string> keymap_;
///
- kmod_list_decl *kmod_list_[TEX_MAX_ACCENT+1];
-
+ std::map<int, KmodInfo> kmod_list_;
};
-char* Trans::Match(char c)
+///
+inline
+string const & Trans::Match(unsigned char c)
{
- return keymap_[c];
+ std::map<int, string>::iterator it = keymap_.find(c);
+ if (it != keymap_.end()) {
+ return it->second;
+ }
+ static string dummy;
+ return dummy;
}
-#endif
+#endif // TRANS_H