formak.ast_tools

AST Tools.

Building blocks for representing a subset of C++ (and not necessarily a valid set by itself) to make for easier assembly than trying to add a combination of options to templates

Module Contents

Classes

CompileState

BaseAst

Public

Include a line for “public:”.

Private

Include a line for “private:”.

Arg

Namespace

Include start and end lines for a C++ namespace.

HeaderFile

SourceFile

ClassDef

Generate lines to set up a C++ struct or class.

EnumClassDef

ForwardClassDeclaration

MemberDeclaration

UsingDeclaration

ConstructorDeclaration

ConstructorDefinition

FunctionDef

Generate lines to set up a function definition (separate from a function declaration).

FunctionDeclaration

Return

If

Generate an if statement.

Templated

FromFileTemplate

Escape

Functions

autoindent

API

class formak.ast_tools.CompileState
indent: int = 0
class formak.ast_tools.BaseAst

Bases: ast.AST

Initialization

Initialize self. See help(type(self)) for accurate signature.

abstract compile(options: formak.ast_tools.CompileState, **kwargs)
indent(options: formak.ast_tools.CompileState)
formak.ast_tools.autoindent(compile_func)
class formak.ast_tools.Public

Bases: formak.ast_tools.BaseAst

Include a line for “public:”.

Initialization

Initialize self. See help(type(self)) for accurate signature.

compile(options: formak.ast_tools.CompileState, **kwargs)
class formak.ast_tools.Private

Bases: formak.ast_tools.BaseAst

Include a line for “private:”.

Initialization

Initialize self. See help(type(self)) for accurate signature.

compile(options: formak.ast_tools.CompileState, **kwargs)
class formak.ast_tools.Arg

Bases: formak.ast_tools.BaseAst

Initialization

Initialize self. See help(type(self)) for accurate signature.

_fields = ('type_', 'name')
type_: str = None
name: str = None
compile(options: formak.ast_tools.CompileState, **kwargs)
class formak.ast_tools.Namespace

Bases: formak.ast_tools.BaseAst

Include start and end lines for a C++ namespace.

Initialization

Initialize self. See help(type(self)) for accurate signature.

_fields = ('name', 'body')
name: str = None
body: Iterable[formak.ast_tools.BaseAst] = None
compile(options: formak.ast_tools.CompileState, **kwargs)
class formak.ast_tools.HeaderFile

Bases: formak.ast_tools.BaseAst

Initialization

Initialize self. See help(type(self)) for accurate signature.

_fields = ('pragma', 'includes', 'namespaces')
pragma: bool = None
includes: List[str] = None
namespaces: List[formak.ast_tools.Namespace] = None
compile(options: formak.ast_tools.CompileState, **kwargs)
class formak.ast_tools.SourceFile

Bases: formak.ast_tools.BaseAst

Initialization

Initialize self. See help(type(self)) for accurate signature.

_fields = ('includes', 'namespaces')
includes: List[str] = None
namespaces: List[formak.ast_tools.Namespace] = None
compile(options: formak.ast_tools.CompileState, **kwargs)
class formak.ast_tools.ClassDef

Bases: formak.ast_tools.BaseAst

Generate lines to set up a C++ struct or class.

Initialization

Initialize self. See help(type(self)) for accurate signature.

_fields = ('tag', 'name', 'bases', 'body')
tag: str = None
name: str = None
bases: List[str] = None
body: Iterable[formak.ast_tools.BaseAst] = None
compile(options: formak.ast_tools.CompileState, **kwargs)
class formak.ast_tools.EnumClassDef

Bases: formak.ast_tools.BaseAst

Initialization

Initialize self. See help(type(self)) for accurate signature.

_fields = ('name', 'members')
name: str = None
members: List[str] = None
compile(options: formak.ast_tools.CompileState, **kwargs)
class formak.ast_tools.ForwardClassDeclaration

Bases: formak.ast_tools.BaseAst

Initialization

Initialize self. See help(type(self)) for accurate signature.

_fields = ('tag', 'name')
tag: str = None
name: str = None
compile(options: formak.ast_tools.CompileState, **kwargs)
class formak.ast_tools.MemberDeclaration

Bases: formak.ast_tools.BaseAst

Initialization

Initialize self. See help(type(self)) for accurate signature.

_fields = ('type_', 'name', 'value')
type_: str = None
name: str = None
value: Optional[Any] = None
compile(options: formak.ast_tools.CompileState, **kwargs)
class formak.ast_tools.UsingDeclaration

Bases: formak.ast_tools.BaseAst

Initialization

Initialize self. See help(type(self)) for accurate signature.

_fields = ('name', 'type_')
name: str = None
type_: str = None
compile(options: formak.ast_tools.CompileState, **kwargs)
class formak.ast_tools.ConstructorDeclaration

Bases: formak.ast_tools.BaseAst

Initialization

Initialize self. See help(type(self)) for accurate signature.

_fields = ('args',)
args: Optional[Iterable[formak.ast_tools.Arg]] = None
compile(options: formak.ast_tools.CompileState, classname: str, **kwargs)
class formak.ast_tools.ConstructorDefinition

Bases: formak.ast_tools.BaseAst

Initialization

Initialize self. See help(type(self)) for accurate signature.

_fields = ('classname', 'args', 'initializer_list')
classname: str = None
args: Optional[Iterable[formak.ast_tools.Arg]] = None
initializer_list: Optional[List[Tuple[str, str]]] = None
compile(options: formak.ast_tools.CompileState, **kwargs)
class formak.ast_tools.FunctionDef

Bases: formak.ast_tools.BaseAst

Generate lines to set up a function definition (separate from a function declaration).

Initialization

Initialize self. See help(type(self)) for accurate signature.

_fields = ('return_type', 'name', 'args', 'modifier', 'body')
return_type: str = None
name: str = None
args: Iterable[formak.ast_tools.Arg] = None
modifier: str = None
body: Iterable[formak.ast_tools.BaseAst] = None
compile(options: formak.ast_tools.CompileState, **kwargs)
class formak.ast_tools.FunctionDeclaration

Bases: formak.ast_tools.BaseAst

Initialization

Initialize self. See help(type(self)) for accurate signature.

_fields = ('return_type', 'name', 'args', 'modifier')
return_type: str = None
name: str = None
args: Iterable[formak.ast_tools.Arg] = None
modifier: str = None
compile(options: formak.ast_tools.CompileState, **kwargs)
class formak.ast_tools.Return

Bases: formak.ast_tools.BaseAst

Initialization

Initialize self. See help(type(self)) for accurate signature.

_fields = ('value',)
value: str = None
compile(options: formak.ast_tools.CompileState, **kwargs)
class formak.ast_tools.If

Bases: formak.ast_tools.BaseAst

Generate an if statement.

Naming follows the Python AST

Initialization

Initialize self. See help(type(self)) for accurate signature.

_fields = ('test', 'body', 'orelse')
test: str = None
body: Iterable[formak.ast_tools.BaseAst] = None
orelse: List[Any] = None
compile(options: formak.ast_tools.CompileState, **kwargs)
class formak.ast_tools.Templated

Bases: formak.ast_tools.BaseAst

Initialization

Initialize self. See help(type(self)) for accurate signature.

_fields = ('template_args', 'templated')
template_args: Iterable[formak.ast_tools.Arg] = None
templated: Any = None
compile(options: formak.ast_tools.CompileState, **kwargs)
class formak.ast_tools.FromFileTemplate

Bases: formak.ast_tools.BaseAst

Initialization

Initialize self. See help(type(self)) for accurate signature.

_fields = ('name', 'inserts')
name: str = None
inserts: Optional[Dict[str, Any]] = None
compile(options: formak.ast_tools.CompileState, **kwargs)
class formak.ast_tools.Escape

Bases: formak.ast_tools.BaseAst

Initialization

Initialize self. See help(type(self)) for accurate signature.

_fields = ('string',)
string: str = None
compile(options: formak.ast_tools.CompileState, **kwargs)