X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=form%2Fform.priv.h;h=59f8eb19ae9ec724baebd61afc3aae117337bf93;hp=fea627d30d7d9d1c213a84ead2c0c3afcf5171d8;hb=73b54c0812e4b8dfddcf87f59c7488bb3c10e10d;hpb=d736364fc09f481a38861dcb44b43d15b94af528 diff --git a/form/form.priv.h b/form/form.priv.h index fea627d3..59f8eb19 100644 --- a/form/form.priv.h +++ b/form/form.priv.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2006,2008 Free Software Foundation, Inc. * + * Copyright (c) 1998-2012,2014 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 * @@ -30,11 +30,11 @@ * Author: Juergen Pfeifer, 1995,1997 * ****************************************************************************/ -/* $Id: form.priv.h,v 0.27 2008/09/08 20:29:05 tom Exp $ */ +/* $Id: form.priv.h,v 0.37 2014/07/27 00:21:42 tom Exp $ */ #ifndef FORM_PRIV_H #define FORM_PRIV_H 1 - +/* *INDENT-OFF*/ #include "curses.priv.h" #include "mf_common.h" @@ -62,6 +62,13 @@ #include "form.h" + /*********************** + * Default objects * + ***********************/ +extern NCURSES_EXPORT_VAR(FORM *) _nc_Default_Form; +extern NCURSES_EXPORT_VAR(FIELD *) _nc_Default_Field; +extern NCURSES_EXPORT_VAR(FIELDTYPE *) _nc_Default_FieldType; + /* form status values */ #define _OVLMODE (0x04U) /* Form is in overlay mode */ #define _WINDOW_MODIFIED (0x10U) /* Current field window has been modified */ @@ -78,6 +85,7 @@ #define _HAS_ARGS (0x02U) /* Type has arguments */ #define _HAS_CHOICE (0x04U) /* Type has choice methods */ #define _RESIDENT (0x08U) /* Type is built-in */ +#define _GENERIC (0x10U) /* A generic field type */ /* This are the field options required to be a selectable field in field navigation requests */ @@ -91,21 +99,34 @@ #define Normalize_Field(field) \ ((field) = (field != 0) ? (field) : _nc_Default_Field) +#if NCURSES_SP_FUNCS +#define Get_Form_Screen(form) \ + ((form)->win ? _nc_screen_of((form->win)):CURRENT_SCREEN) +#else +#define Get_Form_Screen(form) CURRENT_SCREEN +#endif + /* Retrieve forms window */ #define Get_Form_Window(form) \ - ((form)->sub?(form)->sub:((form)->win?(form)->win:stdscr)) + ((form)->sub \ + ? (form)->sub \ + : ((form)->win \ + ? (form)->win \ + : StdScreen(Get_Form_Screen(form)))) /* Calculate the size for a single buffer for this field */ #define Buffer_Length(field) ((field)->drows * (field)->dcols) /* Calculate the total size of all buffers for this field */ #define Total_Buffer_Size(field) \ - ( (Buffer_Length(field) + 1) * (1+(field)->nbuf) * sizeof(FIELD_CELL) ) + ( (size_t)(Buffer_Length(field) + 1) * (size_t)(1+(field)->nbuf) * sizeof(FIELD_CELL) ) /* Logic to determine whether or not a field is single lined */ #define Single_Line_Field(field) \ (((field)->rows + (field)->nrow) == 1) +#define Field_Has_Option(f,o) ((((unsigned)(f)->opts) & o) != 0) + /* Logic to determine whether or not a field is selectable */ #define Field_Is_Selectable(f) (((unsigned)((f)->opts) & O_SELECTABLE)==O_SELECTABLE) #define Field_Is_Not_Selectable(f) (((unsigned)((f)->opts) & O_SELECTABLE)!=O_SELECTABLE) @@ -127,7 +148,7 @@ TypeArgument; O_NL_OVERLOAD |\ O_BS_OVERLOAD ) -#define ALL_FIELD_OPTS (Field_Options)( \ +#define STD_FIELD_OPTS (Field_Options)( \ O_VISIBLE |\ O_ACTIVE |\ O_PUBLIC |\ @@ -137,15 +158,17 @@ TypeArgument; O_AUTOSKIP|\ O_NULLOK |\ O_PASSOK |\ - O_STATIC ) + O_STATIC) + +#define ALL_FIELD_OPTS (Field_Options)( \ + STD_FIELD_OPTS |\ + O_DYNAMIC_JUSTIFY) #define C_BLANK ' ' #define is_blank(c) ((c)==C_BLANK) #define C_ZEROS '\0' -extern NCURSES_EXPORT_VAR(const FIELDTYPE *) _nc_Default_FieldType; - extern NCURSES_EXPORT(TypeArgument *) _nc_Make_Argument (const FIELDTYPE*, va_list*, int*); extern NCURSES_EXPORT(TypeArgument *) _nc_Copy_Argument (const FIELDTYPE*, const TypeArgument*, int*); extern NCURSES_EXPORT(void) _nc_Free_Argument (const FIELDTYPE*, TypeArgument*); @@ -161,6 +184,36 @@ extern NCURSES_EXPORT(bool) _nc_Internal_Validation (FORM*); extern NCURSES_EXPORT(int) _nc_Set_Current_Field (FORM*, FIELD*); extern NCURSES_EXPORT(int) _nc_Position_Form_Cursor (FORM*); +#if NCURSES_INTEROP_FUNCS +extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_INTEGER(void); +extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_ALNUM(void); +extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_ALPHA(void); +extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_ENUM(void); +extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_NUMERIC(void); +extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_REGEXP(void); +extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_IPV4(void); + +extern NCURSES_EXPORT(FIELDTYPE *) +_nc_generic_fieldtype(bool (*const field_check) (FORM*, + FIELD *, + const void *), + bool (*const char_check) (int, + FORM*, + FIELD*, + const void *), + bool (*const next)(FORM*,FIELD*,const void*), + bool (*const prev)(FORM*,FIELD*,const void*), + void (*freecallback)(void*)); +extern NCURSES_EXPORT(int) _nc_set_generic_fieldtype(FIELD*, FIELDTYPE*, int (*)(void**)); +extern NCURSES_EXPORT(WINDOW*) _nc_form_cursor(const FORM* , int* , int* ); + +#define INIT_FT_FUNC(func) {func} +#else +#define INIT_FT_FUNC(func) func +#endif + +extern NCURSES_EXPORT(void) _nc_get_fieldbuffer(FORM*, FIELD*, FIELD_CELL*); + #if USE_WIDEC_SUPPORT extern NCURSES_EXPORT(wchar_t *) _nc_Widen_String(char *, int *); #endif @@ -176,8 +229,8 @@ extern NCURSES_EXPORT(wchar_t *) _nc_Widen_String(char *, int *); extern NCURSES_EXPORT(FIELD **) _nc_retrace_field_ptr (FIELD **); extern NCURSES_EXPORT(FIELD *) _nc_retrace_field (FIELD *); extern NCURSES_EXPORT(FIELDTYPE *) _nc_retrace_field_type (FIELDTYPE *); -extern NCURSES_EXPORT(FORM *) _nc_retrace_form (FORM *); -extern NCURSES_EXPORT(Form_Hook) _nc_retrace_form_hook (Form_Hook); +extern NCURSES_EXPORT(FORM *) _nc_retrace_form (FORM *); +extern NCURSES_EXPORT(Form_Hook) _nc_retrace_form_hook (Form_Hook); #else /* !TRACE */ @@ -246,5 +299,6 @@ extern NCURSES_EXPORT(Form_Hook) _nc_retrace_form_hook (Form_Hook); result = ((*buffer || (l < width)) ? FALSE : TRUE); \ } #endif +/* *INDENT-ON*/ #endif /* FORM_PRIV_H */