Develop and Download Open Source Software

Browse Subversion Repository

Contents of /common/FileToArgs.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 191 - (show annotations) (download) (as text)
Fri Jan 4 02:49:36 2008 UTC (16 years, 4 months ago) by satofumi
File MIME type: text/x-chdr
File size: 2636 byte(s)
using namespace beego

1 #ifndef FILE_TO_ARGS_H
2 #define FILE_TO_ARGS_H
3
4 /*!
5 \page file_to_args_page デフォルト引数の読み出し
6
7 関数 optionHandler(argc, argv) があったときに、ファイルに記述したデフォルト設定を処理させるための仕組み。ファイルの記述を元に、argc, argv を生成する。
8
9 - \ref file_to_args_section_sample
10 - \ref file_to_args_section_usage
11
12 \n
13 \section file_to_args_section_sample ビーゴ用の設定ファイル例
14 \include beegoconf
15
16 \n
17 \section file_to_args_section_usage 使用例
18
19 サンプルプログラム
20 \code
21 #include <iostream>
22 #include <string>
23
24 static std::string SerialPort = "/dev/ttyUSB0";
25
26 static void optionHandler(int argc, char *argv[]) {
27 for (int i = 1; i < argc; ++i) {
28 if (! strncmp("--port=", argv[i], 7)) {
29 SerialPort = &argv[i][7];
30 }
31 }
32 }
33
34 int main(int argc, char *argv[]) {
35
36 FileToArgs fileArgs;
37 if (fileArgs.load("configfile.txt")) {
38 optionHandler(fileArgs.argc, fileArgs.argv, argv[0]);
39 }
40 optionHandler(argc, argv);
41
42 std::cout << "serial port: " << SerialPort << std::endl;
43
44 return 0;
45 }
46 \endcode
47
48 設定ファイルの詳細説明
49 \verbatim
50 # デフォルト設定
51 --port=/dev/usb/ttyUSB0
52
53 # programName が sloader のとき有効。--port=/dev/usb/ttyUSB0 の設定は上書きされる
54 sloader --port=/dev/usb/ttyUSB1
55
56 # programName が正規表現 .+loader のときのみ有効 (aloader, abcloader など)
57 # 基本的に、後ろの行での設定は、前に設定された項目を上書きする
58 .+loader --port=/dev/usb/ttyUSB2
59 \endverbatim
60
61 設定ファイルについて
62 - '#' から始まる行は、コメントとして無視される
63 - 各行が一つの引数として処理される
64 - 行に空白で区切られた2つのトークンがある場合
65 - 最初のトークンと programName が一致した場合のみ、第2トークンが処理される
66 - 最初のトークンには、正規表現が利用可能 (要 boost)
67
68 \attention オブジェクト破棄と同時に引き渡した内容が無効になるため、引数情報はコピーされることが望ましい。
69 */
70
71
72 /*!
73 \file
74 \brief ファイルから引数情報を取得する
75
76 \author Satofumi KAMIMURA
77
78 $Id$
79 */
80
81 #include <memory>
82
83
84 namespace beego {
85 /*!
86 \brief ファイルから引数情報の生成
87 */
88 class FileToArgs {
89 FileToArgs(const FileToArgs& rhs);
90 FileToArgs& operator = (const FileToArgs& rhs);
91
92 struct pImpl;
93 const std::auto_ptr<pImpl> pimpl;
94
95 public:
96 int argc;
97 char **argv;
98
99 FileToArgs(void);
100 ~FileToArgs(void);
101
102 /*!
103 \brief 引数情報の読み出し
104
105 \param fname [i] 設定ファイル
106 \param programName [i] argv[0] に登録するプログラム名
107
108 \attention 読み出した内容は、デストラクト時に破棄される
109
110 <strong>サンプル</strong>
111 - \ref file_to_args_page
112 */
113 bool load(const char* fname, const char* programName = "");
114 };
115 };
116
117 #endif /* !FILE_TO_ARGS_H */

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26