DyLP
1.10.4
Toggle main menu visibility
Loading...
Searching...
No Matches
src
Dylp
glplib.h
Go to the documentation of this file.
1
/* glplib.h */
2
3
/*----------------------------------------------------------------------
4
-- Copyright (C) 2000, 2001, 2002 Andrew Makhorin <mao@mai2.rcnet.ru>,
5
-- Department for Applied Informatics, Moscow Aviation
6
-- Institute, Moscow, Russia. All rights reserved.
7
--
8
-- This file is a part of GLPK (GNU Linear Programming Kit).
9
--
10
-- Licensed under the Eclipse Public License (EPL) by permission of the
11
-- author for inclusion in the DyLP LP distribution.
12
----------------------------------------------------------------------*/
13
/*
14
@(#)glplib.h 1.1 10/18/02
15
svn/cvs: $Id: glplib.h 407 2010-12-31 20:48:48Z lou $
16
*/
17
18
#ifndef _GLPLIB_H
19
#define _GLPLIB_H
20
21
#define save_pointer dy_glp_save_pointer
22
#define read_pointer dy_glp_read_pointer
23
24
#define init_lib_env dy_glp_init_lib_env
25
#define get_env_ptr dy_glp_get_env_ptr
26
#define free_lib_env dy_glp_free_lib_env
27
28
#define print dy_glp_print
29
#define fault dy_glp_fault
30
#define _insist dy_glp_insist
31
#define watch dy_glp_watch
32
33
#define umalloc dy_glp_umalloc
34
#define ucalloc dy_glp_ucalloc
35
#define ufree dy_glp_ufree
36
37
#define create_pool dy_glp_create_pool
38
#define get_atom dy_glp_get_atom
39
#define free_atom dy_glp_free_atom
40
#define get_atomv dy_glp_get_atomv
41
#define clear_pool dy_glp_clear_pool
42
#define delete_pool dy_glp_delete_pool
43
44
extern
void
save_pointer
(
void
*ptr);
45
/* save a pointer */
46
47
extern
void
*
read_pointer
(
void
);
48
/* obtain a pointer */
49
50
typedef
struct
ENV
ENV
;
51
typedef
struct
MEM
MEM
;
52
53
struct
ENV
54
{
/* library environmental block */
55
MEM
*
mem_ptr
;
56
/* pointer to the linked list of allocated memory blocks */
57
int
mem_limit
;
58
/* maximal amount of memory (in bytes) available for dynamic
59
allocation */
60
int
mem_total
;
61
/* total amount of currently allocated memory (in bytes; is the
62
sum of the size fields over all memory block descriptors) */
63
int
mem_tpeak
;
64
/* peak value of mem_total */
65
int
mem_count
;
66
/* total number of currently allocated memory blocks */
67
int
mem_cpeak
;
68
/* peak value of mem_count */
69
};
70
71
extern
int
init_lib_env
(
void
);
72
/* initialize library environment */
73
74
extern
ENV
*
get_env_ptr
(
void
);
75
/* obtain a pointer to the environmental block */
76
77
extern
int
free_lib_env
(
void
);
78
/* deinitialize library environment */
79
80
extern
void
print
(
const
char
*fmt, ...);
81
/* print informative message */
82
83
extern
void
fault
(
const
char
*fmt, ...);
84
/* print error message and terminate program execution */
85
86
#define insist(expr) \
87
((void)((expr) || (_insist(#expr, __FILE__, __LINE__), 1)))
88
89
extern
void
_insist
(
const
char
*expr,
const
char
*file,
int
line);
90
/* check for logical condition */
91
92
extern
double
watch
(
void
);
93
/* take reading of stop-watch */
94
95
/* some processors need data to be properly aligned; the align_boundary
96
macro defines the boundary which should fit for all data types; the
97
align_datasize macro allows enlarging size of data item in order the
98
immediately following data of any type should be properly aligned */
99
100
#define align_boundary sizeof(double)
101
102
#define align_datasize(size) \
103
((((size) + (align_boundary - 1)) / align_boundary) * align_boundary)
104
105
struct
MEM
106
{
/* memory block descriptor */
107
int
size
;
108
/* size of block (in bytes, including descriptor) */
109
int
flag
;
110
/* descriptor flag */
111
MEM
*
prev
;
112
/* pointer to descriptor of the previous block */
113
MEM
*
next
;
114
/* pointer to descriptor of the next block */
115
/* actual data start here (there may be a "hole" between the next
116
field and actual data because of data alignment) */
117
};
118
119
extern
void
*
umalloc
(
int
size);
120
/* allocate memory block */
121
122
extern
void
*
ucalloc
(
int
nmemb,
int
size);
123
/* allocate memory block */
124
125
extern
void
ufree
(
void
*ptr);
126
/* free memory block */
127
128
typedef
struct
POOL
POOL
;
129
130
struct
POOL
131
{
/* memory pool (a set of atoms) */
132
int
size
;
133
/* size of each atom in bytes (1 <= size <= 256); if size = 0,
134
different atoms may have different sizes */
135
void
*
avail
;
136
/* pointer to the linked list of free atoms */
137
void
*
link
;
138
/* pointer to the linked list of allocated blocks (it points to
139
the last recently allocated block) */
140
int
used
;
141
/* number of bytes used in the last allocated block */
142
void
*
stock
;
143
/* pointer to the linked list of free blocks */
144
int
count
;
145
/* total number of allocated atoms */
146
};
147
148
extern
POOL
*
create_pool
(
int
size);
149
/* create memory pool */
150
151
extern
void
*
get_atom
(
POOL
*pool);
152
/* allocate atom of fixed size */
153
154
extern
void
free_atom
(
POOL
*pool,
void
*ptr);
155
/* free an atom */
156
157
extern
void
*
get_atomv
(
POOL
*pool,
int
size);
158
/* allocate atom of variable size */
159
160
extern
void
clear_pool
(
POOL
*pool);
161
/* free all atoms */
162
163
extern
void
delete_pool
(
POOL
*pool);
164
/* delete memory pool */
165
166
#endif
167
168
/* eof */
create_pool
#define create_pool
Definition
glplib.h:37
save_pointer
#define save_pointer
Definition
glplib.h:21
get_env_ptr
#define get_env_ptr
Definition
glplib.h:25
free_atom
#define free_atom
Definition
glplib.h:39
free_lib_env
#define free_lib_env
Definition
glplib.h:26
umalloc
#define umalloc
Definition
glplib.h:33
fault
#define fault
Definition
glplib.h:29
init_lib_env
#define init_lib_env
Definition
glplib.h:24
get_atom
#define get_atom
Definition
glplib.h:38
delete_pool
#define delete_pool
Definition
glplib.h:42
ucalloc
#define ucalloc
Definition
glplib.h:34
ufree
#define ufree
Definition
glplib.h:35
get_atomv
#define get_atomv
Definition
glplib.h:40
clear_pool
#define clear_pool
Definition
glplib.h:41
_insist
#define _insist
Definition
glplib.h:30
print
#define print
Definition
glplib.h:28
watch
#define watch
Definition
glplib.h:31
read_pointer
#define read_pointer
Definition
glplib.h:22
ENV
Definition
glplib.h:54
ENV::mem_tpeak
int mem_tpeak
Definition
glplib.h:63
ENV::mem_total
int mem_total
Definition
glplib.h:60
ENV::mem_ptr
MEM * mem_ptr
Definition
glplib.h:55
ENV::mem_limit
int mem_limit
Definition
glplib.h:57
ENV::mem_count
int mem_count
Definition
glplib.h:65
ENV::mem_cpeak
int mem_cpeak
Definition
glplib.h:67
MEM
Definition
glplib.h:106
MEM::size
int size
Definition
glplib.h:107
MEM::next
MEM * next
Definition
glplib.h:113
MEM::flag
int flag
Definition
glplib.h:109
MEM::prev
MEM * prev
Definition
glplib.h:111
POOL
Definition
glplib.h:131
POOL::stock
void * stock
Definition
glplib.h:142
POOL::size
int size
Definition
glplib.h:132
POOL::link
void * link
Definition
glplib.h:137
POOL::count
int count
Definition
glplib.h:144
POOL::avail
void * avail
Definition
glplib.h:135
POOL::used
int used
Definition
glplib.h:140
Generated by
1.17.0