/*
* Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.mdsal.binding2.model.api.type.builder;
import com.google.common.annotations.Beta;
import org.opendaylight.mdsal.binding2.model.api.Enumeration;
import org.opendaylight.mdsal.binding2.model.api.Type;
import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
/**
* Enum Builder is interface that contains methods to build and instantiate
* Enumeration definition.
*
* @see Enumeration
*/
@Beta
public interface EnumBuilder extends Type {
/**
* The method creates new AnnotationTypeBuilder containing specified package
* name and annotation name.
* Neither the package name or annotation name can contain null
* references. In case that any of parameters contains null
the
* method SHOULD throw {@link IllegalArgumentException}
*
* @param packageName
* Package Name of Annotation Type
* @param name
* Name of Annotation Type
* @return new
instance of Annotation Type Builder.
*/
AnnotationTypeBuilder addAnnotation(final String packageName, final String name);
/**
*
* @param name
* @param value
*/
void addValue(final String name, final int value, final String description);
/**
*
* @param definingType
* @return
*/
Enumeration toInstance(final Type definingType);
/**
* Updates this builder with data from enumTypeDef
.
* Specifically this data represents list of value-name pairs.
*
* @param enumTypeDef
* enum type definition as source of enum data for
* enumBuilder
*/
void updateEnumPairsFromEnumTypeDef(final EnumTypeDefinition enumTypeDef);
/**
* @param description
*/
void setDescription(final String description);
}