X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=form%2Ffty_generic.c;h=301c80a1f07aa6befea5810b96554bfaba915817;hp=159d30596dbb37210906081c30b01e1730c28fcc;hb=5a107d6f2a641ef5a33c8976fbd6cd26a3196a0d;hpb=47d2fb4537d9ad5bb14f4810561a327930ca4280 diff --git a/form/fty_generic.c b/form/fty_generic.c index 159d3059..301c80a1 100644 --- a/form/fty_generic.c +++ b/form/fty_generic.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2018-2020,2021 Thomas E. Dickey * * Copyright 2008-2012,2016 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -35,27 +35,28 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_generic.c,v 1.10 2020/02/02 23:34:34 tom Exp $") +MODULE_ID("$Id: fty_generic.c,v 1.15 2021/03/27 23:49:53 tom Exp $") /* * This is not a full implementation of a field type, but adds some * support for higher level languages with some restrictions to interop - * with C language. Especially the collection of arguments for the + * with C language. In particular, the collection of arguments for the * various fieldtypes is not based on the vararg C mechanism, but on a - * iterator based callback mechanism that allowes the high level language + * iterator based callback mechanism that allows the high level language * to provide the arguments as a structure. Most languages have mechanisms * to layout structures so that they can be passed to C. + * * The languages can register a new generic fieldtype dynamically and store * a handle (key) to the calling object as an argument. Together with that * it can register a freearg callback, so that the high level language * remains in control of the memory management of the arguments they pass. * The design idea is, that the high-level language - typically a OO - * language like C# or Java, uses it's own dispatching mechanisms + * language like C# or Java, uses its own dispatching mechanisms * (polymorphism) to call the proper check routines responsible for the * argument type. So these language implement typically only one generic * fieldtype they register with the forms library using this call. * - * For that purpose we have extended the fieldtype struc by a new element + * For that purpose we have extended the fieldtype structure by a new element * that gets the arguments from a single struct passed by the caller. * */ @@ -99,7 +100,7 @@ Generic_This_Type(void *arg) | | Return Values : Fieldtype pointer or NULL if error occurred +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELDTYPE *) +FORM_EXPORT(FIELDTYPE *) _nc_generic_fieldtype(bool (*const field_check) (FORM *, FIELD *, const void *), bool (*const char_check) (int, FORM *, FIELD *, const void *), @@ -220,7 +221,7 @@ GenericArgument(const FIELDTYPE *typ, | Return Values : E_OK if all went well | E_SYSTEM_ERROR if an error occurred +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) _nc_set_generic_fieldtype(FIELD *field, FIELDTYPE *ftyp, int (*argiterator) (void **)) @@ -273,15 +274,15 @@ _nc_set_generic_fieldtype(FIELD *field, | Description : Get the current position of the form cursor position | We also return the field window | -| Return Values : The fields Window or NULL on error +| Return Values : The field's Window or NULL on error +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(WINDOW *) +FORM_EXPORT(WINDOW *) _nc_form_cursor(const FORM *form, int *pRow, int *pCol) { int code = E_SYSTEM_ERROR; WINDOW *res = (WINDOW *)0; - if (!(form == 0 || pRow == 0 || pCol == 0)) + if (form != 0 && pRow != 0 && pCol != 0) { *pRow = form->currow; *pCol = form->curcol;