OSDN Git Service

collect some files' permissions
[yamy/yamy.git] / setting.h
index a157fac..f520558 100644 (file)
--- a/setting.h
+++ b/setting.h
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// 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 &lt;COND_SYMBOL&gt;
-
-  Modifier m_defaultAssignModifier;            /** default
-                                                    &lt;ASSIGN_MODIFIER&gt; */
-  Modifier m_defaultKeySeqModifier;            /** default
-                                                    &lt;KEYSEQ_MODIFIER&gt; */
-
-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();                            /// &lt;LINE&gt;
-  void load_DEFINE();                          /// &lt;DEFINE&gt;
-  void load_IF();                              /// &lt;IF&gt;
-  void load_ELSE(bool i_isElseIf, const tstringi &i_token);
-                                               /// &lt;ELSE&gt; &lt;ELSEIF&gt;
-  bool load_ENDIF(const tstringi &i_token);    /// &lt;ENDIF&gt;
-  void load_INCLUDE();                         /// &lt;INCLUDE&gt;
-  void load_SCAN_CODES(Key *o_key);            /// &lt;SCAN_CODES&gt;
-  void load_DEFINE_KEY();                      /// &lt;DEFINE_KEY&gt;
-  void load_DEFINE_MODIFIER();                 /// &lt;DEFINE_MODIFIER&gt;
-  void load_DEFINE_SYNC_KEY();                 /// &lt;DEFINE_SYNC_KEY&gt;
-  void load_DEFINE_ALIAS();                    /// &lt;DEFINE_ALIAS&gt;
-  void load_DEFINE_SUBSTITUTE();               /// &lt;DEFINE_SUBSTITUTE&gt;
-  void load_DEFINE_OPTION();                   /// &lt;DEFINE_OPTION&gt;
-  void load_KEYBOARD_DEFINITION();             /// &lt;KEYBOARD_DEFINITION&gt;
-  Modifier load_MODIFIER(Modifier::Type i_mode, Modifier i_modifier,
-                        Modifier::Type *o_mode = NULL);
-                                               /// &lt;..._MODIFIER&gt;
-  Key *load_KEY_NAME();                                /// &lt;KEY_NAME&gt;
-  void load_KEYMAP_DEFINITION(const Token *i_which);
-                                               /// &lt;KEYMAP_DEFINITION&gt;
-  void load_ARGUMENT(bool *o_arg);             /// &lt;ARGUMENT&gt;
-  void load_ARGUMENT(int *o_arg);              /// &lt;ARGUMENT&gt;
-  void load_ARGUMENT(unsigned int *o_arg);     /// &lt;ARGUMENT&gt;
-  void load_ARGUMENT(long *o_arg);             /// &lt;ARGUMENT&gt;
-  void load_ARGUMENT(tstringq *o_arg);         /// &lt;ARGUMENT&gt;
-  void load_ARGUMENT(std::list<tstringq> *o_arg); /// &lt;ARGUMENT&gt;
-  void load_ARGUMENT(tregex *o_arg);           /// &lt;ARGUMENT&gt;
-  void load_ARGUMENT(VKey *o_arg);             /// &lt;ARGUMENT_VK&gt;
-  void load_ARGUMENT(ToWindowType *o_arg);     /// &lt;ARGUMENT_WINDOW&gt;
-  void load_ARGUMENT(GravityType *o_arg);      /// &lt;ARGUMENT&gt;
-  void load_ARGUMENT(MouseHookType *o_arg);    /// &lt;ARGUMENT&gt;
-  void load_ARGUMENT(MayuDialogType *o_arg);   /// &lt;ARGUMENT&gt;
-  void load_ARGUMENT(ModifierLockType *o_arg); /// &lt;ARGUMENT_LOCK&gt;
-  void load_ARGUMENT(ToggleType *o_arg);       /// &lt;ARGUMENT&gt;
-  void load_ARGUMENT(ShowCommandType *o_arg);  ///&lt;ARGUMENT_SHOW_WINDOW&gt;
-  void load_ARGUMENT(TargetWindowType *o_arg);
-                                       /// &lt;ARGUMENT_TARGET_WINDOW_TYPE&gt;
-  void load_ARGUMENT(BooleanType *o_arg);      /// &lt;bool&gt;
-  void load_ARGUMENT(LogicalOperatorType *o_arg);/// &lt;ARGUMENT&gt;
-  void load_ARGUMENT(Modifier *o_arg);         /// &lt;ARGUMENT&gt;
-  void load_ARGUMENT(const Keymap **o_arg);    /// &lt;ARGUMENT&gt;
-  void load_ARGUMENT(const KeySeq **o_arg);    /// &lt;ARGUMENT&gt;
-  void load_ARGUMENT(StrExprArg *o_arg);       /// &lt;ARGUMENT&gt;
-  void load_ARGUMENT(WindowMonitorFromType *o_arg);    /// &lt;ARGUMENT&gt;
-  KeySeq *load_KEY_SEQUENCE(
-    const tstringi &i_name = _T(""), bool i_isInParen = false,
-    Modifier::Type i_mode = Modifier::Type_KEYSEQ); /// &lt;KEY_SEQUENCE&gt;
-  void load_KEY_ASSIGN();                      /// &lt;KEY_ASSIGN&gt;
-  void load_EVENT_ASSIGN();                    /// &lt;EVENT_ASSIGN&gt;
-  void load_MODIFIER_ASSIGNMENT();             /// &lt;MODIFIER_ASSIGN&gt;
-  void load_LOCK_ASSIGNMENT();                 /// &lt;LOCK_ASSIGN&gt;
-  void load_KEYSEQ_DEFINITION();               /// &lt;KEYSEQ_DEFINITION&gt;
-
-  /// 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 &lt;COND_SYMBOL&gt;\r
+\r
+       Modifier m_defaultAssignModifier;               /** default\r
+                                                    &lt;ASSIGN_MODIFIER&gt; */\r
+       Modifier m_defaultKeySeqModifier;               /** default\r
+                                                    &lt;KEYSEQ_MODIFIER&gt; */\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();                               /// &lt;LINE&gt;\r
+       void load_DEFINE();                             /// &lt;DEFINE&gt;\r
+       void load_IF();                         /// &lt;IF&gt;\r
+       void load_ELSE(bool i_isElseIf, const tstringi &i_token);\r
+       /// &lt;ELSE&gt; &lt;ELSEIF&gt;\r
+       bool load_ENDIF(const tstringi &i_token);       /// &lt;ENDIF&gt;\r
+       void load_INCLUDE();                            /// &lt;INCLUDE&gt;\r
+       void load_SCAN_CODES(Key *o_key);               /// &lt;SCAN_CODES&gt;\r
+       void load_DEFINE_KEY();                 /// &lt;DEFINE_KEY&gt;\r
+       void load_DEFINE_MODIFIER();                    /// &lt;DEFINE_MODIFIER&gt;\r
+       void load_DEFINE_SYNC_KEY();                    /// &lt;DEFINE_SYNC_KEY&gt;\r
+       void load_DEFINE_ALIAS();                       /// &lt;DEFINE_ALIAS&gt;\r
+       void load_DEFINE_SUBSTITUTE();          /// &lt;DEFINE_SUBSTITUTE&gt;\r
+       void load_DEFINE_OPTION();                      /// &lt;DEFINE_OPTION&gt;\r
+       void load_KEYBOARD_DEFINITION();                /// &lt;KEYBOARD_DEFINITION&gt;\r
+       Modifier load_MODIFIER(Modifier::Type i_mode, Modifier i_modifier,\r
+                                                  Modifier::Type *o_mode = NULL);\r
+       /// &lt;..._MODIFIER&gt;\r
+       Key *load_KEY_NAME();                           /// &lt;KEY_NAME&gt;\r
+       void load_KEYMAP_DEFINITION(const Token *i_which);\r
+       /// &lt;KEYMAP_DEFINITION&gt;\r
+       void load_ARGUMENT(bool *o_arg);                /// &lt;ARGUMENT&gt;\r
+       void load_ARGUMENT(int *o_arg);         /// &lt;ARGUMENT&gt;\r
+       void load_ARGUMENT(unsigned int *o_arg);        /// &lt;ARGUMENT&gt;\r
+       void load_ARGUMENT(long *o_arg);                /// &lt;ARGUMENT&gt;\r
+       void load_ARGUMENT(unsigned __int64 *o_arg);    /// &lt;ARGUMENT&gt;\r
+       void load_ARGUMENT(__int64 *o_arg);             /// &lt;ARGUMENT&gt;\r
+       void load_ARGUMENT(tstringq *o_arg);            /// &lt;ARGUMENT&gt;\r
+       void load_ARGUMENT(std::list<tstringq> *o_arg); /// &lt;ARGUMENT&gt;\r
+       void load_ARGUMENT(tregex *o_arg);              /// &lt;ARGUMENT&gt;\r
+       void load_ARGUMENT(VKey *o_arg);                /// &lt;ARGUMENT_VK&gt;\r
+       void load_ARGUMENT(ToWindowType *o_arg);        /// &lt;ARGUMENT_WINDOW&gt;\r
+       void load_ARGUMENT(GravityType *o_arg); /// &lt;ARGUMENT&gt;\r
+       void load_ARGUMENT(MouseHookType *o_arg);       /// &lt;ARGUMENT&gt;\r
+       void load_ARGUMENT(MayuDialogType *o_arg);      /// &lt;ARGUMENT&gt;\r
+       void load_ARGUMENT(ModifierLockType *o_arg);    /// &lt;ARGUMENT_LOCK&gt;\r
+       void load_ARGUMENT(ToggleType *o_arg);  /// &lt;ARGUMENT&gt;\r
+       void load_ARGUMENT(ShowCommandType *o_arg);     ///&lt;ARGUMENT_SHOW_WINDOW&gt;\r
+       void load_ARGUMENT(TargetWindowType *o_arg);\r
+       /// &lt;ARGUMENT_TARGET_WINDOW_TYPE&gt;\r
+       void load_ARGUMENT(BooleanType *o_arg); /// &lt;bool&gt;\r
+       void load_ARGUMENT(LogicalOperatorType *o_arg);/// &lt;ARGUMENT&gt;\r
+       void load_ARGUMENT(Modifier *o_arg);            /// &lt;ARGUMENT&gt;\r
+       void load_ARGUMENT(const Keymap **o_arg);       /// &lt;ARGUMENT&gt;\r
+       void load_ARGUMENT(const KeySeq **o_arg);       /// &lt;ARGUMENT&gt;\r
+       void load_ARGUMENT(StrExprArg *o_arg);  /// &lt;ARGUMENT&gt;\r
+       void load_ARGUMENT(WindowMonitorFromType *o_arg);       /// &lt;ARGUMENT&gt;\r
+       KeySeq *load_KEY_SEQUENCE(\r
+               const tstringi &i_name = _T(""), bool i_isInParen = false,\r
+               Modifier::Type i_mode = Modifier::Type_KEYSEQ); /// &lt;KEY_SEQUENCE&gt;\r
+       void load_KEY_ASSIGN();                 /// &lt;KEY_ASSIGN&gt;\r
+       void load_EVENT_ASSIGN();                       /// &lt;EVENT_ASSIGN&gt;\r
+       void load_MODIFIER_ASSIGNMENT();                /// &lt;MODIFIER_ASSIGN&gt;\r
+       void load_LOCK_ASSIGNMENT();                    /// &lt;LOCK_ASSIGN&gt;\r
+       void load_KEYSEQ_DEFINITION();          /// &lt;KEYSEQ_DEFINITION&gt;\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