Kicking it Olde Sküül! Burgerlib on Github Follow Olde Sküül on Twitter Burgerbecky on LinkedIn Burgerbecky on LinkedIn
Loading...
Searching...
No Matches
Classes | Public Types | Static Public Member Functions | Static Public Attributes | List of all members
Burger::SafePrint Class Reference

Container class for SafePrint functions. More...

Collaboration diagram for Burger::SafePrint:
Collaboration graph
[legend]

Classes

struct  OutputTypeAndFlags_t
 
struct  ParamInfo_t
 Container struct for SafePrint arguments. More...
 
struct  ProcessResults_t
 struct to hold the results of parsing. More...
 

Public Types

enum  eWarningFlags {
  WARN_NONE = 0 , WARN_SIGNED_UNSIGNED_MISMATCH = 1 << 0 , WARN_LENGTH_SPECIFIER_MISMATCH = 1 << 1 , WARN_LENGTH_NOT_VALID_FOR_CONVERSION = 1 << 2 ,
  WARN_FLAG_UNDEFINED_FOR_CONVERSION = 1 << 3 , WARN_FLAG_SUPPRESSED = 1 << 4 , WARN_FLAG_NO_EFFECT = 1 << 5 , WARN_PRECISION_UNDEFINED = 1 << 6
}
 
enum  eOpcode {
  OP_NOT_A_SYMBOL = 0 , OP_LITERAL_PERCENT , OP_NUMERIC_VALUE , OP_ARG_SPECIFIER ,
  OP_PRECISION_SPECIFIER , OP_VALUE_FROM_ARG , OP_FLAG_LEFTJUSTIFY , OP_FLAG_FORCESIGN ,
  OP_FLAG_LEAD_SPACE_POSITIVE , OP_FLAG_ALTERNATIVE_FORM , OP_FLAG_COMMA_SEPERATE , OP_LENGTH_SHORT ,
  OP_LENGTH_LONG , OP_LENGTH_INTMAX , OP_LENGTH_SIZET , OP_LENGTH_WORDPTR ,
  OP_LENGTH_DOUBLE , OP_OUTPUT_DEFAULT , OP_OUTPUT_BINARY , OP_OUTPUT_BOOLTEXT ,
  OP_OUTPUT_BOOLTEXTUPPER , OP_OUTPUT_CHARACTER , OP_OUTPUT_WIDECHARACTER , OP_OUTPUT_DECIMALINT ,
  OP_OUTPUT_DECIMALWORD , OP_OUTPUT_DECIMALFLOAT , OP_OUTPUT_DECIMALFLOATUPPER , OP_OUTPUT_HEXFLOAT ,
  OP_OUTPUT_HEXFLOATUPPER , OP_OUTPUT_SCI_NOTEFLOAT , OP_OUTPUT_SCI_NOTEFLOATUPPER , OP_OUTPUT_SCI_SHORTNOTE ,
  OP_OUTPUT_SCI_SHORTNOTEUPPER , OP_OUTPUT_OCTAL , OP_OUTPUT_HEX , OP_OUTPUT_HEXUPPER ,
  OP_OUTPUT_POINTER , OP_OUTPUT_POINTERUPPER , OP_OUTPUT_CSTRING , OP_OUTPUT_CSTRING16 ,
  OP_OUTPUT_STORELENGTH , OP_FLAGS_BEGIN = OP_FLAG_LEFTJUSTIFY , OP_FLAGS_END = OP_FLAG_COMMA_SEPERATE , OP_LENGTH_BEGIN = OP_LENGTH_SHORT ,
  OP_LENGTH_END = OP_LENGTH_DOUBLE , OP_OUTPUT_BEGIN = OP_OUTPUT_BINARY , OP_OUTPUT_END = OP_OUTPUT_CSTRING16
}
 
enum  eParseStage {
  PARSE_START , PARSE_ARGNUM , PARSE_FLAGS , PARSE_WIDTH ,
  PARSE_PRECISION , PARSE_LENGTH
}
 
enum  eParseOptions {
  PARSEOPTION_STRICT_OUTPUT_TYPES_OK = 0x0001 , PARSEOPTION_RELAXED_OUTPUT_TYPES_OK = 0x0002 , PARSEOPTION_CHECK_ARG_TYPES = 0x0004 , PARSEOPTION_ALLOW_N_CONVERSION = 0x0008 ,
  PARSEOPTION_DEFAULT
}
 
enum  eConversionSpecifier {
  CONVSPEC_INVALID , CONVSPEC_BINNUMBER , CONVSPEC_BOOLTEXT , CONVSPEC_CHAR ,
  CONVSPEC_DECIMAL_INT , CONVSPEC_DECIMAL_WORD , CONVSPEC_OCTAL , CONVSPEC_HEX ,
  CONVSPEC_HEX_FLOAT , CONVSPEC_DECIMAL_FLOAT , CONVSPEC_SCI_NOTE_FLOAT , CONVSPEC_SHORTER_FLOAT ,
  CONVSPEC_POINTER , CONVSPEC_TEXT_STRING , CONVSPEC_COUNT , CONVSPEC_NOT_SUPPLIED = 255
}
 
enum  eConversionSpecifierFlag {
  CONVSPECFLAG_NONE = 0 , CONVSPECFLAG_BINARY_NUMBER = 1 << CONVSPEC_BINNUMBER , CONVSPECFLAG_BOOL_TEXT = 1 << CONVSPEC_BOOLTEXT , CONVSPECFLAG_CHARACTER = 1 << CONVSPEC_CHAR ,
  CONVSPECFLAG_DECIMAL_INT = 1 << CONVSPEC_DECIMAL_INT , CONVSPECFLAG_DECIMAL_UNSIGNEDINT = 1 << CONVSPEC_DECIMAL_WORD , CONVSPECFLAG_OCTAL = 1 << CONVSPEC_OCTAL , CONVSPECFLAG_HEX = 1 << CONVSPEC_HEX ,
  CONVSPECFLAG_HEX_FLOAT = 1 << CONVSPEC_HEX_FLOAT , CONVSPECFLAG_DECIMAL_FLOAT = 1 << CONVSPEC_DECIMAL_FLOAT , CONVSPECFLAG_SCINOTE_FLOAT = 1 << CONVSPEC_SCI_NOTE_FLOAT , CONVSPECFLAG_SHORTER_FLOAT = 1 << CONVSPEC_SHORTER_FLOAT ,
  CONVSPECFLAG_POINTER = 1 << CONVSPEC_POINTER , CONVSPECFLAG_TEXT_STRING = 1 << CONVSPEC_TEXT_STRING
}
 
enum  eConversionFlags {
  CONVFLAG_NO_OPTIONS = 0 , CONVFLAG_LEFT_JUSTIFY = 0x00000001 , CONVFLAG_DISPLAY_SIGN = 0x00000002 , CONVFLAG_BLANK_SIGN = 0x00000004 ,
  CONVFLAG_ALTERNATIVE_FORM = 0x00000008 , CONVFLAG_LEFT_PAD_ZEROS = 0x00000010 , CONVFLAG_COMMA_SEPARATE = 0x00000020 , CONVFLAG_UPPERCASE = 0x00000040 ,
  CONVFLAG_INTERPRET_SHORT = 0x00000100 , CONVFLAG_INTERPRET_SSHORT = 0x00000200 , CONVFLAG_INTERPRET_LONG = 0x00000400 , CONVFLAG_INTERPRET_LLONG = 0x00000800 ,
  CONVFLAG_INTERPRET_DOUBLE = 0x00001000 , CONVFLAG_INTERPRET_INTMAX = 0x00002000 , CONVFLAG_INTERPRET_SIZET = 0x00004000 , CONVFLAG_INTERPRET_WORDPTR = 0x00008000 ,
  CONVFLAG_INTERPRET_WORD = 0x00010000 , CONVFLAG_INTERPRET_SPECIFIED = 0x00080000 , CONVFLAG_WIDTH_SPECIFIED = 0x00100000 , CONVFLAG_PRECISION_SPECIFIED = 0x00200000 ,
  CONVFLAG_PRECISION_MARKER = 0x00400000 , CONVFLAG_OUTPUT_WCHAR = 0x01000000 , CONVFLAG_HAS_SEQUENCE_CHAR = 0x80000000
}
 
enum  eConversionCommand { COMMAND_COPY_TEXT , COMMAND_FORMAT_ARGUMENT }
 
enum  {
  kWIDTH_PAD_CHARACTER = ' ' , kNUMERIC_BLANK_SIGN = ' ' , kNUMERIC_POSITIVE_SIGN = '+' , kFORMAT_ESCAPE_CHAR = '' ,
  kNUMERIC_NEGATIVE_SIGN = '-' , kNUMERIC_GROUP_SEPARATOR = ',' , kBINARY_GROUP_SEPARATOR = ' ' , kNUMERIC_DECIMAL_POINT = '.'
}
 
typedef uint_t(* SprintfCallbackProc) (uint_t bNoErrors, uintptr_t uRequestedSize, void **ppOutputBuffer, void *pContext)
 

Static Public Member Functions

static const charGetWarningDescription (eWarningFlags uFlags) noexcept
 Convert error flag to message in English.
 
static eOpcode GetDefaultArgumentType (const ArgumentType *pArg) noexcept
 Get the default opcode from the argument data type.
 
static const charGetOutputDisplayType (eConversionSpecifier uType) noexcept
 Convert conversion specifier to message in English.
 
static const charGetOutputCommandName (eConversionCommand uCommand) noexcept
 Convert conversion command to message in English.
 

Static Public Attributes

static const uint_t kMIN_FLOAT_EXPONENT_DIGITS = 2
 ISO/IEC 9899:TC2 spec for minimum exponent digits.
 
static const uint_t kMAX_OUTPUT_COMMANDS = 64
 Maximum number of passed parameters.
 
static const uintptr_t kMaxPrintFPrecision = 4095
 Largest number of character precision to print for a floating point number.
 
static const uintptr_t kMaxPrintFWidth = 4095
 Largest number of digits to print for a floating point number.
 
static const uintptr_t kMAX_CONVERSION_OUTPUT_SIZE = 4095
 Largest size of a single argument in bytes.
 
static const uintptr_t kMAX_TOTAL_OUTPUT_SIZE = 128 * 1024
 Maximum size of the total output (Sanity check)
 
static const eOpcode g_CodeMap [128]
 Mapping table for UTF-8 characters to SafePrint opcodes.
 
static const eConversionFlags g_PrintFlagMappings [5]
 Mapping table for OP_FLAG_* for printing.
 
static const eConversionFlags g_PrintfLengthMappings [6]
 Mapping table for OP_LENGTH_* for printing.
 
static const OutputTypeAndFlags_t g_PrintfOutputType [22]
 Mapping table for OP_OUTPUT_* for printing.
 
static const uintptr_t g_ConversionArgumentSizes [14]
 CONVSPEC_* expected data sizes.
 
static const uint32_t g_ValidFlagsForConversion [14]
 CONVSPEC_* valid output conversion flags.
 
static const uint32_t g_ValidOutputDisplayTypesStrict [kArgumentTypeCount]
 ARG_* valid output conversion flags.
 
static const uint32_t g_ValidOutputDisplayTypesRelaxed [kArgumentTypeCount]
 ARG_* valid output relaxed conversion flags.
 

Detailed Description

Container class for SafePrint functions.


This class contains all the static functions to handle the safe printf for Burgerlib.

Member Typedef Documentation

◆ SprintfCallbackProc

typedef uint_t( * Burger::SafePrint::SprintfCallbackProc) (uint_t bNoErrors, uintptr_t uRequestedSize, void **ppOutputBuffer, void *pContext)

Member Enumeration Documentation

◆ anonymous enum

Enumerator
kWIDTH_PAD_CHARACTER 

Default character to pad the width with.

kNUMERIC_BLANK_SIGN 

Default space for sign value.

kNUMERIC_POSITIVE_SIGN 

Default positive sign character.

kFORMAT_ESCAPE_CHAR 

Escape character for format string.

printf uses '', that's good enough

kNUMERIC_NEGATIVE_SIGN 

Default negative sign character.

kNUMERIC_GROUP_SEPARATOR 

Default numeric separator character.

kBINARY_GROUP_SEPARATOR 

Default separator character for binary.

kNUMERIC_DECIMAL_POINT 

Default decimal point for floating point.

◆ eConversionCommand

Enumerator
COMMAND_COPY_TEXT 

Copy text from "C" string.

COMMAND_FORMAT_ARGUMENT 

Processing a '' command.

◆ eConversionFlags

Enumerator
CONVFLAG_NO_OPTIONS 

No formatting options.

CONVFLAG_LEFT_JUSTIFY 

Left justification turned on.

CONVFLAG_DISPLAY_SIGN 

Display the - or + sign.

CONVFLAG_BLANK_SIGN 

Don't display a sign.

CONVFLAG_ALTERNATIVE_FORM 

Alternative form.

CONVFLAG_LEFT_PAD_ZEROS 

Pad the left with zeros.

CONVFLAG_COMMA_SEPARATE 

Comma separate numbers.

CONVFLAG_UPPERCASE 

Force text to uppercase.

CONVFLAG_INTERPRET_SHORT 

Interpret argument as a uint16_t.

CONVFLAG_INTERPRET_SSHORT 

Interpret argument as a int16_t.

CONVFLAG_INTERPRET_LONG 

Interpret argument as a uint64_t.

CONVFLAG_INTERPRET_LLONG 

Interpret argument as a int64_t.

CONVFLAG_INTERPRET_DOUBLE 

Interpret argument as a float.

CONVFLAG_INTERPRET_INTMAX 

Interpret argument as an integer.

CONVFLAG_INTERPRET_SIZET 

Interpret argument as a uintptr_t (size_t)

CONVFLAG_INTERPRET_WORDPTR 

Interpret argument as a uintptr_t.

CONVFLAG_INTERPRET_WORD 

Interpret argument as unsigned.

CONVFLAG_INTERPRET_SPECIFIED 

Interpretation is specified.

CONVFLAG_WIDTH_SPECIFIED 

Width parameter was specified.

CONVFLAG_PRECISION_SPECIFIED 

Precision parameter was specified.

CONVFLAG_PRECISION_MARKER 

Precision marker was specified.

CONVFLAG_OUTPUT_WCHAR 

"C" string is wide

CONVFLAG_HAS_SEQUENCE_CHAR 

Used by COPY_TEXT Command.

◆ eConversionSpecifier

Enumerator
CONVSPEC_INVALID 

Not valid.

CONVSPEC_BINNUMBER 

Binary output.

CONVSPEC_BOOLTEXT 

Boolean text ("true","false")

CONVSPEC_CHAR 

Single char.

CONVSPEC_DECIMAL_INT 

Signed integer.

CONVSPEC_DECIMAL_WORD 

Unsigned integer.

CONVSPEC_OCTAL 

Octal output.

CONVSPEC_HEX 

Hex output.

CONVSPEC_HEX_FLOAT 

Float as hex.

CONVSPEC_DECIMAL_FLOAT 

Standard float.

CONVSPEC_SCI_NOTE_FLOAT 

Scientific notation float.

CONVSPEC_SHORTER_FLOAT 

Short form float.

CONVSPEC_POINTER 

Hex pointer.

CONVSPEC_TEXT_STRING 

"C" string pointer

CONVSPEC_COUNT 

Number of conversion specifiers.

CONVSPEC_NOT_SUPPLIED 

Uninitialized specification.

◆ eConversionSpecifierFlag

Enumerator
CONVSPECFLAG_NONE 

No conversion flag.

CONVSPECFLAG_BINARY_NUMBER 

Binary output flag.

CONVSPECFLAG_BOOL_TEXT 

Boolean text flag.

CONVSPECFLAG_CHARACTER 

Single char flag.

CONVSPECFLAG_DECIMAL_INT 

Signed integer flag.

CONVSPECFLAG_DECIMAL_UNSIGNEDINT 

Unsigned integer flag.

CONVSPECFLAG_OCTAL 

Octal output flag.

CONVSPECFLAG_HEX 

Hex output flag.

CONVSPECFLAG_HEX_FLOAT 

Float as hex flag.

CONVSPECFLAG_DECIMAL_FLOAT 

Standard float flag.

CONVSPECFLAG_SCINOTE_FLOAT 

Scientific notation float flag.

CONVSPECFLAG_SHORTER_FLOAT 

Short form float flag.

CONVSPECFLAG_POINTER 

Hex pointer flag.

CONVSPECFLAG_TEXT_STRING 

"C" string pointer flag

◆ eOpcode

Enumerator
OP_NOT_A_SYMBOL 

Not A (Valid) Symbol.

OP_LITERAL_PERCENT 

''

OP_NUMERIC_VALUE 

'0' - '9'

OP_ARG_SPECIFIER 

'$'

OP_PRECISION_SPECIFIER 

'.'

OP_VALUE_FROM_ARG 

'*'

OP_FLAG_LEFTJUSTIFY 

'-'

OP_FLAG_FORCESIGN 

'+'

OP_FLAG_LEAD_SPACE_POSITIVE 

' '

OP_FLAG_ALTERNATIVE_FORM 

'#'

OP_FLAG_COMMA_SEPERATE 

','

OP_LENGTH_SHORT 

'h'

OP_LENGTH_LONG 

'l'

OP_LENGTH_INTMAX 

'j'

OP_LENGTH_SIZET 

'z'

OP_LENGTH_WORDPTR 

't'

OP_LENGTH_DOUBLE 

'L'

OP_OUTPUT_DEFAULT 

'@'

OP_OUTPUT_BINARY 

'!'

OP_OUTPUT_BOOLTEXT 

'b'

OP_OUTPUT_BOOLTEXTUPPER 

'B'

OP_OUTPUT_CHARACTER 

'c'

OP_OUTPUT_WIDECHARACTER 

'C'

OP_OUTPUT_DECIMALINT 

'd' or 'i'

OP_OUTPUT_DECIMALWORD 

'u'

OP_OUTPUT_DECIMALFLOAT 

'f'

OP_OUTPUT_DECIMALFLOATUPPER 

'F'

OP_OUTPUT_HEXFLOAT 

'a'

OP_OUTPUT_HEXFLOATUPPER 

'A'

OP_OUTPUT_SCI_NOTEFLOAT 

'e'

OP_OUTPUT_SCI_NOTEFLOATUPPER 

'E'

OP_OUTPUT_SCI_SHORTNOTE 

'g'

OP_OUTPUT_SCI_SHORTNOTEUPPER 

'G'

OP_OUTPUT_OCTAL 

'o'

OP_OUTPUT_HEX 

'x'

OP_OUTPUT_HEXUPPER 

'X'

OP_OUTPUT_POINTER 

'p'

OP_OUTPUT_POINTERUPPER 

'P'

OP_OUTPUT_CSTRING 

's'

OP_OUTPUT_CSTRING16 

'S'

OP_OUTPUT_STORELENGTH 

'n'

OP_FLAGS_BEGIN 

First flag index.

OP_FLAGS_END 

Last flag index.

OP_LENGTH_BEGIN 

First length index.

OP_LENGTH_END 

Last length index.

OP_OUTPUT_BEGIN 

First output index.

OP_OUTPUT_END 

Last output index.

◆ eParseOptions

Enumerator
PARSEOPTION_STRICT_OUTPUT_TYPES_OK 

Strict typing is enforced.

PARSEOPTION_RELAXED_OUTPUT_TYPES_OK 

Relaxed typing is allowed.

PARSEOPTION_CHECK_ARG_TYPES 

Check arguments for perfect match.

PARSEOPTION_ALLOW_N_CONVERSION 

Allow conversion of data in array.

PARSEOPTION_DEFAULT 

Default parsing setting.

◆ eParseStage

Enumerator
PARSE_START 

Parsing has started.

PARSE_ARGNUM 

Parsing argument number.

PARSE_FLAGS 

Parsing a flag.

PARSE_WIDTH 

Parsing a width value.

PARSE_PRECISION 

Parsing a precision value.

PARSE_LENGTH 

Parsing a length value.

◆ eWarningFlags

Enumerator
WARN_NONE 

No Warning.

WARN_SIGNED_UNSIGNED_MISMATCH 

Argument signed mismatch with conversion.

WARN_LENGTH_SPECIFIER_MISMATCH 

Length modifier doesn't match argument.

WARN_LENGTH_NOT_VALID_FOR_CONVERSION 

Length modifier isn't valid for conversion.

WARN_FLAG_UNDEFINED_FOR_CONVERSION 

Flag undefined for conversion (ignored)

WARN_FLAG_SUPPRESSED 

Flag suppressed by another flag.

WARN_FLAG_NO_EFFECT 

Flag had no effect.

WARN_PRECISION_UNDEFINED 

Precision is undefined for conversion.

Member Function Documentation

◆ GetDefaultArgumentType()

Burger::SafePrint::eOpcode BURGER_API Burger::SafePrint::GetDefaultArgumentType ( const ArgumentType * pArg)
staticnoexcept

Get the default opcode from the argument data type.


Parameters
pArgError code
Returns
Opcode that is best to process this argument or OP_NOT_A_SYMBOL

◆ GetOutputCommandName()

const char *BURGER_API Burger::SafePrint::GetOutputCommandName ( eConversionCommand uCommand)
staticnoexcept

Convert conversion command to message in English.


Parameters
uCommandCommand to convert
Returns
Pointer to a "C" string of the conversion command

◆ GetOutputDisplayType()

const char *BURGER_API Burger::SafePrint::GetOutputDisplayType ( eConversionSpecifier uType)
staticnoexcept

Convert conversion specifier to message in English.


Parameters
uTypeSpecifier type to convert
Returns
Pointer to a "C" string of the conversion specifier type

◆ GetWarningDescription()

const char *BURGER_API Burger::SafePrint::GetWarningDescription ( eWarningFlags uFlags)
staticnoexcept

Convert error flag to message in English.


Parameters
uFlagsError code
Returns
Pointer to a "C" string of the warning message

Member Data Documentation

◆ g_CodeMap

const Burger::SafePrint::eOpcode Burger::SafePrint::g_CodeMap
static

Mapping table for UTF-8 characters to SafePrint opcodes.


Mapping table for ASCII/UTF-8 characters ranged 0-127 used do decode/parse a character that is part of a conversion specification.

!   "   #   $   %   &   '   (   )   *   +   ,   -   .   /

0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ del

◆ g_ConversionArgumentSizes

const uintptr_t Burger::SafePrint::g_ConversionArgumentSizes
static
Initial value:
= {
UINTPTR_MAX,
0,
sizeof(bool),
sizeof(int),
sizeof(int),
sizeof(unsigned int),
sizeof(unsigned int),
sizeof(unsigned int),
sizeof(double),
sizeof(double),
sizeof(double),
sizeof(double),
sizeof(void*),
sizeof(char*)
}

CONVSPEC_* expected data sizes.


Table of expected argument sizes for each conversion

◆ g_PrintFlagMappings

const Burger::SafePrint::eConversionFlags Burger::SafePrint::g_PrintFlagMappings
static
Initial value:
= {
}
@ CONVFLAG_DISPLAY_SIGN
Display the - or + sign.
Definition burger.h:13322
@ CONVFLAG_LEFT_JUSTIFY
Left justification turned on.
Definition burger.h:13320
@ CONVFLAG_BLANK_SIGN
Don't display a sign.
Definition burger.h:13324
@ CONVFLAG_COMMA_SEPARATE
Comma separate numbers.
Definition burger.h:13330
@ CONVFLAG_ALTERNATIVE_FORM
Alternative form.
Definition burger.h:13326

Mapping table for OP_FLAG_* for printing.


Lookup table to convert eOpcode in the OP_FLAG_* range to the appropriate conversion formatting flag

◆ g_PrintfLengthMappings

const Burger::SafePrint::eConversionFlags Burger::SafePrint::g_PrintfLengthMappings
static
Initial value:
= {
}
@ CONVFLAG_INTERPRET_LONG
Interpret argument as a uint64_t.
Definition burger.h:13338
@ CONVFLAG_INTERPRET_INTMAX
Interpret argument as an integer.
Definition burger.h:13344
@ CONVFLAG_INTERPRET_SIZET
Interpret argument as a uintptr_t (size_t)
Definition burger.h:13346
@ CONVFLAG_INTERPRET_SHORT
Interpret argument as a uint16_t.
Definition burger.h:13334
@ CONVFLAG_INTERPRET_WORDPTR
Interpret argument as a uintptr_t.
Definition burger.h:13348
@ CONVFLAG_INTERPRET_DOUBLE
Interpret argument as a float.
Definition burger.h:13342

Mapping table for OP_LENGTH_* for printing.


Lookup table to convert eOpcode in the OP_LENGTH_* range to the appropriate conversion argument length modifier

◆ g_PrintfOutputType

const Burger::SafePrint::OutputTypeAndFlags_t Burger::SafePrint::g_PrintfOutputType
static
Initial value:
= {
}
@ CONVFLAG_UPPERCASE
Force text to uppercase.
Definition burger.h:13332
@ CONVFLAG_NO_OPTIONS
No formatting options.
Definition burger.h:13318
@ CONVFLAG_OUTPUT_WCHAR
"C" string is wide
Definition burger.h:13360
@ CONVSPEC_TEXT_STRING
"C" string pointer
Definition burger.h:13280
@ CONVSPEC_SCI_NOTE_FLOAT
Scientific notation float.
Definition burger.h:13277
@ CONVSPEC_DECIMAL_INT
Signed integer.
Definition burger.h:13271
@ CONVSPEC_DECIMAL_FLOAT
Standard float.
Definition burger.h:13276
@ CONVSPEC_DECIMAL_WORD
Unsigned integer.
Definition burger.h:13272
@ CONVSPEC_BINNUMBER
Binary output.
Definition burger.h:13268
@ CONVSPEC_BOOLTEXT
Boolean text ("true","false")
Definition burger.h:13269
@ CONVSPEC_CHAR
Single char.
Definition burger.h:13270
@ CONVSPEC_POINTER
Hex pointer.
Definition burger.h:13279
@ CONVSPEC_OCTAL
Octal output.
Definition burger.h:13273
@ CONVSPEC_SHORTER_FLOAT
Short form float.
Definition burger.h:13278
@ CONVSPEC_HEX_FLOAT
Float as hex.
Definition burger.h:13275
@ CONVSPEC_HEX
Hex output.
Definition burger.h:13274

Mapping table for OP_OUTPUT_* for printing.


Lookup table to convert eOpcode in the OP_OUTPUT_* range to the actual output conversion specification and includes any additional formatting options that are needed (such as using upper case characters) and info the expected argument type (which we only use to issue warnings)

◆ g_ValidFlagsForConversion

const uint32_t Burger::SafePrint::g_ValidFlagsForConversion
static

CONVSPEC_* valid output conversion flags.


Table of which flags are valid for what output conversions

◆ g_ValidOutputDisplayTypesRelaxed

const uint32_t Burger::SafePrint::g_ValidOutputDisplayTypesRelaxed
static

ARG_* valid output relaxed conversion flags.


Bit table of Additional Valid output conversion specifiers for each argument type when allowing for "relaxed" conversions

◆ g_ValidOutputDisplayTypesStrict

const uint32_t Burger::SafePrint::g_ValidOutputDisplayTypesStrict
static

ARG_* valid output conversion flags.


Bit table of Valid output conversion specifiers for each argument type when applying strict argument conversion rules

◆ kMAX_CONVERSION_OUTPUT_SIZE

const uintptr_t Burger::SafePrint::kMAX_CONVERSION_OUTPUT_SIZE = 4095
static

Largest size of a single argument in bytes.

◆ kMAX_OUTPUT_COMMANDS

const uint_t Burger::SafePrint::kMAX_OUTPUT_COMMANDS = 64
static

Maximum number of passed parameters.

◆ kMAX_TOTAL_OUTPUT_SIZE

const uintptr_t Burger::SafePrint::kMAX_TOTAL_OUTPUT_SIZE = 128 * 1024
static

Maximum size of the total output (Sanity check)

◆ kMaxPrintFPrecision

const uintptr_t Burger::SafePrint::kMaxPrintFPrecision = 4095
static

Largest number of character precision to print for a floating point number.

◆ kMaxPrintFWidth

const uintptr_t Burger::SafePrint::kMaxPrintFWidth = 4095
static

Largest number of digits to print for a floating point number.

◆ kMIN_FLOAT_EXPONENT_DIGITS

const uint_t Burger::SafePrint::kMIN_FLOAT_EXPONENT_DIGITS = 2
static

ISO/IEC 9899:TC2 spec for minimum exponent digits.