lpsolve_sys/
lib.rs

1/* automatically generated by rust-bindgen */
2#![no_std]
3#![allow(bad_style)]
4
5extern crate libc;
6
7pub type lprec = Struct__lprec;
8pub enum Struct__INVrec { }
9pub type INVrec = Struct__INVrec;
10pub enum Union_QSORTrec { }
11#[repr(C)]
12#[derive(Copy)]
13pub struct Struct__B4rec {
14    pub B4_var: *mut libc::c_int,
15    pub var_B4: *mut libc::c_int,
16    pub B4_row: *mut libc::c_int,
17    pub row_B4: *mut libc::c_int,
18    pub wcol: *mut libc::c_double,
19    pub nzwcol: *mut libc::c_int,
20}
21impl ::core::clone::Clone for Struct__B4rec {
22    fn clone(&self) -> Self { *self }
23}
24impl ::core::default::Default for Struct__B4rec {
25    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
26}
27pub type B4rec = Struct__B4rec;
28#[repr(C)]
29#[derive(Copy)]
30pub struct Struct__OBJmonrec {
31    pub lp: *mut lprec,
32    pub oldpivstrategy: libc::c_int,
33    pub oldpivrule: libc::c_int,
34    pub pivrule: libc::c_int,
35    pub ruleswitches: libc::c_int,
36    pub limitstall: [libc::c_int; 2usize],
37    pub limitruleswitches: libc::c_int,
38    pub idxstep: [libc::c_int; 5usize],
39    pub countstep: libc::c_int,
40    pub startstep: libc::c_int,
41    pub currentstep: libc::c_int,
42    pub Rcycle: libc::c_int,
43    pub Ccycle: libc::c_int,
44    pub Ncycle: libc::c_int,
45    pub Mcycle: libc::c_int,
46    pub Icount: libc::c_int,
47    pub thisobj: libc::c_double,
48    pub prevobj: libc::c_double,
49    pub objstep: [libc::c_double; 5usize],
50    pub thisinfeas: libc::c_double,
51    pub previnfeas: libc::c_double,
52    pub epsvalue: libc::c_double,
53    pub spxfunc: [libc::c_char; 10usize],
54    pub pivdynamic: libc::c_uchar,
55    pub isdual: libc::c_uchar,
56    pub active: libc::c_uchar,
57}
58impl ::core::clone::Clone for Struct__OBJmonrec {
59    fn clone(&self) -> Self { *self }
60}
61impl ::core::default::Default for Struct__OBJmonrec {
62    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
63}
64pub type OBJmonrec = Struct__OBJmonrec;
65#[repr(C)]
66#[derive(Copy)]
67pub struct Struct__edgerec {
68    pub edgeVector: *mut libc::c_double,
69}
70impl ::core::clone::Clone for Struct__edgerec {
71    fn clone(&self) -> Self { *self }
72}
73impl ::core::default::Default for Struct__edgerec {
74    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
75}
76pub type edgerec = Struct__edgerec;
77#[repr(C)]
78#[derive(Copy)]
79pub struct Struct__pricerec {
80    pub theta: libc::c_double,
81    pub pivot: libc::c_double,
82    pub epspivot: libc::c_double,
83    pub varno: libc::c_int,
84    pub lp: *mut lprec,
85    pub isdual: libc::c_uchar,
86}
87impl ::core::clone::Clone for Struct__pricerec {
88    fn clone(&self) -> Self { *self }
89}
90impl ::core::default::Default for Struct__pricerec {
91    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
92}
93pub type pricerec = Struct__pricerec;
94#[repr(C)]
95#[derive(Copy)]
96pub struct Struct__multirec {
97    pub lp: *mut lprec,
98    pub size: libc::c_int,
99    pub used: libc::c_int,
100    pub limit: libc::c_int,
101    pub items: *mut pricerec,
102    pub freeList: *mut libc::c_int,
103    pub sortedList: *mut Union_QSORTrec,
104    pub stepList: *mut libc::c_double,
105    pub valueList: *mut libc::c_double,
106    pub indexSet: *mut libc::c_int,
107    pub active: libc::c_int,
108    pub retries: libc::c_int,
109    pub step_base: libc::c_double,
110    pub step_last: libc::c_double,
111    pub obj_base: libc::c_double,
112    pub obj_last: libc::c_double,
113    pub epszero: libc::c_double,
114    pub maxpivot: libc::c_double,
115    pub maxbound: libc::c_double,
116    pub sorted: libc::c_uchar,
117    pub truncinf: libc::c_uchar,
118    pub objcheck: libc::c_uchar,
119    pub dirty: libc::c_uchar,
120}
121impl ::core::clone::Clone for Struct__multirec {
122    fn clone(&self) -> Self { *self }
123}
124impl ::core::default::Default for Struct__multirec {
125    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
126}
127pub type multirec = Struct__multirec;
128#[repr(C)]
129#[derive(Copy)]
130pub struct Struct__workarraysrec {
131    pub lp: *mut lprec,
132    pub size: libc::c_int,
133    pub count: libc::c_int,
134    pub vectorarray: *mut *mut libc::c_char,
135    pub vectorsize: *mut libc::c_int,
136}
137impl ::core::clone::Clone for Struct__workarraysrec {
138    fn clone(&self) -> Self { *self }
139}
140impl ::core::default::Default for Struct__workarraysrec {
141    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
142}
143pub type workarraysrec = Struct__workarraysrec;
144#[repr(C)]
145#[derive(Copy)]
146pub struct Struct__LLrec {
147    pub size: libc::c_int,
148    pub count: libc::c_int,
149    pub firstitem: libc::c_int,
150    pub lastitem: libc::c_int,
151    pub map: *mut libc::c_int,
152}
153impl ::core::clone::Clone for Struct__LLrec {
154    fn clone(&self) -> Self { *self }
155}
156impl ::core::default::Default for Struct__LLrec {
157    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
158}
159pub type LLrec = Struct__LLrec;
160#[repr(C)]
161#[derive(Copy)]
162pub struct Struct__PVrec {
163    pub count: libc::c_int,
164    pub startpos: *mut libc::c_int,
165    pub value: *mut libc::c_double,
166    pub parent: *mut Struct__PVrec,
167}
168impl ::core::clone::Clone for Struct__PVrec {
169    fn clone(&self) -> Self { *self }
170}
171impl ::core::default::Default for Struct__PVrec {
172    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
173}
174pub type PVrec = Struct__PVrec;
175#[repr(C)]
176#[derive(Copy)]
177pub struct Struct__hashelem {
178    pub name: *mut libc::c_char,
179    pub index: libc::c_int,
180    pub next: *mut Struct__hashelem,
181    pub nextelem: *mut Struct__hashelem,
182}
183impl ::core::clone::Clone for Struct__hashelem {
184    fn clone(&self) -> Self { *self }
185}
186impl ::core::default::Default for Struct__hashelem {
187    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
188}
189pub type hashelem = Struct__hashelem;
190#[repr(C)]
191#[derive(Copy)]
192pub struct Struct_Unnamed1 {
193    pub table: *mut *mut hashelem,
194    pub size: libc::c_int,
195    pub base: libc::c_int,
196    pub count: libc::c_int,
197    pub first: *mut Struct__hashelem,
198    pub last: *mut Struct__hashelem,
199}
200impl ::core::clone::Clone for Struct_Unnamed1 {
201    fn clone(&self) -> Self { *self }
202}
203impl ::core::default::Default for Struct_Unnamed1 {
204    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
205}
206pub type hashtable = Struct_Unnamed1;
207#[repr(C)]
208#[derive(Copy)]
209pub struct Struct__MATitem {
210    pub rownr: libc::c_int,
211    pub colnr: libc::c_int,
212    pub value: libc::c_double,
213}
214impl ::core::clone::Clone for Struct__MATitem {
215    fn clone(&self) -> Self { *self }
216}
217impl ::core::default::Default for Struct__MATitem {
218    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
219}
220pub type MATitem = Struct__MATitem;
221#[repr(C)]
222#[derive(Copy)]
223pub struct Struct__MATrec {
224    pub lp: *mut lprec,
225    pub rows: libc::c_int,
226    pub columns: libc::c_int,
227    pub rows_alloc: libc::c_int,
228    pub columns_alloc: libc::c_int,
229    pub mat_alloc: libc::c_int,
230    pub col_mat_colnr: *mut libc::c_int,
231    pub col_mat_rownr: *mut libc::c_int,
232    pub col_mat_value: *mut libc::c_double,
233    pub col_end: *mut libc::c_int,
234    pub col_tag: *mut libc::c_int,
235    pub row_mat: *mut libc::c_int,
236    pub row_end: *mut libc::c_int,
237    pub row_tag: *mut libc::c_int,
238    pub colmax: *mut libc::c_double,
239    pub rowmax: *mut libc::c_double,
240    pub epsvalue: libc::c_double,
241    pub infnorm: libc::c_double,
242    pub dynrange: libc::c_double,
243    pub row_end_valid: libc::c_uchar,
244    pub is_roworder: libc::c_uchar,
245}
246impl ::core::clone::Clone for Struct__MATrec {
247    fn clone(&self) -> Self { *self }
248}
249impl ::core::default::Default for Struct__MATrec {
250    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
251}
252pub type MATrec = Struct__MATrec;
253#[repr(C)]
254#[derive(Copy)]
255pub struct Struct__DeltaVrec {
256    pub lp: *mut lprec,
257    pub activelevel: libc::c_int,
258    pub tracker: *mut MATrec,
259}
260impl ::core::clone::Clone for Struct__DeltaVrec {
261    fn clone(&self) -> Self { *self }
262}
263impl ::core::default::Default for Struct__DeltaVrec {
264    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
265}
266pub type DeltaVrec = Struct__DeltaVrec;
267#[repr(C)]
268#[derive(Copy)]
269pub struct Struct__basisrec {
270    pub level: libc::c_int,
271    pub var_basic: *mut libc::c_int,
272    pub is_basic: *mut libc::c_uchar,
273    pub is_lower: *mut libc::c_uchar,
274    pub pivots: libc::c_int,
275    pub previous: *mut Struct__basisrec,
276}
277impl ::core::clone::Clone for Struct__basisrec {
278    fn clone(&self) -> Self { *self }
279}
280impl ::core::default::Default for Struct__basisrec {
281    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
282}
283pub type basisrec = Struct__basisrec;
284#[repr(C)]
285#[derive(Copy)]
286pub struct Struct__presolveundorec {
287    pub lp: *mut lprec,
288    pub orig_rows: libc::c_int,
289    pub orig_columns: libc::c_int,
290    pub orig_sum: libc::c_int,
291    pub var_to_orig: *mut libc::c_int,
292    pub orig_to_var: *mut libc::c_int,
293    pub fixed_rhs: *mut libc::c_double,
294    pub fixed_obj: *mut libc::c_double,
295    pub deletedA: *mut DeltaVrec,
296    pub primalundo: *mut DeltaVrec,
297    pub dualundo: *mut DeltaVrec,
298    pub OFcolsdeleted: libc::c_uchar,
299}
300impl ::core::clone::Clone for Struct__presolveundorec {
301    fn clone(&self) -> Self { *self }
302}
303impl ::core::default::Default for Struct__presolveundorec {
304    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
305}
306pub type presolveundorec = Struct__presolveundorec;
307#[repr(C)]
308#[derive(Copy)]
309pub struct Struct__BBPSrec {
310    pub lp: *mut lprec,
311    pub pseodotype: libc::c_int,
312    pub updatelimit: libc::c_int,
313    pub updatesfinished: libc::c_int,
314    pub restartlimit: libc::c_double,
315    pub UPcost: *mut MATitem,
316    pub LOcost: *mut MATitem,
317    pub secondary: *mut Struct__BBPSrec,
318}
319impl ::core::clone::Clone for Struct__BBPSrec {
320    fn clone(&self) -> Self { *self }
321}
322impl ::core::default::Default for Struct__BBPSrec {
323    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
324}
325pub type BBPSrec = Struct__BBPSrec;
326#[repr(C)]
327#[derive(Copy)]
328pub struct Struct__BBrec {
329    pub parent: *mut Struct__BBrec,
330    pub child: *mut Struct__BBrec,
331    pub lp: *mut lprec,
332    pub varno: libc::c_int,
333    pub vartype: libc::c_int,
334    pub lastvarcus: libc::c_int,
335    pub lastrcf: libc::c_int,
336    pub nodesleft: libc::c_int,
337    pub nodessolved: libc::c_int,
338    pub nodestatus: libc::c_int,
339    pub noderesult: libc::c_double,
340    pub lastsolution: libc::c_double,
341    pub sc_bound: libc::c_double,
342    pub upbo: *mut libc::c_double,
343    pub lowbo: *mut libc::c_double,
344    pub UPbound: libc::c_double,
345    pub LObound: libc::c_double,
346    pub UBtrack: libc::c_int,
347    pub LBtrack: libc::c_int,
348    pub contentmode: libc::c_uchar,
349    pub sc_canset: libc::c_uchar,
350    pub isSOS: libc::c_uchar,
351    pub isGUB: libc::c_uchar,
352    pub varmanaged: *mut libc::c_int,
353    pub isfloor: libc::c_uchar,
354    pub UBzerobased: libc::c_uchar,
355}
356impl ::core::clone::Clone for Struct__BBrec {
357    fn clone(&self) -> Self { *self }
358}
359impl ::core::default::Default for Struct__BBrec {
360    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
361}
362pub type BBrec = Struct__BBrec;
363#[repr(C)]
364#[derive(Copy)]
365pub struct Struct__partialrec {
366    pub lp: *mut lprec,
367    pub blockcount: libc::c_int,
368    pub blocknow: libc::c_int,
369    pub blockend: *mut libc::c_int,
370    pub blockpos: *mut libc::c_int,
371    pub isrow: libc::c_uchar,
372}
373impl ::core::clone::Clone for Struct__partialrec {
374    fn clone(&self) -> Self { *self }
375}
376impl ::core::default::Default for Struct__partialrec {
377    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
378}
379pub type partialrec = Struct__partialrec;
380pub type SOSgroup = Struct__SOSgroup;
381#[repr(C)]
382#[derive(Copy)]
383pub struct Struct__SOSrec {
384    pub parent: *mut SOSgroup,
385    pub tagorder: libc::c_int,
386    pub name: *mut libc::c_char,
387    pub _type: libc::c_int,
388    pub isGUB: libc::c_uchar,
389    pub size: libc::c_int,
390    pub priority: libc::c_int,
391    pub members: *mut libc::c_int,
392    pub weights: *mut libc::c_double,
393    pub membersSorted: *mut libc::c_int,
394    pub membersMapped: *mut libc::c_int,
395}
396impl ::core::clone::Clone for Struct__SOSrec {
397    fn clone(&self) -> Self { *self }
398}
399impl ::core::default::Default for Struct__SOSrec {
400    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
401}
402pub type SOSrec = Struct__SOSrec;
403#[repr(C)]
404#[derive(Copy)]
405pub struct Struct__SOSgroup {
406    pub lp: *mut lprec,
407    pub sos_list: *mut *mut SOSrec,
408    pub sos_alloc: libc::c_int,
409    pub sos_count: libc::c_int,
410    pub maxorder: libc::c_int,
411    pub sos1_count: libc::c_int,
412    pub membership: *mut libc::c_int,
413    pub memberpos: *mut libc::c_int,
414}
415impl ::core::clone::Clone for Struct__SOSgroup {
416    fn clone(&self) -> Self { *self }
417}
418impl ::core::default::Default for Struct__SOSgroup {
419    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
420}
421pub type lphandle_intfunc =
422    unsafe extern "C" fn(lp: *mut lprec,
423                         userhandle: *mut libc::c_void)
424        -> libc::c_int;
425pub type lphandlestr_func =
426    unsafe extern "C" fn(lp: *mut lprec,
427                         userhandle: *mut libc::c_void,
428                         buf: *mut libc::c_char);
429pub type lphandleint_func =
430    unsafe extern "C" fn(lp: *mut lprec,
431                         userhandle: *mut libc::c_void,
432                         message: libc::c_int);
433pub type lphandleint_intfunc =
434    unsafe extern "C" fn(lp: *mut lprec,
435                         userhandle: *mut libc::c_void,
436                         message: libc::c_int)
437        -> libc::c_int;
438pub type add_column_func =
439    unsafe extern "C" fn(lp: *mut lprec,
440                         column: *mut libc::c_double)
441        -> libc::c_uchar;
442pub type add_columnex_func =
443    unsafe extern "C" fn(lp: *mut lprec, count: libc::c_int,
444                         column: *mut libc::c_double,
445                         rowno: *mut libc::c_int)
446        -> libc::c_uchar;
447pub type add_constraint_func =
448    unsafe extern "C" fn(lp: *mut lprec, row: *mut libc::c_double,
449                         constr_type: libc::c_int,
450                         rh: libc::c_double)
451        -> libc::c_uchar;
452pub type add_constraintex_func =
453    unsafe extern "C" fn(lp: *mut lprec, count: libc::c_int,
454                         row: *mut libc::c_double,
455                         colno: *mut libc::c_int,
456                         constr_type: libc::c_int,
457                         rh: libc::c_double)
458        -> libc::c_uchar;
459pub type add_lag_con_func =
460    unsafe extern "C" fn(lp: *mut lprec, row: *mut libc::c_double,
461                         con_type: libc::c_int,
462                         rhs: libc::c_double)
463        -> libc::c_uchar;
464pub type add_SOS_func =
465    unsafe extern "C" fn(lp: *mut lprec, name: *mut libc::c_char,
466                         sostype: libc::c_int,
467                         priority: libc::c_int,
468                         count: libc::c_int,
469                         sosvars: *mut libc::c_int,
470                         weights: *mut libc::c_double)
471        -> libc::c_int;
472pub type column_in_lp_func =
473    unsafe extern "C" fn(lp: *mut lprec,
474                         column: *mut libc::c_double)
475        -> libc::c_int;
476pub type copy_lp_func =
477    unsafe extern "C" fn(lp: *mut lprec) -> *mut Struct__lprec;
478pub type default_basis_func = unsafe extern "C" fn(lp: *mut lprec);
479pub type del_column_func =
480    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int)
481        -> libc::c_uchar;
482pub type del_constraint_func =
483    unsafe extern "C" fn(lp: *mut lprec, rownr: libc::c_int)
484        -> libc::c_uchar;
485pub type delete_lp_func = unsafe extern "C" fn(lp: *mut lprec);
486pub type dualize_lp_func =
487    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_uchar;
488pub type free_lp_func = unsafe extern "C" fn(plp: *mut *mut lprec);
489pub type get_anti_degen_func =
490    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
491pub type get_basis_func =
492    unsafe extern "C" fn(lp: *mut lprec,
493                         bascolumn: *mut libc::c_int,
494                         nonbasic: libc::c_uchar)
495        -> libc::c_uchar;
496pub type get_basiscrash_func =
497    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
498pub type get_bb_depthlimit_func =
499    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
500pub type get_bb_floorfirst_func =
501    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
502pub type get_bb_rule_func =
503    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
504pub type get_bounds_tighter_func =
505    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_uchar;
506pub type get_break_at_value_func =
507    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_double;
508pub type get_col_name_func =
509    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int)
510        -> *mut libc::c_char;
511pub type get_column_func =
512    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int,
513                         column: *mut libc::c_double)
514        -> libc::c_uchar;
515pub type get_columnex_func =
516    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int,
517                         column: *mut libc::c_double,
518                         nzrow: *mut libc::c_int)
519        -> libc::c_int;
520pub type get_constr_type_func =
521    unsafe extern "C" fn(lp: *mut lprec, rownr: libc::c_int)
522        -> libc::c_int;
523pub type get_constr_value_func =
524    unsafe extern "C" fn(lp: *mut lprec, rownr: libc::c_int,
525                         count: libc::c_int,
526                         primsolution: *mut libc::c_double,
527                         nzindex: *mut libc::c_int)
528        -> libc::c_double;
529pub type get_constraints_func =
530    unsafe extern "C" fn(lp: *mut lprec,
531                         constr: *mut libc::c_double)
532        -> libc::c_uchar;
533pub type get_dual_solution_func =
534    unsafe extern "C" fn(lp: *mut lprec, rc: *mut libc::c_double)
535        -> libc::c_uchar;
536pub type get_epsb_func =
537    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_double;
538pub type get_epsd_func =
539    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_double;
540pub type get_epsel_func =
541    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_double;
542pub type get_epsint_func =
543    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_double;
544pub type get_epsperturb_func =
545    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_double;
546pub type get_epspivot_func =
547    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_double;
548pub type get_improve_func =
549    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
550pub type get_infinite_func =
551    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_double;
552pub type get_lambda_func =
553    unsafe extern "C" fn(lp: *mut lprec,
554                         lambda: *mut libc::c_double)
555        -> libc::c_uchar;
556pub type get_lowbo_func =
557    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int)
558        -> libc::c_double;
559pub type get_lp_index_func =
560    unsafe extern "C" fn(lp: *mut lprec, orig_index: libc::c_int)
561        -> libc::c_int;
562pub type get_lp_name_func =
563    unsafe extern "C" fn(lp: *mut lprec) -> *mut libc::c_char;
564pub type get_Lrows_func =
565    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
566pub type get_mat_func =
567    unsafe extern "C" fn(lp: *mut lprec, rownr: libc::c_int,
568                         colnr: libc::c_int)
569        -> libc::c_double;
570pub type get_mat_byindex_func =
571    unsafe extern "C" fn(lp: *mut lprec, matindex: libc::c_int,
572                         isrow: libc::c_uchar,
573                         adjustsign: libc::c_uchar)
574        -> libc::c_double;
575pub type get_max_level_func =
576    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
577pub type get_maxpivot_func =
578    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
579pub type get_mip_gap_func =
580    unsafe extern "C" fn(lp: *mut lprec, absolute: libc::c_uchar)
581        -> libc::c_double;
582pub type get_multiprice_func =
583    unsafe extern "C" fn(lp: *mut lprec, getabssize: libc::c_uchar)
584        -> libc::c_int;
585pub type is_use_names_func =
586    unsafe extern "C" fn(lp: *mut lprec, isrow: libc::c_uchar)
587        -> libc::c_uchar;
588pub type set_use_names_func =
589    unsafe extern "C" fn(lp: *mut lprec, isrow: libc::c_uchar,
590                         use_names: libc::c_uchar);
591pub type get_nameindex_func =
592    unsafe extern "C" fn(lp: *mut lprec, varname: *mut libc::c_char,
593                         isrow: libc::c_uchar)
594        -> libc::c_int;
595pub type get_Ncolumns_func =
596    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
597pub type get_negrange_func =
598    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_double;
599pub type get_nz_func =
600    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
601pub type get_Norig_columns_func =
602    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
603pub type get_Norig_rows_func =
604    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
605pub type get_Nrows_func =
606    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
607pub type get_obj_bound_func =
608    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_double;
609pub type get_objective_func =
610    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_double;
611pub type get_orig_index_func =
612    unsafe extern "C" fn(lp: *mut lprec, lp_index: libc::c_int)
613        -> libc::c_int;
614pub type get_origcol_name_func =
615    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int)
616        -> *mut libc::c_char;
617pub type get_origrow_name_func =
618    unsafe extern "C" fn(lp: *mut lprec, rownr: libc::c_int)
619        -> *mut libc::c_char;
620pub type get_partialprice_func =
621    unsafe extern "C" fn(lp: *mut lprec,
622                         blockcount: *mut libc::c_int,
623                         blockstart: *mut libc::c_int,
624                         isrow: libc::c_uchar);
625pub type get_pivoting_func =
626    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
627pub type get_presolve_func =
628    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
629pub type get_presolveloops_func =
630    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
631pub type get_primal_solution_func =
632    unsafe extern "C" fn(lp: *mut lprec, pv: *mut libc::c_double)
633        -> libc::c_uchar;
634pub type get_print_sol_func =
635    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
636pub type get_pseudocosts_func =
637    unsafe extern "C" fn(lp: *mut lprec,
638                         clower: *mut libc::c_double,
639                         cupper: *mut libc::c_double,
640                         updatelimit: *mut libc::c_int)
641        -> libc::c_uchar;
642pub type get_ptr_constraints_func =
643    unsafe extern "C" fn(lp: *mut lprec,
644                         constr: *mut *mut libc::c_double)
645        -> libc::c_uchar;
646pub type get_ptr_dual_solution_func =
647    unsafe extern "C" fn(lp: *mut lprec,
648                         rc: *mut *mut libc::c_double)
649        -> libc::c_uchar;
650pub type get_ptr_lambda_func =
651    unsafe extern "C" fn(lp: *mut lprec,
652                         lambda: *mut *mut libc::c_double)
653        -> libc::c_uchar;
654pub type get_ptr_primal_solution_func =
655    unsafe extern "C" fn(lp: *mut lprec,
656                         pv: *mut *mut libc::c_double)
657        -> libc::c_uchar;
658pub type get_ptr_sensitivity_obj_func =
659    unsafe extern "C" fn(lp: *mut lprec,
660                         objfrom: *mut *mut libc::c_double,
661                         objtill: *mut *mut libc::c_double)
662        -> libc::c_uchar;
663pub type get_ptr_sensitivity_objex_func =
664    unsafe extern "C" fn(lp: *mut lprec,
665                         objfrom: *mut *mut libc::c_double,
666                         objtill: *mut *mut libc::c_double,
667                         objfromvalue: *mut *mut libc::c_double,
668                         objtillvalue: *mut *mut libc::c_double)
669        -> libc::c_uchar;
670pub type get_ptr_sensitivity_rhs_func =
671    unsafe extern "C" fn(lp: *mut lprec,
672                         duals: *mut *mut libc::c_double,
673                         dualsfrom: *mut *mut libc::c_double,
674                         dualstill: *mut *mut libc::c_double)
675        -> libc::c_uchar;
676pub type get_ptr_variables_func =
677    unsafe extern "C" fn(lp: *mut lprec,
678                         var: *mut *mut libc::c_double)
679        -> libc::c_uchar;
680pub type get_rh_func =
681    unsafe extern "C" fn(lp: *mut lprec, rownr: libc::c_int)
682        -> libc::c_double;
683pub type get_rh_range_func =
684    unsafe extern "C" fn(lp: *mut lprec, rownr: libc::c_int)
685        -> libc::c_double;
686pub type get_rowex_func =
687    unsafe extern "C" fn(lp: *mut lprec, rownr: libc::c_int,
688                         row: *mut libc::c_double,
689                         colno: *mut libc::c_int)
690        -> libc::c_int;
691pub type get_row_func =
692    unsafe extern "C" fn(lp: *mut lprec, rownr: libc::c_int,
693                         row: *mut libc::c_double)
694        -> libc::c_uchar;
695pub type get_row_name_func =
696    unsafe extern "C" fn(lp: *mut lprec, rownr: libc::c_int)
697        -> *mut libc::c_char;
698pub type get_scalelimit_func =
699    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_double;
700pub type get_scaling_func =
701    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
702pub type get_sensitivity_obj_func =
703    unsafe extern "C" fn(lp: *mut lprec,
704                         objfrom: *mut libc::c_double,
705                         objtill: *mut libc::c_double)
706        -> libc::c_uchar;
707pub type get_sensitivity_objex_func =
708    unsafe extern "C" fn(lp: *mut lprec,
709                         objfrom: *mut libc::c_double,
710                         objtill: *mut libc::c_double,
711                         objfromvalue: *mut libc::c_double,
712                         objtillvalue: *mut libc::c_double)
713        -> libc::c_uchar;
714pub type get_sensitivity_rhs_func =
715    unsafe extern "C" fn(lp: *mut lprec, duals: *mut libc::c_double,
716                         dualsfrom: *mut libc::c_double,
717                         dualstill: *mut libc::c_double)
718        -> libc::c_uchar;
719pub type get_simplextype_func =
720    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
721pub type get_solutioncount_func =
722    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
723pub type get_solutionlimit_func =
724    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
725pub type get_status_func =
726    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
727pub type get_statustext_func =
728    unsafe extern "C" fn(lp: *mut lprec, statuscode: libc::c_int)
729        -> *mut libc::c_char;
730pub type get_timeout_func =
731    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_long;
732pub type get_total_iter_func =
733    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_longlong;
734pub type get_total_nodes_func =
735    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_longlong;
736pub type get_upbo_func =
737    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int)
738        -> libc::c_double;
739pub type get_var_branch_func =
740    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int)
741        -> libc::c_int;
742pub type get_var_dualresult_func =
743    unsafe extern "C" fn(lp: *mut lprec, index: libc::c_int)
744        -> libc::c_double;
745pub type get_var_primalresult_func =
746    unsafe extern "C" fn(lp: *mut lprec, index: libc::c_int)
747        -> libc::c_double;
748pub type get_var_priority_func =
749    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int)
750        -> libc::c_int;
751pub type get_variables_func =
752    unsafe extern "C" fn(lp: *mut lprec, var: *mut libc::c_double)
753        -> libc::c_uchar;
754pub type get_verbose_func =
755    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
756pub type guess_basis_func =
757    unsafe extern "C" fn(lp: *mut lprec,
758                         guessvector: *mut libc::c_double,
759                         basisvector: *mut libc::c_int)
760        -> libc::c_uchar;
761pub type get_working_objective_func =
762    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_double;
763pub type has_BFP_func =
764    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_uchar;
765pub type has_XLI_func =
766    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_uchar;
767pub type is_add_rowmode_func =
768    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_uchar;
769pub type is_anti_degen_func =
770    unsafe extern "C" fn(lp: *mut lprec, testmask: libc::c_int)
771        -> libc::c_uchar;
772pub type is_binary_func =
773    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int)
774        -> libc::c_uchar;
775pub type is_break_at_first_func =
776    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_uchar;
777pub type is_constr_type_func =
778    unsafe extern "C" fn(lp: *mut lprec, rownr: libc::c_int,
779                         mask: libc::c_int)
780        -> libc::c_uchar;
781pub type is_debug_func =
782    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_uchar;
783pub type is_feasible_func =
784    unsafe extern "C" fn(lp: *mut lprec,
785                         values: *mut libc::c_double,
786                         threshold: libc::c_double)
787        -> libc::c_uchar;
788pub type is_unbounded_func =
789    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int)
790        -> libc::c_uchar;
791pub type is_infinite_func =
792    unsafe extern "C" fn(lp: *mut lprec, value: libc::c_double)
793        -> libc::c_uchar;
794pub type is_int_func =
795    unsafe extern "C" fn(lp: *mut lprec, column: libc::c_int)
796        -> libc::c_uchar;
797pub type is_integerscaling_func =
798    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_uchar;
799pub type is_lag_trace_func =
800    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_uchar;
801pub type is_maxim_func =
802    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_uchar;
803pub type is_nativeBFP_func =
804    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_uchar;
805pub type is_nativeXLI_func =
806    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_uchar;
807pub type is_negative_func =
808    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int)
809        -> libc::c_uchar;
810pub type is_obj_in_basis_func =
811    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_uchar;
812pub type is_piv_mode_func =
813    unsafe extern "C" fn(lp: *mut lprec, testmask: libc::c_int)
814        -> libc::c_uchar;
815pub type is_piv_rule_func =
816    unsafe extern "C" fn(lp: *mut lprec, rule: libc::c_int)
817        -> libc::c_uchar;
818pub type is_presolve_func =
819    unsafe extern "C" fn(lp: *mut lprec, testmask: libc::c_int)
820        -> libc::c_uchar;
821pub type is_scalemode_func =
822    unsafe extern "C" fn(lp: *mut lprec, testmask: libc::c_int)
823        -> libc::c_uchar;
824pub type is_scaletype_func =
825    unsafe extern "C" fn(lp: *mut lprec, scaletype: libc::c_int)
826        -> libc::c_uchar;
827pub type is_semicont_func =
828    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int)
829        -> libc::c_uchar;
830pub type is_SOS_var_func =
831    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int)
832        -> libc::c_uchar;
833pub type is_trace_func =
834    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_uchar;
835pub type lp_solve_version_func =
836    unsafe extern "C" fn(majorversion: *mut libc::c_int,
837                         minorversion: *mut libc::c_int,
838                         release: *mut libc::c_int,
839                         build: *mut libc::c_int);
840pub type make_lp_func =
841    extern "C" fn(rows: libc::c_int, columns: libc::c_int)
842        -> *mut Struct__lprec;
843pub type print_constraints_func =
844    unsafe extern "C" fn(lp: *mut lprec, columns: libc::c_int);
845pub type print_debugdump_func =
846    unsafe extern "C" fn(lp: *mut lprec,
847                         filename: *mut libc::c_char)
848        -> libc::c_uchar;
849pub type print_duals_func = unsafe extern "C" fn(lp: *mut lprec);
850pub type print_lp_func = unsafe extern "C" fn(lp: *mut lprec);
851pub type print_objective_func = unsafe extern "C" fn(lp: *mut lprec);
852pub type print_scales_func = unsafe extern "C" fn(lp: *mut lprec);
853pub type print_solution_func =
854    unsafe extern "C" fn(lp: *mut lprec, columns: libc::c_int);
855pub type print_str_func =
856    unsafe extern "C" fn(lp: *mut lprec, str: *mut libc::c_char);
857pub type print_tableau_func = unsafe extern "C" fn(lp: *mut lprec);
858pub type put_abortfunc_func =
859    unsafe extern "C" fn(lp: *mut lprec, newctrlc: lphandle_intfunc,
860                         ctrlchandle: *mut libc::c_void);
861pub type put_bb_nodefunc_func =
862    unsafe extern "C" fn(lp: *mut lprec, newnode: lphandleint_intfunc,
863                         bbnodehandle: *mut libc::c_void);
864pub type put_bb_branchfunc_func =
865    unsafe extern "C" fn(lp: *mut lprec, newbranch: lphandleint_intfunc,
866                         bbbranchhandle: *mut libc::c_void);
867pub type put_logfunc_func =
868    unsafe extern "C" fn(lp: *mut lprec, newlog: lphandlestr_func,
869                         loghandle: *mut libc::c_void);
870pub type put_msgfunc_func =
871    unsafe extern "C" fn(lp: *mut lprec, newmsg: lphandleint_func,
872                         msghandle: *mut libc::c_void,
873                         mask: libc::c_int);
874pub type read_LP_func =
875    unsafe extern "C" fn(filename: *mut libc::c_char,
876                         verbose: libc::c_int,
877                         lp_name: *mut libc::c_char)
878        -> *mut Struct__lprec;
879pub type read_MPS_func =
880    unsafe extern "C" fn(filename: *mut libc::c_char,
881                         options: libc::c_int)
882        -> *mut Struct__lprec;
883pub type read_XLI_func =
884    unsafe extern "C" fn(xliname: *mut libc::c_char,
885                         modelname: *mut libc::c_char,
886                         dataname: *mut libc::c_char,
887                         options: *mut libc::c_char,
888                         verbose: libc::c_int)
889        -> *mut Struct__lprec;
890pub type read_basis_func =
891    unsafe extern "C" fn(lp: *mut lprec,
892                         filename: *mut libc::c_char,
893                         info: *mut libc::c_char)
894        -> libc::c_uchar;
895pub type reset_basis_func = unsafe extern "C" fn(lp: *mut lprec);
896pub type read_params_func =
897    unsafe extern "C" fn(lp: *mut lprec,
898                         filename: *mut libc::c_char,
899                         options: *mut libc::c_char)
900        -> libc::c_uchar;
901pub type reset_params_func = unsafe extern "C" fn(lp: *mut lprec);
902pub type resize_lp_func =
903    unsafe extern "C" fn(lp: *mut lprec, rows: libc::c_int,
904                         columns: libc::c_int)
905        -> libc::c_uchar;
906pub type set_add_rowmode_func =
907    unsafe extern "C" fn(lp: *mut lprec, turnon: libc::c_uchar)
908        -> libc::c_uchar;
909pub type set_anti_degen_func =
910    unsafe extern "C" fn(lp: *mut lprec, anti_degen: libc::c_int);
911pub type set_basisvar_func =
912    unsafe extern "C" fn(lp: *mut lprec, basisPos: libc::c_int,
913                         enteringCol: libc::c_int)
914        -> libc::c_int;
915pub type set_basis_func =
916    unsafe extern "C" fn(lp: *mut lprec,
917                         bascolumn: *mut libc::c_int,
918                         nonbasic: libc::c_uchar)
919        -> libc::c_uchar;
920pub type set_basiscrash_func =
921    unsafe extern "C" fn(lp: *mut lprec, mode: libc::c_int);
922pub type set_bb_depthlimit_func =
923    unsafe extern "C" fn(lp: *mut lprec, bb_maxlevel: libc::c_int);
924pub type set_bb_floorfirst_func =
925    unsafe extern "C" fn(lp: *mut lprec,
926                         bb_floorfirst: libc::c_int);
927pub type set_bb_rule_func =
928    unsafe extern "C" fn(lp: *mut lprec, bb_rule: libc::c_int);
929pub type set_BFP_func =
930    unsafe extern "C" fn(lp: *mut lprec,
931                         filename: *mut libc::c_char)
932        -> libc::c_uchar;
933pub type set_binary_func =
934    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int,
935                         must_be_bin: libc::c_uchar)
936        -> libc::c_uchar;
937pub type set_bounds_func =
938    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int,
939                         lower: libc::c_double,
940                         upper: libc::c_double)
941        -> libc::c_uchar;
942pub type set_bounds_tighter_func =
943    unsafe extern "C" fn(lp: *mut lprec, tighten: libc::c_uchar);
944pub type set_break_at_first_func =
945    unsafe extern "C" fn(lp: *mut lprec,
946                         break_at_first: libc::c_uchar);
947pub type set_break_at_value_func =
948    unsafe extern "C" fn(lp: *mut lprec,
949                         break_at_value: libc::c_double);
950pub type set_column_func =
951    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int,
952                         column: *mut libc::c_double)
953        -> libc::c_uchar;
954pub type set_columnex_func =
955    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int,
956                         count: libc::c_int,
957                         column: *mut libc::c_double,
958                         rowno: *mut libc::c_int)
959        -> libc::c_uchar;
960pub type set_col_name_func =
961    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int,
962                         new_name: *mut libc::c_char)
963        -> libc::c_uchar;
964pub type set_constr_type_func =
965    unsafe extern "C" fn(lp: *mut lprec, rownr: libc::c_int,
966                         con_type: libc::c_int)
967        -> libc::c_uchar;
968pub type set_debug_func =
969    unsafe extern "C" fn(lp: *mut lprec, debug: libc::c_uchar);
970pub type set_epsb_func =
971    unsafe extern "C" fn(lp: *mut lprec, epsb: libc::c_double);
972pub type set_epsd_func =
973    unsafe extern "C" fn(lp: *mut lprec, epsd: libc::c_double);
974pub type set_epsel_func =
975    unsafe extern "C" fn(lp: *mut lprec, epsel: libc::c_double);
976pub type set_epsint_func =
977    unsafe extern "C" fn(lp: *mut lprec, epsint: libc::c_double);
978pub type set_epslevel_func =
979    unsafe extern "C" fn(lp: *mut lprec, epslevel: libc::c_int)
980        -> libc::c_uchar;
981pub type set_epsperturb_func =
982    unsafe extern "C" fn(lp: *mut lprec,
983                         epsperturb: libc::c_double);
984pub type set_epspivot_func =
985    unsafe extern "C" fn(lp: *mut lprec, epspivot: libc::c_double);
986pub type set_unbounded_func =
987    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int)
988        -> libc::c_uchar;
989pub type set_improve_func =
990    unsafe extern "C" fn(lp: *mut lprec, improve: libc::c_int);
991pub type set_infinite_func =
992    unsafe extern "C" fn(lp: *mut lprec, infinite: libc::c_double);
993pub type set_int_func =
994    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int,
995                         must_be_int: libc::c_uchar)
996        -> libc::c_uchar;
997pub type set_lag_trace_func =
998    unsafe extern "C" fn(lp: *mut lprec, lag_trace: libc::c_uchar);
999pub type set_lowbo_func =
1000    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int,
1001                         value: libc::c_double)
1002        -> libc::c_uchar;
1003pub type set_lp_name_func =
1004    unsafe extern "C" fn(lp: *mut lprec, lpname: *mut libc::c_char)
1005        -> libc::c_uchar;
1006pub type set_mat_func =
1007    unsafe extern "C" fn(lp: *mut lprec, row: libc::c_int,
1008                         column: libc::c_int,
1009                         value: libc::c_double)
1010        -> libc::c_uchar;
1011pub type set_maxim_func = unsafe extern "C" fn(lp: *mut lprec);
1012pub type set_maxpivot_func =
1013    unsafe extern "C" fn(lp: *mut lprec, max_num_inv: libc::c_int);
1014pub type set_minim_func = unsafe extern "C" fn(lp: *mut lprec);
1015pub type set_mip_gap_func =
1016    unsafe extern "C" fn(lp: *mut lprec, absolute: libc::c_uchar,
1017                         mip_gap: libc::c_double);
1018pub type set_multiprice_func =
1019    unsafe extern "C" fn(lp: *mut lprec, multiblockdiv: libc::c_int)
1020        -> libc::c_uchar;
1021pub type set_negrange_func =
1022    unsafe extern "C" fn(lp: *mut lprec, negrange: libc::c_double);
1023pub type set_obj_func =
1024    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int,
1025                         value: libc::c_double)
1026        -> libc::c_uchar;
1027pub type set_obj_bound_func =
1028    unsafe extern "C" fn(lp: *mut lprec, obj_bound: libc::c_double);
1029pub type set_obj_fn_func =
1030    unsafe extern "C" fn(lp: *mut lprec, row: *mut libc::c_double)
1031        -> libc::c_uchar;
1032pub type set_obj_fnex_func =
1033    unsafe extern "C" fn(lp: *mut lprec, count: libc::c_int,
1034                         row: *mut libc::c_double,
1035                         colno: *mut libc::c_int)
1036        -> libc::c_uchar;
1037pub type set_obj_in_basis_func =
1038    unsafe extern "C" fn(lp: *mut lprec,
1039                         obj_in_basis: libc::c_uchar);
1040pub type set_outputfile_func =
1041    unsafe extern "C" fn(lp: *mut lprec,
1042                         filename: *mut libc::c_char)
1043        -> libc::c_uchar;
1044pub type set_outputstream_func =
1045    unsafe extern "C" fn(lp: *mut lprec, stream: *mut libc::FILE);
1046pub type set_partialprice_func =
1047    unsafe extern "C" fn(lp: *mut lprec, blockcount: libc::c_int,
1048                         blockstart: *mut libc::c_int,
1049                         isrow: libc::c_uchar)
1050        -> libc::c_uchar;
1051pub type set_pivoting_func =
1052    unsafe extern "C" fn(lp: *mut lprec, piv_rule: libc::c_int);
1053pub type set_preferdual_func =
1054    unsafe extern "C" fn(lp: *mut lprec, dodual: libc::c_uchar);
1055pub type set_presolve_func =
1056    unsafe extern "C" fn(lp: *mut lprec, presolvemode: libc::c_int,
1057                         maxloops: libc::c_int);
1058pub type set_print_sol_func =
1059    unsafe extern "C" fn(lp: *mut lprec, print_sol: libc::c_int);
1060pub type set_pseudocosts_func =
1061    unsafe extern "C" fn(lp: *mut lprec,
1062                         clower: *mut libc::c_double,
1063                         cupper: *mut libc::c_double,
1064                         updatelimit: *mut libc::c_int)
1065        -> libc::c_uchar;
1066pub type set_rh_func =
1067    unsafe extern "C" fn(lp: *mut lprec, rownr: libc::c_int,
1068                         value: libc::c_double)
1069        -> libc::c_uchar;
1070pub type set_rh_range_func =
1071    unsafe extern "C" fn(lp: *mut lprec, rownr: libc::c_int,
1072                         deltavalue: libc::c_double)
1073        -> libc::c_uchar;
1074pub type set_rh_vec_func =
1075    unsafe extern "C" fn(lp: *mut lprec, rh: *mut libc::c_double);
1076pub type set_row_func =
1077    unsafe extern "C" fn(lp: *mut lprec, rownr: libc::c_int,
1078                         row: *mut libc::c_double)
1079        -> libc::c_uchar;
1080pub type set_rowex_func =
1081    unsafe extern "C" fn(lp: *mut lprec, rownr: libc::c_int,
1082                         count: libc::c_int,
1083                         row: *mut libc::c_double,
1084                         colno: *mut libc::c_int)
1085        -> libc::c_uchar;
1086pub type set_row_name_func =
1087    unsafe extern "C" fn(lp: *mut lprec, rownr: libc::c_int,
1088                         new_name: *mut libc::c_char)
1089        -> libc::c_uchar;
1090pub type set_scalelimit_func =
1091    unsafe extern "C" fn(lp: *mut lprec,
1092                         scalelimit: libc::c_double);
1093pub type set_scaling_func =
1094    unsafe extern "C" fn(lp: *mut lprec, scalemode: libc::c_int);
1095pub type set_semicont_func =
1096    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int,
1097                         must_be_sc: libc::c_uchar)
1098        -> libc::c_uchar;
1099pub type set_sense_func =
1100    unsafe extern "C" fn(lp: *mut lprec, maximize: libc::c_uchar);
1101pub type set_simplextype_func =
1102    unsafe extern "C" fn(lp: *mut lprec, simplextype: libc::c_int);
1103pub type set_solutionlimit_func =
1104    unsafe extern "C" fn(lp: *mut lprec, limit: libc::c_int);
1105pub type set_timeout_func =
1106    unsafe extern "C" fn(lp: *mut lprec, sectimeout: libc::c_long);
1107pub type set_trace_func =
1108    unsafe extern "C" fn(lp: *mut lprec, trace: libc::c_uchar);
1109pub type set_upbo_func =
1110    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int,
1111                         value: libc::c_double)
1112        -> libc::c_uchar;
1113pub type set_var_branch_func =
1114    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int,
1115                         branch_mode: libc::c_int)
1116        -> libc::c_uchar;
1117pub type set_var_weights_func =
1118    unsafe extern "C" fn(lp: *mut lprec,
1119                         weights: *mut libc::c_double)
1120        -> libc::c_uchar;
1121pub type set_verbose_func =
1122    unsafe extern "C" fn(lp: *mut lprec, verbose: libc::c_int);
1123pub type set_XLI_func =
1124    unsafe extern "C" fn(lp: *mut lprec,
1125                         filename: *mut libc::c_char)
1126        -> libc::c_uchar;
1127pub type solve_func =
1128    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
1129pub type str_add_column_func =
1130    unsafe extern "C" fn(lp: *mut lprec,
1131                         col_string: *mut libc::c_char)
1132        -> libc::c_uchar;
1133pub type str_add_constraint_func =
1134    unsafe extern "C" fn(lp: *mut lprec,
1135                         row_string: *mut libc::c_char,
1136                         constr_type: libc::c_int,
1137                         rh: libc::c_double)
1138        -> libc::c_uchar;
1139pub type str_add_lag_con_func =
1140    unsafe extern "C" fn(lp: *mut lprec,
1141                         row_string: *mut libc::c_char,
1142                         con_type: libc::c_int,
1143                         rhs: libc::c_double)
1144        -> libc::c_uchar;
1145pub type str_set_obj_fn_func =
1146    unsafe extern "C" fn(lp: *mut lprec,
1147                         row_string: *mut libc::c_char)
1148        -> libc::c_uchar;
1149pub type str_set_rh_vec_func =
1150    unsafe extern "C" fn(lp: *mut lprec,
1151                         rh_string: *mut libc::c_char)
1152        -> libc::c_uchar;
1153pub type time_elapsed_func =
1154    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_double;
1155pub type unscale_func = unsafe extern "C" fn(lp: *mut lprec);
1156pub type write_lp_func =
1157    unsafe extern "C" fn(lp: *mut lprec,
1158                         filename: *mut libc::c_char)
1159        -> libc::c_uchar;
1160pub type write_LP_func =
1161    unsafe extern "C" fn(lp: *mut lprec, output: *mut libc::FILE)
1162        -> libc::c_uchar;
1163pub type write_mps_func =
1164    unsafe extern "C" fn(lp: *mut lprec,
1165                         filename: *mut libc::c_char)
1166        -> libc::c_uchar;
1167pub type write_MPS_func =
1168    unsafe extern "C" fn(lp: *mut lprec, output: *mut libc::FILE)
1169        -> libc::c_uchar;
1170pub type write_freemps_func =
1171    unsafe extern "C" fn(lp: *mut lprec,
1172                         filename: *mut libc::c_char)
1173        -> libc::c_uchar;
1174pub type write_freeMPS_func =
1175    unsafe extern "C" fn(lp: *mut lprec, output: *mut libc::FILE)
1176        -> libc::c_uchar;
1177pub type write_XLI_func =
1178    unsafe extern "C" fn(lp: *mut lprec,
1179                         filename: *mut libc::c_char,
1180                         options: *mut libc::c_char,
1181                         results: libc::c_uchar)
1182        -> libc::c_uchar;
1183pub type write_basis_func =
1184    unsafe extern "C" fn(lp: *mut lprec,
1185                         filename: *mut libc::c_char)
1186        -> libc::c_uchar;
1187pub type write_params_func =
1188    unsafe extern "C" fn(lp: *mut lprec,
1189                         filename: *mut libc::c_char,
1190                         options: *mut libc::c_char)
1191        -> libc::c_uchar;
1192pub type userabortfunc =
1193    unsafe extern "C" fn(lp: *mut lprec, level: libc::c_int)
1194        -> libc::c_uchar;
1195pub type reportfunc =
1196    unsafe extern "C" fn(lp: *mut lprec, level: libc::c_int,
1197                         format: *mut libc::c_char, ...);
1198pub type explainfunc =
1199    unsafe extern "C" fn(lp: *mut lprec,
1200                         format: *mut libc::c_char, ...)
1201        -> *mut libc::c_char;
1202pub type getvectorfunc =
1203    unsafe extern "C" fn(lp: *mut lprec, varin: libc::c_int,
1204                         pcol: *mut libc::c_double,
1205                         nzlist: *mut libc::c_int,
1206                         maxabs: *mut libc::c_int)
1207        -> libc::c_int;
1208pub type getpackedfunc =
1209    unsafe extern "C" fn(lp: *mut lprec, j: libc::c_int,
1210                         rn: *mut libc::c_int,
1211                         bj: *mut libc::c_double)
1212        -> libc::c_int;
1213pub type get_OF_activefunc =
1214    unsafe extern "C" fn(lp: *mut lprec, varnr: libc::c_int,
1215                         mult: libc::c_double)
1216        -> libc::c_double;
1217pub type getMDOfunc =
1218    unsafe extern "C" fn(lp: *mut lprec,
1219                         usedpos: *mut libc::c_uchar,
1220                         colorder: *mut libc::c_int,
1221                         size: *mut libc::c_int,
1222                         symmetric: libc::c_uchar)
1223        -> libc::c_int;
1224pub type invertfunc =
1225    unsafe extern "C" fn(lp: *mut lprec, shiftbounds: libc::c_uchar,
1226                         _final: libc::c_uchar)
1227        -> libc::c_uchar;
1228pub type set_actionfunc =
1229    unsafe extern "C" fn(actionvar: *mut libc::c_int,
1230                         actionmask: libc::c_int);
1231pub type is_actionfunc =
1232    extern "C" fn(actionvar: libc::c_int,
1233                  testmask: libc::c_int) -> libc::c_uchar;
1234pub type clear_actionfunc =
1235    unsafe extern "C" fn(actionvar: *mut libc::c_int,
1236                         actionmask: libc::c_int);
1237pub type BFPchar = extern "C" fn() -> *mut libc::c_char;
1238pub type BFP_lp = unsafe extern "C" fn(lp: *mut lprec);
1239pub type BFP_lpint =
1240    unsafe extern "C" fn(lp: *mut lprec, newsize: libc::c_int);
1241pub type BFPint_lp =
1242    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_int;
1243pub type BFPint_lpint =
1244    unsafe extern "C" fn(lp: *mut lprec, kind: libc::c_int)
1245        -> libc::c_int;
1246pub type BFPreal_lp =
1247    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_double;
1248pub type BFPrealp_lp =
1249    unsafe extern "C" fn(lp: *mut lprec) -> *mut libc::c_double;
1250pub type BFP_lpbool =
1251    unsafe extern "C" fn(lp: *mut lprec, maximum: libc::c_uchar);
1252pub type BFPint_lpbool =
1253    unsafe extern "C" fn(lp: *mut lprec, maximum: libc::c_uchar)
1254        -> libc::c_int;
1255pub type BFPint_lpintintboolbool =
1256    unsafe extern "C" fn(lp: *mut lprec, uservars: libc::c_int,
1257                         Bsize: libc::c_int,
1258                         usedpos: *mut libc::c_uchar,
1259                         _final: libc::c_uchar)
1260        -> libc::c_int;
1261pub type BFP_lprealint =
1262    unsafe extern "C" fn(lp: *mut lprec, pcol: *mut libc::c_double,
1263                         nzidx: *mut libc::c_int);
1264pub type BFP_lprealintrealint =
1265    unsafe extern "C" fn(lp: *mut lprec, prow: *mut libc::c_double,
1266                         pnzidx: *mut libc::c_int,
1267                         drow: *mut libc::c_double,
1268                         dnzidx: *mut libc::c_int);
1269pub type BFPbool_lp =
1270    unsafe extern "C" fn(lp: *mut lprec) -> libc::c_uchar;
1271pub type BFPbool_lpbool =
1272    unsafe extern "C" fn(lp: *mut lprec, changesign: libc::c_uchar)
1273        -> libc::c_uchar;
1274pub type BFPbool_lpint =
1275    unsafe extern "C" fn(lp: *mut lprec, size: libc::c_int)
1276        -> libc::c_uchar;
1277pub type BFPbool_lpintintchar =
1278    unsafe extern "C" fn(lp: *mut lprec, size: libc::c_int,
1279                         deltasize: libc::c_int,
1280                         options: *mut libc::c_char)
1281        -> libc::c_uchar;
1282pub type BFPbool_lpintintint =
1283    unsafe extern "C" fn(lp: *mut lprec, size: libc::c_int,
1284                         deltasize: libc::c_int,
1285                         sizeofvar: libc::c_int)
1286        -> libc::c_uchar;
1287pub type BFPlreal_lpintintreal =
1288    unsafe extern "C" fn(lp: *mut lprec, row_nr: libc::c_int,
1289                         col_nr: libc::c_int,
1290                         pcol: *mut libc::c_double)
1291        -> libc::c_double;
1292pub type BFPreal_lplrealreal =
1293    unsafe extern "C" fn(lp: *mut lprec, theta: libc::c_double,
1294                         pcol: *mut libc::c_double)
1295        -> libc::c_double;
1296pub type getcolumnex_func =
1297    unsafe extern "C" fn(lp: *mut lprec, colnr: libc::c_int,
1298                         nzvalues: *mut libc::c_double,
1299                         nzrows: *mut libc::c_int,
1300                         mapin: *mut libc::c_int)
1301        -> libc::c_int;
1302pub type BFPint_lpintrealcbintint =
1303    unsafe extern "C" fn(lp: *mut lprec, items: libc::c_int,
1304                         cb: getcolumnex_func,
1305                         maprow: *mut libc::c_int,
1306                         mapcol: *mut libc::c_int)
1307        -> libc::c_int;
1308pub type XLIchar = extern "C" fn() -> *mut libc::c_char;
1309pub type XLIbool_lpintintint =
1310    unsafe extern "C" fn(lp: *mut lprec, size: libc::c_int,
1311                         deltasize: libc::c_int,
1312                         sizevar: libc::c_int)
1313        -> libc::c_uchar;
1314pub type XLIbool_lpcharcharcharint =
1315    unsafe extern "C" fn(lp: *mut lprec,
1316                         modelname: *mut libc::c_char,
1317                         dataname: *mut libc::c_char,
1318                         options: *mut libc::c_char,
1319                         verbose: libc::c_int)
1320        -> libc::c_uchar;
1321pub type XLIbool_lpcharcharbool =
1322    unsafe extern "C" fn(lp: *mut lprec,
1323                         filename: *mut libc::c_char,
1324                         options: *mut libc::c_char,
1325                         results: libc::c_uchar)
1326        -> libc::c_uchar;
1327#[repr(C)]
1328#[derive(Copy)]
1329pub struct Struct__lprec {
1330    pub add_column: *mut add_column_func,
1331    pub add_columnex: *mut add_columnex_func,
1332    pub add_constraint: *mut add_constraint_func,
1333    pub add_constraintex: *mut add_constraintex_func,
1334    pub add_lag_con: *mut add_lag_con_func,
1335    pub add_SOS: *mut add_SOS_func,
1336    pub column_in_lp: *mut column_in_lp_func,
1337    pub copy_lp: *mut copy_lp_func,
1338    pub default_basis: *mut default_basis_func,
1339    pub del_column: *mut del_column_func,
1340    pub del_constraint: *mut del_constraint_func,
1341    pub delete_lp: *mut delete_lp_func,
1342    pub dualize_lp: *mut dualize_lp_func,
1343    pub free_lp: *mut free_lp_func,
1344    pub get_anti_degen: *mut get_anti_degen_func,
1345    pub get_basis: *mut get_basis_func,
1346    pub get_basiscrash: *mut get_basiscrash_func,
1347    pub get_bb_depthlimit: *mut get_bb_depthlimit_func,
1348    pub get_bb_floorfirst: *mut get_bb_floorfirst_func,
1349    pub get_bb_rule: *mut get_bb_rule_func,
1350    pub get_bounds_tighter: *mut get_bounds_tighter_func,
1351    pub get_break_at_value: *mut get_break_at_value_func,
1352    pub get_col_name: *mut get_col_name_func,
1353    pub get_columnex: *mut get_columnex_func,
1354    pub get_constr_type: *mut get_constr_type_func,
1355    pub get_constr_value: *mut get_constr_value_func,
1356    pub get_constraints: *mut get_constraints_func,
1357    pub get_dual_solution: *mut get_dual_solution_func,
1358    pub get_epsb: *mut get_epsb_func,
1359    pub get_epsd: *mut get_epsd_func,
1360    pub get_epsel: *mut get_epsel_func,
1361    pub get_epsint: *mut get_epsint_func,
1362    pub get_epsperturb: *mut get_epsperturb_func,
1363    pub get_epspivot: *mut get_epspivot_func,
1364    pub get_improve: *mut get_improve_func,
1365    pub get_infinite: *mut get_infinite_func,
1366    pub get_lambda: *mut get_lambda_func,
1367    pub get_lowbo: *mut get_lowbo_func,
1368    pub get_lp_index: *mut get_lp_index_func,
1369    pub get_lp_name: *mut get_lp_name_func,
1370    pub get_Lrows: *mut get_Lrows_func,
1371    pub get_mat: *mut get_mat_func,
1372    pub get_mat_byindex: *mut get_mat_byindex_func,
1373    pub get_max_level: *mut get_max_level_func,
1374    pub get_maxpivot: *mut get_maxpivot_func,
1375    pub get_mip_gap: *mut get_mip_gap_func,
1376    pub get_multiprice: *mut get_multiprice_func,
1377    pub get_nameindex: *mut get_nameindex_func,
1378    pub get_Ncolumns: *mut get_Ncolumns_func,
1379    pub get_negrange: *mut get_negrange_func,
1380    pub get_nonzeros: *mut get_nz_func,
1381    pub get_Norig_columns: *mut get_Norig_columns_func,
1382    pub get_Norig_rows: *mut get_Norig_rows_func,
1383    pub get_Nrows: *mut get_Nrows_func,
1384    pub get_obj_bound: *mut get_obj_bound_func,
1385    pub get_objective: *mut get_objective_func,
1386    pub get_orig_index: *mut get_orig_index_func,
1387    pub get_origcol_name: *mut get_origcol_name_func,
1388    pub get_origrow_name: *mut get_origrow_name_func,
1389    pub get_partialprice: *mut get_partialprice_func,
1390    pub get_pivoting: *mut get_pivoting_func,
1391    pub get_presolve: *mut get_presolve_func,
1392    pub get_presolveloops: *mut get_presolveloops_func,
1393    pub get_primal_solution: *mut get_primal_solution_func,
1394    pub get_print_sol: *mut get_print_sol_func,
1395    pub get_pseudocosts: *mut get_pseudocosts_func,
1396    pub get_ptr_constraints: *mut get_ptr_constraints_func,
1397    pub get_ptr_dual_solution: *mut get_ptr_dual_solution_func,
1398    pub get_ptr_lambda: *mut get_ptr_lambda_func,
1399    pub get_ptr_primal_solution: *mut get_ptr_primal_solution_func,
1400    pub get_ptr_sensitivity_obj: *mut get_ptr_sensitivity_obj_func,
1401    pub get_ptr_sensitivity_objex: *mut get_ptr_sensitivity_objex_func,
1402    pub get_ptr_sensitivity_rhs: *mut get_ptr_sensitivity_rhs_func,
1403    pub get_ptr_variables: *mut get_ptr_variables_func,
1404    pub get_rh: *mut get_rh_func,
1405    pub get_rh_range: *mut get_rh_range_func,
1406    pub get_row: *mut get_row_func,
1407    pub get_rowex: *mut get_rowex_func,
1408    pub get_row_name: *mut get_row_name_func,
1409    pub get_scalelimit: *mut get_scalelimit_func,
1410    pub get_scaling: *mut get_scaling_func,
1411    pub get_sensitivity_obj: *mut get_sensitivity_obj_func,
1412    pub get_sensitivity_objex: *mut get_sensitivity_objex_func,
1413    pub get_sensitivity_rhs: *mut get_sensitivity_rhs_func,
1414    pub get_simplextype: *mut get_simplextype_func,
1415    pub get_solutioncount: *mut get_solutioncount_func,
1416    pub get_solutionlimit: *mut get_solutionlimit_func,
1417    pub get_status: *mut get_status_func,
1418    pub get_statustext: *mut get_statustext_func,
1419    pub get_timeout: *mut get_timeout_func,
1420    pub get_total_iter: *mut get_total_iter_func,
1421    pub get_total_nodes: *mut get_total_nodes_func,
1422    pub get_upbo: *mut get_upbo_func,
1423    pub get_var_branch: *mut get_var_branch_func,
1424    pub get_var_dualresult: *mut get_var_dualresult_func,
1425    pub get_var_primalresult: *mut get_var_primalresult_func,
1426    pub get_var_priority: *mut get_var_priority_func,
1427    pub get_variables: *mut get_variables_func,
1428    pub get_verbose: *mut get_verbose_func,
1429    pub get_working_objective: *mut get_working_objective_func,
1430    pub has_BFP: *mut has_BFP_func,
1431    pub has_XLI: *mut has_XLI_func,
1432    pub is_add_rowmode: *mut is_add_rowmode_func,
1433    pub is_anti_degen: *mut is_anti_degen_func,
1434    pub is_binary: *mut is_binary_func,
1435    pub is_break_at_first: *mut is_break_at_first_func,
1436    pub is_constr_type: *mut is_constr_type_func,
1437    pub is_debug: *mut is_debug_func,
1438    pub is_feasible: *mut is_feasible_func,
1439    pub is_infinite: *mut is_infinite_func,
1440    pub is_int: *mut is_int_func,
1441    pub is_integerscaling: *mut is_integerscaling_func,
1442    pub is_lag_trace: *mut is_lag_trace_func,
1443    pub is_maxim: *mut is_maxim_func,
1444    pub is_nativeBFP: *mut is_nativeBFP_func,
1445    pub is_nativeXLI: *mut is_nativeXLI_func,
1446    pub is_negative: *mut is_negative_func,
1447    pub is_obj_in_basis: *mut is_obj_in_basis_func,
1448    pub is_piv_mode: *mut is_piv_mode_func,
1449    pub is_piv_rule: *mut is_piv_rule_func,
1450    pub is_presolve: *mut is_presolve_func,
1451    pub is_scalemode: *mut is_scalemode_func,
1452    pub is_scaletype: *mut is_scaletype_func,
1453    pub is_semicont: *mut is_semicont_func,
1454    pub is_SOS_var: *mut is_SOS_var_func,
1455    pub is_trace: *mut is_trace_func,
1456    pub is_unbounded: *mut is_unbounded_func,
1457    pub is_use_names: *mut is_use_names_func,
1458    pub lp_solve_version: *mut lp_solve_version_func,
1459    pub make_lp: *mut make_lp_func,
1460    pub print_constraints: *mut print_constraints_func,
1461    pub print_debugdump: *mut print_debugdump_func,
1462    pub print_duals: *mut print_duals_func,
1463    pub print_lp: *mut print_lp_func,
1464    pub print_objective: *mut print_objective_func,
1465    pub print_scales: *mut print_scales_func,
1466    pub print_solution: *mut print_solution_func,
1467    pub print_str: *mut print_str_func,
1468    pub print_tableau: *mut print_tableau_func,
1469    pub put_abortfunc: *mut put_abortfunc_func,
1470    pub put_bb_nodefunc: *mut put_bb_nodefunc_func,
1471    pub put_bb_branchfunc: *mut put_bb_branchfunc_func,
1472    pub put_logfunc: *mut put_logfunc_func,
1473    pub put_msgfunc: *mut put_msgfunc_func,
1474    pub read_LP: *mut read_LP_func,
1475    pub read_MPS: *mut read_MPS_func,
1476    pub read_XLI: *mut read_XLI_func,
1477    pub read_params: *mut read_params_func,
1478    pub read_basis: *mut read_basis_func,
1479    pub reset_basis: *mut reset_basis_func,
1480    pub reset_params: *mut reset_params_func,
1481    pub resize_lp: *mut resize_lp_func,
1482    pub set_add_rowmode: *mut set_add_rowmode_func,
1483    pub set_anti_degen: *mut set_anti_degen_func,
1484    pub set_basisvar: *mut set_basisvar_func,
1485    pub set_basis: *mut set_basis_func,
1486    pub set_basiscrash: *mut set_basiscrash_func,
1487    pub set_bb_depthlimit: *mut set_bb_depthlimit_func,
1488    pub set_bb_floorfirst: *mut set_bb_floorfirst_func,
1489    pub set_bb_rule: *mut set_bb_rule_func,
1490    pub set_BFP: *mut set_BFP_func,
1491    pub set_binary: *mut set_binary_func,
1492    pub set_bounds: *mut set_bounds_func,
1493    pub set_bounds_tighter: *mut set_bounds_tighter_func,
1494    pub set_break_at_first: *mut set_break_at_first_func,
1495    pub set_break_at_value: *mut set_break_at_value_func,
1496    pub set_column: *mut set_column_func,
1497    pub set_columnex: *mut set_columnex_func,
1498    pub set_col_name: *mut set_col_name_func,
1499    pub set_constr_type: *mut set_constr_type_func,
1500    pub set_debug: *mut set_debug_func,
1501    pub set_epsb: *mut set_epsb_func,
1502    pub set_epsd: *mut set_epsd_func,
1503    pub set_epsel: *mut set_epsel_func,
1504    pub set_epsint: *mut set_epsint_func,
1505    pub set_epslevel: *mut set_epslevel_func,
1506    pub set_epsperturb: *mut set_epsperturb_func,
1507    pub set_epspivot: *mut set_epspivot_func,
1508    pub set_unbounded: *mut set_unbounded_func,
1509    pub set_improve: *mut set_improve_func,
1510    pub set_infinite: *mut set_infinite_func,
1511    pub set_int: *mut set_int_func,
1512    pub set_lag_trace: *mut set_lag_trace_func,
1513    pub set_lowbo: *mut set_lowbo_func,
1514    pub set_lp_name: *mut set_lp_name_func,
1515    pub set_mat: *mut set_mat_func,
1516    pub set_maxim: *mut set_maxim_func,
1517    pub set_maxpivot: *mut set_maxpivot_func,
1518    pub set_minim: *mut set_minim_func,
1519    pub set_mip_gap: *mut set_mip_gap_func,
1520    pub set_multiprice: *mut set_multiprice_func,
1521    pub set_negrange: *mut set_negrange_func,
1522    pub set_obj_bound: *mut set_obj_bound_func,
1523    pub set_obj_fn: *mut set_obj_fn_func,
1524    pub set_obj_fnex: *mut set_obj_fnex_func,
1525    pub set_obj: *mut set_obj_func,
1526    pub set_obj_in_basis: *mut set_obj_in_basis_func,
1527    pub set_outputfile: *mut set_outputfile_func,
1528    pub set_outputstream: *mut set_outputstream_func,
1529    pub set_partialprice: *mut set_partialprice_func,
1530    pub set_pivoting: *mut set_pivoting_func,
1531    pub set_preferdual: *mut set_preferdual_func,
1532    pub set_presolve: *mut set_presolve_func,
1533    pub set_print_sol: *mut set_print_sol_func,
1534    pub set_pseudocosts: *mut set_pseudocosts_func,
1535    pub set_rh: *mut set_rh_func,
1536    pub set_rh_range: *mut set_rh_range_func,
1537    pub set_rh_vec: *mut set_rh_vec_func,
1538    pub set_row: *mut set_row_func,
1539    pub set_rowex: *mut set_rowex_func,
1540    pub set_row_name: *mut set_row_name_func,
1541    pub set_scalelimit: *mut set_scalelimit_func,
1542    pub set_scaling: *mut set_scaling_func,
1543    pub set_semicont: *mut set_semicont_func,
1544    pub set_sense: *mut set_sense_func,
1545    pub set_simplextype: *mut set_simplextype_func,
1546    pub set_solutionlimit: *mut set_solutionlimit_func,
1547    pub set_timeout: *mut set_timeout_func,
1548    pub set_trace: *mut set_trace_func,
1549    pub set_upbo: *mut set_upbo_func,
1550    pub set_use_names: *mut set_use_names_func,
1551    pub set_var_branch: *mut set_var_branch_func,
1552    pub set_var_weights: *mut set_var_weights_func,
1553    pub set_verbose: *mut set_verbose_func,
1554    pub set_XLI: *mut set_XLI_func,
1555    pub solve: *mut solve_func,
1556    pub str_add_column: *mut str_add_column_func,
1557    pub str_add_constraint: *mut str_add_constraint_func,
1558    pub str_add_lag_con: *mut str_add_lag_con_func,
1559    pub str_set_obj_fn: *mut str_set_obj_fn_func,
1560    pub str_set_rh_vec: *mut str_set_rh_vec_func,
1561    pub time_elapsed: *mut time_elapsed_func,
1562    pub unscale: *mut unscale_func,
1563    pub write_lp: *mut write_lp_func,
1564    pub write_LP: *mut write_LP_func,
1565    pub write_mps: *mut write_mps_func,
1566    pub write_MPS: *mut write_MPS_func,
1567    pub write_freemps: *mut write_freemps_func,
1568    pub write_freeMPS: *mut write_freeMPS_func,
1569    pub write_XLI: *mut write_XLI_func,
1570    pub write_basis: *mut write_basis_func,
1571    pub write_params: *mut write_params_func,
1572    pub alignmentspacer: *mut libc::c_int,
1573    pub lp_name: *mut libc::c_char,
1574    pub sum: libc::c_int,
1575    pub rows: libc::c_int,
1576    pub columns: libc::c_int,
1577    pub equalities: libc::c_int,
1578    pub boundedvars: libc::c_int,
1579    pub INTfuture1: libc::c_int,
1580    pub sum_alloc: libc::c_int,
1581    pub rows_alloc: libc::c_int,
1582    pub columns_alloc: libc::c_int,
1583    pub source_is_file: libc::c_uchar,
1584    pub model_is_pure: libc::c_uchar,
1585    pub model_is_valid: libc::c_uchar,
1586    pub tighten_on_set: libc::c_uchar,
1587    pub names_used: libc::c_uchar,
1588    pub use_row_names: libc::c_uchar,
1589    pub use_col_names: libc::c_uchar,
1590    pub lag_trace: libc::c_uchar,
1591    pub spx_trace: libc::c_uchar,
1592    pub bb_trace: libc::c_uchar,
1593    pub streamowned: libc::c_uchar,
1594    pub obj_in_basis: libc::c_uchar,
1595    pub spx_status: libc::c_int,
1596    pub lag_status: libc::c_int,
1597    pub solutioncount: libc::c_int,
1598    pub solutionlimit: libc::c_int,
1599    pub real_solution: libc::c_double,
1600    pub solution: *mut libc::c_double,
1601    pub best_solution: *mut libc::c_double,
1602    pub full_solution: *mut libc::c_double,
1603    pub edgeVector: *mut libc::c_double,
1604    pub drow: *mut libc::c_double,
1605    pub nzdrow: *mut libc::c_int,
1606    pub duals: *mut libc::c_double,
1607    pub full_duals: *mut libc::c_double,
1608    pub dualsfrom: *mut libc::c_double,
1609    pub dualstill: *mut libc::c_double,
1610    pub objfrom: *mut libc::c_double,
1611    pub objtill: *mut libc::c_double,
1612    pub objfromvalue: *mut libc::c_double,
1613    pub orig_obj: *mut libc::c_double,
1614    pub obj: *mut libc::c_double,
1615    pub current_iter: libc::c_longlong,
1616    pub total_iter: libc::c_longlong,
1617    pub current_bswap: libc::c_longlong,
1618    pub total_bswap: libc::c_longlong,
1619    pub solvecount: libc::c_int,
1620    pub max_pivots: libc::c_int,
1621    pub simplex_strategy: libc::c_int,
1622    pub simplex_mode: libc::c_int,
1623    pub verbose: libc::c_int,
1624    pub print_sol: libc::c_int,
1625    pub outstream: *mut libc::FILE,
1626    pub bb_varbranch: *mut libc::c_uchar,
1627    pub piv_strategy: libc::c_int,
1628    pub _piv_rule_: libc::c_int,
1629    pub bb_rule: libc::c_int,
1630    pub bb_floorfirst: libc::c_uchar,
1631    pub bb_breakfirst: libc::c_uchar,
1632    pub _piv_left_: libc::c_uchar,
1633    pub BOOLfuture1: libc::c_uchar,
1634    pub scalelimit: libc::c_double,
1635    pub scalemode: libc::c_int,
1636    pub improve: libc::c_int,
1637    pub anti_degen: libc::c_int,
1638    pub do_presolve: libc::c_int,
1639    pub presolveloops: libc::c_int,
1640    pub perturb_count: libc::c_int,
1641    pub row_name: *mut *mut hashelem,
1642    pub col_name: *mut *mut hashelem,
1643    pub rowname_hashtab: *mut hashtable,
1644    pub colname_hashtab: *mut hashtable,
1645    pub rowblocks: *mut partialrec,
1646    pub colblocks: *mut partialrec,
1647    pub var_type: *mut libc::c_uchar,
1648    pub multivars: *mut multirec,
1649    pub multiblockdiv: libc::c_int,
1650    pub fixedvars: libc::c_int,
1651    pub int_vars: libc::c_int,
1652    pub sc_vars: libc::c_int,
1653    pub sc_lobound: *mut libc::c_double,
1654    pub var_is_free: *mut libc::c_int,
1655    pub var_priority: *mut libc::c_int,
1656    pub GUB: *mut SOSgroup,
1657    pub sos_vars: libc::c_int,
1658    pub sos_ints: libc::c_int,
1659    pub SOS: *mut SOSgroup,
1660    pub sos_priority: *mut libc::c_int,
1661    pub bsolveVal: *mut libc::c_double,
1662    pub bsolveIdx: *mut libc::c_int,
1663    pub orig_rhs: *mut libc::c_double,
1664    pub rhs: *mut libc::c_double,
1665    pub row_type: *mut libc::c_int,
1666    pub longsteps: *mut multirec,
1667    pub orig_upbo: *mut libc::c_double,
1668    pub upbo: *mut libc::c_double,
1669    pub orig_lowbo: *mut libc::c_double,
1670    pub lowbo: *mut libc::c_double,
1671    pub matA: *mut MATrec,
1672    pub invB: *mut INVrec,
1673    pub bb_bounds: *mut BBrec,
1674    pub rootbounds: *mut BBrec,
1675    pub bb_basis: *mut basisrec,
1676    pub rootbasis: *mut basisrec,
1677    pub monitor: *mut OBJmonrec,
1678    pub scalars: *mut libc::c_double,
1679    pub scaling_used: libc::c_uchar,
1680    pub columns_scaled: libc::c_uchar,
1681    pub varmap_locked: libc::c_uchar,
1682    pub basis_valid: libc::c_uchar,
1683    pub crashmode: libc::c_int,
1684    pub var_basic: *mut libc::c_int,
1685    pub val_nonbasic: *mut libc::c_double,
1686    pub is_basic: *mut libc::c_uchar,
1687    pub is_lower: *mut libc::c_uchar,
1688    pub rejectpivot: *mut libc::c_int,
1689    pub bb_PseudoCost: *mut BBPSrec,
1690    pub bb_PseudoUpdates: libc::c_int,
1691    pub bb_strongbranches: libc::c_int,
1692    pub is_strongbranch: libc::c_int,
1693    pub bb_improvements: libc::c_int,
1694    pub rhsmax: libc::c_double,
1695    pub suminfeas: libc::c_double,
1696    pub bigM: libc::c_double,
1697    pub P1extraVal: libc::c_double,
1698    pub P1extraDim: libc::c_int,
1699    pub spx_action: libc::c_int,
1700    pub spx_perturbed: libc::c_uchar,
1701    pub bb_break: libc::c_uchar,
1702    pub wasPreprocessed: libc::c_uchar,
1703    pub wasPresolved: libc::c_uchar,
1704    pub INTfuture2: libc::c_int,
1705    pub matL: *mut MATrec,
1706    pub lag_rhs: *mut libc::c_double,
1707    pub lag_con_type: *mut libc::c_int,
1708    pub lambda: *mut libc::c_double,
1709    pub lag_bound: libc::c_double,
1710    pub lag_accept: libc::c_double,
1711    pub infinite: libc::c_double,
1712    pub negrange: libc::c_double,
1713    pub epsmachine: libc::c_double,
1714    pub epsvalue: libc::c_double,
1715    pub epsprimal: libc::c_double,
1716    pub epsdual: libc::c_double,
1717    pub epspivot: libc::c_double,
1718    pub epsperturb: libc::c_double,
1719    pub epssolution: libc::c_double,
1720    pub bb_status: libc::c_int,
1721    pub bb_level: libc::c_int,
1722    pub bb_maxlevel: libc::c_int,
1723    pub bb_limitlevel: libc::c_int,
1724    pub bb_totalnodes: libc::c_longlong,
1725    pub bb_solutionlevel: libc::c_int,
1726    pub bb_cutpoolsize: libc::c_int,
1727    pub bb_cutpoolused: libc::c_int,
1728    pub bb_constraintOF: libc::c_int,
1729    pub bb_cuttype: *mut libc::c_int,
1730    pub bb_varactive: *mut libc::c_int,
1731    pub bb_upperchange: *mut DeltaVrec,
1732    pub bb_lowerchange: *mut DeltaVrec,
1733    pub bb_deltaOF: libc::c_double,
1734    pub bb_breakOF: libc::c_double,
1735    pub bb_limitOF: libc::c_double,
1736    pub bb_heuristicOF: libc::c_double,
1737    pub bb_parentOF: libc::c_double,
1738    pub bb_workOF: libc::c_double,
1739    pub presolve_undo: *mut presolveundorec,
1740    pub workarrays: *mut workarraysrec,
1741    pub epsint: libc::c_double,
1742    pub mip_absgap: libc::c_double,
1743    pub mip_relgap: libc::c_double,
1744    pub timecreate: libc::c_double,
1745    pub timestart: libc::c_double,
1746    pub timeheuristic: libc::c_double,
1747    pub timepresolved: libc::c_double,
1748    pub timeend: libc::c_double,
1749    pub sectimeout: libc::c_long,
1750    pub ex_status: *mut libc::c_char,
1751    pub hBFP: *mut libc::c_void,
1752    pub bfp_name: *mut BFPchar,
1753    pub bfp_compatible: *mut BFPbool_lpintintint,
1754    pub bfp_init: *mut BFPbool_lpintintchar,
1755    pub bfp_free: *mut BFP_lp,
1756    pub bfp_resize: *mut BFPbool_lpint,
1757    pub bfp_memallocated: *mut BFPint_lp,
1758    pub bfp_restart: *mut BFPbool_lp,
1759    pub bfp_mustrefactorize: *mut BFPbool_lp,
1760    pub bfp_preparefactorization: *mut BFPint_lp,
1761    pub bfp_factorize: *mut BFPint_lpintintboolbool,
1762    pub bfp_finishfactorization: *mut BFP_lp,
1763    pub bfp_updaterefactstats: *mut BFP_lp,
1764    pub bfp_prepareupdate: *mut BFPlreal_lpintintreal,
1765    pub bfp_pivotRHS: *mut BFPreal_lplrealreal,
1766    pub bfp_finishupdate: *mut BFPbool_lpbool,
1767    pub bfp_ftran_prepare: *mut BFP_lprealint,
1768    pub bfp_ftran_normal: *mut BFP_lprealint,
1769    pub bfp_btran_normal: *mut BFP_lprealint,
1770    pub bfp_btran_double: *mut BFP_lprealintrealint,
1771    pub bfp_status: *mut BFPint_lp,
1772    pub bfp_nonzeros: *mut BFPint_lpbool,
1773    pub bfp_implicitslack: *mut BFPbool_lp,
1774    pub bfp_indexbase: *mut BFPint_lp,
1775    pub bfp_rowoffset: *mut BFPint_lp,
1776    pub bfp_pivotmax: *mut BFPint_lp,
1777    pub bfp_pivotalloc: *mut BFPbool_lpint,
1778    pub bfp_colcount: *mut BFPint_lp,
1779    pub bfp_canresetbasis: *mut BFPbool_lp,
1780    pub bfp_efficiency: *mut BFPreal_lp,
1781    pub bfp_pivotvector: *mut BFPrealp_lp,
1782    pub bfp_pivotcount: *mut BFPint_lp,
1783    pub bfp_refactcount: *mut BFPint_lpint,
1784    pub bfp_isSetI: *mut BFPbool_lp,
1785    pub bfp_findredundant: *mut BFPint_lpintrealcbintint,
1786    pub hXLI: *mut libc::c_void,
1787    pub xli_name: *mut XLIchar,
1788    pub xli_compatible: *mut XLIbool_lpintintint,
1789    pub xli_readmodel: *mut XLIbool_lpcharcharcharint,
1790    pub xli_writemodel: *mut XLIbool_lpcharcharbool,
1791    pub userabort: *mut userabortfunc,
1792    pub report: *mut reportfunc,
1793    pub explain: *mut explainfunc,
1794    pub get_lpcolumn: *mut getvectorfunc,
1795    pub get_basiscolumn: *mut getpackedfunc,
1796    pub get_OF_active: *mut get_OF_activefunc,
1797    pub getMDO: *mut getMDOfunc,
1798    pub invert: *mut invertfunc,
1799    pub set_action: *mut set_actionfunc,
1800    pub is_action: *mut is_actionfunc,
1801    pub clear_action: *mut clear_actionfunc,
1802    pub ctrlc: *mut lphandle_intfunc,
1803    pub ctrlchandle: *mut libc::c_void,
1804    pub writelog: *mut lphandlestr_func,
1805    pub loghandle: *mut libc::c_void,
1806    pub debuginfo: *mut lphandlestr_func,
1807    pub usermessage: *mut lphandleint_func,
1808    pub msgmask: libc::c_int,
1809    pub msghandle: *mut libc::c_void,
1810    pub bb_usenode: *mut lphandleint_intfunc,
1811    pub bb_nodehandle: *mut libc::c_void,
1812    pub bb_usebranch: *mut lphandleint_intfunc,
1813    pub bb_branchhandle: *mut libc::c_void,
1814    pub rowcol_name: *mut libc::c_char,
1815}
1816impl ::core::clone::Clone for Struct__lprec {
1817    fn clone(&self) -> Self { *self }
1818}
1819impl ::core::default::Default for Struct__lprec {
1820    fn default() -> Self { unsafe { ::core::mem::zeroed() } }
1821}
1822#[cfg(not(windows))]
1823pub type read_modeldata_func =
1824    unsafe extern "C" fn(userhandle: *mut libc::c_void,
1825                         buf: *mut libc::c_char,
1826                         max_size: libc::c_int)
1827        -> libc::c_int;
1828#[cfg(not(windows))]
1829pub type write_modeldata_func =
1830    unsafe extern "C" fn(userhandle: *mut libc::c_void,
1831                         buf: *mut libc::c_char)
1832        -> libc::c_int;
1833
1834#[cfg(windows)]
1835pub type read_modeldata_func =
1836    unsafe extern "stdcall" fn(userhandle: *mut libc::c_void,
1837                         buf: *mut libc::c_char,
1838                         max_size: libc::c_int)
1839        -> libc::c_int;
1840#[cfg(windows)]
1841pub type write_modeldata_func =
1842    unsafe extern "stdcall" fn(userhandle: *mut libc::c_void,
1843                         buf: *mut libc::c_char)
1844        -> libc::c_int;
1845
1846#[cfg(not(windows))]
1847unsafe extern "C" {
1848    pub fn allocCHAR(lp: *mut lprec, ptr: *mut *mut libc::c_char,
1849                     size: libc::c_int,
1850                     clear: libc::c_uchar)
1851     -> libc::c_uchar;
1852    pub fn allocMYBOOL(lp: *mut lprec, ptr: *mut *mut libc::c_uchar,
1853                       size: libc::c_int,
1854                       clear: libc::c_uchar)
1855     -> libc::c_uchar;
1856    pub fn allocINT(lp: *mut lprec, ptr: *mut *mut libc::c_int,
1857                    size: libc::c_int,
1858                    clear: libc::c_uchar)
1859     -> libc::c_uchar;
1860    pub fn allocREAL(lp: *mut lprec, ptr: *mut *mut libc::c_double,
1861                     size: libc::c_int,
1862                     clear: libc::c_uchar)
1863     -> libc::c_uchar;
1864    pub fn allocLREAL(lp: *mut lprec, ptr: *mut *mut libc::c_double,
1865                      size: libc::c_int,
1866                      clear: libc::c_uchar)
1867     -> libc::c_uchar;
1868    pub fn allocFREE(lp: *mut lprec, ptr: *mut *mut libc::c_void)
1869     -> libc::c_uchar;
1870    pub fn cloneREAL(lp: *mut lprec, origlist: *mut libc::c_double,
1871                     size: libc::c_int)
1872     -> *mut libc::c_double;
1873    pub fn cloneMYBOOL(lp: *mut lprec, origlist: *mut libc::c_uchar,
1874                       size: libc::c_int)
1875     -> *mut libc::c_uchar;
1876    pub fn cloneINT(lp: *mut lprec, origlist: *mut libc::c_int,
1877                    size: libc::c_int)
1878     -> *mut libc::c_int;
1879    pub fn comp_bits(bitarray1: *mut libc::c_uchar,
1880                     bitarray2: *mut libc::c_uchar,
1881                     items: libc::c_int) -> libc::c_int;
1882    pub fn mempool_create(lp: *mut lprec) -> *mut workarraysrec;
1883    pub fn mempool_obtainVector(mempool: *mut workarraysrec,
1884                                count: libc::c_int,
1885                                unitsize: libc::c_int)
1886     -> *mut libc::c_char;
1887    pub fn mempool_releaseVector(mempool: *mut workarraysrec,
1888                                 memvector: *mut libc::c_char,
1889                                 forcefree: libc::c_uchar)
1890     -> libc::c_uchar;
1891    pub fn mempool_free(mempool: *mut *mut workarraysrec)
1892     -> libc::c_uchar;
1893    pub fn roundVector(myvector: *mut libc::c_double,
1894                       endpos: libc::c_int,
1895                       roundzero: libc::c_double);
1896    pub fn normalizeVector(myvector: *mut libc::c_double,
1897                           endpos: libc::c_int)
1898     -> libc::c_double;
1899    pub fn swapINT(item1: *mut libc::c_int,
1900                   item2: *mut libc::c_int);
1901    pub fn swapREAL(item1: *mut libc::c_double,
1902                    item2: *mut libc::c_double);
1903    pub fn swapPTR(item1: *mut *mut libc::c_void,
1904                   item2: *mut *mut libc::c_void);
1905    pub fn restoreINT(valREAL: libc::c_double,
1906                      epsilon: libc::c_double)
1907     -> libc::c_double;
1908    pub fn roundToPrecision(value: libc::c_double,
1909                            precision: libc::c_double)
1910     -> libc::c_double;
1911    pub fn searchFor(target: libc::c_int,
1912                     attributes: *mut libc::c_int,
1913                     size: libc::c_int,
1914                     offset: libc::c_int,
1915                     absolute: libc::c_uchar)
1916     -> libc::c_int;
1917    pub fn isINT(lp: *mut lprec, value: libc::c_double)
1918     -> libc::c_uchar;
1919    pub fn isOrigFixed(lp: *mut lprec, varno: libc::c_int)
1920     -> libc::c_uchar;
1921    pub fn chsign_bounds(lobound: *mut libc::c_double,
1922                         upbound: *mut libc::c_double);
1923    pub fn rand_uniform(lp: *mut lprec, range: libc::c_double)
1924     -> libc::c_double;
1925    pub fn createLink(size: libc::c_int, linkmap: *mut *mut LLrec,
1926                      usedpos: *mut libc::c_uchar)
1927     -> libc::c_int;
1928    pub fn freeLink(linkmap: *mut *mut LLrec) -> libc::c_uchar;
1929    pub fn sizeLink(linkmap: *mut LLrec) -> libc::c_int;
1930    pub fn isActiveLink(linkmap: *mut LLrec, itemnr: libc::c_int)
1931     -> libc::c_uchar;
1932    pub fn countActiveLink(linkmap: *mut LLrec) -> libc::c_int;
1933    pub fn countInactiveLink(linkmap: *mut LLrec) -> libc::c_int;
1934    pub fn firstActiveLink(linkmap: *mut LLrec) -> libc::c_int;
1935    pub fn lastActiveLink(linkmap: *mut LLrec) -> libc::c_int;
1936    pub fn appendLink(linkmap: *mut LLrec, newitem: libc::c_int)
1937     -> libc::c_uchar;
1938    pub fn insertLink(linkmap: *mut LLrec, afteritem: libc::c_int,
1939                      newitem: libc::c_int)
1940     -> libc::c_uchar;
1941    pub fn setLink(linkmap: *mut LLrec, newitem: libc::c_int)
1942     -> libc::c_uchar;
1943    pub fn fillLink(linkmap: *mut LLrec) -> libc::c_uchar;
1944    pub fn nextActiveLink(linkmap: *mut LLrec,
1945                          backitemnr: libc::c_int)
1946     -> libc::c_int;
1947    pub fn prevActiveLink(linkmap: *mut LLrec,
1948                          forwitemnr: libc::c_int)
1949     -> libc::c_int;
1950    pub fn firstInactiveLink(linkmap: *mut LLrec) -> libc::c_int;
1951    pub fn lastInactiveLink(linkmap: *mut LLrec) -> libc::c_int;
1952    pub fn nextInactiveLink(linkmap: *mut LLrec,
1953                            backitemnr: libc::c_int)
1954     -> libc::c_int;
1955    pub fn prevInactiveLink(linkmap: *mut LLrec,
1956                            forwitemnr: libc::c_int)
1957     -> libc::c_int;
1958    pub fn removeLink(linkmap: *mut LLrec, itemnr: libc::c_int)
1959     -> libc::c_int;
1960    pub fn cloneLink(sourcemap: *mut LLrec, newsize: libc::c_int,
1961                     freesource: libc::c_uchar) -> *mut LLrec;
1962    pub fn compareLink(linkmap1: *mut LLrec, linkmap2: *mut LLrec)
1963     -> libc::c_int;
1964    pub fn verifyLink(linkmap: *mut LLrec, itemnr: libc::c_int,
1965                      doappend: libc::c_uchar)
1966     -> libc::c_uchar;
1967    pub fn createPackedVector(size: libc::c_int,
1968                              values: *mut libc::c_double,
1969                              workvector: *mut libc::c_int)
1970     -> *mut PVrec;
1971    pub fn pushPackedVector(PV: *mut PVrec, parent: *mut PVrec);
1972    pub fn unpackPackedVector(PV: *mut PVrec,
1973                              target: *mut *mut libc::c_double)
1974     -> libc::c_uchar;
1975    pub fn getvaluePackedVector(PV: *mut PVrec, index: libc::c_int)
1976     -> libc::c_double;
1977    pub fn popPackedVector(PV: *mut PVrec) -> *mut PVrec;
1978    pub fn freePackedVector(PV: *mut *mut PVrec) -> libc::c_uchar;
1979    pub fn create_hash_table(size: libc::c_int,
1980                             base: libc::c_int) -> *mut hashtable;
1981    pub fn free_hash_table(ht: *mut hashtable);
1982    pub fn findhash(name: *const libc::c_char, ht: *mut hashtable)
1983     -> *mut hashelem;
1984    pub fn puthash(name: *const libc::c_char,
1985                   index: libc::c_int, list: *mut *mut hashelem,
1986                   ht: *mut hashtable) -> *mut hashelem;
1987    pub fn drophash(name: *const libc::c_char,
1988                    list: *mut *mut hashelem, ht: *mut hashtable);
1989    pub fn free_hash_item(hp: *mut *mut hashelem);
1990    pub fn copy_hash_table(ht: *mut hashtable, list: *mut *mut hashelem,
1991                           newsize: libc::c_int) -> *mut hashtable;
1992    pub fn find_var(lp: *mut lprec, name: *mut libc::c_char,
1993                    verbose: libc::c_uchar)
1994     -> libc::c_int;
1995    pub fn find_row(lp: *mut lprec, name: *mut libc::c_char,
1996                    Unconstrained_rows_found: libc::c_uchar)
1997     -> libc::c_int;
1998    pub fn mat_create(lp: *mut lprec, rows: libc::c_int,
1999                      columns: libc::c_int,
2000                      epsvalue: libc::c_double) -> *mut MATrec;
2001    pub fn mat_memopt(mat: *mut MATrec, rowextra: libc::c_int,
2002                      colextra: libc::c_int,
2003                      nzextra: libc::c_int)
2004     -> libc::c_uchar;
2005    pub fn mat_free(matrix: *mut *mut MATrec);
2006    pub fn inc_matrow_space(mat: *mut MATrec,
2007                            deltarows: libc::c_int)
2008     -> libc::c_uchar;
2009    pub fn mat_mapreplace(mat: *mut MATrec, rowmap: *mut LLrec,
2010                          colmap: *mut LLrec, insmat: *mut MATrec)
2011     -> libc::c_int;
2012    pub fn mat_matinsert(mat: *mut MATrec, insmat: *mut MATrec)
2013     -> libc::c_int;
2014    pub fn mat_zerocompact(mat: *mut MATrec) -> libc::c_int;
2015    pub fn mat_rowcompact(mat: *mut MATrec, dozeros: libc::c_uchar)
2016     -> libc::c_int;
2017    pub fn mat_colcompact(mat: *mut MATrec, prev_rows: libc::c_int,
2018                          prev_cols: libc::c_int)
2019     -> libc::c_int;
2020    pub fn inc_matcol_space(mat: *mut MATrec,
2021                            deltacols: libc::c_int)
2022     -> libc::c_uchar;
2023    pub fn inc_mat_space(mat: *mut MATrec, mindelta: libc::c_int)
2024     -> libc::c_uchar;
2025    pub fn mat_shiftrows(mat: *mut MATrec, bbase: *mut libc::c_int,
2026                         delta: libc::c_int, varmap: *mut LLrec)
2027     -> libc::c_int;
2028    pub fn mat_shiftcols(mat: *mut MATrec, bbase: *mut libc::c_int,
2029                         delta: libc::c_int, varmap: *mut LLrec)
2030     -> libc::c_int;
2031    pub fn mat_extractmat(mat: *mut MATrec, rowmap: *mut LLrec,
2032                          colmap: *mut LLrec,
2033                          negated: libc::c_uchar) -> *mut MATrec;
2034    pub fn mat_appendrow(mat: *mut MATrec, count: libc::c_int,
2035                         row: *mut libc::c_double,
2036                         colno: *mut libc::c_int,
2037                         mult: libc::c_double,
2038                         checkrowmode: libc::c_uchar)
2039     -> libc::c_int;
2040    pub fn mat_appendcol(mat: *mut MATrec, count: libc::c_int,
2041                         column: *mut libc::c_double,
2042                         rowno: *mut libc::c_int,
2043                         mult: libc::c_double,
2044                         checkrowmode: libc::c_uchar)
2045     -> libc::c_int;
2046    pub fn mat_get_data(lp: *mut lprec, matindex: libc::c_int,
2047                        isrow: libc::c_uchar,
2048                        rownr: *mut *mut libc::c_int,
2049                        colnr: *mut *mut libc::c_int,
2050                        value: *mut *mut libc::c_double)
2051     -> libc::c_uchar;
2052    pub fn mat_set_rowmap(mat: *mut MATrec,
2053                          row_mat_index: libc::c_int,
2054                          rownr: libc::c_int,
2055                          colnr: libc::c_int,
2056                          col_mat_index: libc::c_int)
2057     -> libc::c_uchar;
2058    pub fn mat_indexrange(mat: *mut MATrec, index: libc::c_int,
2059                          isrow: libc::c_uchar,
2060                          startpos: *mut libc::c_int,
2061                          endpos: *mut libc::c_int)
2062     -> libc::c_uchar;
2063    pub fn mat_validate(mat: *mut MATrec) -> libc::c_uchar;
2064    pub fn mat_equalRows(mat: *mut MATrec, baserow: libc::c_int,
2065                         comprow: libc::c_int)
2066     -> libc::c_uchar;
2067    pub fn mat_findelm(mat: *mut MATrec, row: libc::c_int,
2068                       column: libc::c_int)
2069     -> libc::c_int;
2070    pub fn mat_findins(mat: *mut MATrec, row: libc::c_int,
2071                       column: libc::c_int,
2072                       insertpos: *mut libc::c_int,
2073                       validate: libc::c_uchar)
2074     -> libc::c_int;
2075    pub fn mat_multcol(mat: *mut MATrec, col_nr: libc::c_int,
2076                       mult: libc::c_double,
2077                       DoObj: libc::c_uchar);
2078    pub fn mat_getitem(mat: *mut MATrec, row: libc::c_int,
2079                       column: libc::c_int)
2080     -> libc::c_double;
2081    pub fn mat_setitem(mat: *mut MATrec, row: libc::c_int,
2082                       column: libc::c_int,
2083                       value: libc::c_double)
2084     -> libc::c_uchar;
2085    pub fn mat_additem(mat: *mut MATrec, row: libc::c_int,
2086                       column: libc::c_int,
2087                       delta: libc::c_double)
2088     -> libc::c_uchar;
2089    pub fn mat_setvalue(mat: *mut MATrec, Row: libc::c_int,
2090                        Column: libc::c_int,
2091                        Value: libc::c_double,
2092                        doscale: libc::c_uchar)
2093     -> libc::c_uchar;
2094    pub fn mat_nonzeros(mat: *mut MATrec) -> libc::c_int;
2095    pub fn mat_collength(mat: *mut MATrec, colnr: libc::c_int)
2096     -> libc::c_int;
2097    pub fn mat_rowlength(mat: *mut MATrec, rownr: libc::c_int)
2098     -> libc::c_int;
2099    pub fn mat_multrow(mat: *mut MATrec, row_nr: libc::c_int,
2100                       mult: libc::c_double);
2101    pub fn mat_multadd(mat: *mut MATrec,
2102                       lhsvector: *mut libc::c_double,
2103                       varnr: libc::c_int,
2104                       mult: libc::c_double);
2105    pub fn mat_setrow(mat: *mut MATrec, rowno: libc::c_int,
2106                      count: libc::c_int,
2107                      row: *mut libc::c_double,
2108                      colno: *mut libc::c_int,
2109                      doscale: libc::c_uchar,
2110                      checkrowmode: libc::c_uchar)
2111     -> libc::c_uchar;
2112    pub fn mat_setcol(mat: *mut MATrec, colno: libc::c_int,
2113                      count: libc::c_int,
2114                      column: *mut libc::c_double,
2115                      rowno: *mut libc::c_int,
2116                      doscale: libc::c_uchar,
2117                      checkrowmode: libc::c_uchar)
2118     -> libc::c_uchar;
2119    pub fn mat_mergemat(target: *mut MATrec, source: *mut MATrec,
2120                        usecolmap: libc::c_uchar)
2121     -> libc::c_uchar;
2122    pub fn mat_checkcounts(mat: *mut MATrec,
2123                           rownum: *mut libc::c_int,
2124                           colnum: *mut libc::c_int,
2125                           freeonexit: libc::c_uchar)
2126     -> libc::c_int;
2127    pub fn mat_expandcolumn(mat: *mut MATrec, colnr: libc::c_int,
2128                            column: *mut libc::c_double,
2129                            nzlist: *mut libc::c_int,
2130                            signedA: libc::c_uchar)
2131     -> libc::c_int;
2132    pub fn mat_computemax(mat: *mut MATrec) -> libc::c_uchar;
2133    pub fn mat_transpose(mat: *mut MATrec) -> libc::c_uchar;
2134    pub fn invert(lp: *mut lprec, shiftbounds: libc::c_uchar,
2135                  _final: libc::c_uchar) -> libc::c_uchar;
2136    pub fn vec_compress(densevector: *mut libc::c_double,
2137                        startpos: libc::c_int,
2138                        endpos: libc::c_int,
2139                        epsilon: libc::c_double,
2140                        nzvector: *mut libc::c_double,
2141                        nzindex: *mut libc::c_int)
2142     -> libc::c_uchar;
2143    pub fn vec_expand(nzvector: *mut libc::c_double,
2144                      nzindex: *mut libc::c_int,
2145                      densevector: *mut libc::c_double,
2146                      startpos: libc::c_int,
2147                      endpos: libc::c_int)
2148     -> libc::c_uchar;
2149    pub fn get_colIndexA(lp: *mut lprec, varset: libc::c_int,
2150                         colindex: *mut libc::c_int,
2151                         append: libc::c_uchar)
2152     -> libc::c_uchar;
2153    pub fn prod_Ax(lp: *mut lprec, coltarget: *mut libc::c_int,
2154                   input: *mut libc::c_double,
2155                   nzinput: *mut libc::c_int,
2156                   roundzero: libc::c_double,
2157                   ofscalar: libc::c_double,
2158                   output: *mut libc::c_double,
2159                   nzoutput: *mut libc::c_int,
2160                   roundmode: libc::c_int) -> libc::c_int;
2161    pub fn prod_xA(lp: *mut lprec, coltarget: *mut libc::c_int,
2162                   input: *mut libc::c_double,
2163                   nzinput: *mut libc::c_int,
2164                   roundzero: libc::c_double,
2165                   ofscalar: libc::c_double,
2166                   output: *mut libc::c_double,
2167                   nzoutput: *mut libc::c_int,
2168                   roundmode: libc::c_int) -> libc::c_int;
2169    pub fn prod_xA2(lp: *mut lprec, coltarget: *mut libc::c_int,
2170                    prow: *mut libc::c_double,
2171                    proundzero: libc::c_double,
2172                    pnzprow: *mut libc::c_int,
2173                    drow: *mut libc::c_double,
2174                    droundzero: libc::c_double,
2175                    dnzdrow: *mut libc::c_int,
2176                    ofscalar: libc::c_double,
2177                    roundmode: libc::c_int)
2178     -> libc::c_uchar;
2179    pub fn fimprove(lp: *mut lprec, pcol: *mut libc::c_double,
2180                    nzidx: *mut libc::c_int,
2181                    roundzero: libc::c_double)
2182     -> libc::c_uchar;
2183    pub fn ftran(lp: *mut lprec, rhsvector: *mut libc::c_double,
2184                 nzidx: *mut libc::c_int,
2185                 roundzero: libc::c_double);
2186    pub fn bimprove(lp: *mut lprec, rhsvector: *mut libc::c_double,
2187                    nzidx: *mut libc::c_int,
2188                    roundzero: libc::c_double)
2189     -> libc::c_uchar;
2190    pub fn btran(lp: *mut lprec, rhsvector: *mut libc::c_double,
2191                 nzidx: *mut libc::c_int,
2192                 roundzero: libc::c_double);
2193    pub fn fsolve(lp: *mut lprec, varin: libc::c_int,
2194                  pcol: *mut libc::c_double,
2195                  nzidx: *mut libc::c_int,
2196                  roundzero: libc::c_double,
2197                  ofscalar: libc::c_double,
2198                  prepareupdate: libc::c_uchar)
2199     -> libc::c_uchar;
2200    pub fn bsolve(lp: *mut lprec, row_nr: libc::c_int,
2201                  rhsvector: *mut libc::c_double,
2202                  nzidx: *mut libc::c_int,
2203                  roundzero: libc::c_double,
2204                  ofscalar: libc::c_double)
2205     -> libc::c_uchar;
2206    pub fn bsolve_xA2(lp: *mut lprec, coltarget: *mut libc::c_int,
2207                      row_nr1: libc::c_int,
2208                      vector1: *mut libc::c_double,
2209                      roundzero1: libc::c_double,
2210                      nzvector1: *mut libc::c_int,
2211                      row_nr2: libc::c_int,
2212                      vector2: *mut libc::c_double,
2213                      roundzero2: libc::c_double,
2214                      nzvector2: *mut libc::c_int,
2215                      roundmode: libc::c_int);
2216    pub fn createUndoLadder(lp: *mut lprec, levelitems: libc::c_int,
2217                            maxlevels: libc::c_int)
2218     -> *mut DeltaVrec;
2219    pub fn incrementUndoLadder(DV: *mut DeltaVrec) -> libc::c_int;
2220    pub fn modifyUndoLadder(DV: *mut DeltaVrec, itemno: libc::c_int,
2221                            target: *mut libc::c_double,
2222                            newvalue: libc::c_double)
2223     -> libc::c_uchar;
2224    pub fn countsUndoLadder(DV: *mut DeltaVrec) -> libc::c_int;
2225    pub fn restoreUndoLadder(DV: *mut DeltaVrec,
2226                             target: *mut libc::c_double)
2227     -> libc::c_int;
2228    pub fn decrementUndoLadder(DV: *mut DeltaVrec) -> libc::c_int;
2229    pub fn freeUndoLadder(DV: *mut *mut DeltaVrec) -> libc::c_uchar;
2230    pub fn appendUndoPresolve(lp: *mut lprec,
2231                              isprimal: libc::c_uchar,
2232                              beta: libc::c_double,
2233                              colnrDep: libc::c_int)
2234     -> libc::c_uchar;
2235    pub fn addUndoPresolve(lp: *mut lprec, isprimal: libc::c_uchar,
2236                           colnrElim: libc::c_int,
2237                           alpha: libc::c_double,
2238                           beta: libc::c_double,
2239                           colnrDep: libc::c_int)
2240     -> libc::c_uchar;
2241    pub fn create_BB(lp: *mut lprec, parentBB: *mut BBrec,
2242                     dofullcopy: libc::c_uchar) -> *mut BBrec;
2243    pub fn push_BB(lp: *mut lprec, parentBB: *mut BBrec,
2244                   varno: libc::c_int,
2245                   vartype: libc::c_int,
2246                   varcus: libc::c_int) -> *mut BBrec;
2247    pub fn initbranches_BB(BB: *mut BBrec) -> libc::c_uchar;
2248    pub fn fillbranches_BB(BB: *mut BBrec) -> libc::c_uchar;
2249    pub fn nextbranch_BB(BB: *mut BBrec) -> libc::c_uchar;
2250    pub fn strongbranch_BB(lp: *mut lprec, BB: *mut BBrec,
2251                           varno: libc::c_int,
2252                           vartype: libc::c_int,
2253                           varcus: libc::c_int)
2254     -> libc::c_uchar;
2255    pub fn initcuts_BB(lp: *mut lprec) -> libc::c_uchar;
2256    pub fn updatecuts_BB(lp: *mut lprec) -> libc::c_int;
2257    pub fn freecuts_BB(lp: *mut lprec) -> libc::c_uchar;
2258    pub fn findself_BB(BB: *mut BBrec) -> *mut BBrec;
2259    pub fn solve_LP(lp: *mut lprec, BB: *mut BBrec) -> libc::c_int;
2260    pub fn rcfbound_BB(BB: *mut BBrec, varno: libc::c_int,
2261                       isINT: libc::c_uchar,
2262                       newbound: *mut libc::c_double,
2263                       isfeasible: *mut libc::c_uchar)
2264     -> libc::c_int;
2265    pub fn findnode_BB(BB: *mut BBrec, varno: *mut libc::c_int,
2266                       vartype: *mut libc::c_int,
2267                       varcus: *mut libc::c_int)
2268     -> libc::c_uchar;
2269    pub fn solve_BB(BB: *mut BBrec) -> libc::c_int;
2270    pub fn free_BB(BB: *mut *mut BBrec) -> libc::c_uchar;
2271    pub fn pop_BB(BB: *mut BBrec) -> *mut BBrec;
2272    pub fn run_BB(lp: *mut lprec) -> libc::c_int;
2273    pub fn create_SOSgroup(lp: *mut lprec) -> *mut SOSgroup;
2274    pub fn resize_SOSgroup(group: *mut SOSgroup);
2275    pub fn append_SOSgroup(group: *mut SOSgroup, SOS: *mut SOSrec)
2276     -> libc::c_int;
2277    pub fn clean_SOSgroup(group: *mut SOSgroup,
2278                          forceupdatemap: libc::c_uchar)
2279     -> libc::c_int;
2280    pub fn free_SOSgroup(group: *mut *mut SOSgroup);
2281    pub fn create_SOSrec(group: *mut SOSgroup,
2282                         name: *mut libc::c_char,
2283                         _type: libc::c_int,
2284                         priority: libc::c_int,
2285                         size: libc::c_int,
2286                         variables: *mut libc::c_int,
2287                         weights: *mut libc::c_double)
2288     -> *mut SOSrec;
2289    pub fn delete_SOSrec(group: *mut SOSgroup,
2290                         sosindex: libc::c_int)
2291     -> libc::c_uchar;
2292    pub fn append_SOSrec(SOS: *mut SOSrec, size: libc::c_int,
2293                         variables: *mut libc::c_int,
2294                         weights: *mut libc::c_double)
2295     -> libc::c_int;
2296    pub fn free_SOSrec(SOS: *mut SOSrec);
2297    pub fn make_SOSchain(lp: *mut lprec, forceresort: libc::c_uchar)
2298     -> libc::c_int;
2299    pub fn SOS_member_updatemap(group: *mut SOSgroup)
2300     -> libc::c_int;
2301    pub fn SOS_member_sortlist(group: *mut SOSgroup,
2302                               sosindex: libc::c_int)
2303     -> libc::c_uchar;
2304    pub fn SOS_shift_col(group: *mut SOSgroup,
2305                         sosindex: libc::c_int,
2306                         column: libc::c_int,
2307                         delta: libc::c_int, usedmap: *mut LLrec,
2308                         forceresort: libc::c_uchar)
2309     -> libc::c_uchar;
2310    pub fn SOS_member_delete(group: *mut SOSgroup,
2311                             sosindex: libc::c_int,
2312                             member: libc::c_int)
2313     -> libc::c_int;
2314    pub fn SOS_get_type(group: *mut SOSgroup, sosindex: libc::c_int)
2315     -> libc::c_int;
2316    pub fn SOS_infeasible(group: *mut SOSgroup,
2317                          sosindex: libc::c_int)
2318     -> libc::c_int;
2319    pub fn SOS_member_index(group: *mut SOSgroup,
2320                            sosindex: libc::c_int,
2321                            member: libc::c_int)
2322     -> libc::c_int;
2323    pub fn SOS_member_count(group: *mut SOSgroup,
2324                            sosindex: libc::c_int)
2325     -> libc::c_int;
2326    pub fn SOS_memberships(group: *mut SOSgroup,
2327                           column: libc::c_int)
2328     -> libc::c_int;
2329    pub fn SOS_get_candidates(group: *mut SOSgroup,
2330                              sosindex: libc::c_int,
2331                              column: libc::c_int,
2332                              excludetarget: libc::c_uchar,
2333                              upbound: *mut libc::c_double,
2334                              lobound: *mut libc::c_double)
2335     -> *mut libc::c_int;
2336    pub fn SOS_is_member(group: *mut SOSgroup,
2337                         sosindex: libc::c_int,
2338                         column: libc::c_int)
2339     -> libc::c_int;
2340    pub fn SOS_is_member_of_type(group: *mut SOSgroup,
2341                                 column: libc::c_int,
2342                                 sostype: libc::c_int)
2343     -> libc::c_uchar;
2344    pub fn SOS_set_GUB(group: *mut SOSgroup, sosindex: libc::c_int,
2345                       state: libc::c_uchar)
2346     -> libc::c_uchar;
2347    pub fn SOS_is_GUB(group: *mut SOSgroup, sosindex: libc::c_int)
2348     -> libc::c_uchar;
2349    pub fn SOS_is_marked(group: *mut SOSgroup,
2350                         sosindex: libc::c_int,
2351                         column: libc::c_int)
2352     -> libc::c_uchar;
2353    pub fn SOS_is_active(group: *mut SOSgroup,
2354                         sosindex: libc::c_int,
2355                         column: libc::c_int)
2356     -> libc::c_uchar;
2357    pub fn SOS_is_full(group: *mut SOSgroup, sosindex: libc::c_int,
2358                       column: libc::c_int,
2359                       activeonly: libc::c_uchar)
2360     -> libc::c_uchar;
2361    pub fn SOS_can_activate(group: *mut SOSgroup,
2362                            sosindex: libc::c_int,
2363                            column: libc::c_int)
2364     -> libc::c_uchar;
2365    pub fn SOS_set_marked(group: *mut SOSgroup,
2366                          sosindex: libc::c_int,
2367                          column: libc::c_int,
2368                          asactive: libc::c_uchar)
2369     -> libc::c_uchar;
2370    pub fn SOS_unmark(group: *mut SOSgroup, sosindex: libc::c_int,
2371                      column: libc::c_int)
2372     -> libc::c_uchar;
2373    pub fn SOS_fix_unmarked(group: *mut SOSgroup,
2374                            sosindex: libc::c_int,
2375                            variable: libc::c_int,
2376                            bound: *mut libc::c_double,
2377                            value: libc::c_double,
2378                            isupper: libc::c_uchar,
2379                            diffcount: *mut libc::c_int,
2380                            changelog: *mut DeltaVrec)
2381     -> libc::c_int;
2382    pub fn SOS_fix_list(group: *mut SOSgroup, sosindex: libc::c_int,
2383                        variable: libc::c_int,
2384                        bound: *mut libc::c_double,
2385                        varlist: *mut libc::c_int,
2386                        isleft: libc::c_uchar,
2387                        changelog: *mut DeltaVrec) -> libc::c_int;
2388    pub fn SOS_is_satisfied(group: *mut SOSgroup,
2389                            sosindex: libc::c_int,
2390                            solution: *mut libc::c_double)
2391     -> libc::c_int;
2392    pub fn SOS_is_feasible(group: *mut SOSgroup,
2393                           sosindex: libc::c_int,
2394                           solution: *mut libc::c_double)
2395     -> libc::c_uchar;
2396    pub fn lp_solve_version(majorversion: *mut libc::c_int,
2397                            minorversion: *mut libc::c_int,
2398                            release: *mut libc::c_int,
2399                            build: *mut libc::c_int);
2400    pub fn make_lp(rows: libc::c_int,
2401                   columns: libc::c_int) -> *mut lprec;
2402    pub fn resize_lp(lp: *mut lprec, rows: libc::c_int,
2403                     columns: libc::c_int)
2404     -> libc::c_uchar;
2405    pub fn get_status(lp: *mut lprec) -> libc::c_int;
2406    pub fn get_statustext(lp: *mut lprec, statuscode: libc::c_int)
2407     -> *mut libc::c_char;
2408    pub fn is_obj_in_basis(lp: *mut lprec) -> libc::c_uchar;
2409    pub fn set_obj_in_basis(lp: *mut lprec,
2410                            obj_in_basis: libc::c_uchar);
2411    pub fn copy_lp(lp: *mut lprec) -> *mut lprec;
2412    pub fn dualize_lp(lp: *mut lprec) -> libc::c_uchar;
2413    pub fn memopt_lp(lp: *mut lprec, rowextra: libc::c_int,
2414                     colextra: libc::c_int,
2415                     nzextra: libc::c_int)
2416     -> libc::c_uchar;
2417    pub fn delete_lp(lp: *mut lprec);
2418    pub fn free_lp(plp: *mut *mut lprec);
2419    pub fn set_lp_name(lp: *mut lprec, lpname: *mut libc::c_char)
2420     -> libc::c_uchar;
2421    pub fn get_lp_name(lp: *mut lprec) -> *mut libc::c_char;
2422    pub fn has_BFP(lp: *mut lprec) -> libc::c_uchar;
2423    pub fn is_nativeBFP(lp: *mut lprec) -> libc::c_uchar;
2424    pub fn set_BFP(lp: *mut lprec, filename: *mut libc::c_char)
2425     -> libc::c_uchar;
2426    pub fn read_XLI(xliname: *mut libc::c_char,
2427                    modelname: *mut libc::c_char,
2428                    dataname: *mut libc::c_char,
2429                    options: *mut libc::c_char,
2430                    verbose: libc::c_int) -> *mut lprec;
2431    pub fn write_XLI(lp: *mut lprec, filename: *mut libc::c_char,
2432                     options: *mut libc::c_char,
2433                     results: libc::c_uchar)
2434     -> libc::c_uchar;
2435    pub fn has_XLI(lp: *mut lprec) -> libc::c_uchar;
2436    pub fn is_nativeXLI(lp: *mut lprec) -> libc::c_uchar;
2437    pub fn set_XLI(lp: *mut lprec, filename: *mut libc::c_char)
2438     -> libc::c_uchar;
2439    pub fn set_obj(lp: *mut lprec, colnr: libc::c_int,
2440                   value: libc::c_double)
2441     -> libc::c_uchar;
2442    pub fn set_obj_fn(lp: *mut lprec, row: *mut libc::c_double)
2443     -> libc::c_uchar;
2444    pub fn set_obj_fnex(lp: *mut lprec, count: libc::c_int,
2445                        row: *mut libc::c_double,
2446                        colno: *mut libc::c_int)
2447     -> libc::c_uchar;
2448    pub fn str_set_obj_fn(lp: *mut lprec,
2449                          row_string: *mut libc::c_char)
2450     -> libc::c_uchar;
2451    pub fn set_sense(lp: *mut lprec, maximize: libc::c_uchar);
2452    pub fn set_maxim(lp: *mut lprec);
2453    pub fn set_minim(lp: *mut lprec);
2454    pub fn is_maxim(lp: *mut lprec) -> libc::c_uchar;
2455    pub fn add_constraint(lp: *mut lprec, row: *mut libc::c_double,
2456                          constr_type: libc::c_int,
2457                          rh: libc::c_double)
2458     -> libc::c_uchar;
2459    pub fn add_constraintex(lp: *mut lprec, count: libc::c_int,
2460                            row: *mut libc::c_double,
2461                            colno: *mut libc::c_int,
2462                            constr_type: libc::c_int,
2463                            rh: libc::c_double)
2464     -> libc::c_uchar;
2465    pub fn set_add_rowmode(lp: *mut lprec, turnon: libc::c_uchar)
2466     -> libc::c_uchar;
2467    pub fn is_add_rowmode(lp: *mut lprec) -> libc::c_uchar;
2468    pub fn str_add_constraint(lp: *mut lprec,
2469                              row_string: *mut libc::c_char,
2470                              constr_type: libc::c_int,
2471                              rh: libc::c_double)
2472     -> libc::c_uchar;
2473    pub fn set_row(lp: *mut lprec, rownr: libc::c_int,
2474                   row: *mut libc::c_double)
2475     -> libc::c_uchar;
2476    pub fn set_rowex(lp: *mut lprec, rownr: libc::c_int,
2477                     count: libc::c_int,
2478                     row: *mut libc::c_double,
2479                     colno: *mut libc::c_int)
2480     -> libc::c_uchar;
2481    pub fn get_row(lp: *mut lprec, rownr: libc::c_int,
2482                   row: *mut libc::c_double)
2483     -> libc::c_uchar;
2484    pub fn get_rowex(lp: *mut lprec, rownr: libc::c_int,
2485                     row: *mut libc::c_double,
2486                     colno: *mut libc::c_int)
2487     -> libc::c_int;
2488    pub fn del_constraint(lp: *mut lprec, rownr: libc::c_int)
2489     -> libc::c_uchar;
2490    pub fn del_constraintex(lp: *mut lprec, rowmap: *mut LLrec)
2491     -> libc::c_uchar;
2492    pub fn add_lag_con(lp: *mut lprec, row: *mut libc::c_double,
2493                       con_type: libc::c_int,
2494                       rhs: libc::c_double)
2495     -> libc::c_uchar;
2496    pub fn str_add_lag_con(lp: *mut lprec,
2497                           row_string: *mut libc::c_char,
2498                           con_type: libc::c_int,
2499                           rhs: libc::c_double)
2500     -> libc::c_uchar;
2501    pub fn set_lag_trace(lp: *mut lprec, lag_trace: libc::c_uchar);
2502    pub fn is_lag_trace(lp: *mut lprec) -> libc::c_uchar;
2503    pub fn set_constr_type(lp: *mut lprec, rownr: libc::c_int,
2504                           con_type: libc::c_int)
2505     -> libc::c_uchar;
2506    pub fn get_constr_type(lp: *mut lprec, rownr: libc::c_int)
2507     -> libc::c_int;
2508    pub fn get_constr_value(lp: *mut lprec, rownr: libc::c_int,
2509                            count: libc::c_int,
2510                            primsolution: *mut libc::c_double,
2511                            nzindex: *mut libc::c_int)
2512     -> libc::c_double;
2513    pub fn is_constr_type(lp: *mut lprec, rownr: libc::c_int,
2514                          mask: libc::c_int)
2515     -> libc::c_uchar;
2516    pub fn get_str_constr_type(lp: *mut lprec,
2517                               con_type: libc::c_int)
2518     -> *mut libc::c_char;
2519    pub fn get_constr_class(lp: *mut lprec, rownr: libc::c_int)
2520     -> libc::c_int;
2521    pub fn get_str_constr_class(lp: *mut lprec,
2522                                con_class: libc::c_int)
2523     -> *mut libc::c_char;
2524    pub fn set_rh(lp: *mut lprec, rownr: libc::c_int,
2525                  value: libc::c_double) -> libc::c_uchar;
2526    pub fn get_rh(lp: *mut lprec, rownr: libc::c_int)
2527     -> libc::c_double;
2528    pub fn set_rh_range(lp: *mut lprec, rownr: libc::c_int,
2529                        deltavalue: libc::c_double)
2530     -> libc::c_uchar;
2531    pub fn get_rh_range(lp: *mut lprec, rownr: libc::c_int)
2532     -> libc::c_double;
2533    pub fn set_rh_vec(lp: *mut lprec, rh: *mut libc::c_double);
2534    pub fn str_set_rh_vec(lp: *mut lprec,
2535                          rh_string: *mut libc::c_char)
2536     -> libc::c_uchar;
2537    pub fn add_column(lp: *mut lprec, column: *mut libc::c_double)
2538     -> libc::c_uchar;
2539    pub fn add_columnex(lp: *mut lprec, count: libc::c_int,
2540                        column: *mut libc::c_double,
2541                        rowno: *mut libc::c_int)
2542     -> libc::c_uchar;
2543    pub fn str_add_column(lp: *mut lprec,
2544                          col_string: *mut libc::c_char)
2545     -> libc::c_uchar;
2546    pub fn set_column(lp: *mut lprec, colnr: libc::c_int,
2547                      column: *mut libc::c_double)
2548     -> libc::c_uchar;
2549    pub fn set_columnex(lp: *mut lprec, colnr: libc::c_int,
2550                        count: libc::c_int,
2551                        column: *mut libc::c_double,
2552                        rowno: *mut libc::c_int)
2553     -> libc::c_uchar;
2554    pub fn column_in_lp(lp: *mut lprec, column: *mut libc::c_double)
2555     -> libc::c_int;
2556    pub fn get_columnex(lp: *mut lprec, colnr: libc::c_int,
2557                        column: *mut libc::c_double,
2558                        nzrow: *mut libc::c_int)
2559     -> libc::c_int;
2560    pub fn get_column(lp: *mut lprec, colnr: libc::c_int,
2561                      column: *mut libc::c_double)
2562     -> libc::c_uchar;
2563    pub fn del_column(lp: *mut lprec, colnr: libc::c_int)
2564     -> libc::c_uchar;
2565    pub fn del_columnex(lp: *mut lprec, colmap: *mut LLrec)
2566     -> libc::c_uchar;
2567    pub fn set_mat(lp: *mut lprec, rownr: libc::c_int,
2568                   colnr: libc::c_int,
2569                   value: libc::c_double)
2570     -> libc::c_uchar;
2571    pub fn get_mat(lp: *mut lprec, rownr: libc::c_int,
2572                   colnr: libc::c_int) -> libc::c_double;
2573    pub fn get_mat_byindex(lp: *mut lprec, matindex: libc::c_int,
2574                           isrow: libc::c_uchar,
2575                           adjustsign: libc::c_uchar)
2576     -> libc::c_double;
2577    pub fn get_nonzeros(lp: *mut lprec) -> libc::c_int;
2578    pub fn set_bounds_tighter(lp: *mut lprec,
2579                              tighten: libc::c_uchar);
2580    pub fn get_bounds(lp: *mut lprec, column: libc::c_int,
2581                      lower: *mut libc::c_double,
2582                      upper: *mut libc::c_double)
2583     -> libc::c_uchar;
2584    pub fn get_bounds_tighter(lp: *mut lprec) -> libc::c_uchar;
2585    pub fn set_upbo(lp: *mut lprec, colnr: libc::c_int,
2586                    value: libc::c_double)
2587     -> libc::c_uchar;
2588    pub fn get_upbo(lp: *mut lprec, colnr: libc::c_int)
2589     -> libc::c_double;
2590    pub fn set_lowbo(lp: *mut lprec, colnr: libc::c_int,
2591                     value: libc::c_double)
2592     -> libc::c_uchar;
2593    pub fn get_lowbo(lp: *mut lprec, colnr: libc::c_int)
2594     -> libc::c_double;
2595    pub fn set_bounds(lp: *mut lprec, colnr: libc::c_int,
2596                      lower: libc::c_double,
2597                      upper: libc::c_double)
2598     -> libc::c_uchar;
2599    pub fn set_unbounded(lp: *mut lprec, colnr: libc::c_int)
2600     -> libc::c_uchar;
2601    pub fn is_unbounded(lp: *mut lprec, colnr: libc::c_int)
2602     -> libc::c_uchar;
2603    pub fn set_int(lp: *mut lprec, colnr: libc::c_int,
2604                   must_be_int: libc::c_uchar)
2605     -> libc::c_uchar;
2606    pub fn is_int(lp: *mut lprec, colnr: libc::c_int)
2607     -> libc::c_uchar;
2608    pub fn set_binary(lp: *mut lprec, colnr: libc::c_int,
2609                      must_be_bin: libc::c_uchar)
2610     -> libc::c_uchar;
2611    pub fn is_binary(lp: *mut lprec, colnr: libc::c_int)
2612     -> libc::c_uchar;
2613    pub fn set_semicont(lp: *mut lprec, colnr: libc::c_int,
2614                        must_be_sc: libc::c_uchar)
2615     -> libc::c_uchar;
2616    pub fn is_semicont(lp: *mut lprec, colnr: libc::c_int)
2617     -> libc::c_uchar;
2618    pub fn is_negative(lp: *mut lprec, colnr: libc::c_int)
2619     -> libc::c_uchar;
2620    pub fn set_var_weights(lp: *mut lprec,
2621                           weights: *mut libc::c_double)
2622     -> libc::c_uchar;
2623    pub fn get_var_priority(lp: *mut lprec, colnr: libc::c_int)
2624     -> libc::c_int;
2625    pub fn set_pseudocosts(lp: *mut lprec,
2626                           clower: *mut libc::c_double,
2627                           cupper: *mut libc::c_double,
2628                           updatelimit: *mut libc::c_int)
2629     -> libc::c_uchar;
2630    pub fn get_pseudocosts(lp: *mut lprec,
2631                           clower: *mut libc::c_double,
2632                           cupper: *mut libc::c_double,
2633                           updatelimit: *mut libc::c_int)
2634     -> libc::c_uchar;
2635    pub fn add_SOS(lp: *mut lprec, name: *mut libc::c_char,
2636                   sostype: libc::c_int,
2637                   priority: libc::c_int,
2638                   count: libc::c_int,
2639                   sosvars: *mut libc::c_int,
2640                   weights: *mut libc::c_double)
2641     -> libc::c_int;
2642    pub fn is_SOS_var(lp: *mut lprec, colnr: libc::c_int)
2643     -> libc::c_uchar;
2644    pub fn set_row_name(lp: *mut lprec, rownr: libc::c_int,
2645                        new_name: *mut libc::c_char)
2646     -> libc::c_uchar;
2647    pub fn get_row_name(lp: *mut lprec, rownr: libc::c_int)
2648     -> *mut libc::c_char;
2649    pub fn get_origrow_name(lp: *mut lprec, rownr: libc::c_int)
2650     -> *mut libc::c_char;
2651    pub fn set_col_name(lp: *mut lprec, colnr: libc::c_int,
2652                        new_name: *mut libc::c_char)
2653     -> libc::c_uchar;
2654    pub fn get_col_name(lp: *mut lprec, colnr: libc::c_int)
2655     -> *mut libc::c_char;
2656    pub fn get_origcol_name(lp: *mut lprec, colnr: libc::c_int)
2657     -> *mut libc::c_char;
2658    pub fn unscale(lp: *mut lprec);
2659    pub fn set_preferdual(lp: *mut lprec, dodual: libc::c_uchar);
2660    pub fn set_simplextype(lp: *mut lprec,
2661                           simplextype: libc::c_int);
2662    pub fn get_simplextype(lp: *mut lprec) -> libc::c_int;
2663    pub fn default_basis(lp: *mut lprec);
2664    pub fn set_basiscrash(lp: *mut lprec, mode: libc::c_int);
2665    pub fn get_basiscrash(lp: *mut lprec) -> libc::c_int;
2666    pub fn set_basisvar(lp: *mut lprec, basisPos: libc::c_int,
2667                        enteringCol: libc::c_int)
2668     -> libc::c_int;
2669    pub fn set_basis(lp: *mut lprec, bascolumn: *mut libc::c_int,
2670                     nonbasic: libc::c_uchar)
2671     -> libc::c_uchar;
2672    pub fn get_basis(lp: *mut lprec, bascolumn: *mut libc::c_int,
2673                     nonbasic: libc::c_uchar)
2674     -> libc::c_uchar;
2675    pub fn reset_basis(lp: *mut lprec);
2676    pub fn guess_basis(lp: *mut lprec,
2677                       guessvector: *mut libc::c_double,
2678                       basisvector: *mut libc::c_int)
2679     -> libc::c_uchar;
2680    pub fn is_feasible(lp: *mut lprec, values: *mut libc::c_double,
2681                       threshold: libc::c_double)
2682     -> libc::c_uchar;
2683    pub fn solve(lp: *mut lprec) -> libc::c_int;
2684    pub fn time_elapsed(lp: *mut lprec) -> libc::c_double;
2685    pub fn put_bb_nodefunc(lp: *mut lprec, newnode: lphandleint_intfunc,
2686                           bbnodehandle: *mut libc::c_void);
2687    pub fn put_bb_branchfunc(lp: *mut lprec, newbranch: lphandleint_intfunc,
2688                             bbbranchhandle: *mut libc::c_void);
2689    pub fn put_abortfunc(lp: *mut lprec, newctrlc: lphandle_intfunc,
2690                         ctrlchandle: *mut libc::c_void);
2691    pub fn put_logfunc(lp: *mut lprec, newlog: lphandlestr_func,
2692                       loghandle: *mut libc::c_void);
2693    pub fn put_msgfunc(lp: *mut lprec, newmsg: lphandleint_func,
2694                       msghandle: *mut libc::c_void,
2695                       mask: libc::c_int);
2696    pub fn get_primal_solution(lp: *mut lprec,
2697                               pv: *mut libc::c_double)
2698     -> libc::c_uchar;
2699    pub fn get_ptr_primal_solution(lp: *mut lprec,
2700                                   pv: *mut *mut libc::c_double)
2701     -> libc::c_uchar;
2702    pub fn get_dual_solution(lp: *mut lprec,
2703                             rc: *mut libc::c_double)
2704     -> libc::c_uchar;
2705    pub fn get_ptr_dual_solution(lp: *mut lprec,
2706                                 rc: *mut *mut libc::c_double)
2707     -> libc::c_uchar;
2708    pub fn get_lambda(lp: *mut lprec, lambda: *mut libc::c_double)
2709     -> libc::c_uchar;
2710    pub fn get_ptr_lambda(lp: *mut lprec,
2711                          lambda: *mut *mut libc::c_double)
2712     -> libc::c_uchar;
2713    pub fn read_MPS(filename: *mut libc::c_char,
2714                    options: libc::c_int) -> *mut lprec;
2715    pub fn read_mps(filename: *mut libc::FILE, options: libc::c_int)
2716     -> *mut lprec;
2717    pub fn read_freeMPS(filename: *mut libc::c_char,
2718                        options: libc::c_int) -> *mut lprec;
2719    pub fn read_freemps(filename: *mut libc::FILE, options: libc::c_int)
2720     -> *mut lprec;
2721    pub fn write_mps(lp: *mut lprec, filename: *mut libc::c_char)
2722     -> libc::c_uchar;
2723    pub fn write_MPS(lp: *mut lprec, output: *mut libc::FILE)
2724     -> libc::c_uchar;
2725    pub fn write_freemps(lp: *mut lprec,
2726                         filename: *mut libc::c_char)
2727     -> libc::c_uchar;
2728    pub fn write_freeMPS(lp: *mut lprec, output: *mut libc::FILE)
2729     -> libc::c_uchar;
2730    pub fn write_lp(lp: *mut lprec, filename: *mut libc::c_char)
2731     -> libc::c_uchar;
2732    pub fn write_LP(lp: *mut lprec, output: *mut libc::FILE)
2733     -> libc::c_uchar;
2734    pub fn LP_readhandle(lp: *mut *mut lprec, filename: *mut libc::FILE,
2735                         verbose: libc::c_int,
2736                         lp_name: *mut libc::c_char)
2737     -> libc::c_uchar;
2738    pub fn read_lp(filename: *mut libc::FILE, verbose: libc::c_int,
2739                   lp_name: *mut libc::c_char) -> *mut lprec;
2740    pub fn read_LP(filename: *mut libc::c_char,
2741                   verbose: libc::c_int,
2742                   lp_name: *mut libc::c_char) -> *mut lprec;
2743    pub fn write_basis(lp: *mut lprec, filename: *mut libc::c_char)
2744     -> libc::c_uchar;
2745    pub fn read_basis(lp: *mut lprec, filename: *mut libc::c_char,
2746                      info: *mut libc::c_char)
2747     -> libc::c_uchar;
2748    pub fn write_params(lp: *mut lprec, filename: *mut libc::c_char,
2749                        options: *mut libc::c_char)
2750     -> libc::c_uchar;
2751    pub fn read_params(lp: *mut lprec, filename: *mut libc::c_char,
2752                       options: *mut libc::c_char)
2753     -> libc::c_uchar;
2754    pub fn reset_params(lp: *mut lprec);
2755    pub fn print_lp(lp: *mut lprec);
2756    pub fn print_tableau(lp: *mut lprec);
2757    pub fn print_objective(lp: *mut lprec);
2758    pub fn print_solution(lp: *mut lprec, columns: libc::c_int);
2759    pub fn print_constraints(lp: *mut lprec, columns: libc::c_int);
2760    pub fn print_duals(lp: *mut lprec);
2761    pub fn print_scales(lp: *mut lprec);
2762    pub fn print_str(lp: *mut lprec, str: *mut libc::c_char);
2763    pub fn set_outputstream(lp: *mut lprec, stream: *mut libc::FILE);
2764    pub fn set_outputfile(lp: *mut lprec,
2765                          filename: *mut libc::c_char)
2766     -> libc::c_uchar;
2767    pub fn set_verbose(lp: *mut lprec, verbose: libc::c_int);
2768    pub fn get_verbose(lp: *mut lprec) -> libc::c_int;
2769    pub fn set_timeout(lp: *mut lprec, sectimeout: libc::c_long);
2770    pub fn get_timeout(lp: *mut lprec) -> libc::c_long;
2771    pub fn set_print_sol(lp: *mut lprec, print_sol: libc::c_int);
2772    pub fn get_print_sol(lp: *mut lprec) -> libc::c_int;
2773    pub fn set_debug(lp: *mut lprec, debug: libc::c_uchar);
2774    pub fn is_debug(lp: *mut lprec) -> libc::c_uchar;
2775    pub fn set_trace(lp: *mut lprec, trace: libc::c_uchar);
2776    pub fn is_trace(lp: *mut lprec) -> libc::c_uchar;
2777    pub fn print_debugdump(lp: *mut lprec,
2778                           filename: *mut libc::c_char)
2779     -> libc::c_uchar;
2780    pub fn set_anti_degen(lp: *mut lprec, anti_degen: libc::c_int);
2781    pub fn get_anti_degen(lp: *mut lprec) -> libc::c_int;
2782    pub fn is_anti_degen(lp: *mut lprec, testmask: libc::c_int)
2783     -> libc::c_uchar;
2784    pub fn set_presolve(lp: *mut lprec, presolvemode: libc::c_int,
2785                        maxloops: libc::c_int);
2786    pub fn get_presolve(lp: *mut lprec) -> libc::c_int;
2787    pub fn get_presolveloops(lp: *mut lprec) -> libc::c_int;
2788    pub fn is_presolve(lp: *mut lprec, testmask: libc::c_int)
2789     -> libc::c_uchar;
2790    pub fn get_orig_index(lp: *mut lprec, lp_index: libc::c_int)
2791     -> libc::c_int;
2792    pub fn get_lp_index(lp: *mut lprec, orig_index: libc::c_int)
2793     -> libc::c_int;
2794    pub fn set_maxpivot(lp: *mut lprec, max_num_inv: libc::c_int);
2795    pub fn get_maxpivot(lp: *mut lprec) -> libc::c_int;
2796    pub fn set_obj_bound(lp: *mut lprec, obj_bound: libc::c_double);
2797    pub fn get_obj_bound(lp: *mut lprec) -> libc::c_double;
2798    pub fn set_mip_gap(lp: *mut lprec, absolute: libc::c_uchar,
2799                       mip_gap: libc::c_double);
2800    pub fn get_mip_gap(lp: *mut lprec, absolute: libc::c_uchar)
2801     -> libc::c_double;
2802    pub fn set_bb_rule(lp: *mut lprec, bb_rule: libc::c_int);
2803    pub fn get_bb_rule(lp: *mut lprec) -> libc::c_int;
2804    pub fn set_var_branch(lp: *mut lprec, colnr: libc::c_int,
2805                          branch_mode: libc::c_int)
2806     -> libc::c_uchar;
2807    pub fn get_var_branch(lp: *mut lprec, colnr: libc::c_int)
2808     -> libc::c_int;
2809    pub fn is_infinite(lp: *mut lprec, value: libc::c_double)
2810     -> libc::c_uchar;
2811    pub fn set_infinite(lp: *mut lprec, infinite: libc::c_double);
2812    pub fn get_infinite(lp: *mut lprec) -> libc::c_double;
2813    pub fn set_epsint(lp: *mut lprec, epsint: libc::c_double);
2814    pub fn get_epsint(lp: *mut lprec) -> libc::c_double;
2815    pub fn set_epsb(lp: *mut lprec, epsb: libc::c_double);
2816    pub fn get_epsb(lp: *mut lprec) -> libc::c_double;
2817    pub fn set_epsd(lp: *mut lprec, epsd: libc::c_double);
2818    pub fn get_epsd(lp: *mut lprec) -> libc::c_double;
2819    pub fn set_epsel(lp: *mut lprec, epsel: libc::c_double);
2820    pub fn get_epsel(lp: *mut lprec) -> libc::c_double;
2821    pub fn set_epslevel(lp: *mut lprec, epslevel: libc::c_int)
2822     -> libc::c_uchar;
2823    pub fn set_scaling(lp: *mut lprec, scalemode: libc::c_int);
2824    pub fn get_scaling(lp: *mut lprec) -> libc::c_int;
2825    pub fn is_scalemode(lp: *mut lprec, testmask: libc::c_int)
2826     -> libc::c_uchar;
2827    pub fn is_scaletype(lp: *mut lprec, scaletype: libc::c_int)
2828     -> libc::c_uchar;
2829    pub fn is_integerscaling(lp: *mut lprec) -> libc::c_uchar;
2830    pub fn set_scalelimit(lp: *mut lprec,
2831                          scalelimit: libc::c_double);
2832    pub fn get_scalelimit(lp: *mut lprec) -> libc::c_double;
2833    pub fn set_improve(lp: *mut lprec, improve: libc::c_int);
2834    pub fn get_improve(lp: *mut lprec) -> libc::c_int;
2835    pub fn set_pivoting(lp: *mut lprec, piv_rule: libc::c_int);
2836    pub fn get_pivoting(lp: *mut lprec) -> libc::c_int;
2837    pub fn set_partialprice(lp: *mut lprec, blockcount: libc::c_int,
2838                            blockstart: *mut libc::c_int,
2839                            isrow: libc::c_uchar)
2840     -> libc::c_uchar;
2841    pub fn get_partialprice(lp: *mut lprec,
2842                            blockcount: *mut libc::c_int,
2843                            blockstart: *mut libc::c_int,
2844                            isrow: libc::c_uchar);
2845    pub fn set_multiprice(lp: *mut lprec,
2846                          multiblockdiv: libc::c_int)
2847     -> libc::c_uchar;
2848    pub fn get_multiprice(lp: *mut lprec, getabssize: libc::c_uchar)
2849     -> libc::c_int;
2850    pub fn is_use_names(lp: *mut lprec, isrow: libc::c_uchar)
2851     -> libc::c_uchar;
2852    pub fn set_use_names(lp: *mut lprec, isrow: libc::c_uchar,
2853                         use_names: libc::c_uchar);
2854    pub fn get_nameindex(lp: *mut lprec, varname: *mut libc::c_char,
2855                         isrow: libc::c_uchar)
2856     -> libc::c_int;
2857    pub fn is_piv_mode(lp: *mut lprec, testmask: libc::c_int)
2858     -> libc::c_uchar;
2859    pub fn is_piv_rule(lp: *mut lprec, rule: libc::c_int)
2860     -> libc::c_uchar;
2861    pub fn set_break_at_first(lp: *mut lprec,
2862                              break_at_first: libc::c_uchar);
2863    pub fn is_break_at_first(lp: *mut lprec) -> libc::c_uchar;
2864    pub fn set_bb_floorfirst(lp: *mut lprec,
2865                             bb_floorfirst: libc::c_int);
2866    pub fn get_bb_floorfirst(lp: *mut lprec) -> libc::c_int;
2867    pub fn set_bb_depthlimit(lp: *mut lprec,
2868                             bb_maxlevel: libc::c_int);
2869    pub fn get_bb_depthlimit(lp: *mut lprec) -> libc::c_int;
2870    pub fn set_break_at_value(lp: *mut lprec,
2871                              break_at_value: libc::c_double);
2872    pub fn get_break_at_value(lp: *mut lprec) -> libc::c_double;
2873    pub fn set_negrange(lp: *mut lprec, negrange: libc::c_double);
2874    pub fn get_negrange(lp: *mut lprec) -> libc::c_double;
2875    pub fn set_epsperturb(lp: *mut lprec,
2876                          epsperturb: libc::c_double);
2877    pub fn get_epsperturb(lp: *mut lprec) -> libc::c_double;
2878    pub fn set_epspivot(lp: *mut lprec, epspivot: libc::c_double);
2879    pub fn get_epspivot(lp: *mut lprec) -> libc::c_double;
2880    pub fn get_max_level(lp: *mut lprec) -> libc::c_int;
2881    pub fn get_total_nodes(lp: *mut lprec) -> libc::c_longlong;
2882    pub fn get_total_iter(lp: *mut lprec) -> libc::c_longlong;
2883    pub fn get_objective(lp: *mut lprec) -> libc::c_double;
2884    pub fn get_working_objective(lp: *mut lprec) -> libc::c_double;
2885    pub fn get_var_primalresult(lp: *mut lprec, index: libc::c_int)
2886     -> libc::c_double;
2887    pub fn get_var_dualresult(lp: *mut lprec, index: libc::c_int)
2888     -> libc::c_double;
2889    pub fn get_variables(lp: *mut lprec, var: *mut libc::c_double)
2890     -> libc::c_uchar;
2891    pub fn get_ptr_variables(lp: *mut lprec,
2892                             var: *mut *mut libc::c_double)
2893     -> libc::c_uchar;
2894    pub fn get_constraints(lp: *mut lprec,
2895                           constr: *mut libc::c_double)
2896     -> libc::c_uchar;
2897    pub fn get_ptr_constraints(lp: *mut lprec,
2898                               constr: *mut *mut libc::c_double)
2899     -> libc::c_uchar;
2900    pub fn get_sensitivity_rhs(lp: *mut lprec,
2901                               duals: *mut libc::c_double,
2902                               dualsfrom: *mut libc::c_double,
2903                               dualstill: *mut libc::c_double)
2904     -> libc::c_uchar;
2905    pub fn get_ptr_sensitivity_rhs(lp: *mut lprec,
2906                                   duals: *mut *mut libc::c_double,
2907                                   dualsfrom:
2908                                       *mut *mut libc::c_double,
2909                                   dualstill:
2910                                       *mut *mut libc::c_double)
2911     -> libc::c_uchar;
2912    pub fn get_sensitivity_obj(lp: *mut lprec,
2913                               objfrom: *mut libc::c_double,
2914                               objtill: *mut libc::c_double)
2915     -> libc::c_uchar;
2916    pub fn get_sensitivity_objex(lp: *mut lprec,
2917                                 objfrom: *mut libc::c_double,
2918                                 objtill: *mut libc::c_double,
2919                                 objfromvalue: *mut libc::c_double,
2920                                 objtillvalue: *mut libc::c_double)
2921     -> libc::c_uchar;
2922    pub fn get_ptr_sensitivity_obj(lp: *mut lprec,
2923                                   objfrom:
2924                                       *mut *mut libc::c_double,
2925                                   objtill:
2926                                       *mut *mut libc::c_double)
2927     -> libc::c_uchar;
2928    pub fn get_ptr_sensitivity_objex(lp: *mut lprec,
2929                                     objfrom:
2930                                         *mut *mut libc::c_double,
2931                                     objtill:
2932                                         *mut *mut libc::c_double,
2933                                     objfromvalue:
2934                                         *mut *mut libc::c_double,
2935                                     objtillvalue:
2936                                         *mut *mut libc::c_double)
2937     -> libc::c_uchar;
2938    pub fn set_solutionlimit(lp: *mut lprec, limit: libc::c_int);
2939    pub fn get_solutionlimit(lp: *mut lprec) -> libc::c_int;
2940    pub fn get_solutioncount(lp: *mut lprec) -> libc::c_int;
2941    pub fn get_Norig_rows(lp: *mut lprec) -> libc::c_int;
2942    pub fn get_Nrows(lp: *mut lprec) -> libc::c_int;
2943    pub fn get_Lrows(lp: *mut lprec) -> libc::c_int;
2944    pub fn get_Norig_columns(lp: *mut lprec) -> libc::c_int;
2945    pub fn get_Ncolumns(lp: *mut lprec) -> libc::c_int;
2946    pub fn MPS_readex(newlp: *mut *mut lprec,
2947                      userhandle: *mut libc::c_void,
2948                      read_modeldata: read_modeldata_func,
2949                      typeMPS: libc::c_int,
2950                      options: libc::c_int)
2951     -> libc::c_uchar;
2952    pub fn read_lpex(userhandle: *mut libc::c_void,
2953                     read_modeldata: read_modeldata_func,
2954                     verbose: libc::c_int,
2955                     lp_name: *mut libc::c_char) -> *mut lprec;
2956    pub fn write_lpex(lp: *mut lprec, userhandle: *mut libc::c_void,
2957                      write_modeldata: write_modeldata_func)
2958     -> libc::c_uchar;
2959    pub fn read_mpsex(userhandle: *mut libc::c_void,
2960                      read_modeldata: read_modeldata_func,
2961                      options: libc::c_int) -> *mut lprec;
2962    pub fn read_freempsex(userhandle: *mut libc::c_void,
2963                          read_modeldata: read_modeldata_func,
2964                          options: libc::c_int) -> *mut lprec;
2965    pub fn MPS_writefileex(lp: *mut lprec, typeMPS: libc::c_int,
2966                           userhandle: *mut libc::c_void,
2967                           write_modeldata: write_modeldata_func)
2968     -> libc::c_uchar;
2969    pub fn set_callbacks(lp: *mut lprec) -> libc::c_uchar;
2970    pub fn yieldformessages(lp: *mut lprec) -> libc::c_int;
2971    pub fn userabort(lp: *mut lprec, message: libc::c_int)
2972     -> libc::c_uchar;
2973    pub fn append_rows(lp: *mut lprec, deltarows: libc::c_int)
2974     -> libc::c_uchar;
2975    pub fn append_columns(lp: *mut lprec, deltacolumns: libc::c_int)
2976     -> libc::c_uchar;
2977    pub fn inc_rows(lp: *mut lprec, delta: libc::c_int);
2978    pub fn inc_columns(lp: *mut lprec, delta: libc::c_int);
2979    pub fn init_rowcol_names(lp: *mut lprec) -> libc::c_uchar;
2980    pub fn inc_row_space(lp: *mut lprec, deltarows: libc::c_int)
2981     -> libc::c_uchar;
2982    pub fn inc_col_space(lp: *mut lprec, deltacols: libc::c_int)
2983     -> libc::c_uchar;
2984    pub fn shift_rowcoldata(lp: *mut lprec, base: libc::c_int,
2985                            delta: libc::c_int, usedmap: *mut LLrec,
2986                            isrow: libc::c_uchar)
2987     -> libc::c_uchar;
2988    pub fn shift_basis(lp: *mut lprec, base: libc::c_int,
2989                       delta: libc::c_int, usedmap: *mut LLrec,
2990                       isrow: libc::c_uchar)
2991     -> libc::c_uchar;
2992    pub fn shift_rowdata(lp: *mut lprec, base: libc::c_int,
2993                         delta: libc::c_int, usedmap: *mut LLrec)
2994     -> libc::c_uchar;
2995    pub fn shift_coldata(lp: *mut lprec, base: libc::c_int,
2996                         delta: libc::c_int, usedmap: *mut LLrec)
2997     -> libc::c_uchar;
2998    pub fn is_chsign(lp: *mut lprec, rownr: libc::c_int)
2999     -> libc::c_uchar;
3000    pub fn inc_lag_space(lp: *mut lprec, deltarows: libc::c_int,
3001                         ignoreMAT: libc::c_uchar)
3002     -> libc::c_uchar;
3003    pub fn make_lag(server: *mut lprec) -> *mut lprec;
3004    pub fn get_rh_upper(lp: *mut lprec, rownr: libc::c_int)
3005     -> libc::c_double;
3006    pub fn get_rh_lower(lp: *mut lprec, rownr: libc::c_int)
3007     -> libc::c_double;
3008    pub fn set_rh_upper(lp: *mut lprec, rownr: libc::c_int,
3009                        value: libc::c_double)
3010     -> libc::c_uchar;
3011    pub fn set_rh_lower(lp: *mut lprec, rownr: libc::c_int,
3012                        value: libc::c_double)
3013     -> libc::c_uchar;
3014    pub fn bin_count(lp: *mut lprec, working: libc::c_uchar)
3015     -> libc::c_int;
3016    pub fn MIP_count(lp: *mut lprec) -> libc::c_int;
3017    pub fn SOS_count(lp: *mut lprec) -> libc::c_int;
3018    pub fn GUB_count(lp: *mut lprec) -> libc::c_int;
3019    pub fn identify_GUB(lp: *mut lprec, mark: libc::c_uchar)
3020     -> libc::c_int;
3021    pub fn prepare_GUB(lp: *mut lprec) -> libc::c_int;
3022    pub fn refactRecent(lp: *mut lprec) -> libc::c_uchar;
3023    pub fn check_if_less(lp: *mut lprec, x: libc::c_double,
3024                         y: libc::c_double,
3025                         variable: libc::c_int)
3026     -> libc::c_uchar;
3027    pub fn feasiblePhase1(lp: *mut lprec, epsvalue: libc::c_double)
3028     -> libc::c_uchar;
3029    pub fn free_duals(lp: *mut lprec);
3030    pub fn initialize_solution(lp: *mut lprec,
3031                               shiftbounds: libc::c_uchar);
3032    pub fn recompute_solution(lp: *mut lprec,
3033                              shiftbounds: libc::c_uchar);
3034    pub fn verify_solution(lp: *mut lprec, reinvert: libc::c_uchar,
3035                           info: *mut libc::c_char)
3036     -> libc::c_int;
3037    pub fn check_solution(lp: *mut lprec, lastcolumn: libc::c_int,
3038                          solution: *mut libc::c_double,
3039                          upbo: *mut libc::c_double,
3040                          lowbo: *mut libc::c_double,
3041                          tolerance: libc::c_double)
3042     -> libc::c_int;
3043    pub fn is_fixedvar(lp: *mut lprec, variable: libc::c_int)
3044     -> libc::c_uchar;
3045    pub fn is_splitvar(lp: *mut lprec, colnr: libc::c_int)
3046     -> libc::c_uchar;
3047    pub fn set_action(actionvar: *mut libc::c_int,
3048                      actionmask: libc::c_int);
3049    pub fn clear_action(actionvar: *mut libc::c_int,
3050                        actionmask: libc::c_int);
3051    pub fn is_action(actionvar: libc::c_int,
3052                     testmask: libc::c_int)
3053     -> libc::c_uchar;
3054    pub fn is_bb_rule(lp: *mut lprec, bb_rule: libc::c_int)
3055     -> libc::c_uchar;
3056    pub fn is_bb_mode(lp: *mut lprec, bb_mask: libc::c_int)
3057     -> libc::c_uchar;
3058    pub fn get_piv_rule(lp: *mut lprec) -> libc::c_int;
3059    pub fn get_str_piv_rule(rule: libc::c_int)
3060     -> *mut libc::c_char;
3061    pub fn set_var_priority(lp: *mut lprec) -> libc::c_uchar;
3062    pub fn find_sc_bbvar(lp: *mut lprec, count: *mut libc::c_int)
3063     -> libc::c_int;
3064    pub fn find_sos_bbvar(lp: *mut lprec, count: *mut libc::c_int,
3065                          intsos: libc::c_uchar)
3066     -> libc::c_int;
3067    pub fn find_int_bbvar(lp: *mut lprec, count: *mut libc::c_int,
3068                          BB: *mut BBrec,
3069                          isfeasible: *mut libc::c_uchar)
3070     -> libc::c_int;
3071    pub fn compute_dualslacks(lp: *mut lprec, target: libc::c_int,
3072                              dvalues: *mut *mut libc::c_double,
3073                              nzdvalues: *mut *mut libc::c_int,
3074                              dosum: libc::c_uchar)
3075     -> libc::c_double;
3076    pub fn solution_is_int(lp: *mut lprec, index: libc::c_int,
3077                           checkfixed: libc::c_uchar)
3078     -> libc::c_uchar;
3079    pub fn bb_better(lp: *mut lprec, target: libc::c_int,
3080                     mode: libc::c_int) -> libc::c_uchar;
3081    pub fn construct_solution(lp: *mut lprec,
3082                              target: *mut libc::c_double);
3083    pub fn transfer_solution_var(lp: *mut lprec,
3084                                 uservar: libc::c_int);
3085    pub fn construct_duals(lp: *mut lprec) -> libc::c_uchar;
3086    pub fn construct_sensitivity_duals(lp: *mut lprec)
3087     -> libc::c_uchar;
3088    pub fn construct_sensitivity_obj(lp: *mut lprec)
3089     -> libc::c_uchar;
3090    pub fn add_GUB(lp: *mut lprec, name: *mut libc::c_char,
3091                   priority: libc::c_int,
3092                   count: libc::c_int,
3093                   sosvars: *mut libc::c_int)
3094     -> libc::c_int;
3095    pub fn push_basis(lp: *mut lprec, basisvar: *mut libc::c_int,
3096                      isbasic: *mut libc::c_uchar,
3097                      islower: *mut libc::c_uchar) -> *mut basisrec;
3098    pub fn compare_basis(lp: *mut lprec) -> libc::c_uchar;
3099    pub fn restore_basis(lp: *mut lprec) -> libc::c_uchar;
3100    pub fn pop_basis(lp: *mut lprec, restore: libc::c_uchar)
3101     -> libc::c_uchar;
3102    pub fn is_BasisReady(lp: *mut lprec) -> libc::c_uchar;
3103    pub fn is_slackbasis(lp: *mut lprec) -> libc::c_uchar;
3104    pub fn verify_basis(lp: *mut lprec) -> libc::c_uchar;
3105    pub fn unload_basis(lp: *mut lprec, restorelast: libc::c_uchar)
3106     -> libc::c_int;
3107    pub fn perturb_bounds(lp: *mut lprec, perturbed: *mut BBrec,
3108                          doRows: libc::c_uchar,
3109                          doCols: libc::c_uchar,
3110                          includeFIXED: libc::c_uchar)
3111     -> libc::c_int;
3112    pub fn validate_bounds(lp: *mut lprec,
3113                           upbo: *mut libc::c_double,
3114                           lowbo: *mut libc::c_double)
3115     -> libc::c_uchar;
3116    pub fn impose_bounds(lp: *mut lprec, upbo: *mut libc::c_double,
3117                         lowbo: *mut libc::c_double)
3118     -> libc::c_uchar;
3119    pub fn unload_BB(lp: *mut lprec) -> libc::c_int;
3120    pub fn feasibilityOffset(lp: *mut lprec, isdual: libc::c_uchar)
3121     -> libc::c_double;
3122    pub fn isP1extra(lp: *mut lprec) -> libc::c_uchar;
3123    pub fn get_refactfrequency(lp: *mut lprec,
3124                               _final: libc::c_uchar)
3125     -> libc::c_double;
3126    pub fn findBasicFixedvar(lp: *mut lprec, afternr: libc::c_int,
3127                             slacksonly: libc::c_uchar)
3128     -> libc::c_int;
3129    pub fn isBasisVarFeasible(lp: *mut lprec, tol: libc::c_double,
3130                              basis_row: libc::c_int)
3131     -> libc::c_uchar;
3132    pub fn isPrimalFeasible(lp: *mut lprec, tol: libc::c_double,
3133                            infeasibles: *mut libc::c_int,
3134                            feasibilitygap: *mut libc::c_double)
3135     -> libc::c_uchar;
3136    pub fn isDualFeasible(lp: *mut lprec, tol: libc::c_double,
3137                          boundflips: *mut libc::c_int,
3138                          infeasibles: *mut libc::c_int,
3139                          feasibilitygap: *mut libc::c_double)
3140     -> libc::c_uchar;
3141    pub fn preprocess(lp: *mut lprec) -> libc::c_int;
3142    pub fn postprocess(lp: *mut lprec);
3143    pub fn performiteration(lp: *mut lprec, rownr: libc::c_int,
3144                            varin: libc::c_int,
3145                            theta: libc::c_double,
3146                            primal: libc::c_uchar,
3147                            allowminit: libc::c_uchar,
3148                            prow: *mut libc::c_double,
3149                            nzprow: *mut libc::c_int,
3150                            pcol: *mut libc::c_double,
3151                            nzpcol: *mut libc::c_int,
3152                            boundswaps: *mut libc::c_int)
3153     -> libc::c_uchar;
3154    pub fn transfer_solution(lp: *mut lprec,
3155                             dofinal: libc::c_uchar);
3156    pub fn scaled_floor(lp: *mut lprec, colnr: libc::c_int,
3157                        value: libc::c_double,
3158                        epsscale: libc::c_double)
3159     -> libc::c_double;
3160    pub fn scaled_ceil(lp: *mut lprec, colnr: libc::c_int,
3161                       value: libc::c_double,
3162                       epsscale: libc::c_double)
3163     -> libc::c_double;
3164    pub fn varmap_lock(lp: *mut lprec);
3165    pub fn varmap_clear(lp: *mut lprec);
3166    pub fn varmap_canunlock(lp: *mut lprec) -> libc::c_uchar;
3167    pub fn varmap_addconstraint(lp: *mut lprec);
3168    pub fn varmap_addcolumn(lp: *mut lprec);
3169    pub fn varmap_delete(lp: *mut lprec, base: libc::c_int,
3170                         delta: libc::c_int, varmap: *mut LLrec);
3171    pub fn varmap_compact(lp: *mut lprec, prev_rows: libc::c_int,
3172                          prev_cols: libc::c_int);
3173    pub fn varmap_validate(lp: *mut lprec, varno: libc::c_int)
3174     -> libc::c_uchar;
3175    pub fn del_varnameex(lp: *mut lprec, namelist: *mut *mut hashelem,
3176                         items: libc::c_int, ht: *mut hashtable,
3177                         varnr: libc::c_int, varmap: *mut LLrec)
3178     -> libc::c_uchar;
3179    pub fn init_pseudocost(lp: *mut lprec, pseudotype: libc::c_int)
3180     -> *mut BBPSrec;
3181    pub fn free_pseudocost(lp: *mut lprec);
3182    pub fn get_pseudorange(pc: *mut BBPSrec, mipvar: libc::c_int,
3183                           varcode: libc::c_int)
3184     -> libc::c_double;
3185    pub fn update_pseudocost(pc: *mut BBPSrec, mipvar: libc::c_int,
3186                             varcode: libc::c_int,
3187                             capupper: libc::c_uchar,
3188                             varsol: libc::c_double);
3189    pub fn get_pseudobranchcost(pc: *mut BBPSrec,
3190                                mipvar: libc::c_int,
3191                                dofloor: libc::c_uchar)
3192     -> libc::c_double;
3193    pub fn get_pseudonodecost(pc: *mut BBPSrec, mipvar: libc::c_int,
3194                              vartype: libc::c_int,
3195                              varsol: libc::c_double)
3196     -> libc::c_double;
3197    pub fn set_OF_override(lp: *mut lprec,
3198                           ofVector: *mut libc::c_double);
3199    pub fn set_OF_p1extra(lp: *mut lprec, p1extra: libc::c_double);
3200    pub fn unset_OF_p1extra(lp: *mut lprec);
3201    pub fn modifyOF1(lp: *mut lprec, index: libc::c_int,
3202                     ofValue: *mut libc::c_double,
3203                     mult: libc::c_double)
3204     -> libc::c_uchar;
3205    pub fn get_OF_active(lp: *mut lprec, varnr: libc::c_int,
3206                         mult: libc::c_double)
3207     -> libc::c_double;
3208    pub fn is_OF_nz(lp: *mut lprec, colnr: libc::c_int)
3209     -> libc::c_uchar;
3210    pub fn get_basisOF(lp: *mut lprec, coltarget: *mut libc::c_int,
3211                       crow: *mut libc::c_double,
3212                       colno: *mut libc::c_int)
3213     -> libc::c_int;
3214    pub fn get_basiscolumn(lp: *mut lprec, j: libc::c_int,
3215                           rn: *mut libc::c_int,
3216                           bj: *mut libc::c_double)
3217     -> libc::c_int;
3218    pub fn obtain_column(lp: *mut lprec, varin: libc::c_int,
3219                         pcol: *mut libc::c_double,
3220                         nzlist: *mut libc::c_int,
3221                         maxabs: *mut libc::c_int)
3222     -> libc::c_int;
3223    pub fn compute_theta(lp: *mut lprec, rownr: libc::c_int,
3224                         theta: *mut libc::c_double,
3225                         isupbound: libc::c_int,
3226                         HarrisScalar: libc::c_double,
3227                         primal: libc::c_uchar)
3228     -> libc::c_int;
3229    pub fn findBasisPos(lp: *mut lprec, notint: libc::c_int,
3230                        var_basic: *mut libc::c_int)
3231     -> libc::c_int;
3232    pub fn check_degeneracy(lp: *mut lprec,
3233                            pcol: *mut libc::c_double,
3234                            degencount: *mut libc::c_int)
3235     -> libc::c_uchar;
3236}
3237
3238#[cfg(windows)]
3239unsafe extern "stdcall" {
3240    pub fn allocCHAR(lp: *mut lprec, ptr: *mut *mut libc::c_char,
3241                     size: libc::c_int,
3242                     clear: libc::c_uchar)
3243     -> libc::c_uchar;
3244    pub fn allocMYBOOL(lp: *mut lprec, ptr: *mut *mut libc::c_uchar,
3245                       size: libc::c_int,
3246                       clear: libc::c_uchar)
3247     -> libc::c_uchar;
3248    pub fn allocINT(lp: *mut lprec, ptr: *mut *mut libc::c_int,
3249                    size: libc::c_int,
3250                    clear: libc::c_uchar)
3251     -> libc::c_uchar;
3252    pub fn allocREAL(lp: *mut lprec, ptr: *mut *mut libc::c_double,
3253                     size: libc::c_int,
3254                     clear: libc::c_uchar)
3255     -> libc::c_uchar;
3256    pub fn allocLREAL(lp: *mut lprec, ptr: *mut *mut libc::c_double,
3257                      size: libc::c_int,
3258                      clear: libc::c_uchar)
3259     -> libc::c_uchar;
3260    pub fn allocFREE(lp: *mut lprec, ptr: *mut *mut libc::c_void)
3261     -> libc::c_uchar;
3262    pub fn cloneREAL(lp: *mut lprec, origlist: *mut libc::c_double,
3263                     size: libc::c_int)
3264     -> *mut libc::c_double;
3265    pub fn cloneMYBOOL(lp: *mut lprec, origlist: *mut libc::c_uchar,
3266                       size: libc::c_int)
3267     -> *mut libc::c_uchar;
3268    pub fn cloneINT(lp: *mut lprec, origlist: *mut libc::c_int,
3269                    size: libc::c_int)
3270     -> *mut libc::c_int;
3271    pub fn comp_bits(bitarray1: *mut libc::c_uchar,
3272                     bitarray2: *mut libc::c_uchar,
3273                     items: libc::c_int) -> libc::c_int;
3274    pub fn mempool_create(lp: *mut lprec) -> *mut workarraysrec;
3275    pub fn mempool_obtainVector(mempool: *mut workarraysrec,
3276                                count: libc::c_int,
3277                                unitsize: libc::c_int)
3278     -> *mut libc::c_char;
3279    pub fn mempool_releaseVector(mempool: *mut workarraysrec,
3280                                 memvector: *mut libc::c_char,
3281                                 forcefree: libc::c_uchar)
3282     -> libc::c_uchar;
3283    pub fn mempool_free(mempool: *mut *mut workarraysrec)
3284     -> libc::c_uchar;
3285    pub fn roundVector(myvector: *mut libc::c_double,
3286                       endpos: libc::c_int,
3287                       roundzero: libc::c_double);
3288    pub fn normalizeVector(myvector: *mut libc::c_double,
3289                           endpos: libc::c_int)
3290     -> libc::c_double;
3291    pub fn swapINT(item1: *mut libc::c_int,
3292                   item2: *mut libc::c_int);
3293    pub fn swapREAL(item1: *mut libc::c_double,
3294                    item2: *mut libc::c_double);
3295    pub fn swapPTR(item1: *mut *mut libc::c_void,
3296                   item2: *mut *mut libc::c_void);
3297    pub fn restoreINT(valREAL: libc::c_double,
3298                      epsilon: libc::c_double)
3299     -> libc::c_double;
3300    pub fn roundToPrecision(value: libc::c_double,
3301                            precision: libc::c_double)
3302     -> libc::c_double;
3303    pub fn searchFor(target: libc::c_int,
3304                     attributes: *mut libc::c_int,
3305                     size: libc::c_int,
3306                     offset: libc::c_int,
3307                     absolute: libc::c_uchar)
3308     -> libc::c_int;
3309    pub fn isINT(lp: *mut lprec, value: libc::c_double)
3310     -> libc::c_uchar;
3311    pub fn isOrigFixed(lp: *mut lprec, varno: libc::c_int)
3312     -> libc::c_uchar;
3313    pub fn chsign_bounds(lobound: *mut libc::c_double,
3314                         upbound: *mut libc::c_double);
3315    pub fn rand_uniform(lp: *mut lprec, range: libc::c_double)
3316     -> libc::c_double;
3317    pub fn createLink(size: libc::c_int, linkmap: *mut *mut LLrec,
3318                      usedpos: *mut libc::c_uchar)
3319     -> libc::c_int;
3320    pub fn freeLink(linkmap: *mut *mut LLrec) -> libc::c_uchar;
3321    pub fn sizeLink(linkmap: *mut LLrec) -> libc::c_int;
3322    pub fn isActiveLink(linkmap: *mut LLrec, itemnr: libc::c_int)
3323     -> libc::c_uchar;
3324    pub fn countActiveLink(linkmap: *mut LLrec) -> libc::c_int;
3325    pub fn countInactiveLink(linkmap: *mut LLrec) -> libc::c_int;
3326    pub fn firstActiveLink(linkmap: *mut LLrec) -> libc::c_int;
3327    pub fn lastActiveLink(linkmap: *mut LLrec) -> libc::c_int;
3328    pub fn appendLink(linkmap: *mut LLrec, newitem: libc::c_int)
3329     -> libc::c_uchar;
3330    pub fn insertLink(linkmap: *mut LLrec, afteritem: libc::c_int,
3331                      newitem: libc::c_int)
3332     -> libc::c_uchar;
3333    pub fn setLink(linkmap: *mut LLrec, newitem: libc::c_int)
3334     -> libc::c_uchar;
3335    pub fn fillLink(linkmap: *mut LLrec) -> libc::c_uchar;
3336    pub fn nextActiveLink(linkmap: *mut LLrec,
3337                          backitemnr: libc::c_int)
3338     -> libc::c_int;
3339    pub fn prevActiveLink(linkmap: *mut LLrec,
3340                          forwitemnr: libc::c_int)
3341     -> libc::c_int;
3342    pub fn firstInactiveLink(linkmap: *mut LLrec) -> libc::c_int;
3343    pub fn lastInactiveLink(linkmap: *mut LLrec) -> libc::c_int;
3344    pub fn nextInactiveLink(linkmap: *mut LLrec,
3345                            backitemnr: libc::c_int)
3346     -> libc::c_int;
3347    pub fn prevInactiveLink(linkmap: *mut LLrec,
3348                            forwitemnr: libc::c_int)
3349     -> libc::c_int;
3350    pub fn removeLink(linkmap: *mut LLrec, itemnr: libc::c_int)
3351     -> libc::c_int;
3352    pub fn cloneLink(sourcemap: *mut LLrec, newsize: libc::c_int,
3353                     freesource: libc::c_uchar) -> *mut LLrec;
3354    pub fn compareLink(linkmap1: *mut LLrec, linkmap2: *mut LLrec)
3355     -> libc::c_int;
3356    pub fn verifyLink(linkmap: *mut LLrec, itemnr: libc::c_int,
3357                      doappend: libc::c_uchar)
3358     -> libc::c_uchar;
3359    pub fn createPackedVector(size: libc::c_int,
3360                              values: *mut libc::c_double,
3361                              workvector: *mut libc::c_int)
3362     -> *mut PVrec;
3363    pub fn pushPackedVector(PV: *mut PVrec, parent: *mut PVrec);
3364    pub fn unpackPackedVector(PV: *mut PVrec,
3365                              target: *mut *mut libc::c_double)
3366     -> libc::c_uchar;
3367    pub fn getvaluePackedVector(PV: *mut PVrec, index: libc::c_int)
3368     -> libc::c_double;
3369    pub fn popPackedVector(PV: *mut PVrec) -> *mut PVrec;
3370    pub fn freePackedVector(PV: *mut *mut PVrec) -> libc::c_uchar;
3371    pub fn create_hash_table(size: libc::c_int,
3372                             base: libc::c_int) -> *mut hashtable;
3373    pub fn free_hash_table(ht: *mut hashtable);
3374    pub fn findhash(name: *const libc::c_char, ht: *mut hashtable)
3375     -> *mut hashelem;
3376    pub fn puthash(name: *const libc::c_char,
3377                   index: libc::c_int, list: *mut *mut hashelem,
3378                   ht: *mut hashtable) -> *mut hashelem;
3379    pub fn drophash(name: *const libc::c_char,
3380                    list: *mut *mut hashelem, ht: *mut hashtable);
3381    pub fn free_hash_item(hp: *mut *mut hashelem);
3382    pub fn copy_hash_table(ht: *mut hashtable, list: *mut *mut hashelem,
3383                           newsize: libc::c_int) -> *mut hashtable;
3384    pub fn find_var(lp: *mut lprec, name: *mut libc::c_char,
3385                    verbose: libc::c_uchar)
3386     -> libc::c_int;
3387    pub fn find_row(lp: *mut lprec, name: *mut libc::c_char,
3388                    Unconstrained_rows_found: libc::c_uchar)
3389     -> libc::c_int;
3390    pub fn mat_create(lp: *mut lprec, rows: libc::c_int,
3391                      columns: libc::c_int,
3392                      epsvalue: libc::c_double) -> *mut MATrec;
3393    pub fn mat_memopt(mat: *mut MATrec, rowextra: libc::c_int,
3394                      colextra: libc::c_int,
3395                      nzextra: libc::c_int)
3396     -> libc::c_uchar;
3397    pub fn mat_free(matrix: *mut *mut MATrec);
3398    pub fn inc_matrow_space(mat: *mut MATrec,
3399                            deltarows: libc::c_int)
3400     -> libc::c_uchar;
3401    pub fn mat_mapreplace(mat: *mut MATrec, rowmap: *mut LLrec,
3402                          colmap: *mut LLrec, insmat: *mut MATrec)
3403     -> libc::c_int;
3404    pub fn mat_matinsert(mat: *mut MATrec, insmat: *mut MATrec)
3405     -> libc::c_int;
3406    pub fn mat_zerocompact(mat: *mut MATrec) -> libc::c_int;
3407    pub fn mat_rowcompact(mat: *mut MATrec, dozeros: libc::c_uchar)
3408     -> libc::c_int;
3409    pub fn mat_colcompact(mat: *mut MATrec, prev_rows: libc::c_int,
3410                          prev_cols: libc::c_int)
3411     -> libc::c_int;
3412    pub fn inc_matcol_space(mat: *mut MATrec,
3413                            deltacols: libc::c_int)
3414     -> libc::c_uchar;
3415    pub fn inc_mat_space(mat: *mut MATrec, mindelta: libc::c_int)
3416     -> libc::c_uchar;
3417    pub fn mat_shiftrows(mat: *mut MATrec, bbase: *mut libc::c_int,
3418                         delta: libc::c_int, varmap: *mut LLrec)
3419     -> libc::c_int;
3420    pub fn mat_shiftcols(mat: *mut MATrec, bbase: *mut libc::c_int,
3421                         delta: libc::c_int, varmap: *mut LLrec)
3422     -> libc::c_int;
3423    pub fn mat_extractmat(mat: *mut MATrec, rowmap: *mut LLrec,
3424                          colmap: *mut LLrec,
3425                          negated: libc::c_uchar) -> *mut MATrec;
3426    pub fn mat_appendrow(mat: *mut MATrec, count: libc::c_int,
3427                         row: *mut libc::c_double,
3428                         colno: *mut libc::c_int,
3429                         mult: libc::c_double,
3430                         checkrowmode: libc::c_uchar)
3431     -> libc::c_int;
3432    pub fn mat_appendcol(mat: *mut MATrec, count: libc::c_int,
3433                         column: *mut libc::c_double,
3434                         rowno: *mut libc::c_int,
3435                         mult: libc::c_double,
3436                         checkrowmode: libc::c_uchar)
3437     -> libc::c_int;
3438    pub fn mat_get_data(lp: *mut lprec, matindex: libc::c_int,
3439                        isrow: libc::c_uchar,
3440                        rownr: *mut *mut libc::c_int,
3441                        colnr: *mut *mut libc::c_int,
3442                        value: *mut *mut libc::c_double)
3443     -> libc::c_uchar;
3444    pub fn mat_set_rowmap(mat: *mut MATrec,
3445                          row_mat_index: libc::c_int,
3446                          rownr: libc::c_int,
3447                          colnr: libc::c_int,
3448                          col_mat_index: libc::c_int)
3449     -> libc::c_uchar;
3450    pub fn mat_indexrange(mat: *mut MATrec, index: libc::c_int,
3451                          isrow: libc::c_uchar,
3452                          startpos: *mut libc::c_int,
3453                          endpos: *mut libc::c_int)
3454     -> libc::c_uchar;
3455    pub fn mat_validate(mat: *mut MATrec) -> libc::c_uchar;
3456    pub fn mat_equalRows(mat: *mut MATrec, baserow: libc::c_int,
3457                         comprow: libc::c_int)
3458     -> libc::c_uchar;
3459    pub fn mat_findelm(mat: *mut MATrec, row: libc::c_int,
3460                       column: libc::c_int)
3461     -> libc::c_int;
3462    pub fn mat_findins(mat: *mut MATrec, row: libc::c_int,
3463                       column: libc::c_int,
3464                       insertpos: *mut libc::c_int,
3465                       validate: libc::c_uchar)
3466     -> libc::c_int;
3467    pub fn mat_multcol(mat: *mut MATrec, col_nr: libc::c_int,
3468                       mult: libc::c_double,
3469                       DoObj: libc::c_uchar);
3470    pub fn mat_getitem(mat: *mut MATrec, row: libc::c_int,
3471                       column: libc::c_int)
3472     -> libc::c_double;
3473    pub fn mat_setitem(mat: *mut MATrec, row: libc::c_int,
3474                       column: libc::c_int,
3475                       value: libc::c_double)
3476     -> libc::c_uchar;
3477    pub fn mat_additem(mat: *mut MATrec, row: libc::c_int,
3478                       column: libc::c_int,
3479                       delta: libc::c_double)
3480     -> libc::c_uchar;
3481    pub fn mat_setvalue(mat: *mut MATrec, Row: libc::c_int,
3482                        Column: libc::c_int,
3483                        Value: libc::c_double,
3484                        doscale: libc::c_uchar)
3485     -> libc::c_uchar;
3486    pub fn mat_nonzeros(mat: *mut MATrec) -> libc::c_int;
3487    pub fn mat_collength(mat: *mut MATrec, colnr: libc::c_int)
3488     -> libc::c_int;
3489    pub fn mat_rowlength(mat: *mut MATrec, rownr: libc::c_int)
3490     -> libc::c_int;
3491    pub fn mat_multrow(mat: *mut MATrec, row_nr: libc::c_int,
3492                       mult: libc::c_double);
3493    pub fn mat_multadd(mat: *mut MATrec,
3494                       lhsvector: *mut libc::c_double,
3495                       varnr: libc::c_int,
3496                       mult: libc::c_double);
3497    pub fn mat_setrow(mat: *mut MATrec, rowno: libc::c_int,
3498                      count: libc::c_int,
3499                      row: *mut libc::c_double,
3500                      colno: *mut libc::c_int,
3501                      doscale: libc::c_uchar,
3502                      checkrowmode: libc::c_uchar)
3503     -> libc::c_uchar;
3504    pub fn mat_setcol(mat: *mut MATrec, colno: libc::c_int,
3505                      count: libc::c_int,
3506                      column: *mut libc::c_double,
3507                      rowno: *mut libc::c_int,
3508                      doscale: libc::c_uchar,
3509                      checkrowmode: libc::c_uchar)
3510     -> libc::c_uchar;
3511    pub fn mat_mergemat(target: *mut MATrec, source: *mut MATrec,
3512                        usecolmap: libc::c_uchar)
3513     -> libc::c_uchar;
3514    pub fn mat_checkcounts(mat: *mut MATrec,
3515                           rownum: *mut libc::c_int,
3516                           colnum: *mut libc::c_int,
3517                           freeonexit: libc::c_uchar)
3518     -> libc::c_int;
3519    pub fn mat_expandcolumn(mat: *mut MATrec, colnr: libc::c_int,
3520                            column: *mut libc::c_double,
3521                            nzlist: *mut libc::c_int,
3522                            signedA: libc::c_uchar)
3523     -> libc::c_int;
3524    pub fn mat_computemax(mat: *mut MATrec) -> libc::c_uchar;
3525    pub fn mat_transpose(mat: *mut MATrec) -> libc::c_uchar;
3526    pub fn invert(lp: *mut lprec, shiftbounds: libc::c_uchar,
3527                  _final: libc::c_uchar) -> libc::c_uchar;
3528    pub fn vec_compress(densevector: *mut libc::c_double,
3529                        startpos: libc::c_int,
3530                        endpos: libc::c_int,
3531                        epsilon: libc::c_double,
3532                        nzvector: *mut libc::c_double,
3533                        nzindex: *mut libc::c_int)
3534     -> libc::c_uchar;
3535    pub fn vec_expand(nzvector: *mut libc::c_double,
3536                      nzindex: *mut libc::c_int,
3537                      densevector: *mut libc::c_double,
3538                      startpos: libc::c_int,
3539                      endpos: libc::c_int)
3540     -> libc::c_uchar;
3541    pub fn get_colIndexA(lp: *mut lprec, varset: libc::c_int,
3542                         colindex: *mut libc::c_int,
3543                         append: libc::c_uchar)
3544     -> libc::c_uchar;
3545    pub fn prod_Ax(lp: *mut lprec, coltarget: *mut libc::c_int,
3546                   input: *mut libc::c_double,
3547                   nzinput: *mut libc::c_int,
3548                   roundzero: libc::c_double,
3549                   ofscalar: libc::c_double,
3550                   output: *mut libc::c_double,
3551                   nzoutput: *mut libc::c_int,
3552                   roundmode: libc::c_int) -> libc::c_int;
3553    pub fn prod_xA(lp: *mut lprec, coltarget: *mut libc::c_int,
3554                   input: *mut libc::c_double,
3555                   nzinput: *mut libc::c_int,
3556                   roundzero: libc::c_double,
3557                   ofscalar: libc::c_double,
3558                   output: *mut libc::c_double,
3559                   nzoutput: *mut libc::c_int,
3560                   roundmode: libc::c_int) -> libc::c_int;
3561    pub fn prod_xA2(lp: *mut lprec, coltarget: *mut libc::c_int,
3562                    prow: *mut libc::c_double,
3563                    proundzero: libc::c_double,
3564                    pnzprow: *mut libc::c_int,
3565                    drow: *mut libc::c_double,
3566                    droundzero: libc::c_double,
3567                    dnzdrow: *mut libc::c_int,
3568                    ofscalar: libc::c_double,
3569                    roundmode: libc::c_int)
3570     -> libc::c_uchar;
3571    pub fn fimprove(lp: *mut lprec, pcol: *mut libc::c_double,
3572                    nzidx: *mut libc::c_int,
3573                    roundzero: libc::c_double)
3574     -> libc::c_uchar;
3575    pub fn ftran(lp: *mut lprec, rhsvector: *mut libc::c_double,
3576                 nzidx: *mut libc::c_int,
3577                 roundzero: libc::c_double);
3578    pub fn bimprove(lp: *mut lprec, rhsvector: *mut libc::c_double,
3579                    nzidx: *mut libc::c_int,
3580                    roundzero: libc::c_double)
3581     -> libc::c_uchar;
3582    pub fn btran(lp: *mut lprec, rhsvector: *mut libc::c_double,
3583                 nzidx: *mut libc::c_int,
3584                 roundzero: libc::c_double);
3585    pub fn fsolve(lp: *mut lprec, varin: libc::c_int,
3586                  pcol: *mut libc::c_double,
3587                  nzidx: *mut libc::c_int,
3588                  roundzero: libc::c_double,
3589                  ofscalar: libc::c_double,
3590                  prepareupdate: libc::c_uchar)
3591     -> libc::c_uchar;
3592    pub fn bsolve(lp: *mut lprec, row_nr: libc::c_int,
3593                  rhsvector: *mut libc::c_double,
3594                  nzidx: *mut libc::c_int,
3595                  roundzero: libc::c_double,
3596                  ofscalar: libc::c_double)
3597     -> libc::c_uchar;
3598    pub fn bsolve_xA2(lp: *mut lprec, coltarget: *mut libc::c_int,
3599                      row_nr1: libc::c_int,
3600                      vector1: *mut libc::c_double,
3601                      roundzero1: libc::c_double,
3602                      nzvector1: *mut libc::c_int,
3603                      row_nr2: libc::c_int,
3604                      vector2: *mut libc::c_double,
3605                      roundzero2: libc::c_double,
3606                      nzvector2: *mut libc::c_int,
3607                      roundmode: libc::c_int);
3608    pub fn createUndoLadder(lp: *mut lprec, levelitems: libc::c_int,
3609                            maxlevels: libc::c_int)
3610     -> *mut DeltaVrec;
3611    pub fn incrementUndoLadder(DV: *mut DeltaVrec) -> libc::c_int;
3612    pub fn modifyUndoLadder(DV: *mut DeltaVrec, itemno: libc::c_int,
3613                            target: *mut libc::c_double,
3614                            newvalue: libc::c_double)
3615     -> libc::c_uchar;
3616    pub fn countsUndoLadder(DV: *mut DeltaVrec) -> libc::c_int;
3617    pub fn restoreUndoLadder(DV: *mut DeltaVrec,
3618                             target: *mut libc::c_double)
3619     -> libc::c_int;
3620    pub fn decrementUndoLadder(DV: *mut DeltaVrec) -> libc::c_int;
3621    pub fn freeUndoLadder(DV: *mut *mut DeltaVrec) -> libc::c_uchar;
3622    pub fn appendUndoPresolve(lp: *mut lprec,
3623                              isprimal: libc::c_uchar,
3624                              beta: libc::c_double,
3625                              colnrDep: libc::c_int)
3626     -> libc::c_uchar;
3627    pub fn addUndoPresolve(lp: *mut lprec, isprimal: libc::c_uchar,
3628                           colnrElim: libc::c_int,
3629                           alpha: libc::c_double,
3630                           beta: libc::c_double,
3631                           colnrDep: libc::c_int)
3632     -> libc::c_uchar;
3633    pub fn create_BB(lp: *mut lprec, parentBB: *mut BBrec,
3634                     dofullcopy: libc::c_uchar) -> *mut BBrec;
3635    pub fn push_BB(lp: *mut lprec, parentBB: *mut BBrec,
3636                   varno: libc::c_int,
3637                   vartype: libc::c_int,
3638                   varcus: libc::c_int) -> *mut BBrec;
3639    pub fn initbranches_BB(BB: *mut BBrec) -> libc::c_uchar;
3640    pub fn fillbranches_BB(BB: *mut BBrec) -> libc::c_uchar;
3641    pub fn nextbranch_BB(BB: *mut BBrec) -> libc::c_uchar;
3642    pub fn strongbranch_BB(lp: *mut lprec, BB: *mut BBrec,
3643                           varno: libc::c_int,
3644                           vartype: libc::c_int,
3645                           varcus: libc::c_int)
3646     -> libc::c_uchar;
3647    pub fn initcuts_BB(lp: *mut lprec) -> libc::c_uchar;
3648    pub fn updatecuts_BB(lp: *mut lprec) -> libc::c_int;
3649    pub fn freecuts_BB(lp: *mut lprec) -> libc::c_uchar;
3650    pub fn findself_BB(BB: *mut BBrec) -> *mut BBrec;
3651    pub fn solve_LP(lp: *mut lprec, BB: *mut BBrec) -> libc::c_int;
3652    pub fn rcfbound_BB(BB: *mut BBrec, varno: libc::c_int,
3653                       isINT: libc::c_uchar,
3654                       newbound: *mut libc::c_double,
3655                       isfeasible: *mut libc::c_uchar)
3656     -> libc::c_int;
3657    pub fn findnode_BB(BB: *mut BBrec, varno: *mut libc::c_int,
3658                       vartype: *mut libc::c_int,
3659                       varcus: *mut libc::c_int)
3660     -> libc::c_uchar;
3661    pub fn solve_BB(BB: *mut BBrec) -> libc::c_int;
3662    pub fn free_BB(BB: *mut *mut BBrec) -> libc::c_uchar;
3663    pub fn pop_BB(BB: *mut BBrec) -> *mut BBrec;
3664    pub fn run_BB(lp: *mut lprec) -> libc::c_int;
3665    pub fn create_SOSgroup(lp: *mut lprec) -> *mut SOSgroup;
3666    pub fn resize_SOSgroup(group: *mut SOSgroup);
3667    pub fn append_SOSgroup(group: *mut SOSgroup, SOS: *mut SOSrec)
3668     -> libc::c_int;
3669    pub fn clean_SOSgroup(group: *mut SOSgroup,
3670                          forceupdatemap: libc::c_uchar)
3671     -> libc::c_int;
3672    pub fn free_SOSgroup(group: *mut *mut SOSgroup);
3673    pub fn create_SOSrec(group: *mut SOSgroup,
3674                         name: *mut libc::c_char,
3675                         _type: libc::c_int,
3676                         priority: libc::c_int,
3677                         size: libc::c_int,
3678                         variables: *mut libc::c_int,
3679                         weights: *mut libc::c_double)
3680     -> *mut SOSrec;
3681    pub fn delete_SOSrec(group: *mut SOSgroup,
3682                         sosindex: libc::c_int)
3683     -> libc::c_uchar;
3684    pub fn append_SOSrec(SOS: *mut SOSrec, size: libc::c_int,
3685                         variables: *mut libc::c_int,
3686                         weights: *mut libc::c_double)
3687     -> libc::c_int;
3688    pub fn free_SOSrec(SOS: *mut SOSrec);
3689    pub fn make_SOSchain(lp: *mut lprec, forceresort: libc::c_uchar)
3690     -> libc::c_int;
3691    pub fn SOS_member_updatemap(group: *mut SOSgroup)
3692     -> libc::c_int;
3693    pub fn SOS_member_sortlist(group: *mut SOSgroup,
3694                               sosindex: libc::c_int)
3695     -> libc::c_uchar;
3696    pub fn SOS_shift_col(group: *mut SOSgroup,
3697                         sosindex: libc::c_int,
3698                         column: libc::c_int,
3699                         delta: libc::c_int, usedmap: *mut LLrec,
3700                         forceresort: libc::c_uchar)
3701     -> libc::c_uchar;
3702    pub fn SOS_member_delete(group: *mut SOSgroup,
3703                             sosindex: libc::c_int,
3704                             member: libc::c_int)
3705     -> libc::c_int;
3706    pub fn SOS_get_type(group: *mut SOSgroup, sosindex: libc::c_int)
3707     -> libc::c_int;
3708    pub fn SOS_infeasible(group: *mut SOSgroup,
3709                          sosindex: libc::c_int)
3710     -> libc::c_int;
3711    pub fn SOS_member_index(group: *mut SOSgroup,
3712                            sosindex: libc::c_int,
3713                            member: libc::c_int)
3714     -> libc::c_int;
3715    pub fn SOS_member_count(group: *mut SOSgroup,
3716                            sosindex: libc::c_int)
3717     -> libc::c_int;
3718    pub fn SOS_memberships(group: *mut SOSgroup,
3719                           column: libc::c_int)
3720     -> libc::c_int;
3721    pub fn SOS_get_candidates(group: *mut SOSgroup,
3722                              sosindex: libc::c_int,
3723                              column: libc::c_int,
3724                              excludetarget: libc::c_uchar,
3725                              upbound: *mut libc::c_double,
3726                              lobound: *mut libc::c_double)
3727     -> *mut libc::c_int;
3728    pub fn SOS_is_member(group: *mut SOSgroup,
3729                         sosindex: libc::c_int,
3730                         column: libc::c_int)
3731     -> libc::c_int;
3732    pub fn SOS_is_member_of_type(group: *mut SOSgroup,
3733                                 column: libc::c_int,
3734                                 sostype: libc::c_int)
3735     -> libc::c_uchar;
3736    pub fn SOS_set_GUB(group: *mut SOSgroup, sosindex: libc::c_int,
3737                       state: libc::c_uchar)
3738     -> libc::c_uchar;
3739    pub fn SOS_is_GUB(group: *mut SOSgroup, sosindex: libc::c_int)
3740     -> libc::c_uchar;
3741    pub fn SOS_is_marked(group: *mut SOSgroup,
3742                         sosindex: libc::c_int,
3743                         column: libc::c_int)
3744     -> libc::c_uchar;
3745    pub fn SOS_is_active(group: *mut SOSgroup,
3746                         sosindex: libc::c_int,
3747                         column: libc::c_int)
3748     -> libc::c_uchar;
3749    pub fn SOS_is_full(group: *mut SOSgroup, sosindex: libc::c_int,
3750                       column: libc::c_int,
3751                       activeonly: libc::c_uchar)
3752     -> libc::c_uchar;
3753    pub fn SOS_can_activate(group: *mut SOSgroup,
3754                            sosindex: libc::c_int,
3755                            column: libc::c_int)
3756     -> libc::c_uchar;
3757    pub fn SOS_set_marked(group: *mut SOSgroup,
3758                          sosindex: libc::c_int,
3759                          column: libc::c_int,
3760                          asactive: libc::c_uchar)
3761     -> libc::c_uchar;
3762    pub fn SOS_unmark(group: *mut SOSgroup, sosindex: libc::c_int,
3763                      column: libc::c_int)
3764     -> libc::c_uchar;
3765    pub fn SOS_fix_unmarked(group: *mut SOSgroup,
3766                            sosindex: libc::c_int,
3767                            variable: libc::c_int,
3768                            bound: *mut libc::c_double,
3769                            value: libc::c_double,
3770                            isupper: libc::c_uchar,
3771                            diffcount: *mut libc::c_int,
3772                            changelog: *mut DeltaVrec)
3773     -> libc::c_int;
3774    pub fn SOS_fix_list(group: *mut SOSgroup, sosindex: libc::c_int,
3775                        variable: libc::c_int,
3776                        bound: *mut libc::c_double,
3777                        varlist: *mut libc::c_int,
3778                        isleft: libc::c_uchar,
3779                        changelog: *mut DeltaVrec) -> libc::c_int;
3780    pub fn SOS_is_satisfied(group: *mut SOSgroup,
3781                            sosindex: libc::c_int,
3782                            solution: *mut libc::c_double)
3783     -> libc::c_int;
3784    pub fn SOS_is_feasible(group: *mut SOSgroup,
3785                           sosindex: libc::c_int,
3786                           solution: *mut libc::c_double)
3787     -> libc::c_uchar;
3788    pub fn lp_solve_version(majorversion: *mut libc::c_int,
3789                            minorversion: *mut libc::c_int,
3790                            release: *mut libc::c_int,
3791                            build: *mut libc::c_int);
3792    pub fn make_lp(rows: libc::c_int,
3793                   columns: libc::c_int) -> *mut lprec;
3794    pub fn resize_lp(lp: *mut lprec, rows: libc::c_int,
3795                     columns: libc::c_int)
3796     -> libc::c_uchar;
3797    pub fn get_status(lp: *mut lprec) -> libc::c_int;
3798    pub fn get_statustext(lp: *mut lprec, statuscode: libc::c_int)
3799     -> *mut libc::c_char;
3800    pub fn is_obj_in_basis(lp: *mut lprec) -> libc::c_uchar;
3801    pub fn set_obj_in_basis(lp: *mut lprec,
3802                            obj_in_basis: libc::c_uchar);
3803    pub fn copy_lp(lp: *mut lprec) -> *mut lprec;
3804    pub fn dualize_lp(lp: *mut lprec) -> libc::c_uchar;
3805    pub fn memopt_lp(lp: *mut lprec, rowextra: libc::c_int,
3806                     colextra: libc::c_int,
3807                     nzextra: libc::c_int)
3808     -> libc::c_uchar;
3809    pub fn delete_lp(lp: *mut lprec);
3810    pub fn free_lp(plp: *mut *mut lprec);
3811    pub fn set_lp_name(lp: *mut lprec, lpname: *mut libc::c_char)
3812     -> libc::c_uchar;
3813    pub fn get_lp_name(lp: *mut lprec) -> *mut libc::c_char;
3814    pub fn has_BFP(lp: *mut lprec) -> libc::c_uchar;
3815    pub fn is_nativeBFP(lp: *mut lprec) -> libc::c_uchar;
3816    pub fn set_BFP(lp: *mut lprec, filename: *mut libc::c_char)
3817     -> libc::c_uchar;
3818    pub fn read_XLI(xliname: *mut libc::c_char,
3819                    modelname: *mut libc::c_char,
3820                    dataname: *mut libc::c_char,
3821                    options: *mut libc::c_char,
3822                    verbose: libc::c_int) -> *mut lprec;
3823    pub fn write_XLI(lp: *mut lprec, filename: *mut libc::c_char,
3824                     options: *mut libc::c_char,
3825                     results: libc::c_uchar)
3826     -> libc::c_uchar;
3827    pub fn has_XLI(lp: *mut lprec) -> libc::c_uchar;
3828    pub fn is_nativeXLI(lp: *mut lprec) -> libc::c_uchar;
3829    pub fn set_XLI(lp: *mut lprec, filename: *mut libc::c_char)
3830     -> libc::c_uchar;
3831    pub fn set_obj(lp: *mut lprec, colnr: libc::c_int,
3832                   value: libc::c_double)
3833     -> libc::c_uchar;
3834    pub fn set_obj_fn(lp: *mut lprec, row: *mut libc::c_double)
3835     -> libc::c_uchar;
3836    pub fn set_obj_fnex(lp: *mut lprec, count: libc::c_int,
3837                        row: *mut libc::c_double,
3838                        colno: *mut libc::c_int)
3839     -> libc::c_uchar;
3840    pub fn str_set_obj_fn(lp: *mut lprec,
3841                          row_string: *mut libc::c_char)
3842     -> libc::c_uchar;
3843    pub fn set_sense(lp: *mut lprec, maximize: libc::c_uchar);
3844    pub fn set_maxim(lp: *mut lprec);
3845    pub fn set_minim(lp: *mut lprec);
3846    pub fn is_maxim(lp: *mut lprec) -> libc::c_uchar;
3847    pub fn add_constraint(lp: *mut lprec, row: *mut libc::c_double,
3848                          constr_type: libc::c_int,
3849                          rh: libc::c_double)
3850     -> libc::c_uchar;
3851    pub fn add_constraintex(lp: *mut lprec, count: libc::c_int,
3852                            row: *mut libc::c_double,
3853                            colno: *mut libc::c_int,
3854                            constr_type: libc::c_int,
3855                            rh: libc::c_double)
3856     -> libc::c_uchar;
3857    pub fn set_add_rowmode(lp: *mut lprec, turnon: libc::c_uchar)
3858     -> libc::c_uchar;
3859    pub fn is_add_rowmode(lp: *mut lprec) -> libc::c_uchar;
3860    pub fn str_add_constraint(lp: *mut lprec,
3861                              row_string: *mut libc::c_char,
3862                              constr_type: libc::c_int,
3863                              rh: libc::c_double)
3864     -> libc::c_uchar;
3865    pub fn set_row(lp: *mut lprec, rownr: libc::c_int,
3866                   row: *mut libc::c_double)
3867     -> libc::c_uchar;
3868    pub fn set_rowex(lp: *mut lprec, rownr: libc::c_int,
3869                     count: libc::c_int,
3870                     row: *mut libc::c_double,
3871                     colno: *mut libc::c_int)
3872     -> libc::c_uchar;
3873    pub fn get_row(lp: *mut lprec, rownr: libc::c_int,
3874                   row: *mut libc::c_double)
3875     -> libc::c_uchar;
3876    pub fn get_rowex(lp: *mut lprec, rownr: libc::c_int,
3877                     row: *mut libc::c_double,
3878                     colno: *mut libc::c_int)
3879     -> libc::c_int;
3880    pub fn del_constraint(lp: *mut lprec, rownr: libc::c_int)
3881     -> libc::c_uchar;
3882    pub fn del_constraintex(lp: *mut lprec, rowmap: *mut LLrec)
3883     -> libc::c_uchar;
3884    pub fn add_lag_con(lp: *mut lprec, row: *mut libc::c_double,
3885                       con_type: libc::c_int,
3886                       rhs: libc::c_double)
3887     -> libc::c_uchar;
3888    pub fn str_add_lag_con(lp: *mut lprec,
3889                           row_string: *mut libc::c_char,
3890                           con_type: libc::c_int,
3891                           rhs: libc::c_double)
3892     -> libc::c_uchar;
3893    pub fn set_lag_trace(lp: *mut lprec, lag_trace: libc::c_uchar);
3894    pub fn is_lag_trace(lp: *mut lprec) -> libc::c_uchar;
3895    pub fn set_constr_type(lp: *mut lprec, rownr: libc::c_int,
3896                           con_type: libc::c_int)
3897     -> libc::c_uchar;
3898    pub fn get_constr_type(lp: *mut lprec, rownr: libc::c_int)
3899     -> libc::c_int;
3900    pub fn get_constr_value(lp: *mut lprec, rownr: libc::c_int,
3901                            count: libc::c_int,
3902                            primsolution: *mut libc::c_double,
3903                            nzindex: *mut libc::c_int)
3904     -> libc::c_double;
3905    pub fn is_constr_type(lp: *mut lprec, rownr: libc::c_int,
3906                          mask: libc::c_int)
3907     -> libc::c_uchar;
3908    pub fn get_str_constr_type(lp: *mut lprec,
3909                               con_type: libc::c_int)
3910     -> *mut libc::c_char;
3911    pub fn get_constr_class(lp: *mut lprec, rownr: libc::c_int)
3912     -> libc::c_int;
3913    pub fn get_str_constr_class(lp: *mut lprec,
3914                                con_class: libc::c_int)
3915     -> *mut libc::c_char;
3916    pub fn set_rh(lp: *mut lprec, rownr: libc::c_int,
3917                  value: libc::c_double) -> libc::c_uchar;
3918    pub fn get_rh(lp: *mut lprec, rownr: libc::c_int)
3919     -> libc::c_double;
3920    pub fn set_rh_range(lp: *mut lprec, rownr: libc::c_int,
3921                        deltavalue: libc::c_double)
3922     -> libc::c_uchar;
3923    pub fn get_rh_range(lp: *mut lprec, rownr: libc::c_int)
3924     -> libc::c_double;
3925    pub fn set_rh_vec(lp: *mut lprec, rh: *mut libc::c_double);
3926    pub fn str_set_rh_vec(lp: *mut lprec,
3927                          rh_string: *mut libc::c_char)
3928     -> libc::c_uchar;
3929    pub fn add_column(lp: *mut lprec, column: *mut libc::c_double)
3930     -> libc::c_uchar;
3931    pub fn add_columnex(lp: *mut lprec, count: libc::c_int,
3932                        column: *mut libc::c_double,
3933                        rowno: *mut libc::c_int)
3934     -> libc::c_uchar;
3935    pub fn str_add_column(lp: *mut lprec,
3936                          col_string: *mut libc::c_char)
3937     -> libc::c_uchar;
3938    pub fn set_column(lp: *mut lprec, colnr: libc::c_int,
3939                      column: *mut libc::c_double)
3940     -> libc::c_uchar;
3941    pub fn set_columnex(lp: *mut lprec, colnr: libc::c_int,
3942                        count: libc::c_int,
3943                        column: *mut libc::c_double,
3944                        rowno: *mut libc::c_int)
3945     -> libc::c_uchar;
3946    pub fn column_in_lp(lp: *mut lprec, column: *mut libc::c_double)
3947     -> libc::c_int;
3948    pub fn get_columnex(lp: *mut lprec, colnr: libc::c_int,
3949                        column: *mut libc::c_double,
3950                        nzrow: *mut libc::c_int)
3951     -> libc::c_int;
3952    pub fn get_column(lp: *mut lprec, colnr: libc::c_int,
3953                      column: *mut libc::c_double)
3954     -> libc::c_uchar;
3955    pub fn del_column(lp: *mut lprec, colnr: libc::c_int)
3956     -> libc::c_uchar;
3957    pub fn del_columnex(lp: *mut lprec, colmap: *mut LLrec)
3958     -> libc::c_uchar;
3959    pub fn set_mat(lp: *mut lprec, rownr: libc::c_int,
3960                   colnr: libc::c_int,
3961                   value: libc::c_double)
3962     -> libc::c_uchar;
3963    pub fn get_mat(lp: *mut lprec, rownr: libc::c_int,
3964                   colnr: libc::c_int) -> libc::c_double;
3965    pub fn get_mat_byindex(lp: *mut lprec, matindex: libc::c_int,
3966                           isrow: libc::c_uchar,
3967                           adjustsign: libc::c_uchar)
3968     -> libc::c_double;
3969    pub fn get_nonzeros(lp: *mut lprec) -> libc::c_int;
3970    pub fn set_bounds_tighter(lp: *mut lprec,
3971                              tighten: libc::c_uchar);
3972    pub fn get_bounds(lp: *mut lprec, column: libc::c_int,
3973                      lower: *mut libc::c_double,
3974                      upper: *mut libc::c_double)
3975     -> libc::c_uchar;
3976    pub fn get_bounds_tighter(lp: *mut lprec) -> libc::c_uchar;
3977    pub fn set_upbo(lp: *mut lprec, colnr: libc::c_int,
3978                    value: libc::c_double)
3979     -> libc::c_uchar;
3980    pub fn get_upbo(lp: *mut lprec, colnr: libc::c_int)
3981     -> libc::c_double;
3982    pub fn set_lowbo(lp: *mut lprec, colnr: libc::c_int,
3983                     value: libc::c_double)
3984     -> libc::c_uchar;
3985    pub fn get_lowbo(lp: *mut lprec, colnr: libc::c_int)
3986     -> libc::c_double;
3987    pub fn set_bounds(lp: *mut lprec, colnr: libc::c_int,
3988                      lower: libc::c_double,
3989                      upper: libc::c_double)
3990     -> libc::c_uchar;
3991    pub fn set_unbounded(lp: *mut lprec, colnr: libc::c_int)
3992     -> libc::c_uchar;
3993    pub fn is_unbounded(lp: *mut lprec, colnr: libc::c_int)
3994     -> libc::c_uchar;
3995    pub fn set_int(lp: *mut lprec, colnr: libc::c_int,
3996                   must_be_int: libc::c_uchar)
3997     -> libc::c_uchar;
3998    pub fn is_int(lp: *mut lprec, colnr: libc::c_int)
3999     -> libc::c_uchar;
4000    pub fn set_binary(lp: *mut lprec, colnr: libc::c_int,
4001                      must_be_bin: libc::c_uchar)
4002     -> libc::c_uchar;
4003    pub fn is_binary(lp: *mut lprec, colnr: libc::c_int)
4004     -> libc::c_uchar;
4005    pub fn set_semicont(lp: *mut lprec, colnr: libc::c_int,
4006                        must_be_sc: libc::c_uchar)
4007     -> libc::c_uchar;
4008    pub fn is_semicont(lp: *mut lprec, colnr: libc::c_int)
4009     -> libc::c_uchar;
4010    pub fn is_negative(lp: *mut lprec, colnr: libc::c_int)
4011     -> libc::c_uchar;
4012    pub fn set_var_weights(lp: *mut lprec,
4013                           weights: *mut libc::c_double)
4014     -> libc::c_uchar;
4015    pub fn get_var_priority(lp: *mut lprec, colnr: libc::c_int)
4016     -> libc::c_int;
4017    pub fn set_pseudocosts(lp: *mut lprec,
4018                           clower: *mut libc::c_double,
4019                           cupper: *mut libc::c_double,
4020                           updatelimit: *mut libc::c_int)
4021     -> libc::c_uchar;
4022    pub fn get_pseudocosts(lp: *mut lprec,
4023                           clower: *mut libc::c_double,
4024                           cupper: *mut libc::c_double,
4025                           updatelimit: *mut libc::c_int)
4026     -> libc::c_uchar;
4027    pub fn add_SOS(lp: *mut lprec, name: *mut libc::c_char,
4028                   sostype: libc::c_int,
4029                   priority: libc::c_int,
4030                   count: libc::c_int,
4031                   sosvars: *mut libc::c_int,
4032                   weights: *mut libc::c_double)
4033     -> libc::c_int;
4034    pub fn is_SOS_var(lp: *mut lprec, colnr: libc::c_int)
4035     -> libc::c_uchar;
4036    pub fn set_row_name(lp: *mut lprec, rownr: libc::c_int,
4037                        new_name: *mut libc::c_char)
4038     -> libc::c_uchar;
4039    pub fn get_row_name(lp: *mut lprec, rownr: libc::c_int)
4040     -> *mut libc::c_char;
4041    pub fn get_origrow_name(lp: *mut lprec, rownr: libc::c_int)
4042     -> *mut libc::c_char;
4043    pub fn set_col_name(lp: *mut lprec, colnr: libc::c_int,
4044                        new_name: *mut libc::c_char)
4045     -> libc::c_uchar;
4046    pub fn get_col_name(lp: *mut lprec, colnr: libc::c_int)
4047     -> *mut libc::c_char;
4048    pub fn get_origcol_name(lp: *mut lprec, colnr: libc::c_int)
4049     -> *mut libc::c_char;
4050    pub fn unscale(lp: *mut lprec);
4051    pub fn set_preferdual(lp: *mut lprec, dodual: libc::c_uchar);
4052    pub fn set_simplextype(lp: *mut lprec,
4053                           simplextype: libc::c_int);
4054    pub fn get_simplextype(lp: *mut lprec) -> libc::c_int;
4055    pub fn default_basis(lp: *mut lprec);
4056    pub fn set_basiscrash(lp: *mut lprec, mode: libc::c_int);
4057    pub fn get_basiscrash(lp: *mut lprec) -> libc::c_int;
4058    pub fn set_basisvar(lp: *mut lprec, basisPos: libc::c_int,
4059                        enteringCol: libc::c_int)
4060     -> libc::c_int;
4061    pub fn set_basis(lp: *mut lprec, bascolumn: *mut libc::c_int,
4062                     nonbasic: libc::c_uchar)
4063     -> libc::c_uchar;
4064    pub fn get_basis(lp: *mut lprec, bascolumn: *mut libc::c_int,
4065                     nonbasic: libc::c_uchar)
4066     -> libc::c_uchar;
4067    pub fn reset_basis(lp: *mut lprec);
4068    pub fn guess_basis(lp: *mut lprec,
4069                       guessvector: *mut libc::c_double,
4070                       basisvector: *mut libc::c_int)
4071     -> libc::c_uchar;
4072    pub fn is_feasible(lp: *mut lprec, values: *mut libc::c_double,
4073                       threshold: libc::c_double)
4074     -> libc::c_uchar;
4075    pub fn solve(lp: *mut lprec) -> libc::c_int;
4076    pub fn time_elapsed(lp: *mut lprec) -> libc::c_double;
4077    pub fn put_bb_nodefunc(lp: *mut lprec, newnode: lphandleint_intfunc,
4078                           bbnodehandle: *mut libc::c_void);
4079    pub fn put_bb_branchfunc(lp: *mut lprec, newbranch: lphandleint_intfunc,
4080                             bbbranchhandle: *mut libc::c_void);
4081    pub fn put_abortfunc(lp: *mut lprec, newctrlc: lphandle_intfunc,
4082                         ctrlchandle: *mut libc::c_void);
4083    pub fn put_logfunc(lp: *mut lprec, newlog: lphandlestr_func,
4084                       loghandle: *mut libc::c_void);
4085    pub fn put_msgfunc(lp: *mut lprec, newmsg: lphandleint_func,
4086                       msghandle: *mut libc::c_void,
4087                       mask: libc::c_int);
4088    pub fn get_primal_solution(lp: *mut lprec,
4089                               pv: *mut libc::c_double)
4090     -> libc::c_uchar;
4091    pub fn get_ptr_primal_solution(lp: *mut lprec,
4092                                   pv: *mut *mut libc::c_double)
4093     -> libc::c_uchar;
4094    pub fn get_dual_solution(lp: *mut lprec,
4095                             rc: *mut libc::c_double)
4096     -> libc::c_uchar;
4097    pub fn get_ptr_dual_solution(lp: *mut lprec,
4098                                 rc: *mut *mut libc::c_double)
4099     -> libc::c_uchar;
4100    pub fn get_lambda(lp: *mut lprec, lambda: *mut libc::c_double)
4101     -> libc::c_uchar;
4102    pub fn get_ptr_lambda(lp: *mut lprec,
4103                          lambda: *mut *mut libc::c_double)
4104     -> libc::c_uchar;
4105    pub fn read_MPS(filename: *mut libc::c_char,
4106                    options: libc::c_int) -> *mut lprec;
4107    pub fn read_mps(filename: *mut libc::FILE, options: libc::c_int)
4108     -> *mut lprec;
4109    pub fn read_freeMPS(filename: *mut libc::c_char,
4110                        options: libc::c_int) -> *mut lprec;
4111    pub fn read_freemps(filename: *mut libc::FILE, options: libc::c_int)
4112     -> *mut lprec;
4113    pub fn write_mps(lp: *mut lprec, filename: *mut libc::c_char)
4114     -> libc::c_uchar;
4115    pub fn write_MPS(lp: *mut lprec, output: *mut libc::FILE)
4116     -> libc::c_uchar;
4117    pub fn write_freemps(lp: *mut lprec,
4118                         filename: *mut libc::c_char)
4119     -> libc::c_uchar;
4120    pub fn write_freeMPS(lp: *mut lprec, output: *mut libc::FILE)
4121     -> libc::c_uchar;
4122    pub fn write_lp(lp: *mut lprec, filename: *mut libc::c_char)
4123     -> libc::c_uchar;
4124    pub fn write_LP(lp: *mut lprec, output: *mut libc::FILE)
4125     -> libc::c_uchar;
4126    pub fn LP_readhandle(lp: *mut *mut lprec, filename: *mut libc::FILE,
4127                         verbose: libc::c_int,
4128                         lp_name: *mut libc::c_char)
4129     -> libc::c_uchar;
4130    pub fn read_lp(filename: *mut libc::FILE, verbose: libc::c_int,
4131                   lp_name: *mut libc::c_char) -> *mut lprec;
4132    pub fn read_LP(filename: *mut libc::c_char,
4133                   verbose: libc::c_int,
4134                   lp_name: *mut libc::c_char) -> *mut lprec;
4135    pub fn write_basis(lp: *mut lprec, filename: *mut libc::c_char)
4136     -> libc::c_uchar;
4137    pub fn read_basis(lp: *mut lprec, filename: *mut libc::c_char,
4138                      info: *mut libc::c_char)
4139     -> libc::c_uchar;
4140    pub fn write_params(lp: *mut lprec, filename: *mut libc::c_char,
4141                        options: *mut libc::c_char)
4142     -> libc::c_uchar;
4143    pub fn read_params(lp: *mut lprec, filename: *mut libc::c_char,
4144                       options: *mut libc::c_char)
4145     -> libc::c_uchar;
4146    pub fn reset_params(lp: *mut lprec);
4147    pub fn print_lp(lp: *mut lprec);
4148    pub fn print_tableau(lp: *mut lprec);
4149    pub fn print_objective(lp: *mut lprec);
4150    pub fn print_solution(lp: *mut lprec, columns: libc::c_int);
4151    pub fn print_constraints(lp: *mut lprec, columns: libc::c_int);
4152    pub fn print_duals(lp: *mut lprec);
4153    pub fn print_scales(lp: *mut lprec);
4154    pub fn print_str(lp: *mut lprec, str: *mut libc::c_char);
4155    pub fn set_outputstream(lp: *mut lprec, stream: *mut libc::FILE);
4156    pub fn set_outputfile(lp: *mut lprec,
4157                          filename: *mut libc::c_char)
4158     -> libc::c_uchar;
4159    pub fn set_verbose(lp: *mut lprec, verbose: libc::c_int);
4160    pub fn get_verbose(lp: *mut lprec) -> libc::c_int;
4161    pub fn set_timeout(lp: *mut lprec, sectimeout: libc::c_long);
4162    pub fn get_timeout(lp: *mut lprec) -> libc::c_long;
4163    pub fn set_print_sol(lp: *mut lprec, print_sol: libc::c_int);
4164    pub fn get_print_sol(lp: *mut lprec) -> libc::c_int;
4165    pub fn set_debug(lp: *mut lprec, debug: libc::c_uchar);
4166    pub fn is_debug(lp: *mut lprec) -> libc::c_uchar;
4167    pub fn set_trace(lp: *mut lprec, trace: libc::c_uchar);
4168    pub fn is_trace(lp: *mut lprec) -> libc::c_uchar;
4169    pub fn print_debugdump(lp: *mut lprec,
4170                           filename: *mut libc::c_char)
4171     -> libc::c_uchar;
4172    pub fn set_anti_degen(lp: *mut lprec, anti_degen: libc::c_int);
4173    pub fn get_anti_degen(lp: *mut lprec) -> libc::c_int;
4174    pub fn is_anti_degen(lp: *mut lprec, testmask: libc::c_int)
4175     -> libc::c_uchar;
4176    pub fn set_presolve(lp: *mut lprec, presolvemode: libc::c_int,
4177                        maxloops: libc::c_int);
4178    pub fn get_presolve(lp: *mut lprec) -> libc::c_int;
4179    pub fn get_presolveloops(lp: *mut lprec) -> libc::c_int;
4180    pub fn is_presolve(lp: *mut lprec, testmask: libc::c_int)
4181     -> libc::c_uchar;
4182    pub fn get_orig_index(lp: *mut lprec, lp_index: libc::c_int)
4183     -> libc::c_int;
4184    pub fn get_lp_index(lp: *mut lprec, orig_index: libc::c_int)
4185     -> libc::c_int;
4186    pub fn set_maxpivot(lp: *mut lprec, max_num_inv: libc::c_int);
4187    pub fn get_maxpivot(lp: *mut lprec) -> libc::c_int;
4188    pub fn set_obj_bound(lp: *mut lprec, obj_bound: libc::c_double);
4189    pub fn get_obj_bound(lp: *mut lprec) -> libc::c_double;
4190    pub fn set_mip_gap(lp: *mut lprec, absolute: libc::c_uchar,
4191                       mip_gap: libc::c_double);
4192    pub fn get_mip_gap(lp: *mut lprec, absolute: libc::c_uchar)
4193     -> libc::c_double;
4194    pub fn set_bb_rule(lp: *mut lprec, bb_rule: libc::c_int);
4195    pub fn get_bb_rule(lp: *mut lprec) -> libc::c_int;
4196    pub fn set_var_branch(lp: *mut lprec, colnr: libc::c_int,
4197                          branch_mode: libc::c_int)
4198     -> libc::c_uchar;
4199    pub fn get_var_branch(lp: *mut lprec, colnr: libc::c_int)
4200     -> libc::c_int;
4201    pub fn is_infinite(lp: *mut lprec, value: libc::c_double)
4202     -> libc::c_uchar;
4203    pub fn set_infinite(lp: *mut lprec, infinite: libc::c_double);
4204    pub fn get_infinite(lp: *mut lprec) -> libc::c_double;
4205    pub fn set_epsint(lp: *mut lprec, epsint: libc::c_double);
4206    pub fn get_epsint(lp: *mut lprec) -> libc::c_double;
4207    pub fn set_epsb(lp: *mut lprec, epsb: libc::c_double);
4208    pub fn get_epsb(lp: *mut lprec) -> libc::c_double;
4209    pub fn set_epsd(lp: *mut lprec, epsd: libc::c_double);
4210    pub fn get_epsd(lp: *mut lprec) -> libc::c_double;
4211    pub fn set_epsel(lp: *mut lprec, epsel: libc::c_double);
4212    pub fn get_epsel(lp: *mut lprec) -> libc::c_double;
4213    pub fn set_epslevel(lp: *mut lprec, epslevel: libc::c_int)
4214     -> libc::c_uchar;
4215    pub fn set_scaling(lp: *mut lprec, scalemode: libc::c_int);
4216    pub fn get_scaling(lp: *mut lprec) -> libc::c_int;
4217    pub fn is_scalemode(lp: *mut lprec, testmask: libc::c_int)
4218     -> libc::c_uchar;
4219    pub fn is_scaletype(lp: *mut lprec, scaletype: libc::c_int)
4220     -> libc::c_uchar;
4221    pub fn is_integerscaling(lp: *mut lprec) -> libc::c_uchar;
4222    pub fn set_scalelimit(lp: *mut lprec,
4223                          scalelimit: libc::c_double);
4224    pub fn get_scalelimit(lp: *mut lprec) -> libc::c_double;
4225    pub fn set_improve(lp: *mut lprec, improve: libc::c_int);
4226    pub fn get_improve(lp: *mut lprec) -> libc::c_int;
4227    pub fn set_pivoting(lp: *mut lprec, piv_rule: libc::c_int);
4228    pub fn get_pivoting(lp: *mut lprec) -> libc::c_int;
4229    pub fn set_partialprice(lp: *mut lprec, blockcount: libc::c_int,
4230                            blockstart: *mut libc::c_int,
4231                            isrow: libc::c_uchar)
4232     -> libc::c_uchar;
4233    pub fn get_partialprice(lp: *mut lprec,
4234                            blockcount: *mut libc::c_int,
4235                            blockstart: *mut libc::c_int,
4236                            isrow: libc::c_uchar);
4237    pub fn set_multiprice(lp: *mut lprec,
4238                          multiblockdiv: libc::c_int)
4239     -> libc::c_uchar;
4240    pub fn get_multiprice(lp: *mut lprec, getabssize: libc::c_uchar)
4241     -> libc::c_int;
4242    pub fn is_use_names(lp: *mut lprec, isrow: libc::c_uchar)
4243     -> libc::c_uchar;
4244    pub fn set_use_names(lp: *mut lprec, isrow: libc::c_uchar,
4245                         use_names: libc::c_uchar);
4246    pub fn get_nameindex(lp: *mut lprec, varname: *mut libc::c_char,
4247                         isrow: libc::c_uchar)
4248     -> libc::c_int;
4249    pub fn is_piv_mode(lp: *mut lprec, testmask: libc::c_int)
4250     -> libc::c_uchar;
4251    pub fn is_piv_rule(lp: *mut lprec, rule: libc::c_int)
4252     -> libc::c_uchar;
4253    pub fn set_break_at_first(lp: *mut lprec,
4254                              break_at_first: libc::c_uchar);
4255    pub fn is_break_at_first(lp: *mut lprec) -> libc::c_uchar;
4256    pub fn set_bb_floorfirst(lp: *mut lprec,
4257                             bb_floorfirst: libc::c_int);
4258    pub fn get_bb_floorfirst(lp: *mut lprec) -> libc::c_int;
4259    pub fn set_bb_depthlimit(lp: *mut lprec,
4260                             bb_maxlevel: libc::c_int);
4261    pub fn get_bb_depthlimit(lp: *mut lprec) -> libc::c_int;
4262    pub fn set_break_at_value(lp: *mut lprec,
4263                              break_at_value: libc::c_double);
4264    pub fn get_break_at_value(lp: *mut lprec) -> libc::c_double;
4265    pub fn set_negrange(lp: *mut lprec, negrange: libc::c_double);
4266    pub fn get_negrange(lp: *mut lprec) -> libc::c_double;
4267    pub fn set_epsperturb(lp: *mut lprec,
4268                          epsperturb: libc::c_double);
4269    pub fn get_epsperturb(lp: *mut lprec) -> libc::c_double;
4270    pub fn set_epspivot(lp: *mut lprec, epspivot: libc::c_double);
4271    pub fn get_epspivot(lp: *mut lprec) -> libc::c_double;
4272    pub fn get_max_level(lp: *mut lprec) -> libc::c_int;
4273    pub fn get_total_nodes(lp: *mut lprec) -> libc::c_longlong;
4274    pub fn get_total_iter(lp: *mut lprec) -> libc::c_longlong;
4275    pub fn get_objective(lp: *mut lprec) -> libc::c_double;
4276    pub fn get_working_objective(lp: *mut lprec) -> libc::c_double;
4277    pub fn get_var_primalresult(lp: *mut lprec, index: libc::c_int)
4278     -> libc::c_double;
4279    pub fn get_var_dualresult(lp: *mut lprec, index: libc::c_int)
4280     -> libc::c_double;
4281    pub fn get_variables(lp: *mut lprec, var: *mut libc::c_double)
4282     -> libc::c_uchar;
4283    pub fn get_ptr_variables(lp: *mut lprec,
4284                             var: *mut *mut libc::c_double)
4285     -> libc::c_uchar;
4286    pub fn get_constraints(lp: *mut lprec,
4287                           constr: *mut libc::c_double)
4288     -> libc::c_uchar;
4289    pub fn get_ptr_constraints(lp: *mut lprec,
4290                               constr: *mut *mut libc::c_double)
4291     -> libc::c_uchar;
4292    pub fn get_sensitivity_rhs(lp: *mut lprec,
4293                               duals: *mut libc::c_double,
4294                               dualsfrom: *mut libc::c_double,
4295                               dualstill: *mut libc::c_double)
4296     -> libc::c_uchar;
4297    pub fn get_ptr_sensitivity_rhs(lp: *mut lprec,
4298                                   duals: *mut *mut libc::c_double,
4299                                   dualsfrom:
4300                                       *mut *mut libc::c_double,
4301                                   dualstill:
4302                                       *mut *mut libc::c_double)
4303     -> libc::c_uchar;
4304    pub fn get_sensitivity_obj(lp: *mut lprec,
4305                               objfrom: *mut libc::c_double,
4306                               objtill: *mut libc::c_double)
4307     -> libc::c_uchar;
4308    pub fn get_sensitivity_objex(lp: *mut lprec,
4309                                 objfrom: *mut libc::c_double,
4310                                 objtill: *mut libc::c_double,
4311                                 objfromvalue: *mut libc::c_double,
4312                                 objtillvalue: *mut libc::c_double)
4313     -> libc::c_uchar;
4314    pub fn get_ptr_sensitivity_obj(lp: *mut lprec,
4315                                   objfrom:
4316                                       *mut *mut libc::c_double,
4317                                   objtill:
4318                                       *mut *mut libc::c_double)
4319     -> libc::c_uchar;
4320    pub fn get_ptr_sensitivity_objex(lp: *mut lprec,
4321                                     objfrom:
4322                                         *mut *mut libc::c_double,
4323                                     objtill:
4324                                         *mut *mut libc::c_double,
4325                                     objfromvalue:
4326                                         *mut *mut libc::c_double,
4327                                     objtillvalue:
4328                                         *mut *mut libc::c_double)
4329     -> libc::c_uchar;
4330    pub fn set_solutionlimit(lp: *mut lprec, limit: libc::c_int);
4331    pub fn get_solutionlimit(lp: *mut lprec) -> libc::c_int;
4332    pub fn get_solutioncount(lp: *mut lprec) -> libc::c_int;
4333    pub fn get_Norig_rows(lp: *mut lprec) -> libc::c_int;
4334    pub fn get_Nrows(lp: *mut lprec) -> libc::c_int;
4335    pub fn get_Lrows(lp: *mut lprec) -> libc::c_int;
4336    pub fn get_Norig_columns(lp: *mut lprec) -> libc::c_int;
4337    pub fn get_Ncolumns(lp: *mut lprec) -> libc::c_int;
4338    pub fn MPS_readex(newlp: *mut *mut lprec,
4339                      userhandle: *mut libc::c_void,
4340                      read_modeldata: read_modeldata_func,
4341                      typeMPS: libc::c_int,
4342                      options: libc::c_int)
4343     -> libc::c_uchar;
4344    pub fn read_lpex(userhandle: *mut libc::c_void,
4345                     read_modeldata: read_modeldata_func,
4346                     verbose: libc::c_int,
4347                     lp_name: *mut libc::c_char) -> *mut lprec;
4348    pub fn write_lpex(lp: *mut lprec, userhandle: *mut libc::c_void,
4349                      write_modeldata: write_modeldata_func)
4350     -> libc::c_uchar;
4351    pub fn read_mpsex(userhandle: *mut libc::c_void,
4352                      read_modeldata: read_modeldata_func,
4353                      options: libc::c_int) -> *mut lprec;
4354    pub fn read_freempsex(userhandle: *mut libc::c_void,
4355                          read_modeldata: read_modeldata_func,
4356                          options: libc::c_int) -> *mut lprec;
4357    pub fn MPS_writefileex(lp: *mut lprec, typeMPS: libc::c_int,
4358                           userhandle: *mut libc::c_void,
4359                           write_modeldata: write_modeldata_func)
4360     -> libc::c_uchar;
4361    pub fn set_callbacks(lp: *mut lprec) -> libc::c_uchar;
4362    pub fn yieldformessages(lp: *mut lprec) -> libc::c_int;
4363    pub fn userabort(lp: *mut lprec, message: libc::c_int)
4364     -> libc::c_uchar;
4365    pub fn append_rows(lp: *mut lprec, deltarows: libc::c_int)
4366     -> libc::c_uchar;
4367    pub fn append_columns(lp: *mut lprec, deltacolumns: libc::c_int)
4368     -> libc::c_uchar;
4369    pub fn inc_rows(lp: *mut lprec, delta: libc::c_int);
4370    pub fn inc_columns(lp: *mut lprec, delta: libc::c_int);
4371    pub fn init_rowcol_names(lp: *mut lprec) -> libc::c_uchar;
4372    pub fn inc_row_space(lp: *mut lprec, deltarows: libc::c_int)
4373     -> libc::c_uchar;
4374    pub fn inc_col_space(lp: *mut lprec, deltacols: libc::c_int)
4375     -> libc::c_uchar;
4376    pub fn shift_rowcoldata(lp: *mut lprec, base: libc::c_int,
4377                            delta: libc::c_int, usedmap: *mut LLrec,
4378                            isrow: libc::c_uchar)
4379     -> libc::c_uchar;
4380    pub fn shift_basis(lp: *mut lprec, base: libc::c_int,
4381                       delta: libc::c_int, usedmap: *mut LLrec,
4382                       isrow: libc::c_uchar)
4383     -> libc::c_uchar;
4384    pub fn shift_rowdata(lp: *mut lprec, base: libc::c_int,
4385                         delta: libc::c_int, usedmap: *mut LLrec)
4386     -> libc::c_uchar;
4387    pub fn shift_coldata(lp: *mut lprec, base: libc::c_int,
4388                         delta: libc::c_int, usedmap: *mut LLrec)
4389     -> libc::c_uchar;
4390    pub fn is_chsign(lp: *mut lprec, rownr: libc::c_int)
4391     -> libc::c_uchar;
4392    pub fn inc_lag_space(lp: *mut lprec, deltarows: libc::c_int,
4393                         ignoreMAT: libc::c_uchar)
4394     -> libc::c_uchar;
4395    pub fn make_lag(server: *mut lprec) -> *mut lprec;
4396    pub fn get_rh_upper(lp: *mut lprec, rownr: libc::c_int)
4397     -> libc::c_double;
4398    pub fn get_rh_lower(lp: *mut lprec, rownr: libc::c_int)
4399     -> libc::c_double;
4400    pub fn set_rh_upper(lp: *mut lprec, rownr: libc::c_int,
4401                        value: libc::c_double)
4402     -> libc::c_uchar;
4403    pub fn set_rh_lower(lp: *mut lprec, rownr: libc::c_int,
4404                        value: libc::c_double)
4405     -> libc::c_uchar;
4406    pub fn bin_count(lp: *mut lprec, working: libc::c_uchar)
4407     -> libc::c_int;
4408    pub fn MIP_count(lp: *mut lprec) -> libc::c_int;
4409    pub fn SOS_count(lp: *mut lprec) -> libc::c_int;
4410    pub fn GUB_count(lp: *mut lprec) -> libc::c_int;
4411    pub fn identify_GUB(lp: *mut lprec, mark: libc::c_uchar)
4412     -> libc::c_int;
4413    pub fn prepare_GUB(lp: *mut lprec) -> libc::c_int;
4414    pub fn refactRecent(lp: *mut lprec) -> libc::c_uchar;
4415    pub fn check_if_less(lp: *mut lprec, x: libc::c_double,
4416                         y: libc::c_double,
4417                         variable: libc::c_int)
4418     -> libc::c_uchar;
4419    pub fn feasiblePhase1(lp: *mut lprec, epsvalue: libc::c_double)
4420     -> libc::c_uchar;
4421    pub fn free_duals(lp: *mut lprec);
4422    pub fn initialize_solution(lp: *mut lprec,
4423                               shiftbounds: libc::c_uchar);
4424    pub fn recompute_solution(lp: *mut lprec,
4425                              shiftbounds: libc::c_uchar);
4426    pub fn verify_solution(lp: *mut lprec, reinvert: libc::c_uchar,
4427                           info: *mut libc::c_char)
4428     -> libc::c_int;
4429    pub fn check_solution(lp: *mut lprec, lastcolumn: libc::c_int,
4430                          solution: *mut libc::c_double,
4431                          upbo: *mut libc::c_double,
4432                          lowbo: *mut libc::c_double,
4433                          tolerance: libc::c_double)
4434     -> libc::c_int;
4435    pub fn is_fixedvar(lp: *mut lprec, variable: libc::c_int)
4436     -> libc::c_uchar;
4437    pub fn is_splitvar(lp: *mut lprec, colnr: libc::c_int)
4438     -> libc::c_uchar;
4439    pub fn set_action(actionvar: *mut libc::c_int,
4440                      actionmask: libc::c_int);
4441    pub fn clear_action(actionvar: *mut libc::c_int,
4442                        actionmask: libc::c_int);
4443    pub fn is_action(actionvar: libc::c_int,
4444                     testmask: libc::c_int)
4445     -> libc::c_uchar;
4446    pub fn is_bb_rule(lp: *mut lprec, bb_rule: libc::c_int)
4447     -> libc::c_uchar;
4448    pub fn is_bb_mode(lp: *mut lprec, bb_mask: libc::c_int)
4449     -> libc::c_uchar;
4450    pub fn get_piv_rule(lp: *mut lprec) -> libc::c_int;
4451    pub fn get_str_piv_rule(rule: libc::c_int)
4452     -> *mut libc::c_char;
4453    pub fn set_var_priority(lp: *mut lprec) -> libc::c_uchar;
4454    pub fn find_sc_bbvar(lp: *mut lprec, count: *mut libc::c_int)
4455     -> libc::c_int;
4456    pub fn find_sos_bbvar(lp: *mut lprec, count: *mut libc::c_int,
4457                          intsos: libc::c_uchar)
4458     -> libc::c_int;
4459    pub fn find_int_bbvar(lp: *mut lprec, count: *mut libc::c_int,
4460                          BB: *mut BBrec,
4461                          isfeasible: *mut libc::c_uchar)
4462     -> libc::c_int;
4463    pub fn compute_dualslacks(lp: *mut lprec, target: libc::c_int,
4464                              dvalues: *mut *mut libc::c_double,
4465                              nzdvalues: *mut *mut libc::c_int,
4466                              dosum: libc::c_uchar)
4467     -> libc::c_double;
4468    pub fn solution_is_int(lp: *mut lprec, index: libc::c_int,
4469                           checkfixed: libc::c_uchar)
4470     -> libc::c_uchar;
4471    pub fn bb_better(lp: *mut lprec, target: libc::c_int,
4472                     mode: libc::c_int) -> libc::c_uchar;
4473    pub fn construct_solution(lp: *mut lprec,
4474                              target: *mut libc::c_double);
4475    pub fn transfer_solution_var(lp: *mut lprec,
4476                                 uservar: libc::c_int);
4477    pub fn construct_duals(lp: *mut lprec) -> libc::c_uchar;
4478    pub fn construct_sensitivity_duals(lp: *mut lprec)
4479     -> libc::c_uchar;
4480    pub fn construct_sensitivity_obj(lp: *mut lprec)
4481     -> libc::c_uchar;
4482    pub fn add_GUB(lp: *mut lprec, name: *mut libc::c_char,
4483                   priority: libc::c_int,
4484                   count: libc::c_int,
4485                   sosvars: *mut libc::c_int)
4486     -> libc::c_int;
4487    pub fn push_basis(lp: *mut lprec, basisvar: *mut libc::c_int,
4488                      isbasic: *mut libc::c_uchar,
4489                      islower: *mut libc::c_uchar) -> *mut basisrec;
4490    pub fn compare_basis(lp: *mut lprec) -> libc::c_uchar;
4491    pub fn restore_basis(lp: *mut lprec) -> libc::c_uchar;
4492    pub fn pop_basis(lp: *mut lprec, restore: libc::c_uchar)
4493     -> libc::c_uchar;
4494    pub fn is_BasisReady(lp: *mut lprec) -> libc::c_uchar;
4495    pub fn is_slackbasis(lp: *mut lprec) -> libc::c_uchar;
4496    pub fn verify_basis(lp: *mut lprec) -> libc::c_uchar;
4497    pub fn unload_basis(lp: *mut lprec, restorelast: libc::c_uchar)
4498     -> libc::c_int;
4499    pub fn perturb_bounds(lp: *mut lprec, perturbed: *mut BBrec,
4500                          doRows: libc::c_uchar,
4501                          doCols: libc::c_uchar,
4502                          includeFIXED: libc::c_uchar)
4503     -> libc::c_int;
4504    pub fn validate_bounds(lp: *mut lprec,
4505                           upbo: *mut libc::c_double,
4506                           lowbo: *mut libc::c_double)
4507     -> libc::c_uchar;
4508    pub fn impose_bounds(lp: *mut lprec, upbo: *mut libc::c_double,
4509                         lowbo: *mut libc::c_double)
4510     -> libc::c_uchar;
4511    pub fn unload_BB(lp: *mut lprec) -> libc::c_int;
4512    pub fn feasibilityOffset(lp: *mut lprec, isdual: libc::c_uchar)
4513     -> libc::c_double;
4514    pub fn isP1extra(lp: *mut lprec) -> libc::c_uchar;
4515    pub fn get_refactfrequency(lp: *mut lprec,
4516                               _final: libc::c_uchar)
4517     -> libc::c_double;
4518    pub fn findBasicFixedvar(lp: *mut lprec, afternr: libc::c_int,
4519                             slacksonly: libc::c_uchar)
4520     -> libc::c_int;
4521    pub fn isBasisVarFeasible(lp: *mut lprec, tol: libc::c_double,
4522                              basis_row: libc::c_int)
4523     -> libc::c_uchar;
4524    pub fn isPrimalFeasible(lp: *mut lprec, tol: libc::c_double,
4525                            infeasibles: *mut libc::c_int,
4526                            feasibilitygap: *mut libc::c_double)
4527     -> libc::c_uchar;
4528    pub fn isDualFeasible(lp: *mut lprec, tol: libc::c_double,
4529                          boundflips: *mut libc::c_int,
4530                          infeasibles: *mut libc::c_int,
4531                          feasibilitygap: *mut libc::c_double)
4532     -> libc::c_uchar;
4533    pub fn preprocess(lp: *mut lprec) -> libc::c_int;
4534    pub fn postprocess(lp: *mut lprec);
4535    pub fn performiteration(lp: *mut lprec, rownr: libc::c_int,
4536                            varin: libc::c_int,
4537                            theta: libc::c_double,
4538                            primal: libc::c_uchar,
4539                            allowminit: libc::c_uchar,
4540                            prow: *mut libc::c_double,
4541                            nzprow: *mut libc::c_int,
4542                            pcol: *mut libc::c_double,
4543                            nzpcol: *mut libc::c_int,
4544                            boundswaps: *mut libc::c_int)
4545     -> libc::c_uchar;
4546    pub fn transfer_solution(lp: *mut lprec,
4547                             dofinal: libc::c_uchar);
4548    pub fn scaled_floor(lp: *mut lprec, colnr: libc::c_int,
4549                        value: libc::c_double,
4550                        epsscale: libc::c_double)
4551     -> libc::c_double;
4552    pub fn scaled_ceil(lp: *mut lprec, colnr: libc::c_int,
4553                       value: libc::c_double,
4554                       epsscale: libc::c_double)
4555     -> libc::c_double;
4556    pub fn varmap_lock(lp: *mut lprec);
4557    pub fn varmap_clear(lp: *mut lprec);
4558    pub fn varmap_canunlock(lp: *mut lprec) -> libc::c_uchar;
4559    pub fn varmap_addconstraint(lp: *mut lprec);
4560    pub fn varmap_addcolumn(lp: *mut lprec);
4561    pub fn varmap_delete(lp: *mut lprec, base: libc::c_int,
4562                         delta: libc::c_int, varmap: *mut LLrec);
4563    pub fn varmap_compact(lp: *mut lprec, prev_rows: libc::c_int,
4564                          prev_cols: libc::c_int);
4565    pub fn varmap_validate(lp: *mut lprec, varno: libc::c_int)
4566     -> libc::c_uchar;
4567    pub fn del_varnameex(lp: *mut lprec, namelist: *mut *mut hashelem,
4568                         items: libc::c_int, ht: *mut hashtable,
4569                         varnr: libc::c_int, varmap: *mut LLrec)
4570     -> libc::c_uchar;
4571    pub fn init_pseudocost(lp: *mut lprec, pseudotype: libc::c_int)
4572     -> *mut BBPSrec;
4573    pub fn free_pseudocost(lp: *mut lprec);
4574    pub fn get_pseudorange(pc: *mut BBPSrec, mipvar: libc::c_int,
4575                           varcode: libc::c_int)
4576     -> libc::c_double;
4577    pub fn update_pseudocost(pc: *mut BBPSrec, mipvar: libc::c_int,
4578                             varcode: libc::c_int,
4579                             capupper: libc::c_uchar,
4580                             varsol: libc::c_double);
4581    pub fn get_pseudobranchcost(pc: *mut BBPSrec,
4582                                mipvar: libc::c_int,
4583                                dofloor: libc::c_uchar)
4584     -> libc::c_double;
4585    pub fn get_pseudonodecost(pc: *mut BBPSrec, mipvar: libc::c_int,
4586                              vartype: libc::c_int,
4587                              varsol: libc::c_double)
4588     -> libc::c_double;
4589    pub fn set_OF_override(lp: *mut lprec,
4590                           ofVector: *mut libc::c_double);
4591    pub fn set_OF_p1extra(lp: *mut lprec, p1extra: libc::c_double);
4592    pub fn unset_OF_p1extra(lp: *mut lprec);
4593    pub fn modifyOF1(lp: *mut lprec, index: libc::c_int,
4594                     ofValue: *mut libc::c_double,
4595                     mult: libc::c_double)
4596     -> libc::c_uchar;
4597    pub fn get_OF_active(lp: *mut lprec, varnr: libc::c_int,
4598                         mult: libc::c_double)
4599     -> libc::c_double;
4600    pub fn is_OF_nz(lp: *mut lprec, colnr: libc::c_int)
4601     -> libc::c_uchar;
4602    pub fn get_basisOF(lp: *mut lprec, coltarget: *mut libc::c_int,
4603                       crow: *mut libc::c_double,
4604                       colno: *mut libc::c_int)
4605     -> libc::c_int;
4606    pub fn get_basiscolumn(lp: *mut lprec, j: libc::c_int,
4607                           rn: *mut libc::c_int,
4608                           bj: *mut libc::c_double)
4609     -> libc::c_int;
4610    pub fn obtain_column(lp: *mut lprec, varin: libc::c_int,
4611                         pcol: *mut libc::c_double,
4612                         nzlist: *mut libc::c_int,
4613                         maxabs: *mut libc::c_int)
4614     -> libc::c_int;
4615    pub fn compute_theta(lp: *mut lprec, rownr: libc::c_int,
4616                         theta: *mut libc::c_double,
4617                         isupbound: libc::c_int,
4618                         HarrisScalar: libc::c_double,
4619                         primal: libc::c_uchar)
4620     -> libc::c_int;
4621    pub fn findBasisPos(lp: *mut lprec, notint: libc::c_int,
4622                        var_basic: *mut libc::c_int)
4623     -> libc::c_int;
4624    pub fn check_degeneracy(lp: *mut lprec,
4625                            pcol: *mut libc::c_double,
4626                            degencount: *mut libc::c_int)
4627     -> libc::c_uchar;
4628}