2 * Copyright (c) 2015 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.parser.spi.source;
10 import javax.annotation.Nonnull;
11 import javax.annotation.Nullable;
12 import org.opendaylight.yangtools.yang.common.QName;
13 import org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase;
15 public interface StatementWriter {
17 * Starts statement with supplied name and location in source.
20 * Each started statement must also be closed by
21 * {@link #endStatement(StatementSourceReference)} in order for stream to be
25 * If statement has substatements, in order to start substatement, call to
26 * {@link #startStatement(int, QName, String, StatementSourceReference)} needs to be done for substatement.
29 * Child identifier, unique among siblings
31 * Fully qualified name of statement.
33 * String representation of value as appeared in source, null if not present
35 * Identifier of location in source, which will be used for
36 * reporting in case of statement processing error.
37 * @throws SourceException
38 * if statement is not valid according to current context.
40 void startStatement(int childId, @Nonnull QName name, @Nullable String argument,
41 @Nonnull StatementSourceReference ref);
44 * Ends current opened statement.
47 * Identifier of location in source, which will be used for
48 * reporting in case of statement processing error.
49 * @throws SourceException
50 * if closed statement is not valid in current context, or there
51 * is no such statement
53 void endStatement(@Nonnull StatementSourceReference ref);
56 * Return current model processing phase.
58 * @return current processing phase
60 @Nonnull ModelProcessingPhase getPhase();