import com.google.common.annotations.Beta;
import java.util.Optional;
import org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
@Beta
public interface BitEffectiveStatement extends EffectiveStatement<String, BitStatement> {
+ @Override
+ default StatementDefinition statementDefinition() {
+ return YangStmtMapping.BIT;
+ }
+
default Optional<Uint32> getDeclaredPosition() {
return findFirstEffectiveSubstatementArgument(PositionEffectiveStatement.class);
}
import java.util.Optional;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
public interface BitStatement extends DocumentedDeclaredStatement.WithStatus<String>,
IfFeatureAwareDeclaredStatement<String> {
+ @Override
+ default StatementDefinition statementDefinition() {
+ return YangStmtMapping.BIT;
+ }
+
default @NonNull String getName() {
// FIXME: YANGTOOLS-908: verifyNotNull() should not be needed here
return verifyNotNull(argument());
*/
package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.bit;
+import com.google.common.collect.ImmutableList;
import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.BitEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.BitStatement;
-import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
-abstract class AbstractBitStatementSupport
- extends AbstractStatementSupport<String, BitStatement, BitEffectiveStatement> {
+abstract class AbstractBitStatementSupport extends BaseStatementSupport<String, BitStatement, BitEffectiveStatement> {
AbstractBitStatementSupport() {
super(YangStmtMapping.BIT);
}
}
@Override
- public final BitStatement createDeclared(final StmtContext<String, BitStatement, ?> ctx) {
- return new BitStatementImpl(ctx);
+ protected final BitStatement createDeclared(final StmtContext<String, BitStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new RegularBitStatement(ctx, substatements);
}
@Override
- public final BitEffectiveStatement createEffective(
- final StmtContext<String, BitStatement, BitEffectiveStatement> ctx) {
- return new BitEffectiveStatementImpl(ctx);
+ protected final BitStatement createEmptyDeclared(final StmtContext<String, BitStatement, ?> ctx) {
+ return new EmptyBitStatement(ctx);
}
-}
\ No newline at end of file
+
+ @Override
+ protected final BitEffectiveStatement createEffective(
+ final StmtContext<String, BitStatement, BitEffectiveStatement> ctx, final BitStatement declared,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return new RegularBitEffectiveStatement(declared, substatements);
+ }
+
+ @Override
+ protected final BitEffectiveStatement createEmptyEffective(
+ final StmtContext<String, BitStatement, BitEffectiveStatement> ctx, final BitStatement declared) {
+ return new EmptyBitEffectiveStatement(declared);
+ }
+}
+++ /dev/null
-/*
- * Copyright (c) 2015 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.yangtools.yang.parser.rfc7950.stmt.bit;
-
-import org.opendaylight.yangtools.yang.model.api.stmt.BitEffectiveStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.BitStatement;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractEffectiveDocumentedNodeWithStatus;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-
-final class BitEffectiveStatementImpl extends AbstractEffectiveDocumentedNodeWithStatus<String, BitStatement>
- implements BitEffectiveStatement {
- BitEffectiveStatementImpl(final StmtContext<String, BitStatement, ?> ctx) {
- super(ctx);
- }
-
- @Override
- public String toString() {
- return BitEffectiveStatementImpl.class.getSimpleName() + "[name=" + argument() + ", position="
- + getDeclaredPosition().orElse(null) + "]";
- }
-}
--- /dev/null
+/*
+ * Copyright (c) 2020 PANTHEON.tech, s.r.o. 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.yangtools.yang.parser.rfc7950.stmt.bit;
+
+import org.opendaylight.yangtools.yang.model.api.DocumentedNode.WithStatus;
+import org.opendaylight.yangtools.yang.model.api.Status;
+import org.opendaylight.yangtools.yang.model.api.stmt.BitEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.BitStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.StatusEffectiveStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultArgument;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins.DocumentedNodeMixin;
+
+class EmptyBitEffectiveStatement extends DefaultArgument<String, BitStatement> implements
+ BitEffectiveStatement, DocumentedNodeMixin<String, BitStatement>, WithStatus {
+ EmptyBitEffectiveStatement(final BitStatement declared) {
+ super(declared);
+ }
+
+ @Override
+ public final Status getStatus() {
+ return findFirstEffectiveSubstatementArgument(StatusEffectiveStatement.class).orElse(Status.CURRENT);
+ }
+
+ @Override
+ public final String toString() {
+ return "BitEffectiveStatementImpl[name=" + argument() + ", position=" + getDeclaredPosition().orElse(null)
+ + "]";
+ }
+}
/*
- * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
+ * Copyright (c) 2020 PANTHEON.tech, s.r.o. 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,
package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.bit;
import org.opendaylight.yangtools.yang.model.api.stmt.BitStatement;
-import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithArgument;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-final class BitStatementImpl extends AbstractDeclaredStatement<String> implements BitStatement {
- BitStatementImpl(final StmtContext<String, BitStatement, ?> context) {
+final class EmptyBitStatement extends WithArgument<String> implements BitStatement {
+ EmptyBitStatement(final StmtContext<String, ?, ?> context) {
super(context);
}
}
--- /dev/null
+/*
+ * Copyright (c) 2020 PANTHEON.tech, s.r.o. 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.yangtools.yang.parser.rfc7950.stmt.bit;
+
+import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.BitStatement;
+
+final class RegularBitEffectiveStatement extends EmptyBitEffectiveStatement {
+ private final Object substatements;
+
+ RegularBitEffectiveStatement(final BitStatement declared,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ super(declared);
+ this.substatements = maskList(substatements);
+ }
+
+ @Override
+ public ImmutableList<? extends EffectiveStatement<?, ?>> effectiveSubstatements() {
+ return unmaskList(substatements);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2020 PANTHEON.tech, s.r.o. 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.yangtools.yang.parser.rfc7950.stmt.bit;
+
+import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.BitStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithArgument.WithSubstatements;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+
+final class RegularBitStatement extends WithSubstatements<String> implements BitStatement {
+ RegularBitStatement(final StmtContext<String, ?, ?> context,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ super(context, substatements);
+ }
+}