-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// setting.h
-
-
-#ifndef _SETTING_H
-# define _SETTING_H
-
-
-# include "keymap.h"
-# include "parser.h"
-# include "multithread.h"
-# include <set>
-
-
-/// this class contains all of loaded settings
-class Setting
-{
-public:
- typedef std::set<tstringi> Symbols; ///
- typedef std::list<Modifier> Modifiers; ///
-
-public:
- Keyboard m_keyboard; ///
- Keymaps m_keymaps; ///
- KeySeqs m_keySeqs; ///
- Symbols m_symbols; ///
- bool m_correctKanaLockHandling; ///
- bool m_sts4mayu; ///
- bool m_cts4mayu; ///
- unsigned int m_oneShotRepeatableDelay; ///
-
-public:
- Setting()
- : m_correctKanaLockHandling(false),
- m_sts4mayu(false),
- m_cts4mayu(false),
- m_oneShotRepeatableDelay(0) { }
-};
-
-
-///
-namespace Event
-{
- ///
- extern Key prefixed;
- ///
- extern Key before_key_down;
- ///
- extern Key after_key_up;
- ///
- extern Key *events[];
-}
-
-
-///
-class SettingLoader
-{
-# define FUNCTION_FRIEND
-# include "functions.h"
-# undef FUNCTION_FRIEND
-
-public:
- ///
- class FunctionCreator
- {
- public:
- const _TCHAR *m_name; ///
- FunctionData *m_creator; ///
- };
-
-private:
- typedef std::vector<Token> Tokens; ///
- typedef std::vector<tstringi> Prefixes; ///
- typedef std::vector<bool> CanReadStack; ///
-
-private:
- Setting *m_setting; /// loaded setting
- bool m_isThereAnyError; /// is there any error ?
-
- SyncObject *m_soLog; /// guard log output stream
- tostream *m_log; /// log output stream
-
- tstringi m_currentFilename; /// current filename
-
- Tokens m_tokens; /// tokens for current line
- Tokens::iterator m_ti; /// current processing token
-
- static Prefixes *m_prefixes; /// prefix terminal symbol
- static size_t m_prefixesRefCcount; /// reference count of prefix
-
- Keymap *m_currentKeymap; /// current keymap
-
- CanReadStack m_canReadStack; /// for <COND_SYMBOL>
-
- Modifier m_defaultAssignModifier; /** default
- <ASSIGN_MODIFIER> */
- Modifier m_defaultKeySeqModifier; /** default
- <KEYSEQ_MODIFIER> */
-
-private:
- bool isEOL(); /// is there no more tokens ?
- Token *getToken(); /// get next token
- Token *lookToken(); /// look next token
- bool getOpenParen(bool i_doesThrow, const _TCHAR *i_name); /// argument "("
- bool getCloseParen(bool i_doesThrow, const _TCHAR *i_name); /// argument ")"
- bool getComma(bool i_doesThrow, const _TCHAR *i_name); /// argument ","
-
- void load_LINE(); /// <LINE>
- void load_DEFINE(); /// <DEFINE>
- void load_IF(); /// <IF>
- void load_ELSE(bool i_isElseIf, const tstringi &i_token);
- /// <ELSE> <ELSEIF>
- bool load_ENDIF(const tstringi &i_token); /// <ENDIF>
- void load_INCLUDE(); /// <INCLUDE>
- void load_SCAN_CODES(Key *o_key); /// <SCAN_CODES>
- void load_DEFINE_KEY(); /// <DEFINE_KEY>
- void load_DEFINE_MODIFIER(); /// <DEFINE_MODIFIER>
- void load_DEFINE_SYNC_KEY(); /// <DEFINE_SYNC_KEY>
- void load_DEFINE_ALIAS(); /// <DEFINE_ALIAS>
- void load_DEFINE_SUBSTITUTE(); /// <DEFINE_SUBSTITUTE>
- void load_DEFINE_OPTION(); /// <DEFINE_OPTION>
- void load_KEYBOARD_DEFINITION(); /// <KEYBOARD_DEFINITION>
- Modifier load_MODIFIER(Modifier::Type i_mode, Modifier i_modifier,
- Modifier::Type *o_mode = NULL);
- /// <..._MODIFIER>
- Key *load_KEY_NAME(); /// <KEY_NAME>
- void load_KEYMAP_DEFINITION(const Token *i_which);
- /// <KEYMAP_DEFINITION>
- void load_ARGUMENT(bool *o_arg); /// <ARGUMENT>
- void load_ARGUMENT(int *o_arg); /// <ARGUMENT>
- void load_ARGUMENT(unsigned int *o_arg); /// <ARGUMENT>
- void load_ARGUMENT(long *o_arg); /// <ARGUMENT>
- void load_ARGUMENT(tstringq *o_arg); /// <ARGUMENT>
- void load_ARGUMENT(std::list<tstringq> *o_arg); /// <ARGUMENT>
- void load_ARGUMENT(tregex *o_arg); /// <ARGUMENT>
- void load_ARGUMENT(VKey *o_arg); /// <ARGUMENT_VK>
- void load_ARGUMENT(ToWindowType *o_arg); /// <ARGUMENT_WINDOW>
- void load_ARGUMENT(GravityType *o_arg); /// <ARGUMENT>
- void load_ARGUMENT(MouseHookType *o_arg); /// <ARGUMENT>
- void load_ARGUMENT(MayuDialogType *o_arg); /// <ARGUMENT>
- void load_ARGUMENT(ModifierLockType *o_arg); /// <ARGUMENT_LOCK>
- void load_ARGUMENT(ToggleType *o_arg); /// <ARGUMENT>
- void load_ARGUMENT(ShowCommandType *o_arg); ///<ARGUMENT_SHOW_WINDOW>
- void load_ARGUMENT(TargetWindowType *o_arg);
- /// <ARGUMENT_TARGET_WINDOW_TYPE>
- void load_ARGUMENT(BooleanType *o_arg); /// <bool>
- void load_ARGUMENT(LogicalOperatorType *o_arg);/// <ARGUMENT>
- void load_ARGUMENT(Modifier *o_arg); /// <ARGUMENT>
- void load_ARGUMENT(const Keymap **o_arg); /// <ARGUMENT>
- void load_ARGUMENT(const KeySeq **o_arg); /// <ARGUMENT>
- void load_ARGUMENT(StrExprArg *o_arg); /// <ARGUMENT>
- void load_ARGUMENT(WindowMonitorFromType *o_arg); /// <ARGUMENT>
- KeySeq *load_KEY_SEQUENCE(
- const tstringi &i_name = _T(""), bool i_isInParen = false,
- Modifier::Type i_mode = Modifier::Type_KEYSEQ); /// <KEY_SEQUENCE>
- void load_KEY_ASSIGN(); /// <KEY_ASSIGN>
- void load_EVENT_ASSIGN(); /// <EVENT_ASSIGN>
- void load_MODIFIER_ASSIGNMENT(); /// <MODIFIER_ASSIGN>
- void load_LOCK_ASSIGNMENT(); /// <LOCK_ASSIGN>
- void load_KEYSEQ_DEFINITION(); /// <KEYSEQ_DEFINITION>
-
- /// load
- void load(const tstringi &i_filename);
-
- /// is the filename readable ?
- bool isReadable(const tstringi &i_filename, int i_debugLevel = 1) const;
-
- /// get filename
- bool getFilename(const tstringi &i_name,
- tstringi *o_path, int i_debugLevel = 1) const;
-
-public:
- ///
- SettingLoader(SyncObject *i_soLog, tostream *i_log);
-
- /// load setting
- bool load(Setting *o_setting, const tstringi &i_filename = _T(""));
-};
-
-
-/// get home directory path
-typedef std::list<tstringi> HomeDirectories;
-extern void getHomeDirectories(HomeDirectories *o_path);
-
-
-#endif // !_SETTING_H
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r
+// setting.h\r
+\r
+\r
+#ifndef _SETTING_H\r
+# define _SETTING_H\r
+\r
+\r
+# include "keymap.h"\r
+# include "parser.h"\r
+# include "multithread.h"\r
+# include <set>\r
+\r
+\r
+/// this class contains all of loaded settings\r
+class Setting\r
+{\r
+public:\r
+ typedef std::set<tstringi> Symbols; ///\r
+ typedef std::list<Modifier> Modifiers; ///\r
+\r
+public:\r
+ Keyboard m_keyboard; ///\r
+ Keymaps m_keymaps; ///\r
+ KeySeqs m_keySeqs; ///\r
+ Symbols m_symbols; ///\r
+ bool m_correctKanaLockHandling; ///\r
+ bool m_sts4mayu; ///\r
+ bool m_cts4mayu; ///\r
+ bool m_mouseEvent; ///\r
+ LONG m_dragThreshold; ///\r
+ unsigned int m_oneShotRepeatableDelay; ///\r
+\r
+public:\r
+ Setting()\r
+ : m_correctKanaLockHandling(false),\r
+ m_sts4mayu(false),\r
+ m_cts4mayu(false),\r
+ m_mouseEvent(false),\r
+ m_dragThreshold(0),\r
+ m_oneShotRepeatableDelay(0) { }\r
+};\r
+\r
+\r
+///\r
+namespace Event\r
+{\r
+///\r
+extern Key prefixed;\r
+///\r
+extern Key before_key_down;\r
+///\r
+extern Key after_key_up;\r
+///\r
+extern Key *events[];\r
+}\r
+\r
+\r
+///\r
+class SettingLoader\r
+{\r
+# define FUNCTION_FRIEND\r
+# include "functions.h"\r
+# undef FUNCTION_FRIEND\r
+\r
+public:\r
+ ///\r
+ class FunctionCreator\r
+ {\r
+ public:\r
+ const _TCHAR *m_name; ///\r
+ FunctionData *m_creator; ///\r
+ };\r
+\r
+private:\r
+ typedef std::vector<Token> Tokens; ///\r
+ typedef std::vector<tstringi> Prefixes; ///\r
+ typedef std::vector<bool> CanReadStack; ///\r
+\r
+private:\r
+ Setting *m_setting; /// loaded setting\r
+ bool m_isThereAnyError; /// is there any error ?\r
+\r
+ SyncObject *m_soLog; /// guard log output stream\r
+ tostream *m_log; /// log output stream\r
+\r
+ tstringi m_currentFilename; /// current filename\r
+\r
+ Tokens m_tokens; /// tokens for current line\r
+ Tokens::iterator m_ti; /// current processing token\r
+\r
+ static Prefixes *m_prefixes; /// prefix terminal symbol\r
+ static size_t m_prefixesRefCcount; /// reference count of prefix\r
+\r
+ Keymap *m_currentKeymap; /// current keymap\r
+\r
+ CanReadStack m_canReadStack; /// for <COND_SYMBOL>\r
+\r
+ Modifier m_defaultAssignModifier; /** default\r
+ <ASSIGN_MODIFIER> */\r
+ Modifier m_defaultKeySeqModifier; /** default\r
+ <KEYSEQ_MODIFIER> */\r
+\r
+private:\r
+ bool isEOL(); /// is there no more tokens ?\r
+ Token *getToken(); /// get next token\r
+ Token *lookToken(); /// look next token\r
+ bool getOpenParen(bool i_doesThrow, const _TCHAR *i_name); /// argument "("\r
+ bool getCloseParen(bool i_doesThrow, const _TCHAR *i_name); /// argument ")"\r
+ bool getComma(bool i_doesThrow, const _TCHAR *i_name); /// argument ","\r
+\r
+ void load_LINE(); /// <LINE>\r
+ void load_DEFINE(); /// <DEFINE>\r
+ void load_IF(); /// <IF>\r
+ void load_ELSE(bool i_isElseIf, const tstringi &i_token);\r
+ /// <ELSE> <ELSEIF>\r
+ bool load_ENDIF(const tstringi &i_token); /// <ENDIF>\r
+ void load_INCLUDE(); /// <INCLUDE>\r
+ void load_SCAN_CODES(Key *o_key); /// <SCAN_CODES>\r
+ void load_DEFINE_KEY(); /// <DEFINE_KEY>\r
+ void load_DEFINE_MODIFIER(); /// <DEFINE_MODIFIER>\r
+ void load_DEFINE_SYNC_KEY(); /// <DEFINE_SYNC_KEY>\r
+ void load_DEFINE_ALIAS(); /// <DEFINE_ALIAS>\r
+ void load_DEFINE_SUBSTITUTE(); /// <DEFINE_SUBSTITUTE>\r
+ void load_DEFINE_OPTION(); /// <DEFINE_OPTION>\r
+ void load_KEYBOARD_DEFINITION(); /// <KEYBOARD_DEFINITION>\r
+ Modifier load_MODIFIER(Modifier::Type i_mode, Modifier i_modifier,\r
+ Modifier::Type *o_mode = NULL);\r
+ /// <..._MODIFIER>\r
+ Key *load_KEY_NAME(); /// <KEY_NAME>\r
+ void load_KEYMAP_DEFINITION(const Token *i_which);\r
+ /// <KEYMAP_DEFINITION>\r
+ void load_ARGUMENT(bool *o_arg); /// <ARGUMENT>\r
+ void load_ARGUMENT(int *o_arg); /// <ARGUMENT>\r
+ void load_ARGUMENT(unsigned int *o_arg); /// <ARGUMENT>\r
+ void load_ARGUMENT(long *o_arg); /// <ARGUMENT>\r
+ void load_ARGUMENT(unsigned __int64 *o_arg); /// <ARGUMENT>\r
+ void load_ARGUMENT(__int64 *o_arg); /// <ARGUMENT>\r
+ void load_ARGUMENT(tstringq *o_arg); /// <ARGUMENT>\r
+ void load_ARGUMENT(std::list<tstringq> *o_arg); /// <ARGUMENT>\r
+ void load_ARGUMENT(tregex *o_arg); /// <ARGUMENT>\r
+ void load_ARGUMENT(VKey *o_arg); /// <ARGUMENT_VK>\r
+ void load_ARGUMENT(ToWindowType *o_arg); /// <ARGUMENT_WINDOW>\r
+ void load_ARGUMENT(GravityType *o_arg); /// <ARGUMENT>\r
+ void load_ARGUMENT(MouseHookType *o_arg); /// <ARGUMENT>\r
+ void load_ARGUMENT(MayuDialogType *o_arg); /// <ARGUMENT>\r
+ void load_ARGUMENT(ModifierLockType *o_arg); /// <ARGUMENT_LOCK>\r
+ void load_ARGUMENT(ToggleType *o_arg); /// <ARGUMENT>\r
+ void load_ARGUMENT(ShowCommandType *o_arg); ///<ARGUMENT_SHOW_WINDOW>\r
+ void load_ARGUMENT(TargetWindowType *o_arg);\r
+ /// <ARGUMENT_TARGET_WINDOW_TYPE>\r
+ void load_ARGUMENT(BooleanType *o_arg); /// <bool>\r
+ void load_ARGUMENT(LogicalOperatorType *o_arg);/// <ARGUMENT>\r
+ void load_ARGUMENT(Modifier *o_arg); /// <ARGUMENT>\r
+ void load_ARGUMENT(const Keymap **o_arg); /// <ARGUMENT>\r
+ void load_ARGUMENT(const KeySeq **o_arg); /// <ARGUMENT>\r
+ void load_ARGUMENT(StrExprArg *o_arg); /// <ARGUMENT>\r
+ void load_ARGUMENT(WindowMonitorFromType *o_arg); /// <ARGUMENT>\r
+ KeySeq *load_KEY_SEQUENCE(\r
+ const tstringi &i_name = _T(""), bool i_isInParen = false,\r
+ Modifier::Type i_mode = Modifier::Type_KEYSEQ); /// <KEY_SEQUENCE>\r
+ void load_KEY_ASSIGN(); /// <KEY_ASSIGN>\r
+ void load_EVENT_ASSIGN(); /// <EVENT_ASSIGN>\r
+ void load_MODIFIER_ASSIGNMENT(); /// <MODIFIER_ASSIGN>\r
+ void load_LOCK_ASSIGNMENT(); /// <LOCK_ASSIGN>\r
+ void load_KEYSEQ_DEFINITION(); /// <KEYSEQ_DEFINITION>\r
+\r
+ /// load\r
+ void load(const tstringi &i_filename);\r
+\r
+ /// is the filename readable ?\r
+ bool isReadable(const tstringi &i_filename, int i_debugLevel = 1) const;\r
+\r
+ /// get filename\r
+ bool getFilename(const tstringi &i_name,\r
+ tstringi *o_path, int i_debugLevel = 1) const;\r
+\r
+public:\r
+ ///\r
+ SettingLoader(SyncObject *i_soLog, tostream *i_log);\r
+\r
+ /// load setting\r
+ bool load(Setting *o_setting, const tstringi &i_filename = _T(""));\r
+};\r
+\r
+\r
+/// get home directory path\r
+typedef std::list<tstringi> HomeDirectories;\r
+extern void getHomeDirectories(HomeDirectories *o_path);\r
+\r
+\r
+#endif // !_SETTING_H\r