layout_object_getvalue Subroutine

Zweck

Fragt die aktuellen Layoutwerte einer LayoutObject -Struktur ab.

Bibliothek

Layoutbibliothek (libi18n.a)

Syntax

#include <sys/lc_layout.h> 
int layout_object_getvalue( layout_object,  values,  index)
LayoutObject layout_object;
LayoutValues values;
int *index;

Beschreibung

Die Subroutine layout_object_getvalue fragt die aktuelle Einstellung der Layoutwerte in der Struktur LayoutObject ab. Der Parameter layout_object gibt die Struktur LayoutObject an, die von der Subroutine layout_object_create erstellt wird.

Das Namensfeld der Struktur LayoutValues enthält den Namen des abzufragenden Layoutwerts. Das Wertfeld ist ein Zeiger auf den Speicherort des Layoutwerts. Die Werte werden aus der Struktur LayoutObject abgefragt und stellen ihren aktuellen Status dar.

Wenn der abzufragende Layoutwert beispielsweise den Typ T aufweist, muss der Parameter Wert den Typ T* aufweisen. Wenn T selbst ein Zeiger ist, ordnet die Subroutine layout_object_getvalue Speicherbereich zum Speichern der tatsächlichen Daten zu. Der Aufrufende muss diese Daten freigeben, indem er die Subroutine free (T) mit dem zurückgegebenen Zeiger aufruft.

Beim Festlegen des Wertfelds ist eine zusätzliche Zwischenstufe vorhanden, die nicht mit dem Parameter layout_object_setvalue vorhanden ist. Wenn Sie einen Layoutwert des Typs T festlegen, enthält das Wertfeld den Wert T. Wenn Sie jedoch denselben Layoutwert abfragen, enthält das Wertfeld & T.

Hinweis: Wenn Sie internationalisierte Anwendungen entwickeln, die Mehrbyte-Ländereinstellungen unterstützen, lesen Sie die Informationen unter Use of the libcur Package inGeneral Programming Concepts: Writing and Debugging Programs .

Parameter

Element Beschreibung
Layoutobjekt Gibt die Struktur LayoutObject an, die von der Subroutine layout_object_create erstellt wurde.
Werte Gibt ein Array von Layoutwerten vom Typ LayoutValueRec an, die in der LayoutObject abgefragt werden sollen. Das Ende des Arrays wird durchname=0.
Index Gibt einen Layoutwert an, der abgefragt werden soll Wenn der Wert nicht abgefragt werden kann, wird der Parameter index , der den Fehler verursacht, zurückgegeben und die Subroutine gibt einen Wert ungleich null zurück.

Rückgabewerte

Nach erfolgreicher Beendigung gibt die Subroutine layout_object_getvalue den Wert 0 zurück. Alle Layoutwerte wurden erfolgreich abgefragt.

Fehlercodes

Wenn die Subroutine layout_object_getvalue fehlschlägt, gibt sie die folgenden Werte zurück:

Element Beschreibung
LAYOUT_EINVAL Der mit dem Parameter index angegebene Layoutwert ist unbekannt oder der Parameter layout_object ist ungültig.
LAYOUT_EMOMEM Es ist nicht genügend Speicherplatz verfügbar.

Beispiele

Im folgenden Beispiel wird abgefragt, ob die Ländereinstellung bidirektional ist, und es werden die Werte derinundoutAusrichtung.

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