Back to home page

Enduro/X

 
 

    


0001 /**
0002  * @brief UBF library, field table handling routines (i.e. .fd files)
0003  *
0004  * @file fieldtable.h
0005  */
0006 /* -----------------------------------------------------------------------------
0007  * Enduro/X Middleware Platform for Distributed Transaction Processing
0008  * Copyright (C) 2009-2016, ATR Baltic, Ltd. All Rights Reserved.
0009  * Copyright (C) 2017-2023, Mavimax, Ltd. All Rights Reserved.
0010  * This software is released under one of the following licenses:
0011  * AGPL (with Java and Go exceptions) or Mavimax's license for commercial use.
0012  * See LICENSE file for full text.
0013  * -----------------------------------------------------------------------------
0014  * AGPL license:
0015  *
0016  * This program is free software; you can redistribute it and/or modify it under
0017  * the terms of the GNU Affero General Public License, version 3 as published
0018  * by the Free Software Foundation;
0019  *
0020  * This program is distributed in the hope that it will be useful, but WITHOUT ANY
0021  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
0022  * PARTICULAR PURPOSE. See the GNU Affero General Public License, version 3
0023  * for more details.
0024  *
0025  * You should have received a copy of the GNU Affero General Public License along 
0026  * with this program; if not, write to the Free Software Foundation, Inc.,
0027  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
0028  *
0029  * -----------------------------------------------------------------------------
0030  * A commercial use license is available from Mavimax, Ltd
0031  * contact@mavimax.com
0032  * -----------------------------------------------------------------------------
0033  */
0034 #ifndef FIELDTABLE_H
0035 #define FIELDTABLE_H
0036 
0037 #ifdef  __cplusplus
0038 extern "C" {
0039 #endif
0040 /*---------------------------Includes-----------------------------------*/
0041 #include <fdatatype.h>
0042 /*---------------------------Externs------------------------------------*/
0043 /*---------------------------Macros-------------------------------------*/
0044 /*---------------------------Enums--------------------------------------*/
0045 /*---------------------------Typedefs-----------------------------------*/
0046 /*
0047  * Hash table entries for data type descriptors
0048  * It keeps the double linked list in case
0049  */
0050 typedef struct ft_node ft_node_t;
0051 
0052 struct ft_node
0053 {
0054     UBF_field_def_t def;
0055     /* part of the hash */
0056     ft_node_t *next;
0057 };
0058 /*---------------------------Globals------------------------------------*/
0059 /*---------------------------Statics------------------------------------*/
0060 /*---------------------------Prototypes---------------------------------*/
0061 extern NDRX_API UBF_field_def_t * ndrx_fldnmhash_get(char *key);
0062 extern NDRX_API UBF_field_def_t * _bfldidhash_get(BFLDID id);
0063 extern NDRX_API int ndrx_prepare_type_tables(void);
0064 /* Internal version of Bfname (for debug, etc..) */
0065 extern NDRX_API char * ndrx_Bfname_int (BFLDID bfldid);
0066 extern NDRX_API BFLDID ndrx_Bfldid_int (char *fldnm);
0067 
0068 extern NDRX_API int _ubf_loader_init(void);
0069 
0070 extern NDRX_API int ndrx_ubf_load_def_file(FILE *fp,
0071                 int (*put_text_line) (char *text), /* callback for putting text line */
0072                 int (*put_def_line) (UBF_field_def_t *def),  /* callback for writting defintion */
0073                 int (*put_got_base_line) (char *base), /* Callback for base line */
0074                 char *fname,
0075                 int check_dup
0076             );
0077 #ifdef  __cplusplus
0078 }
0079 #endif
0080 
0081 #endif  /* FIELDTABLE_H */
0082 
0083 /* vim: set ts=4 sw=4 et smartindent: */