/* * 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.yangtools.yang.model.api.stmt; 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; /** * Effective representation of a {@code config} statement. * *

* Note that unlike almost all other representations, these statements are only ever a reflection of a declared * {@code config} statement. The truly effective status of a particular statement within a tree depends on its parent * statements. As an example, given this YANG module: *

 *   
 *     module foo {
 *
 *       grouping foo {
 *         leaf baz {
 *           type string;
 *         }
 *       }
 *
 *       container bar {
 *         config false;
 *         uses foo;
 *       }
 *
 *       uses bar;
 *     }
 *   
 * 
* The object model will only reflect the {@code config} statement in {@code container bar}, but will not be present in * {@code bar}'s {@code baz} leaf. The real effective {@code config} of {@code leaf baz} is a tri-state value: *
    *
  1. within {@code grouping foo} it is not applicable, that is to say undefined
  2. *
  3. within {@code container bar} it is inherited, that is to say {@code false}
  4. *
  5. within {@code module foo} it is inherited from default, that is to say {@code true}
  6. *
* *

* Users are advised to use utility classes related to statement inference which consider parent/child relationships * of statements. */ public interface ConfigEffectiveStatement extends EffectiveStatement { @Override default StatementDefinition statementDefinition() { return YangStmtMapping.CONFIG; } }