src/glpenv.h
author Alpar Juttner <alpar@cs.elte.hu>
Sun, 05 Dec 2010 17:35:23 +0100
changeset 2 4c8956a7bdf4
permissions -rw-r--r--
Set up CMAKE build environment
     1 /* glpenv.h (GLPK environment) */
     2 
     3 /***********************************************************************
     4 *  This code is part of GLPK (GNU Linear Programming Kit).
     5 *
     6 *  Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
     7 *  2009, 2010 Andrew Makhorin, Department for Applied Informatics,
     8 *  Moscow Aviation Institute, Moscow, Russia. All rights reserved.
     9 *  E-mail: <mao@gnu.org>.
    10 *
    11 *  GLPK is free software: you can redistribute it and/or modify it
    12 *  under the terms of the GNU General Public License as published by
    13 *  the Free Software Foundation, either version 3 of the License, or
    14 *  (at your option) any later version.
    15 *
    16 *  GLPK is distributed in the hope that it will be useful, but WITHOUT
    17 *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
    18 *  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
    19 *  License for more details.
    20 *
    21 *  You should have received a copy of the GNU General Public License
    22 *  along with GLPK. If not, see <http://www.gnu.org/licenses/>.
    23 ***********************************************************************/
    24 
    25 #ifndef GLPENV_H
    26 #define GLPENV_H
    27 
    28 #include "glpstd.h"
    29 #include "glplib.h"
    30 
    31 typedef struct ENV ENV;
    32 typedef struct MEM MEM;
    33 typedef struct XFILE XFILE;
    34 
    35 #define ENV_MAGIC 0x454E5631
    36 /* environment block magic value */
    37 
    38 #define TERM_BUF_SIZE 4096
    39 /* terminal output buffer size, in bytes */
    40 
    41 #define IOERR_MSG_SIZE 1024
    42 /* i/o error message buffer size, in bytes */
    43 
    44 #define MEM_MAGIC 0x4D454D31
    45 /* memory block descriptor magic value */
    46 
    47 struct ENV
    48 {     /* environment block */
    49       int magic;
    50       /* magic value used for debugging */
    51       char version[7+1];
    52       /* version string returned by the routine glp_version */
    53       /*--------------------------------------------------------------*/
    54       /* terminal output */
    55       char *term_buf; /* char term_buf[TERM_BUF_SIZE]; */
    56       /* terminal output buffer */
    57       int term_out;
    58       /* flag to enable/disable terminal output */
    59       int (*term_hook)(void *info, const char *s);
    60       /* user-defined routine to intercept terminal output */
    61       void *term_info;
    62       /* transit pointer (cookie) passed to the routine term_hook */
    63       FILE *tee_file;
    64       /* output stream used to copy terminal output */
    65       /*--------------------------------------------------------------*/
    66       /* error handling */
    67       const char *err_file;
    68       /* value of the __FILE__ macro passed to glp_error */
    69       int err_line;
    70       /* value of the __LINE__ macro passed to glp_error */
    71       void (*err_hook)(void *info);
    72       /* user-defined routine to intercept abnormal termination */
    73       void *err_info;
    74       /* transit pointer (cookie) passed to the routine err_hook */
    75       /*--------------------------------------------------------------*/
    76       /* memory allocation */
    77       glp_long mem_limit;
    78       /* maximal amount of memory (in bytes) available for dynamic
    79          allocation */
    80       MEM *mem_ptr;
    81       /* pointer to the linked list of allocated memory blocks */
    82       int mem_count;
    83       /* total number of currently allocated memory blocks */
    84       int mem_cpeak;
    85       /* peak value of mem_count */
    86       glp_long mem_total;
    87       /* total amount of currently allocated memory (in bytes; is the
    88          sum of the size field over all memory block descriptors) */
    89       glp_long mem_tpeak;
    90       /* peak value of mem_total */
    91       /*--------------------------------------------------------------*/
    92       /* stream input/output */
    93       XFILE *file_ptr;
    94       /* pointer to the linked list of active stream descriptors */
    95       char *ioerr_msg; /* char ioerr_msg[IOERR_MSG_SIZE]; */
    96       /* input/output error message buffer */
    97       /*--------------------------------------------------------------*/
    98       /* shared libraries support */
    99       void *h_odbc;
   100       /* handle to ODBC shared library */
   101       void *h_mysql;
   102       /* handle to MySQL shared library */
   103 };
   104 
   105 struct MEM
   106 {     /* memory block descriptor */
   107       int flag;
   108       /* descriptor flag */
   109       int size;
   110       /* size of block (in bytes, including descriptor) */
   111       MEM *prev;
   112       /* pointer to previous memory block descriptor */
   113       MEM *next;
   114       /* pointer to next memory block descriptor */
   115 };
   116 
   117 struct XFILE
   118 {     /* input/output stream descriptor */
   119       int type;
   120       /* stream handle type: */
   121 #define FH_FILE   0x11  /* FILE   */
   122 #define FH_ZLIB   0x22  /* gzFile */
   123       void *fh;
   124       /* pointer to stream handle */
   125       XFILE *prev;
   126       /* pointer to previous stream descriptor */
   127       XFILE *next;
   128       /* pointer to next stream descriptor */
   129 };
   130 
   131 #define XEOF (-1)
   132 
   133 #define get_env_ptr _glp_get_env_ptr
   134 ENV *get_env_ptr(void);
   135 /* retrieve pointer to environment block */
   136 
   137 #define tls_set_ptr _glp_tls_set_ptr
   138 void tls_set_ptr(void *ptr);
   139 /* store global pointer in TLS */
   140 
   141 #define tls_get_ptr _glp_tls_get_ptr
   142 void *tls_get_ptr(void);
   143 /* retrieve global pointer from TLS */
   144 
   145 #define xprintf glp_printf
   146 void glp_printf(const char *fmt, ...);
   147 /* write formatted output to the terminal */
   148 
   149 #define xvprintf glp_vprintf
   150 void glp_vprintf(const char *fmt, va_list arg);
   151 /* write formatted output to the terminal */
   152 
   153 #ifndef GLP_ERROR_DEFINED
   154 #define GLP_ERROR_DEFINED
   155 typedef void (*_glp_error)(const char *fmt, ...);
   156 #endif
   157 
   158 #define xerror glp_error_(__FILE__, __LINE__)
   159 _glp_error glp_error_(const char *file, int line);
   160 /* display error message and terminate execution */
   161 
   162 #define xassert(expr) \
   163       ((void)((expr) || (glp_assert_(#expr, __FILE__, __LINE__), 1)))
   164 void glp_assert_(const char *expr, const char *file, int line);
   165 /* check for logical condition */
   166 
   167 #define xmalloc glp_malloc
   168 void *glp_malloc(int size);
   169 /* allocate memory block */
   170 
   171 #define xcalloc glp_calloc
   172 void *glp_calloc(int n, int size);
   173 /* allocate memory block */
   174 
   175 #define xfree glp_free
   176 void glp_free(void *ptr);
   177 /* free memory block */
   178 
   179 #define xtime glp_time
   180 glp_long glp_time(void);
   181 /* determine current universal time */
   182 
   183 #define xdifftime glp_difftime
   184 double glp_difftime(glp_long t1, glp_long t0);
   185 /* compute difference between two time values, in seconds */
   186 
   187 #define lib_err_msg _glp_lib_err_msg
   188 void lib_err_msg(const char *msg);
   189 
   190 #define xerrmsg _glp_lib_xerrmsg
   191 const char *xerrmsg(void);
   192 
   193 #define xfopen _glp_lib_xfopen
   194 XFILE *xfopen(const char *fname, const char *mode);
   195 
   196 #define xferror _glp_lib_xferror
   197 int xferror(XFILE *file);
   198 
   199 #define xfeof _glp_lib_xfeof
   200 int xfeof(XFILE *file);
   201 
   202 #define xfgetc _glp_lib_xfgetc
   203 int xfgetc(XFILE *file);
   204 
   205 #define xfputc _glp_lib_xfputc
   206 int xfputc(int c, XFILE *file);
   207 
   208 #define xfflush _glp_lib_xfflush
   209 int xfflush(XFILE *fp);
   210 
   211 #define xfclose _glp_lib_xfclose
   212 int xfclose(XFILE *file);
   213 
   214 #define xfprintf _glp_lib_xfprintf
   215 int xfprintf(XFILE *file, const char *fmt, ...);
   216 
   217 #define xdlopen _glp_xdlopen
   218 void *xdlopen(const char *module);
   219 
   220 #define xdlsym _glp_xdlsym
   221 void *xdlsym(void *h, const char *symbol);
   222 
   223 #define xdlclose _glp_xdlclose
   224 void xdlclose(void *h);
   225 
   226 #endif
   227 
   228 /* eof */