本文整理汇总了C++中DataType::addSubtype方法的典型用法代码示例。如果您正苦于以下问题:C++ DataType::addSubtype方法的具体用法?C++ DataType::addSubtype怎么用?C++ DataType::addSubtype使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DataType
的用法示例。
在下文中一共展示了DataType::addSubtype方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parseArrayType
DataType TypeParser::parseArrayType(bool genericParam) {
assert(_helper->next().type() == Token::Type::PunctuationOpenBracket);
DataType type = DataType(genericParam ? DataType::Kind::GenericArray : DataType::Kind::Array);
if (_helper->peek().type() != Token::Type::PunctuationCloseBracket) {
uint32_t value = 0;
if (!this->parseIntegerSpecifierValue(&value)) {
assert(0 && "Message: unable to parse array size");
return DataType();
}
type.setArrayCount(value);
}
if (!_helper->nextIf(Token::Type::PunctuationCloseBracket)) {
assert(0 && "Message: array type element count should be followed by a close bracket");
return DataType();
}
type.addSubtype(this->parseType(genericParam));
return this->applyTypePostfixes(type, genericParam);
}
示例2: parseFunctionOrTupleType
DataType TypeParser::parseFunctionOrTupleType() {
assert(_helper->nextIf(Token::Type::PunctuationOpenParen));
DataType type;
this->parseTypeListWithLabels(Token::Type::PunctuationCloseParen, [&] (const DataType& subtype) {
type.addSubtype(subtype);
});
if (!_helper->nextIf(Token::Type::PunctuationCloseParen)) {
assert(0 && "Message: failed to parse a tuple/function type");
return DataType();
}
if (!_helper->nextIf(Token::Type::OperatorArrow)) {
type.setKind(DataType::Kind::Tuple);
return type;
}
type.setKind(DataType::Kind::Function);
// TODO: clean this up - move the subtypes to parameters
type.parameters = type.subtypes;
type.subtypes.clear();
type.setReturnType(this->parseType());
return type;
}
示例3: parsePointerType
DataType TypeParser::parsePointerType(bool genericParam) {
assert(_helper->next().type() == Token::Type::OperatorStar);
DataType type = DataType(genericParam ? DataType::Kind::GenericPointer : DataType::Kind::Pointer);
type = this->parseTypePostfixes(type);
type.addSubtype(this->parseType(genericParam));
return this->applyTypePostfixes(type, genericParam);
}