| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| readme.txt | 2012-07-17 | 3.5 kB | |
| procop-0.2.1.zip | 2012-07-17 | 22.3 kB | |
| Totals: 2 Items | 25.8 kB | 0 | |
ProcOp
Processador de Opções
Danilo Almeida
sengflex.developer@gmail.com
terça-feira, 17 de julho de 2012
Release 0.2.1
_____________
1. Esta é a segunda release do projeto.
2. Possui todas as funções terminadas, testadas, mas não
exaustivamente.
3. Documentação de referência ainda falta nesta versão. Mas será
providenciada na próxima revisão. Se não puder esperar entre
em contato pelo e-mail informado acima. Bom proveito :-)
Mudanças
________
4. Uma opção agora pode ter mais de um argumento de opção. Exemplo:
foo --option [optarg1] [optarg2] ... [optargN] [args...]
5. A estrutura PROCOPINFO ganhou um membro: "char **optArgs;"
Ele armazena os argumentos da última opção processada. Assim,
os argumentos de opção do exemplo anterior seriam acessados
da seguinte maneira:
CÓDIGO-------------------------------------------------
PROCOPINFO *pi;
...
procop_next_opt(PROCOPINFO *pi);
printf("Argumento 1 da opção: %s.\n", pi->optArgs[0]);
printf("Argumento 2 da opção: %s.\n", pi->optArgs[1]);
...
printf("Argumento N da opção: %s.\n", pi->optArgs[N-1]);
SAÍDA--------------------------------------------------
Argumento 1 da opção: optarg1.
Argumento 2 da opção: optarg2.
...
Argumento N da opção: optargN.
-------------------------------------------------------
O gerenciamento de memória de optArgs é automático. Assim, o
número de argumentos de opção é limitado somente pela quantidade
de memória disponível. Então fique frio ;-)
6. A função
int procop_next_opt(PROCOPINFO *pi, char *optionArg);
foi reescrita para:
int procop_next_opt(PROCOPINFO *pi);
Os argumentos de opções são armazenadas na estrutura
PROCOPINFO (veja-a acima).
7. Duas novas funções:
int procop_has_opt(PROCOPINFO *pi, int opt_index, int *pos);
Verifica se o vetor de argumentos tem a opção de índice opt_index.
Se tiver, retorna 1 e coloca a posição da opção em pos. Útil para
o uso de "coopções" (ou parâmetros de opções).
int procop_get_opt_args(PROCOPINFO *pi, int opt_index, int pos);
Se a opção de índice 'opt_index' requerer argumentos, esta função
encontra-os (se existirem) e coloca-os em 'optArgs'. A posição
da opção no vetor de argumentos deve ser indicada em 'pos'.
8. Essas adições pretendem implementar o gerenciamento avançado dos
argumentos de linha de comando. É possível por exemplo ter duas
formas de lidar com opções que requerem mais de uma informação. Pode-se
fazer isso informando diretamente o número de argumentos de opção
na definição da tabela 'PROCOPOPS'. Ou usar coopções (opções que
fornecem dados para o uso de outras) Quando a opção for 'achada' por
'procop_next_opt' deve-se invocar 'procop_has_opt' para buscar a coopção e
em seguida 'procop_get_opt_args' para pegar seus dados e 'entregá-los'
ao processamento da opção principal. Exemplos:
foo --option [optarg1] [optarg2]
agenda --add "Danilo Almeida" 45456879 23 sengflex.developer@gmail.com
método 1.
foo --option [optarg] --cooption [optarg2]
agenda --add "Danilo Almeida" --tel 45456879 --age 23 \
--email sengflex.developer@gmail.com
método 2.
O segundo método tem a vantagem de proporcionar a legibilidade, já que
o nome da coopção pode indicar de que se trata aquele dado adicional.
Espero que seja útil.