Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | /**
* Options for header file generation
*/
interface IHeaderOptions {
/** Include system headers in the output */
includeSystemHeaders?: boolean;
/**
* Issue #424: User-provided includes from the source file.
* These will be added to the generated header if any extern declarations
* use macros (non-numeric array dimensions) from these headers.
* Example: ['#include "config.h"', '#include "sizes.h"']
*/
userIncludes?: string[];
/**
* Issue #497: Map of external type names to their C header include directives.
* When a type from a C header is used in public interfaces, the header should
* be included rather than generating a conflicting forward declaration.
* Example: Map { "Data" => '#include "data-types.h"' }
*/
externalTypeHeaders?: ReadonlyMap<string, string>;
/**
* Issue #409: C++ mode - use references instead of pointers for parameters.
* This allows C-Next callbacks to match C++ function pointer signatures.
*/
cppMode?: boolean;
/**
* Issue #1164: the source's own C/C++ headers were propagated into this
* header because it names something only they define.
*
* When they are present an external type's real declaration is already in
* scope, and the usual `typedef struct X X;` forward declaration becomes a
* competing -- and for a pointer typedef, contradictory -- declaration of the
* same name. Guessing is only justified when nothing better is available.
*/
readonly cHeadersIncluded?: boolean;
/**
* ADR-040: this translation unit uses the `ISR` function-pointer type.
*
* The header used to decide this for itself by scanning exported
* declarations, which is a strict subset of "the file needs ISR" -- an `ISR`
* local inside a function body is invisible to it. Since the .c stops
* emitting the typedef once it includes the header, that subset made the
* suppression unsound: the type was emitted nowhere. Both sides now read the
* same flag.
*/
readonly needsIsrTypedef?: boolean;
/**
* Issue #1205: structs whose ADR-029 init function the `.c` emitted, so the
* header can declare each one (MISRA C:2012 Rule 8.4).
*
* Passed in rather than derived here for the same reason as the flag above:
* the header's own view of struct fields is a superset -- it includes
* scope-nested structs, which get no init function (#1283) -- so deciding
* locally would declare functions that are never defined.
*/
readonly generatedStructInits?: ReadonlySet<string>;
/**
* #1453 / ADR-004: the accessor `#define` blocks of the registers this
* header defines, rendered by the `.c` generator. Same contract as
* `generatedStructInits`: captured, never read live.
*/
readonly registerBlocks?: readonly string[];
/**
* Issue #1517: the system headers this header emits, decided by 2.2 Plan.
*
* Not a flag the renderer interprets -- the strings it prints. It used to
* emit `<stdint.h>` and `<stdbool.h>` unconditionally while the `.c` was
* precise, so one question had two derivations that agreed only where both
* happened to be true.
*/
systemIncludes?: readonly string[];
}
export default IHeaderOptions;
|