-
Notifications
You must be signed in to change notification settings - Fork 316
/
NodeModelOutput.java
46 lines (34 loc) · 1.38 KB
/
NodeModelOutput.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*******************************************************************************
* Copyright (c) Sebastian Zarnekow and others.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
package org.eclipse.xtext.nodemodel.impl;
import java.io.IOException;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.nodemodel.SyntaxErrorMessage;
/**
* Encapsulates serialization logic for the node model.
*
* @since 2.35
*/
public interface NodeModelOutput {
default void writeNode(AbstractNode node) throws IOException {
writeNode(node, node.getNodeId().ordinal());
}
default void writeNode(AbstractNode node, int type) throws IOException {
writeCompressedInt(type);
node.writeContent(this);
}
void writeGrammarElement(Object grammarElementOrArray) throws IOException;
void writeSemanticObject(EObject semanticElement) throws IOException;
void writeSyntaxErrorMessage(SyntaxErrorMessage syntaxErrorMessage) throws IOException;
void writeCompressedInt(int value) throws IOException;
void writeContent(String content) throws IOException;
default void writeLength(int value) throws IOException {
writeCompressedInt(value);
}
}