All files / transpiler/output/codegen/types IHeaderOptions.ts

0% Statements 0/0
0% Branches 0/0
0% Functions 0/0
0% Lines 0/0

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                                                                                                                   
/**
 * Options for header file generation
 */
interface IHeaderOptions {
  /** Include system headers in the output */
  includeSystemHeaders?: boolean;
 
  /** Only generate declarations for exported symbols */
  exportedOnly?: 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;
}
 
export default IHeaderOptions;