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


C++ EnumDeclaration::getDefaultValue方法代码示例

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


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

示例1: visit

  void visit(TypeInfoEnumDeclaration *decl) override {
    IF_LOG Logger::println("TypeInfoEnumDeclaration::llvmDefine() %s",
                           decl->toChars());
    LOG_SCOPE;

    RTTIBuilder b(getEnumTypeInfoType());

    assert(decl->tinfo->ty == Tenum);
    TypeEnum *tc = static_cast<TypeEnum *>(decl->tinfo);
    EnumDeclaration *sd = tc->sym;

    // TypeInfo base
    b.push_typeinfo(sd->memtype);

    // char[] name
    b.push_string(sd->toPrettyChars());

    // void[] init
    // the array is null if the default initializer is zero
    if (!sd->members || decl->tinfo->isZeroInit(decl->loc)) {
      b.push_null_void_array();
    }
    // otherwise emit a void[] with the default initializer
    else {
      Expression *defaultval = sd->getDefaultValue(decl->loc);
      LLConstant *c = toConstElem(defaultval, gIR);
      b.push_void_array(c, sd->memtype, sd);
    }

    // finish
    b.finalize(gvar);
  }
开发者ID:wilzbach,项目名称:ldc,代码行数:32,代码来源:typinf.cpp

示例2: visit

  void visit(TypeInfoEnumDeclaration *decl) override {
    IF_LOG Logger::println("TypeInfoEnumDeclaration::llvmDefine() %s",
                           decl->toChars());
    LOG_SCOPE;

    RTTIBuilder b(Type::typeinfoenum);

    assert(decl->tinfo->ty == Tenum);
    TypeEnum *tc = static_cast<TypeEnum *>(decl->tinfo);
    EnumDeclaration *sd = tc->sym;

    // TypeInfo base
    b.push_typeinfo(sd->memtype);

    // char[] name
    b.push_string(sd->toPrettyChars());

    // void[] init
    // emit void[] with the default initialier, the array is null if the default
    // initializer is zero
    if (!sd->members || decl->tinfo->isZeroInit(decl->loc)) {
      b.push_null_void_array();
    }
    // otherwise emit a void[] with the default initializer
    else {
      Type *memtype = sd->memtype;
      LLType *memty = DtoType(memtype);
      LLConstant *C;
      Expression *defaultval = sd->getDefaultValue(decl->loc);
      if (memtype->isintegral()) {
        C = LLConstantInt::get(memty, defaultval->toInteger(),
                               !isLLVMUnsigned(memtype));
      } else if (memtype->isString()) {
        C = DtoConstString(
            static_cast<const char *>(defaultval->toStringExp()->string));
      } else if (memtype->isfloating()) {
        C = LLConstantFP::get(memty, defaultval->toReal());
      } else {
        llvm_unreachable("Unsupported type");
      }

      b.push_void_array(C, memtype, sd);
    }

    // finish
    b.finalize(getIrGlobal(decl));
  }
开发者ID:nrTQgc,项目名称:ldc,代码行数:47,代码来源:typinf.cpp


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