subrotina layout_object_getvalue
Propósito
Consulta os valores de layout atuais de uma estrutura de LayoutObject
Biblioteca
Biblioteca de Layout (libi18n.a)
Sintaxe
#include <sys/lc_layout.h> LayoutObject layout_object;
LayoutValues values;
int *index;
Descrição
A sub-rotina layout_object_getvalue consulta a configuração atual de valores de layout dentro da estrutura LayoutObject O parâmetro layout_object especifica a estrutura LayoutObject criada pela subrotina layout_object_create .
O campo de nome da estrutura LayoutValues contém o nome do valor de layout a ser consultado. O campo de valor é um ponteiro para onde o valor do layout é armazenado. Os valores são consultados na estrutura LayoutObject e representam seu estado atual.
Por exemplo, se o valor do layout a ser consultado é do tipo T, o parâmetro value deve ser do tipo T*. Se o próprio T for um ponteiro, a subroutine layout_object_getvalue alocará espaço para armazenar os dados reais. O ouvinte deve liberar esses dados chamando o subroutine de grátis (T) com o ponteiro devolvido.
Ao configurar o campo de valor, um nível extra de indirecionamento está presente que não está presente usando o parâmetro layout_object_setvalue . Quando você configura um valor de layout do tipo T, o campo de valor contém T. No entanto, ao consultar o mesmo valor de layout, o campo de valor contém & T.
Parâmetros
| Item | Descrição |
|---|---|
| objeto_de_layout | Especifica a estrutura LayoutObject criada pela sub-rotina layout_object_create . |
| valores | Especifica uma matriz de valores de layout do tipo LayoutValueRec que devem ser consultados na estrutura LayoutObject. O fim da matriz é indicado porname=0. |
| índice | Especifica um valor de layout a ser consultado. Se o valor não puder ser consultado, o parâmetro index causador do erro é retornado e a subroutine retorna um valor diferente de zero. |
Valores De Retorno
Após a conclusão bem-sucedida, a subroutina layout_object_getvalue retorna um valor de 0. Todos os valores de layout foram consultados com sucesso.
Códigos De Erro
Se a subroutine layout_object_getvalue falhar, ele retornará os seguintes valores:
| Item | Descrição |
|---|---|
| LAYOUT_EINVAL | O valor do layout especificado pelo parâmetro index é desconhecido ou o parâmetro layout_object é inválido. |
| LAYOUT_EMITEM | O espaço de armazenamento insuficiente está disponível. |
Exemplos
O exemplo a seguir consulta se o locale é bidirecional e obtém os valores doineoutorienações.
#include <sys/lc_layout.h>
#include <locale.h>
main()
{
LayoutObject plh;
int RC=0;
LayoutValues layout;
LayoutTextDescriptor Descr;
int index;
RC=layout_object_create(setlocale(LC_CTYPE,""),&plh); /* create object */
if (RC) {printf("Create error !!\n"); exit(0);}
layout=malloc(3*sizeof(LayoutValueRec));
/* allocate layout array */
layout[0].name=ActiveBidirection; /* set name */
layout[1].name=Orientation; /* set name */
layout[1].value=(caddr_t)&Descr;
/* send address of memory to be allocated by function */
layout[2].name=0; /* indicate end of array */
RC=layout_object_getvalue(plh,layout,&index);
if (RC) {printf("Getvalue error at %d !!\n",index); exit(0);}
printf("ActiveBidirection = %d \n",*(layout[0].value));
/*print output*/
printf("Orientation in = %x out = %x \n", Descr->>in, Descr->>out);
free(layout); /* free layout array */
free (Descr); /* free memory allocated by function */
RC=layout_object_free(plh); /* free layout object */
if (RC) printf("Free error !!\n");
}