function renderConstructorDefinition()

in src/cpp-renderer.ts [85:132]


function renderConstructorDefinition(
  className: string,
  constructor: CPlusPlus.ClassConstructor,
): string[] {
  var result: string[] = [];

  switch (constructor.default) {
    case CPlusPlus.ConstructorDefault.Default:
    case CPlusPlus.ConstructorDefault.Delete:
      // no need to emit
      break;
    default:
      var currentLine =
        className +
        '::' +
        constructor.name +
        '(' +
        renderParameters(constructor.params) +
        ')';
      if (constructor.initializers.length > 0) {
        result.push(currentLine + ' :');

        constructor.initializers.reduce(
          (previousValue, currentValue, currentIndex) => {
            var line =
              '  ' +
              currentValue.memberName +
              '(' +
              currentValue.expression +
              ')';
            if (currentIndex < constructor.initializers.length - 1) {
              line += ',';
            } else {
              line += ' {}';
            }

            previousValue.push(line);
            return previousValue;
          },
          result,
        );
      } else {
        result.push(currentLine + ' {}');
      }
  }

  return result;
}