Skip to content

achreto/crustal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CRustAL: The C/C++ from Rust Assembly Library

This crate provides a library with builder API for assembling C/C++ code from Rust.

LICENSE

MIT license

CONTRIBUTING

Code contributions are welcome. The submitter must use the sign-off feature for all commits confirming that the submitter has all rights to contribute the code under the license without any additional terms or conditions.

See the AUTHORS file for a list of contributors.

CREDIT

This crate is inspired by codegen-rs`

Installation

To use crustal clone the repository into the lib folder of your Rust project, or use crates.io

Usage

You can use crustal by adding the following lines to Cargo.toml file.

[dependencies]
crustal

Next, create a Scope and use the builder API to create elements in the scope. Lastly, call Scope::to_string() to get formatted C code as a string.

use crustal as CG;

let mut scope = CG::Scope::new();
scope.set_filename("include/my_file.hpp");

scope.push_doc_str("WARNING: This is auto-generated comment\n");
scope.new_include("stdio.h", true);

scope.new_class("MyClass")
        .set_base("StateBase", CG::Visibility::Public)
        .push_attribute(CG::Attribute::new(
        "name",
        CG::Type::new(CG::BaseType::new_int(8)),
    ));

println!("{}", scope.to_string());

produces the output

/// WARNING: This is auto-generated comment
#include <stdio.h>
class MyClass : public StateBase {

    private:
    uint64_t name;
}

About

Library for Assembling C/C++ Code from Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages