2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.yangtools.yang.model.api.type;
10 import java.util.Collection;
11 import java.util.Objects;
12 import org.eclipse.jdt.annotation.NonNull;
13 import org.eclipse.jdt.annotation.Nullable;
14 import org.opendaylight.yangtools.yang.common.QName;
15 import org.opendaylight.yangtools.yang.common.Uint32;
16 import org.opendaylight.yangtools.yang.common.YangConstants;
17 import org.opendaylight.yangtools.yang.model.api.DocumentedNode;
18 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
21 * Makes is possible to access to the individual bits values of this type.
23 public interface BitsTypeDefinition extends TypeDefinition<BitsTypeDefinition> {
25 * Well-known QName of the {@code bits} built-in type.
27 QName QNAME = QName.create(YangConstants.RFC6020_YANG_MODULE, "bits").intern();
30 * Returns all bit values.
32 * @return list of {@code Bit} type instances with data about all individual bits of {@code bits} YANG built-in type
34 @NonNull Collection<? extends Bit> getBits();
36 static int hashCode(final @NonNull BitsTypeDefinition type) {
37 return Objects.hash(type.getQName(), type.getUnknownSchemaNodes(), type.getBaseType(),
38 type.getUnits().orElse(null), type.getDefaultValue().orElse(null), type.getBits());
41 static boolean equals(final @NonNull BitsTypeDefinition type, final @Nullable Object obj) {
46 final BitsTypeDefinition other = TypeDefinitions.castIfEquals(BitsTypeDefinition.class, type, obj);
47 return other != null && type.getBits().equals(other.getBits());
50 static String toString(final @NonNull BitsTypeDefinition type) {
51 return TypeDefinitions.toStringHelper(type).add("bits", type.getBits()).toString();
55 * Contains the methods for accessing the data about the individual bit of
56 * <code>bits</code> YANG type.
58 interface Bit extends DocumentedNode.WithStatus {
60 * Returns the name of the concrete bit.
62 * @return string with the name of the concrete bit
64 @NonNull String getName();
67 * The position value MUST be in the range 0 to 4294967295, and it MUST
68 * be unique within the bits type.
70 * @return The position value of bit in range from 0 to 4294967295.
72 @NonNull Uint32 getPosition();