source: rtems/cpukit/include/rtems/stringto.h @ 7e86e00

5
Last change on this file since 7e86e00 was 2afb22b, checked in by Chris Johns <chrisj@…>, on 12/23/17 at 07:18:56

Remove make preinstall

A speciality of the RTEMS build system was the make preinstall step. It
copied header files from arbitrary locations into the build tree. The
header files were included via the -Bsome/build/tree/path GCC command
line option.

This has at least seven problems:

  • The make preinstall step itself needs time and disk space.
  • Errors in header files show up in the build tree copy. This makes it hard for editors to open the right file to fix the error.
  • There is no clear relationship between source and build tree header files. This makes an audit of the build process difficult.
  • The visibility of all header files in the build tree makes it difficult to enforce API barriers. For example it is discouraged to use BSP-specifics in the cpukit.
  • An introduction of a new build system is difficult.
  • Include paths specified by the -B option are system headers. This may suppress warnings.
  • The parallel build had sporadic failures on some hosts.

This patch removes the make preinstall step. All installed header
files are moved to dedicated include directories in the source tree.
Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc,
etc. Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g.
erc32, imx, qoriq, etc.

The new cpukit include directories are:

  • cpukit/include
  • cpukit/score/cpu/@RTEMS_CPU@/include
  • cpukit/libnetworking

The new BSP include directories are:

  • bsps/include
  • bsps/@RTEMS_CPU@/include
  • bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include

There are build tree include directories for generated files.

The include directory order favours the most general header file, e.g.
it is not possible to override general header files via the include path
order.

The "bootstrap -p" option was removed. The new "bootstrap -H" option
should be used to regenerate the "headers.am" files.

Update #3254.

  • Property mode set to 100644
File size: 7.9 KB
Line 
1/**
2 * @file rtems/stringto.h
3 *
4 * @defgroup libmisc_conv_help Conversion Helpers
5 *
6 * @ingroup libmisc
7 * @brief Convert String to Pointer (with validation)
8 *
9 * This file defines the interface to a set of string conversion helpers.
10 */
11
12/*
13 * COPYRIGHT (c) 2009-2011.
14 * On-Line Applications Research Corporation (OAR).
15 *
16 * The license and distribution terms for this file may be
17 * found in the file LICENSE in this distribution or at
18 * http://www.rtems.org/license/LICENSE.
19 */
20
21#ifndef _RTEMS_STRINGTO_H
22#define _RTEMS_STRINGTO_H
23/**
24 *  @defgroup libmisc_conv_help Conversion Helpers
25 *
26 *  @ingroup libmisc
27 */
28/**@{*/
29
30#include <rtems.h>
31
32/**
33 * @brief Convert String to Pointer (with validation).
34 *
35 * This method converts a string to a pointer (void *) with
36 * basic numeric validation.
37 *
38 * @param[in] s is the string to convert
39 * @param[in] n points to the variable to place the converted output in
40 * @param[in] endptr is used to keep track of the position in the string
41 *
42 * @retval This method returns RTEMS_SUCCESSFUL on successful conversion
43 *         and *n is filled in. Otherwise, the status indicates the
44 *         source of the error.
45 */
46rtems_status_code rtems_string_to_pointer(
47  const char     *s,
48  void          **n,
49  char          **endptr
50);
51
52/**
53 * @brief Convert String to Unsigned Character (with validation).
54 *
55 * This method converts a string to an unsigned character with
56 * range validation.
57 *
58 * @param[in] s is the string to convert
59 * @param[in] n points to the variable to place the converted output in
60 * @param[in] endptr is used to keep track of the position in the string
61 * @param[in] base is the expected base of the number
62 *
63 * @retval This method returns RTEMS_SUCCESSFUL on successful conversion
64 *         and *n is filled in. Otherwise, the status indicates the
65 *         source of the error.
66 */
67rtems_status_code rtems_string_to_unsigned_char(
68  const char     *s,
69  unsigned char  *n,
70  char          **endptr,
71  int             base
72);
73
74/**
75 * @brief Convert String to Int (with validation).
76 *
77 * This method converts a string to an int with range validation.
78 *
79 * @param[in] s is the string to convert
80 * @param[in] n points to the variable to place the converted output in
81 * @param[in] endptr is used to keep track of the position in the string
82 * @param[in] base is the expected base of the number
83 *
84 * @retval This method returns RTEMS_SUCCESSFUL on successful conversion
85 *         and *n is filled in. Otherwise, the status indicates the
86 *         source of the error.
87 */
88rtems_status_code rtems_string_to_int(
89  const char  *s,
90  int         *n,
91  char       **endptr,
92  int          base
93);
94
95/**
96 * @brief Convert String to Unsigned Int (with validation).
97 *
98 * This method converts a string to an unsigned int with range validation.
99 *
100 * @param[in] s is the string to convert
101 * @param[in] n points to the variable to place the converted output in
102 * @param[in] endptr is used to keep track of the position in the string
103 * @param[in] base is the expected base of the number
104 *
105 * @retval This method returns RTEMS_SUCCESSFUL on successful conversion
106 *         and *n is filled in. Otherwise, the status indicates the
107 *         source of the error.
108 */
109rtems_status_code rtems_string_to_unsigned_int(
110  const char    *s,
111  unsigned int  *n,
112  char         **endptr,
113  int            base
114);
115
116/**
117 * @brief Convert String to Long (with validation).
118 *
119 * This method converts a string to a long with
120 * range validation.
121 *
122 * @param[in] s is the string to convert
123 * @param[in] n points to the variable to place the converted output in
124 * @param[in] endptr is used to keep track of the position in the string
125 * @param[in] base is the expected base of the number
126 *
127 * @retval This method returns RTEMS_SUCCESSFUL on successful conversion
128 *         and *n is filled in. Otherwise, the status indicates the
129 *         source of the error.
130 */
131rtems_status_code rtems_string_to_long(
132  const char  *s,
133  long        *n,
134  char       **endptr,
135  int          base
136);
137
138/**
139 * @brief Convert String to Unsigned Long (with validation).
140 *
141 * This method converts a string to an unsigned long with
142 * range validation.
143 *
144 * @param[in] s is the string to convert
145 * @param[in] n points to the variable to place the converted output in
146 * @param[in] endptr is used to keep track of the position in the string
147 * @param[in] base is the expected base of the number
148 *
149 * @retval This method returns RTEMS_SUCCESSFUL on successful conversion
150 *         and *n is filled in. Otherwise, the status indicates the
151 *         source of the error.
152 */
153rtems_status_code rtems_string_to_unsigned_long(
154  const char     *s,
155  unsigned long  *n,
156  char          **endptr,
157  int             base
158);
159
160/**
161 * @brief Convert String to Long Long (with validation).
162 *
163 * This method converts a string to a long long with
164 * range validation.
165 *
166 * @param[in] s is the string to convert
167 * @param[in] n points to the variable to place the converted output in
168 * @param[in] endptr is used to keep track of the position in the string
169 * @param[in] base is the expected base of the number
170 *
171 * @retval This method returns RTEMS_SUCCESSFUL on successful conversion
172 *         and *n is filled in. Otherwise, the status indicates the
173 *         source of the error.
174 */
175rtems_status_code rtems_string_to_long_long(
176  const char  *s,
177  long long   *n,
178  char       **endptr,
179  int          base
180);
181
182/**
183 * @brief Convert String to Unsigned Long Long (with validation).
184 *
185 * This method converts a string to an unsigned character with
186 * range validation.
187 *
188 * @param[in] s is the string to convert
189 * @param[in] n points to the variable to place the converted output in
190 * @param[in] endptr is used to keep track of the position in the string
191 * @param[in] base is the expected base of the number
192 *
193 * @retval This method returns RTEMS_SUCCESSFUL on successful conversion
194 *         and *n is filled in. Otherwise, the status indicates the
195 *         source of the error.
196 */
197rtems_status_code rtems_string_to_unsigned_long_long(
198  const char           *s,
199  unsigned long long   *n,
200  char                **endptr,
201  int                   base
202);
203
204/**
205 * @brief Convert String to Float (with validation).
206 *
207 * This method converts a string to a float with range validation.
208 *
209 * @param[in] s is the string to convert
210 * @param[in] n points to the variable to place the converted output in
211 * @param[in] endptr is used to keep track of the position in the string
212 *
213 * @retval This method returns RTEMS_SUCCESSFUL on successful conversion
214 *         and *n is filled in. Otherwise, the status indicates the
215 *         source of the error.
216 */
217rtems_status_code rtems_string_to_float(
218  const char   *s,
219  float        *n,
220  char        **endptr
221);
222
223/**
224 * @brief Convert String to Double (with validation).
225 *
226 * This method converts a string to a double with range validation.
227 *
228 * @param[in] s is the string to convert
229 * @param[in] n points to the variable to place the converted output in
230 * @param[in] endptr is used to keep track of the position in the string
231 *
232 * @retval This method returns RTEMS_SUCCESSFUL on successful conversion
233 *         and *n is filled in. Otherwise, the status indicates the
234 *         source of the error.
235 */
236rtems_status_code rtems_string_to_double(
237  const char   *s,
238  double       *n,
239  char        **endptr
240);
241
242/**
243 * @brief Convert String to long double (with validation).
244 *
245 * This method converts a string to a long double with range validation.
246 *
247 * @param[in] s is the string to convert
248 * @param[in] n points to the variable to place the converted output in
249 * @param[in] endptr is used to keep track of the position in the string
250 *
251 * @retval This method returns RTEMS_SUCCESSFUL on successful conversion
252 *         and *n is filled in. Otherwise, the status indicates the
253 *         source of the error.
254 */
255rtems_status_code rtems_string_to_long_double(
256  const char   *s,
257  long double  *n,
258  char        **endptr
259);
260
261#endif
262/**@}*/
Note: See TracBrowser for help on using the repository browser.