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> 
int layout_object_getvalue( layout_object,  values,  index)
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.

Nota: Se você estiver desenvolvendo aplicativos internacionalizados que podem suportar códigos de locales multibyte, por favor, consulte Uso do Pacote libcur emConceitos de Programação Geral: Programação e Depuração de Programas

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");
}