Giriş
Verilen parametreleri parse() etmek işlemi run-time tarafından yapılır. Anlamlandırma işlemi ise uygulama tarafından gerçekleştirilir. Konuyla ilgili olarak Main metodu başlıklı yazıya bakabilirsiniz.
C
argv ile gelen ilk parametre uygulamanın ismidir. Örnek'te "add_fractions 1/2 2/3" şeklinde çağırılan bir uygulama şu değerleri alır.
shell glob veya * wildcard
Shell ile * verilerek çağırılan bir program bulunduğu dizindeki tüm dosyaları parametre olarak alır.
./myprogram '*' şeklinde çağırılırsa parametre olarak * karakterini alır.
GNU
GNU ile getopt fonksiyonu kullanılarak komut satırı parse edilebilir. getopt argc, argv ve parse edilmesi istenen seçenekleri alır. Çağrı sonunda global bazı değişkenlere değer atar. Bu global değişkenler
Örnek:
Konuyla ilgili bir soru burada.
Apache Commons
CommandLineParser arayüzünden türeyen sınıflar bir CommandLine sınıfı üretiyorlar.
BasicParser sınıfı
Örnek:
GnuParser sınıfı
Bir örnek burada.
Bu sınıf kullanımdan kalktı. DefaultParser'ın kullanılması gerekir.
PosixParser sınıfı
Bu sınıf kullanımdan kalktı. DefaultParser'ın kullanılması gerekir.
Örnek:
DefaultParser sınıfı
Bir başka örnekte ise DefaultParser kullanılmış.
Options sınıfı
Bu sınıf okunan dizinin nasıl ayrıştırılacağı bilgisini tutan bir listedir. Listede Option nesneleri bulunur.
addOption
Örnek:
"-b 2" şeklinde bir parametrenin girilmesi gerektiğini belirtir.
Option sınıfı
setArgs
Kaç tane kelime okunacağını belirtir. Örnek:
CommandLine sınıfı
Her okuma işlemi sonucunda bu sınıf üretilir.
getArgs
Parse edilen parametreleri String[] şeklinde alabilmemizi sağlar. Örnek:
Kullanılan ana sınıflar options_description, parsed_options ve variables_map. Örnek burada bulunabilir.
options_description sınıfı
add_options
Bu metod ile yeni bir seçenek eklenir. Örnek:
<< metodu
Eğer istenirse bu sınıf string'e çevirilebilir. Örnek:
variables_map
Bu sınıf parse sonucu aynı bir map şeklinde kullanabilmemizi sağlar.
count metodu
Aranılan seçeneğin girilip girilmediğini kontrol edebilmemizi sağlar.
parsed_options sınıfı
Bu sınıf parse işleminin sonucunu saklar.
boost:program_options::store
Bu metod ile verilen komut satırı parse edilerek variables_map sınıfına doldurulur.
boost:program_options::notify
Bu metod ile variables_map sınıfındaki değerler, options_description sınıfına bağlanmış olan değişkenlere atanır. Örnek:
QT
QCoreApplication parse işlemini biraz daha kolaylaştırıyor.
int main (int argc, char* argv[])
{
QCoreApplication app(argc, argv);
QStringList arglist = app.arguments();
}
Verilen parametreleri parse() etmek işlemi run-time tarafından yapılır. Anlamlandırma işlemi ise uygulama tarafından gerçekleştirilir. Konuyla ilgili olarak Main metodu başlıklı yazıya bakabilirsiniz.
C
argv ile gelen ilk parametre uygulamanın ismidir. Örnek'te "add_fractions 1/2 2/3" şeklinde çağırılan bir uygulama şu değerleri alır.
shell glob veya * wildcard
Shell ile * verilerek çağırılan bir program bulunduğu dizindeki tüm dosyaları parametre olarak alır.
./myprogram '*' şeklinde çağırılırsa parametre olarak * karakterini alır.
GNU
GNU ile getopt fonksiyonu kullanılarak komut satırı parse edilebilir. getopt argc, argv ve parse edilmesi istenen seçenekleri alır. Çağrı sonunda global bazı değişkenlere değer atar. Bu global değişkenler
optargoptindoptoptisimlerine sahiptirler. getopt -1 dönünceye kadar tekrar tekrar çağrılabilir.
Örnek:
#include <unistd.h>optstring
//Process cmdline opts. Parametre alan seçeneklerden sonra : kullanılmış
char *shortOpts = "hi:e:p:";//-h -i [IP Adresi] p [Port] -e [Ethernet Adı] şeklinde kullanılabilir
int getoptRet;
while(-1 != (getoptRet = getopt(argc, argv, shortOpts)))
{
switch(getoptRet) //Seçenek getoptRet ile saklanır
{
case 'i':
inInAddr.sin_addr.s_addr = inet_addr(optarg);//Seçeneğin değeri optarg ile saklanır
break;
case 'p':
inInAddr.sin_port = htons(atoi(optarg));
break;
case 'h':
case '?':
default:
Usage(argv[0]);
goto normal_exit;
break;
}
}
}
Konuyla ilgili bir soru burada.
Apache Commons
CommandLineParser arayüzünden türeyen sınıflar bir CommandLine sınıfı üretiyorlar.
BasicParser sınıfı
Örnek:
GnuParser sınıfı
Bir örnek burada.
Bu sınıf kullanımdan kalktı. DefaultParser'ın kullanılması gerekir.
PosixParser sınıfı
Bu sınıf kullanımdan kalktı. DefaultParser'ın kullanılması gerekir.
Örnek:
DefaultParser sınıfı
Bir başka örnekte ise DefaultParser kullanılmış.
Options sınıfı
Bu sınıf okunan dizinin nasıl ayrıştırılacağı bilgisini tutan bir listedir. Listede Option nesneleri bulunur.
addOption
Örnek:
"-b 2" şeklinde bir parametrenin girilmesi gerektiğini belirtir.
Options options = new Options();
options.addOption("b", true, "some message");
Option sınıfı
setArgs
Kaç tane kelime okunacağını belirtir. Örnek:
CommandLine sınıfı
Her okuma işlemi sonucunda bu sınıf üretilir.
getArgs
Parse edilen parametreleri String[] şeklinde alabilmemizi sağlar. Örnek:
for(String arg : commandline.getArgs()){...}boost
Kullanılan ana sınıflar options_description, parsed_options ve variables_map. Örnek burada bulunabilir.
options_description sınıfı
add_options
Bu metod ile yeni bir seçenek eklenir. Örnek:
<< metodu
Eğer istenirse bu sınıf string'e çevirilebilir. Örnek:
variables_map
Bu sınıf parse sonucu aynı bir map şeklinde kullanabilmemizi sağlar.
count metodu
Aranılan seçeneğin girilip girilmediğini kontrol edebilmemizi sağlar.
parsed_options sınıfı
Bu sınıf parse işleminin sonucunu saklar.
boost:program_options::store
Bu metod ile verilen komut satırı parse edilerek variables_map sınıfına doldurulur.
boost:program_options::notify
Bu metod ile variables_map sınıfındaki değerler, options_description sınıfına bağlanmış olan değişkenlere atanır. Örnek:
QT
QCoreApplication parse işlemini biraz daha kolaylaştırıyor.
int main (int argc, char* argv[])
{
QCoreApplication app(argc, argv);
QStringList arglist = app.arguments();
}
Hiç yorum yok:
Yorum Gönder