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


C++ FuncEmitter::getUserAttributes方法代码示例

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


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

示例1: FTRACE

std::unique_ptr<php::Func> parse_func(ParseUnitState& puState,
                                      borrowed_ptr<php::Unit> unit,
                                      borrowed_ptr<php::Class> cls,
                                      const FuncEmitter& fe) {
  FTRACE(2, "  func: {}\n",
    fe.name()->data() && *fe.name()->data() ? fe.name()->data()
                                            : "pseudomain");

  auto ret             = folly::make_unique<php::Func>();
  ret->name            = fe.name();
  ret->srcInfo         = php::SrcInfo { fe.getLocation(),
                                        fe.getDocComment() };
  ret->unit            = unit;
  ret->cls             = cls;
  // Note: probably need to clear AttrLeaf here eventually.
  ret->attrs                  = fe.attrs();
  ret->userAttributes         = fe.getUserAttributes();
  ret->userRetTypeConstraint  = fe.returnTypeConstraint();
  ret->originalFilename       = fe.originalFilename();

  ret->top                    = fe.top();
  ret->isClosureBody          = fe.isClosureBody();
  ret->isGeneratorBody        = fe.isGenerator();
  ret->isGeneratorFromClosure = fe.isGeneratorFromClosure();
  ret->isPairGenerator        = fe.isPairGenerator();
  ret->hasGeneratorAsBody     = fe.hasGeneratorAsBody();

  ret->nextBlockId     = 0;

  add_frame_variables(*ret, fe);
  build_cfg(puState, *ret, fe);

  return ret;
}
开发者ID:Diego-Brocanelli,项目名称:hhvm,代码行数:34,代码来源:parse.cpp

示例2: FTRACE

std::unique_ptr<php::Func> parse_func(ParseUnitState& puState,
                                      borrowed_ptr<php::Unit> unit,
                                      borrowed_ptr<php::Class> cls,
                                      const FuncEmitter& fe) {
  FTRACE(2, "  func: {}\n",
    fe.name()->data() && *fe.name()->data() ? fe.name()->data()
                                            : "pseudomain");

  auto ret             = folly::make_unique<php::Func>();
  ret->name            = fe.name();
  ret->srcInfo         = php::SrcInfo { fe.getLocation(),
                                        fe.getDocComment() };
  ret->unit            = unit;
  ret->cls             = cls;
  ret->nextBlockId     = 0;

  ret->attrs                  = fe.attrs();
  ret->userAttributes         = fe.getUserAttributes();
  ret->returnUserType         = fe.returnUserType();
  ret->originalFilename       = fe.originalFilename();

  ret->top                    = fe.top();
  ret->isClosureBody          = fe.isClosureBody();
  ret->isGeneratorBody        = fe.isGenerator();
  ret->isGeneratorFromClosure = fe.isGeneratorFromClosure();
  ret->isPairGenerator        = fe.isPairGenerator();
  ret->isAsync                = fe.isAsync();
  ret->innerGeneratorFunc     = nullptr;
  ret->outerGeneratorFunc     = nullptr;

  /*
   * Generators that aren't inside classes (includes generators from
   * closures) end up with inner generator bodies living as free
   * functions, not on a class.  We track them here to link them after
   * we've finished parsing the whole unit.  parse_methods handles the
   * within-class generator linking cases.
   */
  if (auto const innerName = fe.getGeneratorBodyName()) {
    if (!ret->cls || ret->isClosureBody) {
      puState.generatorsToLink.emplace_back(borrow(ret), innerName);
    }
  }
  if (ret->isGeneratorBody && !cls) {
    always_assert(!puState.innerGenerators.count(ret->name));
    puState.innerGenerators[ret->name] = borrow(ret);
  }

  /*
   * HNI-style native functions get some extra information.
   */
  if (fe.isHNINative()) {
    ret->nativeInfo             = folly::make_unique<php::NativeInfo>();
    ret->nativeInfo->returnType = fe.getReturnType();
  }

  add_frame_variables(*ret, fe);
  build_cfg(puState, *ret, fe);

  return ret;
}
开发者ID:fmarcos83,项目名称:hhvm,代码行数:60,代码来源:parse.cpp

示例3: FTRACE

std::unique_ptr<php::Func> parse_func(ParseUnitState& puState,
                                      borrowed_ptr<php::Unit> unit,
                                      borrowed_ptr<php::Class> cls,
                                      const FuncEmitter& fe) {
    FTRACE(2, "  func: {}\n",
           fe.name()->data() && *fe.name()->data() ? fe.name()->data()
           : "pseudomain");

    auto ret             = folly::make_unique<php::Func>();
    ret->name            = fe.name();
    ret->srcInfo         = php::SrcInfo { fe.getLocation(),
                                          fe.getDocComment() };
    ret->unit            = unit;
    ret->cls             = cls;
    ret->nextBlockId     = 0;

    ret->attrs                  = fe.attrs();
    ret->userAttributes         = fe.getUserAttributes();
    ret->returnUserType         = fe.returnUserType();
    ret->originalFilename       = fe.originalFilename();

    ret->top                    = fe.top();
    ret->isClosureBody          = fe.isClosureBody();
    ret->isGeneratorBody        = fe.isGenerator();
    ret->isGeneratorFromClosure = fe.isGeneratorFromClosure();
    ret->isPairGenerator        = fe.isPairGenerator();
    ret->isAsync                = fe.isAsync();
    ret->generatorBodyName      = fe.getGeneratorBodyName();

    /*
     * HNI-style native functions get some extra information.
     */
    if (fe.isHNINative()) {
        ret->nativeInfo             = folly::make_unique<php::NativeInfo>();
        ret->nativeInfo->returnType = fe.getReturnType();
    }

    add_frame_variables(*ret, fe);
    build_cfg(puState, *ret, fe);

    return ret;
}
开发者ID:Hillgod,项目名称:hiphop-php,代码行数:42,代码来源:parse.cpp


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