当前位置: 首页>>代码示例>>C++>>正文


C++ ExpressionPtr::Type方法代码示例

本文整理汇总了C++中ExpressionPtr::Type方法的典型用法代码示例。如果您正苦于以下问题:C++ ExpressionPtr::Type方法的具体用法?C++ ExpressionPtr::Type怎么用?C++ ExpressionPtr::Type使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ExpressionPtr的用法示例。


在下文中一共展示了ExpressionPtr::Type方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: Validate

bool ArgDef::Validate(ExpressionEvaluator evaluator, ExpressionPtr &expr, string &error) const {
  if (expr) {
    if (auto sexp = TypeHelper::GetValue<Sexp>(expr)) {
      auto &args = sexp->Args;
      if (!args.empty()) {
        ExpressionPtr fnExpr = move(args.front());
        args.pop_front();
        if (auto fn = TypeHelper::GetValue<Function>(fnExpr)) {
          bool result = ValidateArgs(evaluator, args, error);
          args.push_front(move(fnExpr));
          return result;
        }
        else
          throw invalid_argument("first argument in sexp must be a function");
      }
      else
        throw invalid_argument("sexp requires at least one argument");
    }
    else
      error = "Expected: Sexp. Actual: " + expr->Type().Name();
  }
  else
    throw invalid_argument("ExpressionPtr is empty");

  return error.empty();
}
开发者ID:bailesofhey,项目名称:slisp,代码行数:26,代码来源:FunctionDef.cpp

示例2: CheckArg

bool ArgDef::CheckArg(ExpressionEvaluator evaluator, ExpressionPtr &arg, const TypeInfo &expectedType, size_t argNum, string &error) const {
  if (arg && TypeHelper::TypeMatches(expectedType, arg->Type()) || evaluator(arg)) {
    if (&expectedType == &Literal::TypeInstance && &arg->Type() == &Quote::TypeInstance) {
      return true;
    }

    if (!TypeHelper::TypeMatches(expectedType, arg->Type())) {
      error = "Argument " + to_string(argNum) + ": Expected " + expectedType.Name() + ", got " + arg->Type().Name();
      return false;
    }
    else
      return true;
  }
  else {
    error = "Argument " + to_string(argNum) + ": Failed to evaluate";
    return false;
  }
}
开发者ID:bailesofhey,项目名称:slisp,代码行数:18,代码来源:FunctionDef.cpp

示例3: IsAtom

bool TypeHelper::IsAtom(const ExpressionPtr &expr) {
  return IsAtom(expr->Type());
}
开发者ID:bailesofhey,项目名称:slisp,代码行数:3,代码来源:FunctionDef.cpp


注:本文中的ExpressionPtr::Type方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。