思澈科技软件开发工具包  2.20

Sifli middle common interface. More...

typedef int sf_err_t
 
#define SF_EOK   0
 
#define SF_ERR   1
 
#define SF_ETIMEOUT   2
 
#define SF_EFULL   3
 
#define SF_EEMPTY   4
 
#define SF_ENOMEM   5
 
#define SF_ENOSYS   6
 
#define SF_EBUSY   7
 
#define SF_EIO   8
 
#define SF_EINTR   9
 
#define SF_EINVAL   10
 
#define SF_ASSERT(expr)   if ((expr)==0) while (1)
 
#define CONCAT_2_(p1, p2)   p1##p2
 
#define CONCAT_2(p1, p2)   CONCAT_2_(p1, p2)
 Concatenates two parameters. More...
 
#define STRINGIFY_(val)   #val
 
#define STRINGIFY(val)   STRINGIFY_(val)
 
#define BRACKET_EXTRACT(a)   BRACKET_EXTRACT_(a)
 Extracting data from the brackets. More...
 
#define BRACKET_EXTRACT_(a)   BRACKET_EXTRACT__ a
 
#define BRACKET_EXTRACT__(...)   __VA_ARGS__
 
#define GET_VA_ARG_1(...)   GET_VA_ARG_1_(__VA_ARGS__, )
 Get the first argument. More...
 
#define GET_VA_ARG_1_(a1, ...)   a1
 
#define GET_ARGS_AFTER_1(...)   GET_ARGS_AFTER_1_(__VA_ARGS__, )
 Get all the arguments but the first one. More...
 
#define GET_ARGS_AFTER_1_(a1, ...)   __VA_ARGS__
 
#define MACRO_MAP_FOR_N_LIST
 Mapping macro with current index. More...
 
#define MACRO_REPEAT(count, macro, ...)   MACRO_REPEAT_(count, macro, __VA_ARGS__)
 Repeating macro. More...
 
#define MACRO_REPEAT_(count, macro, ...)   CONCAT_2(MACRO_REPEAT_, count)(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_0(macro, ...)
 
#define MACRO_REPEAT_1(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_0(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_2(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_1(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_3(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_2(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_4(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_3(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_5(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_4(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_6(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_5(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_7(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_6(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_8(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_7(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_9(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_8(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_10(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_9(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_11(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_10(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_12(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_11(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_13(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_12(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_14(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_13(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_15(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_14(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_16(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_15(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_17(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_16(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_18(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_17(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_19(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_18(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_20(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_19(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_21(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_20(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_22(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_21(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_23(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_22(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_24(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_23(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_25(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_24(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_26(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_25(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_27(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_26(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_28(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_27(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_29(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_28(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_30(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_29(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_31(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_30(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_32(macro, ...)   macro(__VA_ARGS__) MACRO_REPEAT_31(macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR(count, macro, ...)   MACRO_REPEAT_FOR_(count, macro, __VA_ARGS__)
 Repeating macro with current index. More...
 
#define MACRO_REPEAT_FOR_(count, macro, ...)   CONCAT_2(MACRO_REPEAT_FOR_, count)((MACRO_MAP_FOR_N_LIST), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_0(n_list, macro, ...)
 
#define MACRO_REPEAT_FOR_1(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_0((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_2(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_1((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_3(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_2((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_4(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_3((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_5(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_4((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_6(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_5((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_7(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_6((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_8(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_7((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_9(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_8((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_10(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_9((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_11(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_10((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_12(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_11((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_13(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_12((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_14(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_13((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_15(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_14((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_16(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_15((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_17(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_16((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_18(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_17((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_19(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_18((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_20(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_19((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_21(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_20((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_22(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_21((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_23(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_22((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_24(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_23((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_25(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_24((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_26(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_25((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_27(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_26((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_28(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_27((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_29(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_28((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_30(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_29((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_31(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_30((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 
#define MACRO_REPEAT_FOR_32(n_list, macro, ...)   macro(GET_VA_ARG_1(BRACKET_EXTRACT(n_list)), __VA_ARGS__) MACRO_REPEAT_FOR_31((GET_ARGS_AFTER_1(BRACKET_EXTRACT(n_list))), macro, __VA_ARGS__)
 

Detailed Description

Sifli middle common interface.

Macro Definition Documentation

◆ BRACKET_EXTRACT

#define BRACKET_EXTRACT (   a)    BRACKET_EXTRACT_(a)

Extracting data from the brackets.

This macro get rid of brackets around the argument. It can be used to pass multiple arguments in logical one argument to a macro. Call it with arguments inside brackets:

#define ARGUMENTS (a, b, c)
BRACKET_EXTRACT(ARGUMENTS)

It would produce:

a, b, c
Parameters
aArgument with anything inside brackets
Returns
Anything that appears inside the brackets of the argument
Note
The argument of the macro have to be inside brackets. In other case the compilation would fail.

◆ CONCAT_2

#define CONCAT_2 (   p1,
  p2 
)    CONCAT_2_(p1, p2)

Concatenates two parameters.

It realizes two level expansion to make it sure that all the parameters are actually expanded before gluing them together.

Parameters
p1First parameter to concatenating
p2Second parameter to concatenating
Returns
Two parameters glued together. They have to create correct C mnemonic in other case preprocessor error would be generated.

◆ GET_ARGS_AFTER_1

#define GET_ARGS_AFTER_1 (   ...)    GET_ARGS_AFTER_1_(__VA_ARGS__, )

Get all the arguments but the first one.

Parameters
...Arguments to select
Returns
All arguments after the first one or empty if less than 2 arguments are provided

◆ GET_VA_ARG_1

#define GET_VA_ARG_1 (   ...)    GET_VA_ARG_1_(__VA_ARGS__, )

Get the first argument.

Parameters
...Arguments to select
Returns
First argument or empty if no arguments are provided

◆ MACRO_MAP_FOR_N_LIST

#define MACRO_MAP_FOR_N_LIST
Value:
0, 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

Mapping macro with current index.

Parameters
...Macro name to be used for argument processing followed by arguments to process. Macro should have following form: MACRO(argument, index)
Returns
All arguments processed by given macro

◆ MACRO_REPEAT

#define MACRO_REPEAT (   count,
  macro,
  ... 
)    MACRO_REPEAT_(count, macro, __VA_ARGS__)

Repeating macro.

Parameters
countCount of repeats.
macroMacro must have the following form: MACRO(arguments).
...Arguments passed to the macro.
Returns
All arguments processed by the given macro.

◆ MACRO_REPEAT_FOR

#define MACRO_REPEAT_FOR (   count,
  macro,
  ... 
)    MACRO_REPEAT_FOR_(count, macro, __VA_ARGS__)

Repeating macro with current index.

Macro similar to MACRO_REPEAT but the processing function gets the arguments and the current argument index (beginning from 0).

Parameters
countCount of repeats.
macroMacro must have the following form: MACRO(index, arguments).
...Arguments passed to the macro.
Returns
All arguments processed by the given macro.

◆ SF_EBUSY

#define SF_EBUSY   7

Busy

◆ SF_EEMPTY

#define SF_EEMPTY   4

The resource is empty

◆ SF_EFULL

#define SF_EFULL   3

The resource is full

◆ SF_EINTR

#define SF_EINTR   9

Interrupted system call

◆ SF_EINVAL

#define SF_EINVAL   10

Invalid argument

◆ SF_EIO

#define SF_EIO   8

IO error

◆ SF_ENOMEM

#define SF_ENOMEM   5

No memory

◆ SF_ENOSYS

#define SF_ENOSYS   6

No system

◆ SF_EOK

#define SF_EOK   0

There is no error

◆ SF_ERR

#define SF_ERR   1

A generic error happens

◆ SF_ETIMEOUT

#define SF_ETIMEOUT   2

Timed out

◆ STRINGIFY

#define STRINGIFY (   val)    STRINGIFY_(val)

Converts a macro argument into a character constant.