addModelInclude()

in src/langs/cpp/combinator.js [117:156]


  addModelInclude(modelName) {
    let realFullClassName, includeFileName, using;
    let accessPath = modelName.split('.');
    const dependencies = this.dependencies;
    if (_contain(modelName, '$')) {
      realFullClassName = this.coreClass(modelName);
      includeFileName = `<${_toSnakeCase(this.config.tea.name)}/${_toSnakeCase(this.config.tea.header)}>`;
    } else if (accessPath.length > 1 && dependencies[accessPath[0]]) {
      const info = dependencies[accessPath[0]];
      // is third package model
      realFullClassName = `${_upperFirst(_name(info.scope))
      }_${_upperFirst(_name(info.package_name))
      }::${_name(accessPath.slice(1).join('.'))
      }`;
      let scope = _toSnakeCase(_name(info.scope));
      let client = _toSnakeCase(_name(info.package_name));
      includeFileName = `<${scope}/${client}.${this.config.header_ext}>`;
      using = null;
    } else if (accessPath.length === 1 && dependencies[accessPath[0]]) {
      const info = dependencies[accessPath[0]];
      realFullClassName = `${_upperFirst(_name(info.scope))
      }_${_upperFirst(_name(info.package_name))
      }::Client`;
      let scope = _toSnakeCase(_name(info.scope));
      let client = _toSnakeCase(_name(info.package_name));
      includeFileName = `<${scope}/${client}.${this.config.header_ext}>`;
      using = null;
    } else {
      // self model
      realFullClassName = _name(accessPath.join('.'));
      includeFileName = `<${_toSnakeCase(this.scope)}/${_toSnakeCase(this.package)}.${this.config.header_ext}>`;
      using = null;
    }
    if (!this.classNameMap[realFullClassName]) {
      const include = { import: realFullClassName, includeFileName, using };
      this.classNameMap[realFullClassName] = include;
      this.includeList.push(include);
    }
    return realFullClassName;
  }