export class Implementation
{

  static craete( className:string, boundMethods:string, 
                 constructorExpressions:string, destructorExpressions:string, 
                 methodImplementations:string )
  {

    let cppImplementation = 
`
/* ${className}.cpp */

#include "${className}.h"

//  Registers fields, signals and methods for Godot
void ${className}::_bind_methods() 
{
  ${boundMethods}
}

//  Constructor
${className}::${className}() 
{
  ${constructorExpressions}
}

// Destructor
${className}::~${className}()
{
  ${destructorExpressions}
}

${methodImplementations}

`

    return cppImplementation;

  }

}