in src/langs/cpp/combinator.js [1773:1812]
grammerNewObject(emitter, gram, isAssign = true, isPtrParam = false) {
let objectName = gram.name;
if (!this.exprIsAssignToPtr && isAssign) {
emitter.emit(`${this.resolveName(objectName)}(`);
} else if (isAssign) {
emitter.emit(`make_shared<${this.resolveName(objectName)}>(`);
}
let tmp = [];
let params;
if (Array.isArray(gram.params)) {
params = gram.params;
} else {
params = [gram.params];
}
if (params.length) {
params.forEach(p => {
if (p instanceof GrammerValue && p.type === 'model_construct_params' && !p.value.length) {
return;
} else if (p instanceof GrammerValue && p.type === 'model_construct_params') {
isPtrParam = false;
}
let emit = new Emitter(this.config);
if (isPtrParam && !this.isPointerVar(p)) {
emit.emit(this.emitMakeShared(p.dataType ? p.dataType : p.type, p));
} else {
this.grammerValue(emit, p, false, false);
}
tmp.push(emit.output);
});
// emitter.emit(tmp.join(', '));
}
if (isAssign) {
emitter.emit(tmp.join(', '));
emitter.emit(')');
} else if (tmp.length) {
emitter.emit('(');
emitter.emit(tmp.join(', '));
emitter.emit(')');
}
}