EnumTypeEffectiveStatementImpl(
final StmtContext<String, TypeStatement, EffectiveStatement<String, TypeStatement>> ctx,
final EnumTypeDefinition baseType) {
super(ctx);
final EnumerationTypeBuilder builder = RestrictedTypes.newEnumerationBuilder(baseType,
ctx.getSchemaPath().get());
final YangVersion yangVersion = ctx.getRootVersion();
for (final EffectiveStatement<?, ?> stmt : effectiveSubstatements()) {
if (stmt instanceof EnumEffectiveStatementImpl) {
SourceException.throwIf(yangVersion != YangVersion.VERSION_1_1, ctx.getStatementSourceReference(),
"Restricted enumeration type is allowed only in YANG 1.1 version.");
final EnumEffectiveStatementImpl enumSubStmt = (EnumEffectiveStatementImpl) stmt;
final int effectiveValue;
if (enumSubStmt.getDeclaredValue() == null) {
effectiveValue = getBaseTypeEnumValue(enumSubStmt.getName(), baseType, ctx);
} else {
effectiveValue = enumSubStmt.getDeclaredValue();
}
builder.addEnum(EffectiveTypeUtil.buildEnumPair(enumSubStmt, effectiveValue));
} else if (stmt instanceof UnknownSchemaNode) {
builder.addUnknownSchemaNode((UnknownSchemaNode) stmt);
}
}
typeDefinition = builder.build();
}