Download Latest Version procop-0.4.0-alpha-src.zip (53.1 kB)
Email in envelope

Get an email when there's a new version of procop

Home / procop 0.2.1
Name Modified Size InfoDownloads / 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.
Source: readme.txt, updated 2012-07-17