Code Generator
Simple and straightforward code generator for creating C++ code. It also could be used for generating code in any programming language.
Every C++ element could render its current state to a string that could be evaluated as a legal C++ construction. Some elements could be rendered to a pair of representations (C++ classes and functions declaration and implementation)
Usage examples
C++ Variables
Python code:
var_count = Variable(name='count', type='int').val(0)
var_pi = Variable(name='pi', type='float').val(3.14)
var_title = Variable(name='title', type='const char *').val('Title:')
source = Source('main.cpp').add(var_count).add(var_pi).add(var_title)
str(source)
Generated C++ code:
int count = 0;
float pi = 3.14;
const char * title = "Title:";
C++ Functions
Python code:
def factorial_definition():
return 'return n < 1 ? 1 : (n * factorial(n - 1));'
factorial_function = Function(name='factorial', type='int')
.arg('int n')
.impl(factorial_definition)
source = Source('main.cpp').add(factorial_function)
str(source)
Generated C++ code:
int factorial(int n)
{
return n <= 1 ? 1 : (n * factorial(n - 1));
}
C++ Classes and Structures
Python code:
var_name = Variable(name='name', type='std::string')
fn_getname = Function(name='GetName', type='std::string', qualifiers=['const']).impl('return name;')
fn_setname = Function(name='SetName').arg('std::string & new_name').impl('name = new_name;')
cls_person = Class(name='Person')
.member(var_name, scope='private')
.method(fn_getname, scope='public')
.method(fn_setname, scope='public')
header = Header('Person.h').add(cls_person)
source = Source('Person.cpp').include(header).add(cls_person)
str(header)
str(source)
Generated C++ code for Person.h:
class Person
{
public:
std::string GetName() const;
void SetName(std::string & name);
private:
std::string name;
};
Generated C++ code for Person.cpp:
std::string Person::GetName() const
{
return name;
}
void Person::SetName(std::string & new_name)
{
name = new_name;
}
Maintainers
See DEVELOPERS.md
Metadata
Release files for erichschroeter.code-generator 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| erichschroeter_code_generator-0.1.0.tar.gz | 10.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| erichschroeter.code_generator-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.9 kB
Release files / erichschroeter_code_generator-0.1.0.tar.gz
| Download URL | erichschroeter_code_generator-0.1.0.tar.gz |
|---|---|
| Size | 10.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d054c47f35eac2d024f61f9e73e43ed0fc83803bc0e176b60513242cbf5fe0ac
|
|
BLAKE2b-256 checksum How to use checksums |
dbb4db4ff448f4dfdfefaeb2fc26d734c0069f1bffc3ad334cf01e1aa62afb7c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.12
|
Release files / erichschroeter.code_generator-0.1.0-py3-none-any.whl
| Download URL | erichschroeter.code_generator-0.1.0-py3-none-any.whl |
|---|---|
| Size | 13.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
823434292c87eecf4faa44f70503b968ad76ecc057d9333f6c00660e8de2473b
|
|
BLAKE2b-256 checksum How to use checksums |
a0c82436cb94111f8e69b55fd60098a20a6eed6ada1bd4a7c158e417eb9dec2b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.12
|