29 
*/ 
*/ 
30 


31 
/** @file 
/** @file 
32 
* SLV type definition for ASCEND solvers. 
Type definitions as they should be seen by solver engines. 
33 
* <pre> 

34 
* Contents: Solver type definitions. 
We're trying to hide the implementation detail from the solver engines, 
35 
* 
to force them to use the API defined in slv_common.h, slv_client.h, etc. 
36 
* Authors: Ben Allan 

37 
* 
Requires: (none) 
38 
* Dates: 06/96  original version 
*//* 
39 
* 
by Ben Allan 
40 
* Description: The types we want system and slv to share are here. 
06/96  original version 
41 
* 
*/ 

* Requires: none 


* </pre> 


*/ 

42 


43 
#ifndef ASC_SLV_TYPES_H 
#ifndef ASC_SLV_TYPES_H 
44 
#define ASC_SLV_TYPES_H 
#define ASC_SLV_TYPES_H 
45 


46 
typedef void *SlvBackendToken; 
typedef void *SlvBackendToken; 
47 
/**< 
/**< 
48 
*** Backends that provide the residuals, gradients, and so forth 
Backends that provide the residuals, gradients, and so forth 
49 
*** may be objectoriented and associate some sort of pointer 
may be objectoriented and associate some sort of pointer 
50 
*** with each of the variables or relations they are serving up. 
with each of the variables or relations they are serving up. 
51 
*** In the case of ASCEND, this is a struct Instance *. 

52 
*** Since we want the Slv interface to appear totally backend 
<b>In the case of ASCEND, a SlvBackendToken is simply a pointer to an 
53 
*** independent (in particular because it is convenient), we 
Instance structure.</b> 
54 
*** define our interface in terms of SlvBackendTokens. 

55 
*** Any backend can be connected by an appropriate set of 
Since we want the Slv interface to appear totally backend 
56 
*** routines conforming to the headers of slv_*, rel.h, var.h 
independent (in particular because it is convenient), we 
57 
*** and system.h.<br><br> 
define our interface in terms of SlvBackendTokens. 
58 
*** 
Any backend can be connected by an appropriate set of 
59 
*** We haven't yet been able to think through the possibilities of 
routines conforming to the headers of slv_*, rel.h, var.h 
60 
*** having multiple backends operating _simultaneously_, mainly 
and system.h. 
61 
*** because the ASCEND backend is quite capable of wrapping all 

62 
*** the other backends we can think of. 
We haven't yet been able to think through the possibilities of 
63 
**/ 
having multiple backends operating _simultaneously_, mainly 
64 

because the ASCEND backend is quite capable of wrapping all 
65 

the other backends we can think of. 
66 

*/ 
67 


68 
typedef struct slv_system_structure *slv_system_t; 
typedef struct slv_system_structure *slv_system_t; 
69 
/**< 
/**< 
70 
*** This is the handle which should be used in all of the functions 
This is the handle which should be used in all of the functions 
71 
*** in slv and system to reference a mathematical problem. 
in slv and system to reference a mathematical problem. 
72 
**/ 
*/ 
73 


74 
#endif /* ASC_SLV_TYPES_H */ 
#endif /* ASC_SLV_TYPES_H */ 
75 

