Server IP : 192.64.118.117 / Your IP : 13.59.235.245 Web Server : LiteSpeed System : Linux premium56.web-hosting.com 4.18.0-513.24.1.lve.1.el8.x86_64 #1 SMP Thu May 9 15:10:09 UTC 2024 x86_64 User : thecgapy ( 1160) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /opt/cpanel/ea-ruby27/src/passenger-release-6.0.23/build/support/vendor/cxxcodebuilder/ |
Upload File : |
# cxxcodebuilder: generate C/C++ code with a Builder-style DSL Cxxcodebuilder gives you a simple Ruby API for programmatically outputting C/C++ code with proper indenting and formatting. Code using this API is much more readable than code building raw strings. Cxxcodebuilder is similar to [Jbuilder](https://github.com/rails/jbuilder), which is for outputting JSON. ## Use cases This library is useful in build systems for automatically generating C/C++ code. It is much cleaner compared to using ERB or other generic text templating systems for the job. ## Example Suppose that you want to write the following piece of code: ~~~c++ #include <stdio.h> static int limit = 0; static int magicNumbers[] = [1, 2, 3]; static Foo foos[] = [ { "hello", 1 }, { "world", 2 } ]; /* * This is an awesome model * for a futuristic car. */ struct Car { unsigned int seats; }; static int modifyLimit(int diff) { int oldLimit = limit; limit += diff; printf("The new limit is: %s\n", limit); return oldLimit; } ~~~ Use Cxxcodebuilder as follows: ~~~ruby require 'cxxcodebuilder' builder = CxxCodeBuilder::Builder.new do include '<stdio.h>' separator field 'static int limit', 0 field 'static int magicNumbers[]' do array_initializer do element 1 element 2 element 3 end end field 'static Foo foo[]' do array_initializer do struct_element do string_element 'hello' element 1 end struct_element do string_element 'world' element 2 end end end separator comment %q{ This is an awesome model for a futuristic car. } struct 'Car' do field 'unsigned int seats' end separator function('static int modifyLimit(int diff)', %q{ int oldLimit = limit; limit += diff; printf("The new limit is: %s\n", limit); return oldLimit; }) end puts(builder) ~~~ ## API See the comments in lib/cxxcodebuilder/builder.rb for the full API.