Blender V4.3
text_format_py.cc File Reference
#include <cstring>
#include "BLI_blenlib.h"
#include "DNA_space_types.h"
#include "DNA_text_types.h"
#include "BKE_text.h"
#include "text_format.hh"

Go to the source code of this file.

Functions

Format Line Implementation (#TextFormatType::format_line)
static void txtfmt_py_format_line (SpaceText *st, TextLine *line, const bool do_next)
 
Registration
void ED_text_format_register_py ()
 

Local Functions (for #TextFormatType::format_line)

#define TXTFMT_PY_NUMERAL_STRING_COUNT_IMPL(txtfmt_py_numeral_char_is_fn)
 
static int txtfmt_py_find_builtinfunc (const char *string)
 
static int txtfmt_py_find_specialvar (const char *string)
 
static int txtfmt_py_find_decorator (const char *string)
 
static int txtfmt_py_find_bool (const char *string)
 
static bool txtfmt_py_numeral_char_is_binary (const char c)
 
static uint txtfmt_py_numeral_string_count_binary (const char *string)
 
static bool txtfmt_py_numeral_char_is_octal (const char c)
 
static uint txtfmt_py_numeral_string_count_octal (const char *string)
 
static bool txtfmt_py_numeral_char_is_decimal (const char c)
 
static uint txtfmt_py_numeral_string_count_decimal (const char *string)
 
static bool txtfmt_py_numeral_char_is_hexadecimal (const char c)
 
static uint txtfmt_py_numeral_string_count_hexadecimal (const char *string)
 
static bool txtfmt_py_numeral_char_is_zero (const char c)
 
static uint txtfmt_py_numeral_string_count_zeros (const char *string)
 
static int txtfmt_py_find_numeral_inner (const char *string)
 
static int txtfmt_py_literal_numeral (const char *string, char prev_fmt)
 
static char txtfmt_py_format_identifier (const char *str)
 

Local Literal Definitions

static const char * text_format_py_literals_builtinfunc_data []
 
static const char * text_format_py_literals_specialvar_data []
 
static const char * text_format_py_literals_bool_data []
 
static const Span< const char * > text_format_py_literals_builtinfunc (text_format_py_literals_builtinfunc_data, ARRAY_SIZE(text_format_py_literals_builtinfunc_data))
 
static const Span< const char * > text_format_py_literals_specialvar (text_format_py_literals_specialvar_data, ARRAY_SIZE(text_format_py_literals_specialvar_data))
 
static const Span< const char * > text_format_py_literals_bool (text_format_py_literals_bool_data, ARRAY_SIZE(text_format_py_literals_bool_data))
 

Macro Definition Documentation

◆ TXTFMT_PY_NUMERAL_STRING_COUNT_IMPL

#define TXTFMT_PY_NUMERAL_STRING_COUNT_IMPL ( txtfmt_py_numeral_char_is_fn)
Value:
{ \
uint count = 0; \
for (; txtfmt_py_numeral_char_is_fn(*string); string += 1) { \
count += 1; \
} \
return count; \
} \
((void)0)
unsigned int uint
int count

Definition at line 175 of file text_format_py.cc.

Referenced by txtfmt_py_numeral_string_count_binary(), txtfmt_py_numeral_string_count_decimal(), txtfmt_py_numeral_string_count_hexadecimal(), txtfmt_py_numeral_string_count_octal(), and txtfmt_py_numeral_string_count_zeros().

Function Documentation

◆ ED_text_format_register_py()

◆ text_format_py_literals_bool()

static const Span< const char * > text_format_py_literals_bool ( text_format_py_literals_bool_data ,
ARRAY_SIZE(text_format_py_literals_bool_data)  )
static

◆ text_format_py_literals_builtinfunc()

static const Span< const char * > text_format_py_literals_builtinfunc ( text_format_py_literals_builtinfunc_data ,
ARRAY_SIZE(text_format_py_literals_builtinfunc_data)  )
static

◆ text_format_py_literals_specialvar()

static const Span< const char * > text_format_py_literals_specialvar ( text_format_py_literals_specialvar_data ,
ARRAY_SIZE(text_format_py_literals_specialvar_data)  )
static

◆ txtfmt_py_find_bool()

static int txtfmt_py_find_bool ( const char * string)
static

◆ txtfmt_py_find_builtinfunc()

static int txtfmt_py_find_builtinfunc ( const char * string)
static

◆ txtfmt_py_find_decorator()

static int txtfmt_py_find_decorator ( const char * string)
static

◆ txtfmt_py_find_numeral_inner()

◆ txtfmt_py_find_specialvar()

static int txtfmt_py_find_specialvar ( const char * string)
static

◆ txtfmt_py_format_identifier()

static char txtfmt_py_format_identifier ( const char * str)
static

◆ txtfmt_py_format_line()

◆ txtfmt_py_literal_numeral()

static int txtfmt_py_literal_numeral ( const char * string,
char prev_fmt )
static

◆ txtfmt_py_numeral_char_is_binary()

static bool txtfmt_py_numeral_char_is_binary ( const char c)
static

Definition at line 186 of file text_format_py.cc.

References ELEM.

Referenced by txtfmt_py_numeral_string_count_binary().

◆ txtfmt_py_numeral_char_is_decimal()

static bool txtfmt_py_numeral_char_is_decimal ( const char c)
static

Definition at line 206 of file text_format_py.cc.

Referenced by txtfmt_py_numeral_string_count_decimal().

◆ txtfmt_py_numeral_char_is_hexadecimal()

static bool txtfmt_py_numeral_char_is_hexadecimal ( const char c)
static

Definition at line 216 of file text_format_py.cc.

Referenced by txtfmt_py_numeral_string_count_hexadecimal().

◆ txtfmt_py_numeral_char_is_octal()

static bool txtfmt_py_numeral_char_is_octal ( const char c)
static

Definition at line 196 of file text_format_py.cc.

Referenced by txtfmt_py_numeral_string_count_octal().

◆ txtfmt_py_numeral_char_is_zero()

static bool txtfmt_py_numeral_char_is_zero ( const char c)
static

Definition at line 226 of file text_format_py.cc.

References ELEM.

Referenced by txtfmt_py_numeral_string_count_zeros().

◆ txtfmt_py_numeral_string_count_binary()

static uint txtfmt_py_numeral_string_count_binary ( const char * string)
static

◆ txtfmt_py_numeral_string_count_decimal()

static uint txtfmt_py_numeral_string_count_decimal ( const char * string)
static

◆ txtfmt_py_numeral_string_count_hexadecimal()

static uint txtfmt_py_numeral_string_count_hexadecimal ( const char * string)
static

◆ txtfmt_py_numeral_string_count_octal()

static uint txtfmt_py_numeral_string_count_octal ( const char * string)
static

◆ txtfmt_py_numeral_string_count_zeros()

static uint txtfmt_py_numeral_string_count_zeros ( const char * string)
static

Variable Documentation

◆ text_format_py_literals_bool_data

const char* text_format_py_literals_bool_data[]
static
Initial value:
= {
"False",
"None",
"True",
}

Python bool values.

Definition at line 104 of file text_format_py.cc.

◆ text_format_py_literals_builtinfunc_data

const char* text_format_py_literals_builtinfunc_data[]
static

The following items are derived from this list:

", ".join(['"%s"' % kw
for kw in sorted(__import__("keyword").kwlist + __import__("keyword").softkwlist)
if kw not in {"False", "None", "True", "def", "class", "_"}])

The code below can be re-generated using:

import keyword
ignore = {"False", "None", "True", "def", "class", "_"}
keywords = sorted(set(keyword.kwlist + keyword.softkwlist) - ignore)
longest = max(len(kw) for kw in keywords)
first = 'if (STR_LITERAL_STARTSWITH(string, "%s",%s len)) { i = len;'
middle = '} else if (STR_LITERAL_STARTSWITH(string, "%s",%s len)) { i = len;'
last = '} else %s { i = 0;'
print("\n".join([(first if i==0 else middle) % (kw, ' '*(longest - len(kw)))
for (i, kw) in enumerate(keywords)]) + "\n" +
last % (' '*(longest-2)) + "\n" +
"}")
int len

Python built-in function name. See: http://docs.python.org/py3k/reference/lexical_analysis.html#keywords

Definition at line 51 of file text_format_py.cc.

◆ text_format_py_literals_specialvar_data

const char* text_format_py_literals_specialvar_data[]
static
Initial value:
= {
"class",
"def",
}

Python special name.

Definition at line 93 of file text_format_py.cc.