isPointerVar()

in src/langs/cpp/combinator.js [1235:1263]


  isPointerVar(gram, ignore_to_map = false) {
    if (gram instanceof GrammerValue) {
      if (gram.type === 'null') {
        return false;
      }
    }
    let grammerVar;
    if (gram instanceof GrammerVar) {
      grammerVar = gram;
    }
    if (gram instanceof GrammerValue) {
      if (gram.type === 'var' && gram.value instanceof GrammerVar) {
        grammerVar = gram.value;
      } else if (gram.type === 'call' && gram.value instanceof GrammerCall) {
        grammerVar = gram.value;
      } else if (ignore_to_map && gram.type === 'behavior' && gram.value instanceof BehaviorToMap) {
        grammerVar = gram.value.grammer;
      }
    }
    if (grammerVar && grammerVar instanceof GrammerVar) {
      let name = grammerVar.name ? _name(grammerVar.name) : '';
      if (this.isPtrStatement(name)) {
        return true;
      }
    } else if (grammerVar instanceof GrammerCall) {
      return this.isPointerPath(grammerVar.path.length - 1, grammerVar.path);
    }
    return false;
  }