1: 2010-01-26 (火) 19:48:23 lina[6] [7] | 2: 2010-01-26 (火) 21:09:54 lina[6] [8] | ||
---|---|---|---|
Line 1: | Line 1: | ||
guigui01の仕様の整理とかそういうの。 | guigui01の仕様の整理とかそういうの。 | ||
+ | |||
+ | *複雑・・・ [#p64cc7bf] | ||
+ | ・・・解ってきたぞ。つまり、これは単なるUsage表示だけじゃなくて、このアプリのコマンドライン引数の定義も兼ねているのか・・・ | ||
+ | |||
+ | |||
+ | |||
#include <guigui01.h> | #include <guigui01.h> | ||
Line 9: | Line 15: | ||
0x40 /* 最後のこれも決まり文句なので変更しない */ | 0x40 /* 最後のこれも決まり文句なので変更しない */ | ||
}; | }; | ||
+ | |||
+ | この設定で表示されるUsage。 | ||
+ | usage>ex0012.g01 n:# | ||
+ | |||
+ | |||
どうもUsage表示は関数化されているようだ。どうすれば自由にUsageが表示できるだろう・・・ | どうもUsage表示は関数化されているようだ。どうすれば自由にUsageが表示できるだろう・・・ | ||
+ | |||
+ | *解析 [#n8e8b86d] | ||
|0x86, 0x55|これは頭に付ける決まり文句らしい。(でも0x50とかが確認されている)| | |0x86, 0x55|これは頭に付ける決まり文句らしい。(でも0x50とかが確認されている)| | ||
|0x0c, 0, 'n', 0x1c, 1, '#',|これらはコマンドになるらしい| | |0x0c, 0, 'n', 0x1c, 1, '#',|これらはコマンドになるらしい| | ||
|0x40|お尻につける決まり文句| | |0x40|お尻につける決まり文句| | ||
+ | |||
+ | どうもこれでワンセットになるらしい。 | ||
+ | |0x0c | (引数名の文字数-1) | (引数名) | 0x1c | (説明部分の文字数) | (説明) | | ||
+ | たとえば上の例だと・・・ | ||
+ | |||
+ | |0x0c|コマンド| | | ||
+ | |(引数名の文字数-1)|0|引数名は''n''。一個。 1 - 1 = 0| | ||
+ | |(引数名)| 'n' | 一個しか置けない。| | ||
+ | |0x1c|コマンド| | | ||
+ | |(説明部分の文字数)|1| 説明は一文字だけなので1?| | ||
+ | |(説明)|'#'| この#一文字が説明ってことかな??| | ||
+ | |||
+ | |||
+ | |||
+ | *実験的に逆に考えてみる・・・ [#xaa2d4cb] | ||
+ | この部分は''Usageを表示する''んじゃなくて、そもそも''コマンドライン引数を定義する''と。~ | ||
+ | で!~ | ||
+ | この定義に沿って、自動的にUsageメッセージを作って表示してくれると! | ||
+ | |||
+ | |||
+ | **引数先頭のコマンド [#c0e9ab00] | ||
+ | |0x86, 0x55|通常モード| | ||
+ | |0x86, 0x5c, 0|引数名省略可能モード| | ||
+ | |||
+ | http://osask.net/w/264.html | ||
+ | |||
+ | 省略が可能。 | ||
+ | |||
+ | 上記 0x86, 0x5c, 0 は、 0x86, 0x50 と縮めて書くことができる。 | ||
+ | |||
+ | COLOR(blue){おそらく、0x5x の一桁目が合成できるってことだろう} | ||
+ | |||
+ | **省略できない引数 [#qc69ba57] | ||
+ | 省略したり順番が違うとエラーになってほしい引数 | ||
+ | |||
+ | |''0x0c''|(引数名の文字数-1)|(引数名)|''0x1c''|(説明部分の文字数)|(説明)| | ||
+ | |これは省略不可の引数だというサイン| | |この引数は数値であるというサイン| | | | ||
+ | |>|合成が可能。コマンドの一桁目を引数名の文字列-に置き換える| |>|合成が可能。コマンドの一桁目を引数名の文字列-に置き換える| | | ||
+ | |||
+ | **省略可能な引数 [#a3d2f06c] | ||
+ | 省略することもある引数 | ||
+ | |||
+ | |''0x1c''|(引数名の文字数-1)|(引数名)|0x1c|(説明部分の文字数)|(説明)| | ||
+ | |これは省略可能な引数だというサイン| | |この引数は数値であるというサイン| | | | ||
+ | |||
+ | -Usage表示では自動的に [ ] で括られて表示される | ||
+ | |||
+ | |||
+ | **引数が文字列の場合 [#j17ad8d0] | ||
+ | |||
+ | |||
+ | 0x0c, 0, 's', 0x3c, 3, 's', 't', 'r', /* 0x3cは文字列型引数 */ | ||
+ | |||
+ | |0x0c|(引数名の文字数-1)|(引数名)|''0x3c''|(説明部分の文字数)|(説明)| | ||
+ | |これは省略不可な引数だというサイン| | |この引数は文字列だというサイン| | | | ||
+ | |||
+ | |||
+ | *説明時に引数名の文字列を使う [#u78757f5] | ||
+ | 引数名はよく略称を使われる。たとえば、文字列(string)の引数がほしい場合は、 | ||
+ | str: | ||
+ | なんてのを使う。Usageでは、str:引数の後の説明は当然、 | ||
+ | str:string | ||
+ | になる。(つまり、s と t と r がかぶっている。) | ||
+ | |||
+ | 普通にUsage表示(コマンドライン定義)をしたい場合は、 | ||
+ | |||
+ | 0x0c, 2, 's', 't', 'r', 0x3c, 6, 's', 't', 'r', 'i', 'n', 'g' | ||
+ | |||
+ | となるが、文字が勿体ない場合、0x01 を置くと前で定義した引数名(「str」)に置換してくれる。~ | ||
+ | COLOR(red){ただし注意。上記のようにベタに書くと「string]は6文字なので6を指定しているが、置換を使う場合は残りの文字数+1になる。(つまり0x01で一文字)} | ||
+ | |||
+ | 0x0c, 2, 's', 't', 'r', 0x3c, 4, 0x01, 'i', 'n', 'g' | ||
+ | |||
+ | |||
+ | **改行 [#l7cd5b1a] | ||
+ | |||
+ | 0x87, | ||
+ | |||
+ | |||
+ | **スイッチ [#t0414b2f] | ||
+ | 引数ではなくスイッチ?な場合。 | ||
+ | |||
+ | 0x1c, 3, 'd', 'o', 'w', 'n', 0x20, | ||
+ | |||
+ | |0x1c| 3| 'd', 'o', 'w', 'n'| 0x20| | ||
+ | |省略可能なオプションであるサイン|downなので、4-1で3| |スイッチには引数内容がないのでそのサイン| | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | *COLOR(red){オイラ的な備考} [#o91a8f8f] | ||
+ | |||
+ | このUsage表示(コマンドライン定義)では、省略形を使う場合はかならずソースにベタ書きをのこしておくといいと思う。 |
(This host) = http://osask.net