X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=form%2Ffty_alpha.c;h=7dec23f526ad272be6b7f3b0e2523dc567cfb4d0;hp=e9fb6f5820a01003d1abf2c36c249887f22ddb6c;hb=47d2fb4537d9ad5bb14f4810561a327930ca4280;hpb=5242fccf157e715ed878455a3efea6c82b840eb5 diff --git a/form/fty_alpha.c b/form/fty_alpha.c index e9fb6f58..7dec23f5 100644 --- a/form/fty_alpha.c +++ b/form/fty_alpha.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2010 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -34,7 +35,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_alpha.c,v 1.22 2007/02/03 23:37:46 tom Exp $") +MODULE_ID("$Id: fty_alpha.c,v 1.27 2020/02/02 23:34:34 tom Exp $") #define thisARG alphaARG @@ -46,26 +47,46 @@ thisARG; /*--------------------------------------------------------------------------- | Facility : libnform -| Function : static void *Make_This_Type(va_list *ap) +| Function : static void *Generic_This_Type(va_list *ap) | | Description : Allocate structure for alpha type argument. | | Return Values : Pointer to argument structure or NULL on error +--------------------------------------------------------------------------*/ static void * -Make_This_Type(va_list *ap) +Generic_This_Type(void *arg) { - thisARG *argp = (thisARG *) malloc(sizeof(thisARG)); + thisARG *argp = (thisARG *) 0; - if (argp) + if (arg) { - T((T_CREATE("thisARG %p"), argp)); - argp->width = va_arg(*ap, int); - } + argp = typeMalloc(thisARG, 1); + if (argp) + { + T((T_CREATE("thisARG %p"), (void *)argp)); + argp->width = *((int *)arg); + } + } return ((void *)argp); } +/*--------------------------------------------------------------------------- +| Facility : libnform +| Function : static void *Make_This_Type(va_list *ap) +| +| Description : Allocate structure for alpha type argument. +| +| Return Values : Pointer to argument structure or NULL on error ++--------------------------------------------------------------------------*/ +static void * +Make_This_Type(va_list *ap) +{ + int w = va_arg(*ap, int); + + return Generic_This_Type((void *)&w); +} + /*--------------------------------------------------------------------------- | Facility : libnform | Function : static void *Copy_This_Type(const void * argp) @@ -78,11 +99,11 @@ static void * Copy_This_Type(const void *argp) { const thisARG *ap = (const thisARG *)argp; - thisARG *result = (thisARG *) malloc(sizeof(thisARG)); + thisARG *result = typeMalloc(thisARG, 1); if (result) { - T((T_CREATE("thisARG %p"), result)); + T((T_CREATE("thisARG %p"), (void *)result)); *result = *ap; } @@ -156,12 +177,27 @@ static FIELDTYPE typeTHIS = Make_This_Type, Copy_This_Type, Free_This_Type, - Check_This_Field, - Check_This_Character, - NULL, - NULL + INIT_FT_FUNC(Check_This_Field), + INIT_FT_FUNC(Check_This_Character), + INIT_FT_FUNC(NULL), + INIT_FT_FUNC(NULL), +#if NCURSES_INTEROP_FUNCS + Generic_This_Type +#endif }; NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ALPHA = &typeTHIS; +#if NCURSES_INTEROP_FUNCS +/* The next routines are to simplify the use of ncurses from + programming languages with restictions on interop with C level + constructs (e.g. variable access or va_list + ellipsis constructs) +*/ +NCURSES_EXPORT(FIELDTYPE *) +_nc_TYPE_ALPHA(void) +{ + return TYPE_ALPHA; +} +#endif + /* fty_alpha.c ends here */