]> Git Repo - binutils.git/blob - gdb/rdi-share/params.h
Applied patches from [email protected] to implement the Angel remote
[binutils.git] / gdb / rdi-share / params.h
1 /* 
2  * Copyright (C) 1995 Advanced RISC Machines Limited. All rights reserved.
3  * 
4  * This software may be freely used, copied, modified, and distributed
5  * provided that the above copyright notice is preserved in all copies of the
6  * software.
7  */
8
9 /* -*-C-*-
10  *
11  * $Revision$
12  *     $Date$
13  *
14  *
15  *   Project: ANGEL
16  *
17  *     Title: Parameter negotiation structures and utilities
18  */
19
20 #ifndef angel_params_h
21 #define angel_params_h
22
23 #include "angel.h"
24 #include "adp.h"
25
26 #ifndef TARGET
27 # include "host.h"
28 #endif
29
30 /* A single parameter, with tag */
31 typedef struct Parameter {
32       ADP_Parameter     type;
33       unsigned int      value;
34 } Parameter;
35
36 /* A list of parameter values, with tag */
37 typedef struct ParameterList {
38       ADP_Parameter     type;
39       unsigned int      num_options;
40       unsigned int     *option; /* points to array of values */
41 } ParameterList;
42
43 /* A configuration of one or more parameters */
44 typedef struct ParameterConfig {
45       unsigned int      num_parameters;
46       Parameter        *param;  /* pointer to array of Parameters */
47 } ParameterConfig;
48
49 /* A set of parameter options */
50 typedef struct ParameterOptions {
51       unsigned int      num_param_lists;
52       ParameterList    *param_list; /* pointer to array of ParamLists */
53 } ParameterOptions;
54
55 /*
56  * Function: Angel_MatchParams
57  *  Purpose: find a configuration from the requested options which is
58  *           the best match from the supported options.
59  *
60  *   Params:
61  *              Input: requested      The offered set of parameters.
62  *                     supported      The supported set of parameters.
63  *
64  *            Returns: ptr to config  A match has been made, ptr to result
65  *                                      will remain valid until next call to
66  *                                      this function.
67  *                     NULL           Match not possible
68  */
69 const ParameterConfig *Angel_MatchParams( const ParameterOptions *requested,
70                                           const ParameterOptions *supported );
71
72 /*
73  * Function: Angel_FindParam
74  *  Purpose: find the value of a given parameter from a config.
75  *
76  *   Params:
77  *              Input: type     parameter type to find
78  *                     config   config to search
79  *             Output: value    parameter value if found
80  *
81  *            Returns: TRUE     parameter found
82  *                     FALSE    parameter not found
83  */
84 bool Angel_FindParam( ADP_Parameter          type,
85                       const ParameterConfig *config,
86                       unsigned int          *value );
87
88 /*
89  * Function: Angel_StoreParam
90  *  Purpose: store the value of a given parameter in a config.
91  *
92  *   Params:
93  *             In/Out: config   config to store in
94  *              Input: type     parameter type to store
95  *                     value    parameter value if found
96  *
97  *            Returns: TRUE     parameter found and new value stored
98  *                     FALSE    parameter not found
99  */
100 bool Angel_StoreParam( ParameterConfig *config,
101                        ADP_Parameter    type,
102                        unsigned int     value );
103
104 /*
105  * Function: Angel_FindParamList
106  *  Purpose: find the parameter list of a given parameter from an options.
107  *
108  *   Params:
109  *              Input: type     parameter type to find
110  *                     options  options block to search
111  *
112  *            Returns: pointer to list
113  *                     NULL     parameter not found
114  */
115 ParameterList *Angel_FindParamList( const ParameterOptions *options,
116                                     ADP_Parameter           type );
117
118 /*
119  * Function: Angel_BuildParamConfigMessage
120  *  Purpose: write a parameter config to a buffer in ADP format.
121  *
122  *   Params:
123  *              Input: buffer   where to write to
124  *                     config   the parameter config to write
125  *
126  *            Returns: number of characters written to buffer
127  */
128 unsigned int Angel_BuildParamConfigMessage( unsigned char         *buffer,
129                                             const ParameterConfig *config );
130
131 /*
132  * Function: Angel_BuildParamOptionsMessage
133  *  Purpose: write a parameter Options to a buffer in ADP format.
134  *
135  *   Params:
136  *              Input: buffer   where to write to
137  *                     options  the options block to write
138  *
139  *            Returns: number of characters written to buffer
140  */
141 unsigned int Angel_BuildParamOptionsMessage( unsigned char          *buffer,
142                                              const ParameterOptions *options );
143
144 /*
145  * Function: Angel_ReadParamConfigMessage
146  *  Purpose: read a parameter config from a buffer where it is in ADP format.
147  *
148  *   Params:
149  *              Input: buffer   where to read from
150  *             In/Out: config   the parameter config to read to, which must
151  *                              be set up on entry with a valid array, and
152  *                              the size of the array in num_parameters.
153  *
154  *            Returns: TRUE     okay
155  *                     FALSE    not enough space in config
156  */
157 bool Angel_ReadParamConfigMessage( const unsigned char *buffer,
158                                    ParameterConfig     *config );
159
160 /*
161  * Function: Angel_ReadParamOptionsMessage
162  *  Purpose: read a parameter options from a buffer
163  *             where it is in ADP format.
164  *
165  *   Params:
166  *              Input: buffer   where to read from
167  *             In/Out: options  the parameter options block to read to, 
168  *                                which must be set up on entry with a valid
169  *                                array, and the size of the array in
170  *                                num_parameters.  Each param_list must
171  *                                also be set up in the same way.
172  *
173  *            Returns: TRUE     okay
174  *                     FALSE    not enough space in options
175  */
176 bool Angel_ReadParamOptionsMessage( const unsigned char *buffer,
177                                     ParameterOptions    *options );
178
179 #endif /* ndef angel_params_h */
180
181 /* EOF params.h */
This page took 0.035003 seconds and 4 git commands to generate.