return 0;
}
-char * pagamento_cnpj_ordenado(struct declaracao *dec, int codigo, int n)
+char * pagamento_cnpj_ordenado_cond(struct declaracao *dec,
+ int (*cond)(struct pagamento *), int n)
{
struct pagamento *pagamento;
int i;
int j = 0;
for (i = 0; (pagamento = list_get(dec->pagamentos, i)); i++) {
- if (pagamento->codigo == codigo && j++ == n)
+ if (cond(pagamento) && j++ == n)
break;
}
if (!pagamento)
return pagamento->cnpj;
}
-static int pagamento_medico(int codigo)
+static int always(struct pagamento *pagamento)
{
- switch (codigo) {
+ return pagamento != NULL;
+}
+
+char * pagamento_cnpj_ordenado(struct declaracao *dec, int n)
+{
+ return pagamento_cnpj_ordenado_cond(dec, always, n);
+}
+
+static int pagamento_medico(struct pagamento *pagamento)
+{
+ switch (pagamento->codigo) {
case 10:
case 21:
case 26:
char * medico_cnpj_ordenado(struct declaracao *dec, int n)
{
- struct pagamento *pagamento;
- int i;
- int j = 0;
- for (i = 0; (pagamento = list_get(dec->pagamentos, i)); i++) {
- if (pagamento_medico(pagamento->codigo) && j++ == n)
- break;
- }
- if (!pagamento)
- return "";
- return pagamento->cnpj;
+ return pagamento_cnpj_ordenado_cond(dec, pagamento_medico, n);
+}
+
+static int pagamento_inss(struct pagamento *pagamento)
+{
+ return pagamento->codigo == 36;
+}
+
+char *inss_cnpj_ordenado(struct declaracao *dec, int n)
+{
+ return pagamento_cnpj_ordenado_cond(dec, pagamento_inss, n);
}