AFLOW
 
Loading...
Searching...
No Matches
aurostd_incbin_defs.h File Reference

Go to the source code of this file.

Macros

#define INCBIN_HDR
 
#define INCBIN_PREFIX   afdata
 
#define INCBIN_SILENCE_BITCODE_WARNING
 
#define INCBIN_ALIGNMENT_INDEX   3
 
#define INCBIN_ALIGN_SHIFT_0   1
 
#define INCBIN_ALIGN_SHIFT_1   2
 
#define INCBIN_ALIGN_SHIFT_2   4
 
#define INCBIN_ALIGN_SHIFT_3   8
 
#define INCBIN_ALIGN_SHIFT_4   16
 
#define INCBIN_ALIGN_SHIFT_5   32
 
#define INCBIN_ALIGN_SHIFT_6   64
 
#define INCBIN_ALIGNMENT   INCBIN_CONCATENATE(INCBIN_CONCATENATE(INCBIN_ALIGN_SHIFT, _), INCBIN_ALIGNMENT_INDEX)
 
#define INCBIN_STR(X)
 
#define INCBIN_STRINGIZE(X)
 
#define INCBIN_CAT(X, Y)
 
#define INCBIN_CONCATENATE(X, Y)
 
#define INCBIN_EVAL(X)
 
#define INCBIN_INVOKE(N, ...)
 
#define INCBIN_VA_ARG_COUNTER(_1, _2, _3, N, ...)
 
#define INCBIN_VA_ARGC(...)
 
#define INCBIN_MACRO   ".incbin"
 
#define INCBIN_ALIGN   __attribute__((aligned(INCBIN_ALIGNMENT)))
 
#define INCBIN_ALIGN_HOST   ".align " INCBIN_STRINGIZE(INCBIN_ALIGNMENT) "\n"
 
#define INCBIN_ALIGN_BYTE   ".align 1\n"
 
#define INCBIN_EXTERNAL   extern
 
#define INCBIN_CONST   const
 
#define INCBIN_OUTPUT_SECTION   ".rodata"
 Optionally override the linker section into which size and data is emitted.
 
#define INCBIN_OUTPUT_DATA_SECTION   INCBIN_OUTPUT_SECTION
 Optionally override the linker section into which data is emitted.
 
#define INCBIN_OUTPUT_SIZE_SECTION   INCBIN_OUTPUT_SECTION
 Optionally override the linker section into which size is emitted.
 
#define INCBIN_SECTION   ".section " INCBIN_OUTPUT_SECTION "\n"
 
#define INCBIN_GLOBAL(NAME)
 
#define INCBIN_INT   ".int "
 
#define INCBIN_MANGLE   ""
 
#define INCBIN_TYPE(NAME)
 
#define INCBIN_BYTE   ".byte "
 
#define INCBIN_STYLE_CAMEL   0
 
#define INCBIN_STYLE_SNAKE   1
 
#define INCBIN_STYLE   INCBIN_STYLE_CAMEL
 Specify the prefix to use for symbol names.
 
#define INCBIN_STYLE_0_DATA   Data
 
#define INCBIN_STYLE_0_END   End
 
#define INCBIN_STYLE_0_SIZE   Size
 
#define INCBIN_STYLE_1_DATA   _data
 
#define INCBIN_STYLE_1_END   _end
 
#define INCBIN_STYLE_1_SIZE   _size
 
#define INCBIN_STYLE_IDENT(TYPE)
 
#define INCBIN_STYLE_STRING(TYPE)
 
#define INCBIN_GLOBAL_LABELS(NAME, TYPE)
 
#define INCBIN_EXTERN(...)
 Externally reference binary data included in another translation unit.
 
#define INCBIN_EXTERN_1(NAME, ...)
 
#define INCBIN_EXTERN_2(TYPE, NAME)
 
#define INCTXT_EXTERN(NAME)
 Externally reference textual data included in another translation unit.
 
#define INCBIN(...)
 Include a binary file into the current translation unit.
 
#define INCBIN_1(...)
 
#define INCBIN_2(NAME, FILENAME)
 
#define INCBIN_3(TYPE, NAME, FILENAME)
 
#define INCBIN_COMMON(TYPE, NAME, FILENAME, TERMINATOR)
 
#define INCTXT(NAME, FILENAME)
 Include a textual file into the current translation unit.
 

Macro Definition Documentation

◆ INCBIN_HDR

#define INCBIN_HDR

Definition at line 39 of file aurostd_incbin_defs.h.

◆ INCBIN_PREFIX

#define INCBIN_PREFIX   afdata

Definition at line 41 of file aurostd_incbin_defs.h.

◆ INCBIN_SILENCE_BITCODE_WARNING

#define INCBIN_SILENCE_BITCODE_WARNING

Definition at line 42 of file aurostd_incbin_defs.h.

◆ INCBIN_ALIGNMENT_INDEX

#define INCBIN_ALIGNMENT_INDEX   3

Definition at line 51 of file aurostd_incbin_defs.h.

◆ INCBIN_ALIGN_SHIFT_0

#define INCBIN_ALIGN_SHIFT_0   1

Definition at line 57 of file aurostd_incbin_defs.h.

◆ INCBIN_ALIGN_SHIFT_1

#define INCBIN_ALIGN_SHIFT_1   2

Definition at line 58 of file aurostd_incbin_defs.h.

◆ INCBIN_ALIGN_SHIFT_2

#define INCBIN_ALIGN_SHIFT_2   4

Definition at line 59 of file aurostd_incbin_defs.h.

◆ INCBIN_ALIGN_SHIFT_3

#define INCBIN_ALIGN_SHIFT_3   8

Definition at line 60 of file aurostd_incbin_defs.h.

◆ INCBIN_ALIGN_SHIFT_4

#define INCBIN_ALIGN_SHIFT_4   16

Definition at line 61 of file aurostd_incbin_defs.h.

◆ INCBIN_ALIGN_SHIFT_5

#define INCBIN_ALIGN_SHIFT_5   32

Definition at line 62 of file aurostd_incbin_defs.h.

◆ INCBIN_ALIGN_SHIFT_6

#define INCBIN_ALIGN_SHIFT_6   64

Definition at line 63 of file aurostd_incbin_defs.h.

◆ INCBIN_ALIGNMENT

#define INCBIN_ALIGNMENT   INCBIN_CONCATENATE(INCBIN_CONCATENATE(INCBIN_ALIGN_SHIFT, _), INCBIN_ALIGNMENT_INDEX)

Definition at line 66 of file aurostd_incbin_defs.h.

◆ INCBIN_STR

#define INCBIN_STR ( X)
Value:
#X

Definition at line 69 of file aurostd_incbin_defs.h.

◆ INCBIN_STRINGIZE

#define INCBIN_STRINGIZE ( X)
Value:
#define INCBIN_STR(X)

Definition at line 70 of file aurostd_incbin_defs.h.

◆ INCBIN_CAT

#define INCBIN_CAT ( X,
Y )
Value:
X##Y

Definition at line 72 of file aurostd_incbin_defs.h.

◆ INCBIN_CONCATENATE

#define INCBIN_CONCATENATE ( X,
Y )
Value:
#define INCBIN_CAT(X, Y)

Definition at line 73 of file aurostd_incbin_defs.h.

◆ INCBIN_EVAL

#define INCBIN_EVAL ( X)
Value:
X

Definition at line 75 of file aurostd_incbin_defs.h.

◆ INCBIN_INVOKE

#define INCBIN_INVOKE ( N,
... )
Value:
INCBIN_EVAL(N(__VA_ARGS__))
#define INCBIN_EVAL(X)

Definition at line 76 of file aurostd_incbin_defs.h.

◆ INCBIN_VA_ARG_COUNTER

#define INCBIN_VA_ARG_COUNTER ( _1,
_2,
_3,
N,
... )
Value:
N

Definition at line 78 of file aurostd_incbin_defs.h.

◆ INCBIN_VA_ARGC

#define INCBIN_VA_ARGC ( ...)
Value:
INCBIN_VA_ARG_COUNTER(__VA_ARGS__, 3, 2, 1, 0)
#define INCBIN_VA_ARG_COUNTER(_1, _2, _3, N,...)

Definition at line 79 of file aurostd_incbin_defs.h.

◆ INCBIN_MACRO

#define INCBIN_MACRO   ".incbin"

Definition at line 90 of file aurostd_incbin_defs.h.

◆ INCBIN_ALIGN

#define INCBIN_ALIGN   __attribute__((aligned(INCBIN_ALIGNMENT)))

Definition at line 94 of file aurostd_incbin_defs.h.

◆ INCBIN_ALIGN_HOST

#define INCBIN_ALIGN_HOST   ".align " INCBIN_STRINGIZE(INCBIN_ALIGNMENT) "\n"

Definition at line 118 of file aurostd_incbin_defs.h.

◆ INCBIN_ALIGN_BYTE

#define INCBIN_ALIGN_BYTE   ".align 1\n"

Definition at line 119 of file aurostd_incbin_defs.h.

◆ INCBIN_EXTERNAL

#define INCBIN_EXTERNAL   extern

Definition at line 127 of file aurostd_incbin_defs.h.

◆ INCBIN_CONST

#define INCBIN_CONST   const

Definition at line 128 of file aurostd_incbin_defs.h.

◆ INCBIN_OUTPUT_SECTION

#define INCBIN_OUTPUT_SECTION   ".rodata"

Optionally override the linker section into which size and data is emitted.

Warning
If you use this facility, you might have to deal with platform-specific linker output section naming on your own.

Definition at line 142 of file aurostd_incbin_defs.h.

◆ INCBIN_OUTPUT_DATA_SECTION

#define INCBIN_OUTPUT_DATA_SECTION   INCBIN_OUTPUT_SECTION

Optionally override the linker section into which data is emitted.

Warning
If you use this facility, you might have to deal with platform-specific linker output section naming on your own.

Definition at line 153 of file aurostd_incbin_defs.h.

◆ INCBIN_OUTPUT_SIZE_SECTION

#define INCBIN_OUTPUT_SIZE_SECTION   INCBIN_OUTPUT_SECTION

Optionally override the linker section into which size is emitted.

Warning
If you use this facility, you might have to deal with platform-specific linker output section naming on your own.
Note
This is useful for Harvard architectures where program memory cannot be directly read from the program without special instructions. With this you can chose to put the size variable in RAM rather than ROM.

Definition at line 167 of file aurostd_incbin_defs.h.

◆ INCBIN_SECTION

#define INCBIN_SECTION   ".section " INCBIN_OUTPUT_SECTION "\n"

Definition at line 184 of file aurostd_incbin_defs.h.

◆ INCBIN_GLOBAL

#define INCBIN_GLOBAL ( NAME)
Value:
".global " INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME "\n"
#define INCBIN_STRINGIZE(X)
#define INCBIN_PREFIX

Definition at line 185 of file aurostd_incbin_defs.h.

◆ INCBIN_INT

#define INCBIN_INT   ".int "

Definition at line 189 of file aurostd_incbin_defs.h.

◆ INCBIN_MANGLE

#define INCBIN_MANGLE   ""

Definition at line 194 of file aurostd_incbin_defs.h.

◆ INCBIN_TYPE

#define INCBIN_TYPE ( NAME)
Value:
".type " INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME ", @object\n"

Definition at line 204 of file aurostd_incbin_defs.h.

◆ INCBIN_BYTE

#define INCBIN_BYTE   ".byte "

Definition at line 206 of file aurostd_incbin_defs.h.

◆ INCBIN_STYLE_CAMEL

#define INCBIN_STYLE_CAMEL   0

Definition at line 210 of file aurostd_incbin_defs.h.

◆ INCBIN_STYLE_SNAKE

#define INCBIN_STYLE_SNAKE   1

Definition at line 211 of file aurostd_incbin_defs.h.

◆ INCBIN_STYLE

#define INCBIN_STYLE   INCBIN_STYLE_CAMEL

Specify the prefix to use for symbol names.

Note
By default this is "g".
#define INCBIN_PREFIX incbin
#include "incbin.h"
INCBIN(Foo, "foo.txt");
// Now you have the following symbols instead:
// const unsigned char incbinFoo<data>[];
// const unsigned char *const incbinFoo<end>;
// const unsigned int incbinFoo<size>;
#define INCBIN(...)
Include a binary file into the current translation unit.

Specify the style used for symbol names.

Possible options are

  • INCBIN_STYLE_CAMEL "CamelCase"
  • INCBIN_STYLE_SNAKE "snake_case"
Note
By default this is INCBIN_STYLE_CAMEL
#define INCBIN_STYLE INCBIN_STYLE_SNAKE
#include "incbin.h"
INCBIN(foo, "foo.txt");
// Now you have the following symbols:
// const unsigned char <prefix>foo_data[];
// const unsigned char *const <prefix>foo_end;
// const unsigned int <prefix>foo_size;

Definition at line 254 of file aurostd_incbin_defs.h.

◆ INCBIN_STYLE_0_DATA

#define INCBIN_STYLE_0_DATA   Data

Definition at line 258 of file aurostd_incbin_defs.h.

◆ INCBIN_STYLE_0_END

#define INCBIN_STYLE_0_END   End

Definition at line 259 of file aurostd_incbin_defs.h.

◆ INCBIN_STYLE_0_SIZE

#define INCBIN_STYLE_0_SIZE   Size

Definition at line 260 of file aurostd_incbin_defs.h.

◆ INCBIN_STYLE_1_DATA

#define INCBIN_STYLE_1_DATA   _data

Definition at line 261 of file aurostd_incbin_defs.h.

◆ INCBIN_STYLE_1_END

#define INCBIN_STYLE_1_END   _end

Definition at line 262 of file aurostd_incbin_defs.h.

◆ INCBIN_STYLE_1_SIZE

#define INCBIN_STYLE_1_SIZE   _size

Definition at line 263 of file aurostd_incbin_defs.h.

◆ INCBIN_STYLE_IDENT

#define INCBIN_STYLE_IDENT ( TYPE)
Value:
#define INCBIN_CONCATENATE(X, Y)
#define INCBIN_STYLE
Specify the prefix to use for symbol names.

Definition at line 266 of file aurostd_incbin_defs.h.

◆ INCBIN_STYLE_STRING

#define INCBIN_STYLE_STRING ( TYPE)
Value:
#define INCBIN_STYLE_IDENT(TYPE)

Definition at line 269 of file aurostd_incbin_defs.h.

◆ INCBIN_GLOBAL_LABELS

#define INCBIN_GLOBAL_LABELS ( NAME,
TYPE )
Value:
#define INCBIN_INVOKE(N,...)
#define INCBIN_TYPE(NAME)
#define INCBIN_GLOBAL(NAME)

Definition at line 273 of file aurostd_incbin_defs.h.

◆ INCBIN_EXTERN

#define INCBIN_EXTERN ( ...)
Value:
INCBIN_CONCATENATE(INCBIN_EXTERN_, INCBIN_VA_ARGC(__VA_ARGS__))(__VA_ARGS__)
#define INCBIN_VA_ARGC(...)

Externally reference binary data included in another translation unit.

Produces three external symbols that reference the binary data included in another translation unit.

The symbol names are a concatenation of ‘INCBIN_PREFIX’ before NAME; with "Data", as well as "End" and "Size" after. An example is provided below.

Parameters
TYPEOptional array type. Omitting this picks a default of unsigned char.
NAMEThe name given for the binary data
// Now you have the following symbols:
// extern const unsigned char <prefix>Foo<data>[];
// extern const unsigned char *const <prefix>Foo<end>;
// extern const unsigned int <prefix>Foo<size>;
#define INCBIN_EXTERN(...)
Externally reference binary data included in another translation unit.

You may specify a custom optional data type as well as the first argument.

INCBIN_EXTERN(custom_type, Foo);
// Now you have the following symbols:
// extern const custom_type <prefix>Foo<data>[];
// extern const custom_type *const <prefix>Foo<end>;
// extern const unsigned int <prefix>Foo<size>;

Definition at line 308 of file aurostd_incbin_defs.h.

◆ INCBIN_EXTERN_1

#define INCBIN_EXTERN_1 ( NAME,
... )
Value:
INCBIN_EXTERN_2(unsigned char, NAME)
#define INCBIN_EXTERN_2(TYPE, NAME)

Definition at line 309 of file aurostd_incbin_defs.h.

◆ INCBIN_EXTERN_2

#define INCBIN_EXTERN_2 ( TYPE,
NAME )

◆ INCTXT_EXTERN

#define INCTXT_EXTERN ( NAME)
Value:
INCBIN_EXTERN_2(char, NAME)

Externally reference textual data included in another translation unit.

Produces three external symbols that reference the textual data included in another translation unit.

The symbol names are a concatenation of ‘INCBIN_PREFIX’ before NAME; with "Data", as well as "End" and "Size" after. An example is provided below.

Parameters
NAMEThe name given for the textual data
// Now you have the following symbols:
// extern const char <prefix>Foo<data>[];
// extern const char *const <prefix>Foo<end>;
// extern const unsigned int <prefix>Foo<size>;

Definition at line 335 of file aurostd_incbin_defs.h.

◆ INCBIN

#define INCBIN ( ...)
Value:
INCBIN_CONCATENATE(INCBIN_, INCBIN_VA_ARGC(__VA_ARGS__))(__VA_ARGS__)

Include a binary file into the current translation unit.

Includes a binary file into the current translation unit, producing three symbols for objects that encode the data and size respectively.

The symbol names are a concatenation of ‘INCBIN_PREFIX’ before NAME; with "Data", as well as "End" and "Size" after. An example is provided below.

Parameters
TYPEOptional array type. Omitting this picks a default of unsigned char.
NAMEThe name to associate with this binary data (as an identifier.)
FILENAMEThe file to include (as a string literal.)
INCBIN(Icon, "icon.png");
// Now you have the following symbols:
// const unsigned char <prefix>Icon<data>[];
// const unsigned char *const <prefix>Icon<end>;
// const unsigned int <prefix>Icon<size>;

You may specify a custom optional data type as well as the first argument. These macros are specialized by arity.

INCBIN(custom_type, Icon, "icon.png");
// Now you have the following symbols:
// const custom_type <prefix>Icon<data>[];
// const custom_type *const <prefix>Icon<end>;
// const unsigned int <prefix>Icon<size>;
Warning
This must be used in global scope
The identifiers may be different if INCBIN_STYLE is not default

To externally reference the data included by this in another translation unit please

See also
INCBIN_EXTERN.

Definition at line 379 of file aurostd_incbin_defs.h.

◆ INCBIN_1

#define INCBIN_1 ( ...)
Value:
/* Cannot do anything here */

Definition at line 385 of file aurostd_incbin_defs.h.

◆ INCBIN_2

#define INCBIN_2 ( NAME,
FILENAME )
Value:
INCBIN_3(unsigned char, NAME, FILENAME)
#define INCBIN_3(TYPE, NAME, FILENAME)

Definition at line 387 of file aurostd_incbin_defs.h.

◆ INCBIN_3

#define INCBIN_3 ( TYPE,
NAME,
FILENAME )
Value:
INCBIN_COMMON(TYPE, NAME, FILENAME, /* No terminator for binary data */)
#define INCBIN_COMMON(TYPE, NAME, FILENAME, TERMINATOR)

Definition at line 388 of file aurostd_incbin_defs.h.

◆ INCBIN_COMMON

#define INCBIN_COMMON ( TYPE,
NAME,
FILENAME,
TERMINATOR )
Value:
__asm__(INCBIN_SECTION INCBIN_GLOBAL_LABELS(NAME, DATA) \
INCBIN_EXTERN(TYPE, NAME)
#define INCBIN_ALIGN_BYTE
#define INCBIN_ALIGN_HOST
#define INCBIN_INT
#define INCBIN_GLOBAL_LABELS(NAME, TYPE)
#define INCBIN_MACRO
#define INCBIN_BYTE
#define INCBIN_STYLE_STRING(TYPE)
#define INCBIN_MANGLE
#define INCBIN_SECTION

Definition at line 389 of file aurostd_incbin_defs.h.

◆ INCTXT

#define INCTXT ( NAME,
FILENAME )
Value:
INCBIN_COMMON(char, NAME, FILENAME, INCBIN_BYTE "0\n")

Include a textual file into the current translation unit.

This behaves the same as INCBIN except it produces char compatible arrays and implicitly adds a null-terminator byte, thus the size of data included by this is one byte larger than that of INCBIN.

Includes a textual file into the current translation unit, producing three symbols for objects that encode the data and size respectively.

The symbol names are a concatenation of ‘INCBIN_PREFIX’ before NAME; with "Data", as well as "End" and "Size" after. An example is provided below.

Parameters
NAMEThe name to associate with this binary data (as an identifier.)
FILENAMEThe file to include (as a string literal.)
INCTXT(Readme, "readme.txt");
// Now you have the following symbols:
// const char <prefix>Readme<data>[];
// const char *const <prefix>Readme<end>;
// const unsigned int <prefix>Readme<size>;
#define INCTXT(NAME, FILENAME)
Include a textual file into the current translation unit.
Warning
This must be used in global scope
The identifiers may be different if INCBIN_STYLE is not default

To externally reference the data included by this in another translation unit please

See also
INCBIN_EXTERN.

Definition at line 432 of file aurostd_incbin_defs.h.