~ubuntu-branches/ubuntu/trusty/igraph/trusty-proposed

« back to all changes in this revision

Viewing changes to optional/glpk/glpenv.h

  • Committer: Package Import Robot
  • Author(s): Mathieu Malaterre
  • Date: 2013-05-27 14:01:54 UTC
  • mfrom: (4.1.1 experimental)
  • Revision ID: package-import@ubuntu.com-20130527140154-oxwwmr0gj3kdy4ol
Tags: 0.6.5-2
Upload to sid

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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 */