|
| 1 | +//===-- Printf Configuration Handler ----------------------------*- C++ -*-===// |
| 2 | +// |
| 3 | +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| 4 | +// See https://llvm.org/LICENSE.txt for license information. |
| 5 | +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| 6 | +// |
| 7 | +//===----------------------------------------------------------------------===// |
| 8 | + |
| 9 | +#ifndef LLVM_LIBC_SRC_STDIO_PRINTF_CORE_PRINTF_CONFIG_H |
| 10 | +#define LLVM_LIBC_SRC_STDIO_PRINTF_CORE_PRINTF_CONFIG_H |
| 11 | + |
| 12 | +// The index array buffer is always initialized when printf is called. In cases |
| 13 | +// where index mode is necessary but memory is limited, or when index mode |
| 14 | +// performance is important and memory is available, this compile option |
| 15 | +// provides a knob to adjust memory usage to an appropriate level. 128 is picked |
| 16 | +// as the default size since that's big enough to handle even extreme cases and |
| 17 | +// the runtime penalty for not having enough space is severe. |
| 18 | +// When an index mode argument is requested, if its index is before the most |
| 19 | +// recently read index, then the arg list must be restarted from the beginning, |
| 20 | +// and all of the arguments before the new index must be requested with the |
| 21 | +// correct types. The index array caches the types of the values in the arg |
| 22 | +// list. For every number between the last index cached in the array and the |
| 23 | +// requested index, the format string must be parsed again to find the |
| 24 | +// type of that index. As an example, if the format string has 20 indexes, and |
| 25 | +// the index array is 10, then when the 20th index is requested the first 10 |
| 26 | +// types can be found immediately, and then the format string must be parsed 10 |
| 27 | +// times to find the types of the next 10 arguments. |
| 28 | +#ifndef LLVM_LIBC_PRINTF_INDEX_ARR_LEN |
| 29 | +#define LLVM_LIBC_PRINTF_INDEX_ARR_LEN 128 |
| 30 | +#endif |
| 31 | + |
| 32 | +// TODO(michaelrj): Move the other printf configuration options into this file. |
| 33 | + |
| 34 | +#endif // LLVM_LIBC_SRC_STDIO_PRINTF_CORE_PRINTF_CONFIG_H |
0 commit comments