/**
* PSHDL is a library and (trans-)compiler for PSHDL input. It generates
* output suitable for implementation or simulation of it.
*
* Copyright (C) 2013 Karsten Becker (feedback (at) pshdl (dot) org)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* This License does not grant permission to use the trade names, trademarks,
* service marks, or product names of the Licensor, except as required for
* reasonable and customary use in describing the origin of the Work.
*
* Contributors:
* Karsten Becker - initial API and implementation
*/
package org.pshdl.model.extensions;
import com.google.common.base.Objects;
import com.google.common.base.Optional;
import java.util.ArrayList;
import java.util.Arrays;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.pshdl.model.HDLAnnotation;
import org.pshdl.model.HDLArgument;
import org.pshdl.model.HDLArrayInit;
import org.pshdl.model.HDLAssignment;
import org.pshdl.model.HDLBitOp;
import org.pshdl.model.HDLBlock;
import org.pshdl.model.HDLClass;
import org.pshdl.model.HDLConcat;
import org.pshdl.model.HDLDeclaration;
import org.pshdl.model.HDLDirectGeneration;
import org.pshdl.model.HDLEnum;
import org.pshdl.model.HDLEnumDeclaration;
import org.pshdl.model.HDLEnumRef;
import org.pshdl.model.HDLEqualityOp;
import org.pshdl.model.HDLExport;
import org.pshdl.model.HDLExpression;
import org.pshdl.model.HDLForLoop;
import org.pshdl.model.HDLFunctionCall;
import org.pshdl.model.HDLFunctionParameter;
import org.pshdl.model.HDLIfStatement;
import org.pshdl.model.HDLInlineFunction;
import org.pshdl.model.HDLInterface;
import org.pshdl.model.HDLInterfaceDeclaration;
import org.pshdl.model.HDLInterfaceInstantiation;
import org.pshdl.model.HDLInterfaceRef;
import org.pshdl.model.HDLLiteral;
import org.pshdl.model.HDLManip;
import org.pshdl.model.HDLNativeFunction;
import org.pshdl.model.HDLOpExpression;
import org.pshdl.model.HDLPackage;
import org.pshdl.model.HDLPrimitive;
import org.pshdl.model.HDLRange;
import org.pshdl.model.HDLReference;
import org.pshdl.model.HDLRegisterConfig;
import org.pshdl.model.HDLStatement;
import org.pshdl.model.HDLSubstituteFunction;
import org.pshdl.model.HDLSwitchCaseStatement;
import org.pshdl.model.HDLSwitchStatement;
import org.pshdl.model.HDLTernary;
import org.pshdl.model.HDLType;
import org.pshdl.model.HDLUnit;
import org.pshdl.model.HDLUnresolvedFragment;
import org.pshdl.model.HDLUnresolvedFragmentFunction;
import org.pshdl.model.HDLVariable;
import org.pshdl.model.HDLVariableDeclaration;
import org.pshdl.model.HDLVariableRef;
import org.pshdl.model.IHDLObject;
import org.pshdl.model.utils.HDLQualifiedName;
import org.pshdl.model.utils.SyntaxHighlighter;
@SuppressWarnings("all")
public class StringWriteExtension {
private static StringWriteExtension INST = new StringWriteExtension();
protected String _toString(final IHDLObject exp, final SyntaxHighlighter highlight) {
HDLClass _classType = exp.getClassType();
String _plus = ("Did not implement toString for " + _classType);
throw new RuntimeException(_plus);
}
protected String _toString(final HDLExpression exp, final SyntaxHighlighter highlight) {
HDLClass _classType = exp.getClassType();
String _plus = ("Did not implement toString for " + _classType);
throw new RuntimeException(_plus);
}
protected String _toString(final HDLStatement exp, final SyntaxHighlighter highlight) {
HDLClass _classType = exp.getClassType();
String _plus = ("Did not implement toString for " + _classType);
throw new RuntimeException(_plus);
}
public static String asString(final IHDLObject exp, final SyntaxHighlighter highlight) {
boolean _tripleEquals = (exp == null);
if (_tripleEquals) {
throw new IllegalArgumentException("Can not handle null argument");
}
return StringWriteExtension.INST.toString(exp, highlight);
}
protected String _toString(final HDLArrayInit array, final SyntaxHighlighter highlight) {
StringConcatenation _builder = new StringConcatenation();
String _entering = this.entering(array, highlight);
_builder.append(_entering, "");
_builder.append("{");
{
ArrayList<HDLExpression> _exp = array.getExp();
boolean _hasElements = false;
for(final HDLExpression e : _exp) {
if (!_hasElements) {
_hasElements = true;
} else {
_builder.appendImmediate(",", "");
}
String _string = this.toString(e, highlight);
_builder.append(_string, "");
}
}
_builder.append("}");
String _leaving = this.leaving(array, highlight);
_builder.append(_leaving, "");
return _builder.toString();
}
public String leaving(final IHDLObject init, final SyntaxHighlighter highlighter) {
return highlighter.leaving(init);
}
public String entering(final IHDLObject init, final SyntaxHighlighter highlighter) {
return highlighter.entering(init);
}
protected String _toString(final HDLAnnotation anno, final SyntaxHighlighter highlight) {
final StringBuilder sb = new StringBuilder();
String _entering = this.entering(anno, highlight);
sb.append(_entering);
String _name = anno.getName();
String _annotation = highlight.annotation(_name);
sb.append(_annotation);
String _value = anno.getValue();
boolean _tripleNotEquals = (_value != null);
if (_tripleNotEquals) {
StringBuilder _append = sb.append("(");
String _value_1 = anno.getValue();
String _plus = ("\"" + _value_1);
String _plus_1 = (_plus + "\"");
String _string = highlight.string(_plus_1);
StringBuilder _append_1 = _append.append(_string);
_append_1.append(")");
}
String _leaving = this.leaving(anno, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLTernary tern, final SyntaxHighlighter highlight) {
StringConcatenation _builder = new StringConcatenation();
String _entering = this.entering(tern, highlight);
_builder.append(_entering, "");
_builder.append("(");
HDLExpression _ifExpr = tern.getIfExpr();
String _string = this.toString(_ifExpr, highlight);
_builder.append(_string, "");
String _operator = highlight.operator("?");
_builder.append(_operator, "");
HDLExpression _thenExpr = tern.getThenExpr();
String _string_1 = this.toString(_thenExpr, highlight);
_builder.append(_string_1, "");
String _operator_1 = highlight.operator(":");
_builder.append(_operator_1, "");
HDLExpression _elseExpr = tern.getElseExpr();
String _string_2 = this.toString(_elseExpr, highlight);
_builder.append(_string_2, "");
_builder.append(")");
String _leaving = this.leaving(tern, highlight);
_builder.append(_leaving, "");
return _builder.toString();
}
protected String _toString(final HDLOpExpression op, final SyntaxHighlighter highlight) {
StringConcatenation _builder = new StringConcatenation();
String _entering = this.entering(op, highlight);
_builder.append(_entering, "");
_builder.append("(");
HDLExpression _left = op.getLeft();
String _string = this.toString(_left, highlight);
_builder.append(_string, "");
Enum<?> _type = op.getType();
String _string_1 = _type.toString();
String _operator = highlight.operator(_string_1);
_builder.append(_operator, "");
HDLExpression _right = op.getRight();
String _string_2 = this.toString(_right, highlight);
_builder.append(_string_2, "");
_builder.append(")");
String _leaving = this.leaving(op, highlight);
_builder.append(_leaving, "");
return _builder.toString();
}
protected String _toString(final HDLEqualityOp op, final SyntaxHighlighter highlight) {
StringConcatenation _builder = new StringConcatenation();
String _entering = this.entering(op, highlight);
_builder.append(_entering, "");
_builder.append("(");
HDLExpression _left = op.getLeft();
String _string = this.toString(_left, highlight);
_builder.append(_string, "");
String _simpleSpace = highlight.simpleSpace();
_builder.append(_simpleSpace, "");
HDLEqualityOp.HDLEqualityOpType _type = op.getType();
String _string_1 = _type.toString();
String _operator = highlight.operator(_string_1);
_builder.append(_operator, "");
String _simpleSpace_1 = highlight.simpleSpace();
_builder.append(_simpleSpace_1, "");
HDLExpression _right = op.getRight();
String _string_2 = this.toString(_right, highlight);
_builder.append(_string_2, "");
_builder.append(")");
String _leaving = this.leaving(op, highlight);
_builder.append(_leaving, "");
return _builder.toString();
}
protected String _toString(final HDLUnresolvedFragmentFunction frag, final SyntaxHighlighter highlight) {
String _xifexpression = null;
Boolean _isStatement = frag.getIsStatement();
if ((_isStatement).booleanValue()) {
StringBuilder _spacing = highlight.getSpacing();
_xifexpression = _spacing.toString();
} else {
_xifexpression = "";
}
final String sb = _xifexpression;
String _entering = this.entering(frag, highlight);
String _plus = (sb + _entering);
String _stringFrag = this.toStringFrag(frag, highlight);
String _plus_1 = (_plus + _stringFrag);
StringConcatenation _builder = new StringConcatenation();
_builder.append("(");
{
ArrayList<HDLExpression> _params = frag.getParams();
boolean _hasElements = false;
for(final HDLExpression p : _params) {
if (!_hasElements) {
_hasElements = true;
} else {
_builder.appendImmediate(",", "");
}
String _string = this.toString(p, highlight);
_builder.append(_string, "");
}
}
_builder.append(")");
String res = (_plus_1 + _builder);
Boolean _isStatement_1 = frag.getIsStatement();
if ((_isStatement_1).booleanValue()) {
res = (res + ";");
}
String _leaving = this.leaving(frag, highlight);
return (res + _leaving);
}
protected String _toString(final HDLUnresolvedFragment frag, final SyntaxHighlighter highlight) {
String _entering = this.entering(frag, highlight);
String _stringFrag = this.toStringFrag(frag, highlight);
String string = (_entering + _stringFrag);
Boolean _isStatement = frag.getIsStatement();
if ((_isStatement).booleanValue()) {
string = (string + ";");
}
String _leaving = this.leaving(frag, highlight);
return (string + _leaving);
}
public String toStringFrag(final HDLUnresolvedFragment frag, final SyntaxHighlighter highlight) {
final StringBuilder sb = new StringBuilder();
String _frag = frag.getFrag();
sb.append(_frag);
StringConcatenation _builder = new StringConcatenation();
{
ArrayList<HDLExpression> _array = frag.getArray();
boolean _hasElements = false;
for(final HDLExpression p : _array) {
if (!_hasElements) {
_hasElements = true;
_builder.append("[", "");
} else {
_builder.appendImmediate("][", "");
}
String _string = this.toString(p, highlight);
_builder.append(_string, "");
}
if (_hasElements) {
_builder.append("]", "");
}
}
sb.append(_builder);
StringConcatenation _builder_1 = new StringConcatenation();
{
ArrayList<HDLRange> _bits = frag.getBits();
boolean _hasElements_1 = false;
for(final HDLRange p_1 : _bits) {
if (!_hasElements_1) {
_hasElements_1 = true;
_builder_1.append("{", "");
} else {
_builder_1.appendImmediate(",", "");
}
String _string_1 = this.toString(p_1, highlight);
_builder_1.append(_string_1, "");
}
if (_hasElements_1) {
_builder_1.append("}", "");
}
}
sb.append(_builder_1);
HDLUnresolvedFragment _sub = frag.getSub();
boolean _tripleNotEquals = (_sub != null);
if (_tripleNotEquals) {
StringBuilder _append = sb.append(".");
HDLUnresolvedFragment _sub_1 = frag.getSub();
String _string_2 = this.toString(_sub_1, highlight);
_append.append(_string_2);
}
return sb.toString();
}
protected String _toString(final HDLBitOp bitOp, final SyntaxHighlighter highlight) {
final StringBuilder sb = new StringBuilder();
String _entering = this.entering(bitOp, highlight);
sb.append(_entering);
StringBuilder _append = sb.append("(");
HDLExpression _left = bitOp.getLeft();
String _string = this.toString(_left, highlight);
_append.append(_string);
final HDLBitOp.HDLBitOpType type = bitOp.getType();
boolean _or = false;
boolean _equals = Objects.equal(type, HDLBitOp.HDLBitOpType.LOGI_AND);
if (_equals) {
_or = true;
} else {
boolean _equals_1 = Objects.equal(type, HDLBitOp.HDLBitOpType.LOGI_OR);
_or = _equals_1;
}
if (_or) {
String _simpleSpace = highlight.simpleSpace();
StringBuilder _append_1 = sb.append(_simpleSpace);
String _string_1 = type.toString();
String _operator = highlight.operator(_string_1);
StringBuilder _append_2 = _append_1.append(_operator);
String _simpleSpace_1 = highlight.simpleSpace();
_append_2.append(_simpleSpace_1);
} else {
String _string_2 = type.toString();
String _operator_1 = highlight.operator(_string_2);
sb.append(_operator_1);
}
HDLExpression _right = bitOp.getRight();
String _string_3 = this.toString(_right, highlight);
StringBuilder _append_3 = sb.append(_string_3);
_append_3.append(")");
String _leaving = this.leaving(bitOp, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLConcat concat, final SyntaxHighlighter highlight) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("(");
String _entering = this.entering(concat, highlight);
_builder.append(_entering, "");
{
ArrayList<HDLExpression> _cats = concat.getCats();
boolean _hasElements = false;
for(final HDLExpression cat : _cats) {
if (!_hasElements) {
_hasElements = true;
} else {
String _operator = highlight.operator("#");
_builder.appendImmediate(_operator, "");
}
String _string = this.toString(cat, highlight);
String _operator_1 = highlight.operator(_string);
_builder.append(_operator_1, "");
}
}
String _leaving = this.leaving(concat, highlight);
_builder.append(_leaving, "");
_builder.append(")");
return _builder.toString();
}
protected String _toString(final HDLFunctionCall func, final SyntaxHighlighter highlight) {
boolean isStatement = false;
IHDLObject _container = func.getContainer();
final IHDLObject container = _container;
boolean _matched = false;
if (!_matched) {
if (container instanceof HDLBlock) {
_matched=true;
isStatement = true;
}
}
if (!_matched) {
if (container instanceof HDLStatement) {
_matched=true;
isStatement = (((!(container instanceof HDLAssignment)) && (!(container instanceof HDLFunctionCall))) &&
(!(container instanceof HDLInlineFunction)));
}
}
if (!_matched) {
if (container instanceof HDLUnit) {
_matched=true;
isStatement = true;
}
}
StringBuilder _xifexpression = null;
if (isStatement) {
_xifexpression = highlight.getSpacing();
} else {
_xifexpression = new StringBuilder();
}
final StringBuilder sb = _xifexpression;
String _entering = this.entering(func, highlight);
sb.append(_entering);
HDLQualifiedName _functionRefName = func.getFunctionRefName();
String _string = _functionRefName.toString();
String _functionCall = highlight.functionCall(_string);
StringBuilder _append = sb.append(_functionCall);
_append.append("(");
StringConcatenation _builder = new StringConcatenation();
{
ArrayList<HDLExpression> _params = func.getParams();
boolean _hasElements = false;
for(final HDLExpression p : _params) {
if (!_hasElements) {
_hasElements = true;
} else {
_builder.appendImmediate(",", "");
}
String _string_1 = this.toString(p, highlight);
_builder.append(_string_1, "");
}
}
sb.append(_builder);
sb.append(")");
if (isStatement) {
sb.append(";");
}
String _leaving = this.leaving(func, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLFunctionParameter func, final SyntaxHighlighter highlight) {
final StringBuilder sb = new StringBuilder();
HDLFunctionParameter.RWType _rw = func.getRw();
boolean _tripleNotEquals = (_rw != HDLFunctionParameter.RWType.READ);
if (_tripleNotEquals) {
HDLFunctionParameter.RWType _rw_1 = func.getRw();
sb.append(_rw_1);
}
HDLFunctionParameter.Type _type = func.getType();
sb.append(_type);
HDLFunctionParameter.Type _type_1 = func.getType();
if (_type_1 != null) {
switch (_type_1) {
case PARAM_ENUM:
StringBuilder _append = sb.append("<");
HDLQualifiedName _enumSpecRefName = func.getEnumSpecRefName();
String _string = _enumSpecRefName.toString();
String _enumRefType = highlight.enumRefType(_string);
StringBuilder _append_1 = _append.append(_enumRefType);
_append_1.append(">");
break;
case PARAM_IF:
StringBuilder _append_2 = sb.append("<");
HDLQualifiedName _enumSpecRefName_1 = func.getEnumSpecRefName();
String _string_1 = _enumSpecRefName_1.toString();
String _enumRefType_1 = highlight.enumRefType(_string_1);
StringBuilder _append_3 = _append_2.append(_enumRefType_1);
_append_3.append(">");
break;
case PARAM_FUNCTION:
StringConcatenation _builder = new StringConcatenation();
_builder.append("<");
{
ArrayList<HDLFunctionParameter> _funcSpec = func.getFuncSpec();
boolean _hasElements = false;
for(final HDLFunctionParameter p : _funcSpec) {
if (!_hasElements) {
_hasElements = true;
} else {
_builder.appendImmediate(",", "");
}
String _string_2 = this.toString(p, highlight);
_builder.append(_string_2, "");
}
}
sb.append(_builder);
HDLFunctionParameter _funcReturnSpec = func.getFuncReturnSpec();
boolean _tripleNotEquals_1 = (_funcReturnSpec != null);
if (_tripleNotEquals_1) {
String _simpleSpace = highlight.simpleSpace();
StringBuilder _append_4 = sb.append(_simpleSpace);
StringBuilder _append_5 = _append_4.append("=>");
String _simpleSpace_1 = highlight.simpleSpace();
StringBuilder _append_6 = _append_5.append(_simpleSpace_1);
HDLFunctionParameter _funcReturnSpec_1 = func.getFuncReturnSpec();
String _string_3 = this.toString(_funcReturnSpec_1, highlight);
_append_6.append(_string_3);
}
sb.append(">");
break;
default:
break;
}
}
HDLVariable _name = func.getName();
boolean _tripleNotEquals_2 = (_name != null);
if (_tripleNotEquals_2) {
String _simpleSpace_2 = highlight.simpleSpace();
StringBuilder _append_7 = sb.append(_simpleSpace_2);
HDLVariable _name_1 = func.getName();
String _varName = highlight.varName(_name_1);
_append_7.append(_varName);
}
ArrayList<HDLExpression> _dim = func.getDim();
for (final HDLExpression d : _dim) {
boolean _matched = false;
if (!_matched) {
if (d instanceof HDLLiteral) {
Boolean _str = ((HDLLiteral)d).getStr();
if (_str) {
_matched=true;
sb.append("[]");
}
}
}
if (!_matched) {
StringBuilder _append_8 = sb.append("[");
String _string_4 = this.toString(d, highlight);
StringBuilder _append_9 = _append_8.append(_string_4);
_append_9.append("]");
}
}
return sb.toString();
}
protected String _toString(final HDLNativeFunction func, final SyntaxHighlighter highlight) {
final StringBuilder sb = new StringBuilder();
String _entering = this.entering(func, highlight);
sb.append(_entering);
ArrayList<HDLAnnotation> _annotations = func.getAnnotations();
for (final HDLAnnotation anno : _annotations) {
String _string = this.toString(anno, highlight);
StringBuilder _append = sb.append(_string);
String _simpleSpace = highlight.simpleSpace();
_append.append(_simpleSpace);
}
Boolean _simOnly = func.getSimOnly();
if ((_simOnly).booleanValue()) {
String _keyword = highlight.keyword("simulation");
StringBuilder _append_1 = sb.append(_keyword);
String _simpleSpace_1 = highlight.simpleSpace();
_append_1.append(_simpleSpace_1);
}
String _keyword_1 = highlight.keyword("native");
sb.append(_keyword_1);
String _simpleSpace_2 = highlight.simpleSpace();
sb.append(_simpleSpace_2);
String _keyword_2 = highlight.keyword("function");
sb.append(_keyword_2);
String _simpleSpace_3 = highlight.simpleSpace();
sb.append(_simpleSpace_3);
HDLFunctionParameter _returnType = func.getReturnType();
boolean _tripleNotEquals = (_returnType != null);
if (_tripleNotEquals) {
HDLFunctionParameter _returnType_1 = func.getReturnType();
String _string_1 = this.toString(_returnType_1, highlight);
StringBuilder _append_2 = sb.append(_string_1);
String _simpleSpace_4 = highlight.simpleSpace();
_append_2.append(_simpleSpace_4);
}
String _name = func.getName();
String _functionDecl = highlight.functionDecl(_name);
sb.append(_functionDecl);
StringConcatenation _builder = new StringConcatenation();
_builder.append("(");
{
ArrayList<HDLFunctionParameter> _args = func.getArgs();
boolean _hasElements = false;
for(final HDLFunctionParameter arg : _args) {
if (!_hasElements) {
_hasElements = true;
} else {
_builder.appendImmediate(",", "");
}
String _string_2 = this.toString(arg, highlight);
_builder.append(_string_2, "");
}
}
_builder.append(")");
sb.append(_builder);
StringBuilder _append_3 = sb.append(";");
String _newLine = highlight.newLine();
_append_3.append(_newLine);
String _leaving = this.leaving(func, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLInlineFunction func, final SyntaxHighlighter highlight) {
final StringBuilder sb = new StringBuilder();
String _entering = this.entering(func, highlight);
sb.append(_entering);
ArrayList<HDLAnnotation> _annotations = func.getAnnotations();
for (final HDLAnnotation anno : _annotations) {
String _string = this.toString(anno, highlight);
StringBuilder _append = sb.append(_string);
String _simpleSpace = highlight.simpleSpace();
_append.append(_simpleSpace);
}
String _keyword = highlight.keyword("inline");
StringBuilder _append_1 = sb.append(_keyword);
String _simpleSpace_1 = highlight.simpleSpace();
StringBuilder _append_2 = _append_1.append(_simpleSpace_1);
String _keyword_1 = highlight.keyword("function");
_append_2.append(_keyword_1);
String _simpleSpace_2 = highlight.simpleSpace();
sb.append(_simpleSpace_2);
HDLFunctionParameter _returnType = func.getReturnType();
String _string_1 = this.toString(_returnType, highlight);
StringBuilder _append_3 = sb.append(_string_1);
String _simpleSpace_3 = highlight.simpleSpace();
_append_3.append(_simpleSpace_3);
String _name = func.getName();
String _functionDecl = highlight.functionDecl(_name);
sb.append(_functionDecl);
StringConcatenation _builder = new StringConcatenation();
_builder.append("(");
{
ArrayList<HDLFunctionParameter> _args = func.getArgs();
boolean _hasElements = false;
for(final HDLFunctionParameter arg : _args) {
if (!_hasElements) {
_hasElements = true;
} else {
_builder.appendImmediate(",", "");
}
String _string_2 = this.toString(arg, highlight);
_builder.append(_string_2, "");
}
}
_builder.append(")");
sb.append(_builder);
String _simpleSpace_4 = highlight.simpleSpace();
StringBuilder _append_4 = sb.append(_simpleSpace_4);
StringBuilder _append_5 = _append_4.append("->");
String _simpleSpace_5 = highlight.simpleSpace();
StringBuilder _append_6 = _append_5.append(_simpleSpace_5);
StringBuilder _append_7 = _append_6.append("(");
HDLExpression _expr = func.getExpr();
String _string_3 = this.toString(_expr, highlight);
StringBuilder _append_8 = _append_7.append(_string_3);
StringBuilder _append_9 = _append_8.append(")");
String _newLine = highlight.newLine();
_append_9.append(_newLine);
String _leaving = this.leaving(func, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLSubstituteFunction func, final SyntaxHighlighter highlight) {
final StringBuilder sb = new StringBuilder();
String _entering = this.entering(func, highlight);
sb.append(_entering);
ArrayList<HDLAnnotation> _annotations = func.getAnnotations();
for (final HDLAnnotation anno : _annotations) {
String _string = this.toString(anno, highlight);
StringBuilder _append = sb.append(_string);
String _simpleSpace = highlight.simpleSpace();
_append.append(_simpleSpace);
}
String _keyword = highlight.keyword("substitute");
StringBuilder _append_1 = sb.append(_keyword);
String _simpleSpace_1 = highlight.simpleSpace();
StringBuilder _append_2 = _append_1.append(_simpleSpace_1);
String _keyword_1 = highlight.keyword("function");
StringBuilder _append_3 = _append_2.append(_keyword_1);
String _simpleSpace_2 = highlight.simpleSpace();
_append_3.append(_simpleSpace_2);
HDLFunctionParameter _returnType = func.getReturnType();
boolean _tripleNotEquals = (_returnType != null);
if (_tripleNotEquals) {
HDLFunctionParameter _returnType_1 = func.getReturnType();
String _string_1 = this.toString(_returnType_1, highlight);
StringBuilder _append_4 = sb.append(_string_1);
String _simpleSpace_3 = highlight.simpleSpace();
_append_4.append(_simpleSpace_3);
}
String _name = func.getName();
String _functionDecl = highlight.functionDecl(_name);
sb.append(_functionDecl);
StringConcatenation _builder = new StringConcatenation();
_builder.append("(");
{
ArrayList<HDLFunctionParameter> _args = func.getArgs();
boolean _hasElements = false;
for(final HDLFunctionParameter arg : _args) {
if (!_hasElements) {
_hasElements = true;
} else {
_builder.appendImmediate(",", "");
}
String _string_2 = this.toString(arg, highlight);
_builder.append(_string_2, "");
}
}
_builder.append(")");
sb.append(_builder);
String _simpleSpace_4 = highlight.simpleSpace();
StringBuilder _append_5 = sb.append(_simpleSpace_4);
StringBuilder _append_6 = _append_5.append("{");
String _newLine = highlight.newLine();
_append_6.append(_newLine);
highlight.incSpacing();
ArrayList<HDLStatement> _stmnts = func.getStmnts();
for (final HDLStatement string : _stmnts) {
String _string_3 = this.toString(string, highlight);
StringBuilder _append_7 = sb.append(_string_3);
String _newLine_1 = highlight.newLine();
_append_7.append(_newLine_1);
}
highlight.decSpacing();
StringBuilder _append_8 = sb.append("}");
String _newLine_2 = highlight.newLine();
_append_8.append(_newLine_2);
String _leaving = this.leaving(func, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLInterfaceRef ref, final SyntaxHighlighter highlight) {
final StringBuilder sb = new StringBuilder();
String _entering = this.entering(ref, highlight);
sb.append(_entering);
HDLQualifiedName _hIfRefName = ref.getHIfRefName();
String _lastSegment = _hIfRefName.getLastSegment();
String _interfaceRef = highlight.interfaceRef(_lastSegment);
sb.append(_interfaceRef);
ArrayList<HDLExpression> _ifArray = ref.getIfArray();
for (final HDLExpression arr : _ifArray) {
StringBuilder _append = sb.append("[");
String _string = this.toString(arr, highlight);
StringBuilder _append_1 = _append.append(_string);
_append_1.append("]");
}
sb.append(".");
StringBuilder _varRef = this.varRef(ref, highlight);
sb.append(_varRef);
String _leaving = this.leaving(ref, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLVariableRef ref, final SyntaxHighlighter highlight) {
String _entering = this.entering(ref, highlight);
StringBuilder _varRef = this.varRef(ref, highlight);
String _string = _varRef.toString();
String _plus = (_entering + _string);
String _leaving = this.leaving(ref, highlight);
return (_plus + _leaving);
}
public StringBuilder varRef(final HDLVariableRef ref, final SyntaxHighlighter highlight) {
final StringBuilder sb = new StringBuilder();
String _entering = this.entering(ref, highlight);
sb.append(_entering);
String _variableRefName = highlight.variableRefName(ref);
sb.append(_variableRefName);
ArrayList<HDLExpression> _array = ref.getArray();
for (final HDLExpression a : _array) {
StringBuilder _append = sb.append("[");
String _string = this.toString(a, highlight);
StringBuilder _append_1 = _append.append(_string);
_append_1.append("]");
}
ArrayList<HDLRange> _bits = ref.getBits();
int _size = _bits.size();
boolean _notEquals = (_size != 0);
if (_notEquals) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("{");
{
ArrayList<HDLRange> _bits_1 = ref.getBits();
boolean _hasElements = false;
for(final HDLRange bit : _bits_1) {
if (!_hasElements) {
_hasElements = true;
} else {
_builder.appendImmediate(",", "");
}
String _string_1 = this.toString(bit, highlight);
_builder.append(_string_1, "");
}
}
_builder.append("}");
sb.append(_builder);
}
String _leaving = this.leaving(ref, highlight);
sb.append(_leaving);
return sb;
}
protected String _toString(final HDLLiteral lit, final SyntaxHighlighter highlight) {
Boolean _str = lit.getStr();
if ((_str).booleanValue()) {
String _entering = this.entering(lit, highlight);
String _val = lit.getVal();
String _plus = ("\"" + _val);
String _plus_1 = (_plus + "\"");
String _literal = highlight.literal(_plus_1);
String _plus_2 = (_entering + _literal);
String _leaving = this.leaving(lit, highlight);
return (_plus_2 + _leaving);
}
String _entering_1 = this.entering(lit, highlight);
String _val_1 = lit.getVal();
String _literal_1 = highlight.literal(_val_1);
String _plus_3 = (_entering_1 + _literal_1);
String _leaving_1 = this.leaving(lit, highlight);
return (_plus_3 + _leaving_1);
}
protected String _toString(final HDLManip manip, final SyntaxHighlighter highlight) {
final HDLManip.HDLManipType manipType = manip.getType();
if (manipType != null) {
switch (manipType) {
case ARITH_NEG:
String _entering = this.entering(manip, highlight);
String _operator = highlight.operator("-");
String _plus = (_entering + _operator);
HDLExpression _target = manip.getTarget();
String _string = this.toString(_target, highlight);
String _plus_1 = (_plus + _string);
String _leaving = this.leaving(manip, highlight);
return (_plus_1 + _leaving);
case CAST:
HDLType _castTo = manip.getCastTo();
final HDLPrimitive type = ((HDLPrimitive) _castTo);
final String entering = this.entering(manip, highlight);
String _xifexpression = null;
HDLExpression _width = type.getWidth();
boolean _tripleNotEquals = (_width != null);
if (_tripleNotEquals) {
HDLExpression _width_1 = type.getWidth();
String _string_1 = this.toString(_width_1, highlight);
String _plus_2 = ("<" + _string_1);
String _plus_3 = (_plus_2 + ">");
_xifexpression = highlight.width(_plus_3);
} else {
_xifexpression = "";
}
final String width = _xifexpression;
HDLPrimitive.HDLPrimitiveType _type = type.getType();
String _string_2 = _type.toString();
String _lowerCase = _string_2.toLowerCase();
String _keyword = highlight.keyword(_lowerCase);
String _plus_4 = ((entering + "(") + _keyword);
String _plus_5 = (_plus_4 + width);
String _plus_6 = (_plus_5 + ")");
HDLExpression _target_1 = manip.getTarget();
String _string_3 = this.toString(_target_1, highlight);
String _plus_7 = (_plus_6 + _string_3);
String _leaving_1 = this.leaving(manip, highlight);
return (_plus_7 + _leaving_1);
case BIT_NEG:
String _entering_1 = this.entering(manip, highlight);
String _operator_1 = highlight.operator("~");
String _plus_8 = (_entering_1 + _operator_1);
HDLExpression _target_2 = manip.getTarget();
String _string_4 = this.toString(_target_2, highlight);
String _plus_9 = (_plus_8 + _string_4);
String _leaving_2 = this.leaving(manip, highlight);
return (_plus_9 + _leaving_2);
case LOGIC_NEG:
String _entering_2 = this.entering(manip, highlight);
String _operator_2 = highlight.operator("!");
String _plus_10 = (_entering_2 + _operator_2);
HDLExpression _target_3 = manip.getTarget();
String _string_5 = this.toString(_target_3, highlight);
String _plus_11 = (_plus_10 + _string_5);
String _leaving_3 = this.leaving(manip, highlight);
return (_plus_11 + _leaving_3);
default:
break;
}
}
HDLManip.HDLManipType _type_1 = manip.getType();
String _plus_12 = ("Unexpected Type:" + _type_1);
throw new IllegalArgumentException(_plus_12);
}
protected String _toString(final HDLBlock block, final SyntaxHighlighter highlight) {
StringBuilder _spacing = highlight.getSpacing();
final StringBuilder sb = new StringBuilder(_spacing);
String _entering = this.entering(block, highlight);
sb.append(_entering);
Boolean _process = block.getProcess();
if ((_process).booleanValue()) {
StringBuilder _append = sb.append("process");
String _simpleSpace = highlight.simpleSpace();
_append.append(_simpleSpace);
}
StringBuilder _append_1 = sb.append("{");
String _newLine = highlight.newLine();
_append_1.append(_newLine);
highlight.incSpacing();
ArrayList<HDLStatement> _statements = block.getStatements();
for (final HDLStatement string : _statements) {
String _string = this.toString(string, highlight);
StringBuilder _append_2 = sb.append(_string);
String _newLine_1 = highlight.newLine();
_append_2.append(_newLine_1);
}
highlight.decSpacing();
StringBuilder _spacing_1 = highlight.getSpacing();
StringBuilder _append_3 = sb.append(_spacing_1);
_append_3.append("}");
String _leaving = this.leaving(block, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLExport export, final SyntaxHighlighter highlight) {
final StringBuilder builder = highlight.getSpacing();
String _entering = this.entering(export, highlight);
builder.append(_entering);
String _keyword = highlight.keyword("export");
builder.append(_keyword);
String _simpleSpace = highlight.simpleSpace();
builder.append(_simpleSpace);
HDLExpression _exportRef = export.getExportRef();
String _string = this.toString(_exportRef, highlight);
builder.append(_string);
builder.append(";");
String _leaving = this.leaving(export, highlight);
builder.append(_leaving);
return builder.toString();
}
protected String _toString(final HDLAssignment ass, final SyntaxHighlighter highlight) {
final StringBuilder builder = highlight.getSpacing();
String _entering = this.entering(ass, highlight);
builder.append(_entering);
HDLReference _left = ass.getLeft();
String _string = this.toString(_left, highlight);
builder.append(_string);
HDLAssignment.HDLAssignmentType _type = ass.getType();
String _string_1 = _type.toString();
String _operator = highlight.operator(_string_1);
builder.append(_operator);
HDLExpression _right = ass.getRight();
String _string_2 = this.toString(_right, highlight);
StringBuilder _append = builder.append(_string_2);
_append.append(";");
String _leaving = this.leaving(ass, highlight);
builder.append(_leaving);
return builder.toString();
}
protected String _toString(final HDLPrimitive prim, final SyntaxHighlighter highlight) {
final StringBuilder sb = new StringBuilder();
String _entering = this.entering(prim, highlight);
sb.append(_entering);
HDLPrimitive.HDLPrimitiveType _type = prim.getType();
String _string = _type.toString();
String _lowerCase = _string.toLowerCase();
String _primitiveType = highlight.primitiveType(_lowerCase);
sb.append(_primitiveType);
HDLExpression _width = prim.getWidth();
boolean _tripleNotEquals = (_width != null);
if (_tripleNotEquals) {
HDLExpression _width_1 = prim.getWidth();
String _string_1 = this.toString(_width_1, highlight);
String _plus = ("<" + _string_1);
String _plus_1 = (_plus + ">");
String _width_2 = highlight.width(_plus_1);
sb.append(_width_2);
}
String _leaving = this.leaving(prim, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLForLoop loop, final SyntaxHighlighter highlight) {
final StringBuilder space = highlight.getSpacing();
final StringBuilder sb = new StringBuilder();
String _entering = this.entering(loop, highlight);
sb.append(_entering);
StringBuilder _append = sb.append(space);
String _keyword = highlight.keyword("for");
StringBuilder _append_1 = _append.append(_keyword);
String _simpleSpace = highlight.simpleSpace();
StringBuilder _append_2 = _append_1.append(_simpleSpace);
StringBuilder _append_3 = _append_2.append("(");
HDLVariable _param = loop.getParam();
String _name = _param.getName();
StringBuilder _append_4 = _append_3.append(_name);
String _simpleSpace_1 = highlight.simpleSpace();
StringBuilder _append_5 = _append_4.append(_simpleSpace_1);
StringBuilder _append_6 = _append_5.append("=");
String _simpleSpace_2 = highlight.simpleSpace();
_append_6.append(_simpleSpace_2);
StringConcatenation _builder = new StringConcatenation();
_builder.append("{");
{
ArrayList<HDLRange> _range = loop.getRange();
boolean _hasElements = false;
for(final HDLRange range : _range) {
if (!_hasElements) {
_hasElements = true;
} else {
_builder.appendImmediate(",", "");
}
String _string = this.toString(range, highlight);
_builder.append(_string, "");
}
}
_builder.append("}");
sb.append(_builder);
StringBuilder _append_7 = sb.append(")");
String _simpleSpace_3 = highlight.simpleSpace();
StringBuilder _append_8 = _append_7.append(_simpleSpace_3);
StringBuilder _append_9 = _append_8.append("{");
String _newLine = highlight.newLine();
_append_9.append(_newLine);
highlight.incSpacing();
ArrayList<HDLStatement> _dos = loop.getDos();
for (final HDLStatement string : _dos) {
String _string_1 = this.toString(string, highlight);
StringBuilder _append_10 = sb.append(_string_1);
String _newLine_1 = highlight.newLine();
_append_10.append(_newLine_1);
}
highlight.decSpacing();
StringBuilder _append_11 = sb.append(space);
_append_11.append("}");
String _leaving = this.leaving(loop, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLIfStatement ifStmnt, final SyntaxHighlighter highlight) {
final StringBuilder sb = highlight.getSpacing();
String _entering = this.entering(ifStmnt, highlight);
sb.append(_entering);
final String origSpacing = sb.toString();
String _keyword = highlight.keyword("if");
StringBuilder _append = sb.append(_keyword);
String _simpleSpace = highlight.simpleSpace();
StringBuilder _append_1 = _append.append(_simpleSpace);
StringBuilder _append_2 = _append_1.append("(");
HDLExpression _ifExp = ifStmnt.getIfExp();
String _string = this.toString(_ifExp, highlight);
StringBuilder _append_3 = _append_2.append(_string);
StringBuilder _append_4 = _append_3.append(")");
String _simpleSpace_1 = highlight.simpleSpace();
StringBuilder _append_5 = _append_4.append(_simpleSpace_1);
StringBuilder _append_6 = _append_5.append("{");
String _newLine = highlight.newLine();
_append_6.append(_newLine);
highlight.incSpacing();
ArrayList<HDLStatement> _thenDo = ifStmnt.getThenDo();
for (final HDLStatement stmt : _thenDo) {
String _string_1 = this.toString(stmt, highlight);
StringBuilder _append_7 = sb.append(_string_1);
String _newLine_1 = highlight.newLine();
_append_7.append(_newLine_1);
}
ArrayList<HDLStatement> _elseDo = ifStmnt.getElseDo();
int _size = _elseDo.size();
boolean _notEquals = (_size != 0);
if (_notEquals) {
StringBuilder _append_8 = sb.append(origSpacing);
StringBuilder _append_9 = _append_8.append("}");
String _simpleSpace_2 = highlight.simpleSpace();
StringBuilder _append_10 = _append_9.append(_simpleSpace_2);
String _keyword_1 = highlight.keyword("else");
StringBuilder _append_11 = _append_10.append(_keyword_1);
String _simpleSpace_3 = highlight.simpleSpace();
StringBuilder _append_12 = _append_11.append(_simpleSpace_3);
StringBuilder _append_13 = _append_12.append("{");
String _newLine_2 = highlight.newLine();
_append_13.append(_newLine_2);
ArrayList<HDLStatement> _elseDo_1 = ifStmnt.getElseDo();
for (final HDLStatement stmt_1 : _elseDo_1) {
String _string_2 = this.toString(stmt_1, highlight);
StringBuilder _append_14 = sb.append(_string_2);
String _newLine_3 = highlight.newLine();
_append_14.append(_newLine_3);
}
}
highlight.decSpacing();
StringBuilder _append_15 = sb.append(origSpacing);
_append_15.append("}");
String _leaving = this.leaving(ifStmnt, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLSwitchCaseStatement caseStmnt, final SyntaxHighlighter highlight) {
final StringBuilder sb = highlight.getSpacing();
String _entering = this.entering(caseStmnt, highlight);
sb.append(_entering);
HDLExpression _label = caseStmnt.getLabel();
boolean _tripleEquals = (_label == null);
if (_tripleEquals) {
String _keyword = highlight.keyword("default");
StringBuilder _append = sb.append(_keyword);
StringBuilder _append_1 = _append.append(":");
String _simpleSpace = highlight.simpleSpace();
StringBuilder _append_2 = _append_1.append(_simpleSpace);
String _newLine = highlight.newLine();
_append_2.append(_newLine);
} else {
String _keyword_1 = highlight.keyword("case");
StringBuilder _append_3 = sb.append(_keyword_1);
String _simpleSpace_1 = highlight.simpleSpace();
StringBuilder _append_4 = _append_3.append(_simpleSpace_1);
HDLExpression _label_1 = caseStmnt.getLabel();
String _string = this.toString(_label_1, highlight);
StringBuilder _append_5 = _append_4.append(_string);
StringBuilder _append_6 = _append_5.append(":");
String _simpleSpace_2 = highlight.simpleSpace();
StringBuilder _append_7 = _append_6.append(_simpleSpace_2);
String _newLine_1 = highlight.newLine();
_append_7.append(_newLine_1);
}
highlight.incSpacing();
StringConcatenation _builder = new StringConcatenation();
{
ArrayList<HDLStatement> _dos = caseStmnt.getDos();
boolean _hasElements = false;
for(final HDLStatement stmnt : _dos) {
if (!_hasElements) {
_hasElements = true;
} else {
String _newLine_2 = highlight.newLine();
_builder.appendImmediate(_newLine_2, "");
}
String _string_1 = this.toString(stmnt, highlight);
_builder.append(_string_1, "");
}
}
sb.append(_builder);
highlight.decSpacing();
String _leaving = this.leaving(caseStmnt, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLSwitchStatement switchStmnt, final SyntaxHighlighter highlight) {
final StringBuilder sb = highlight.getSpacing();
String _entering = this.entering(switchStmnt, highlight);
sb.append(_entering);
String _keyword = highlight.keyword("switch");
StringBuilder _append = sb.append(_keyword);
StringBuilder _append_1 = _append.append("(");
HDLExpression _caseExp = switchStmnt.getCaseExp();
String _string = this.toString(_caseExp, highlight);
StringBuilder _append_2 = _append_1.append(_string);
StringBuilder _append_3 = _append_2.append(")");
String _simpleSpace = highlight.simpleSpace();
StringBuilder _append_4 = _append_3.append(_simpleSpace);
StringBuilder _append_5 = _append_4.append("{");
String _newLine = highlight.newLine();
_append_5.append(_newLine);
highlight.incSpacing();
ArrayList<HDLSwitchCaseStatement> _cases = switchStmnt.getCases();
for (final HDLStatement stmnt : _cases) {
String _string_1 = this.toString(stmnt, highlight);
StringBuilder _append_6 = sb.append(_string_1);
String _newLine_1 = highlight.newLine();
_append_6.append(_newLine_1);
}
highlight.decSpacing();
StringBuilder _spacing = highlight.getSpacing();
StringBuilder _append_7 = sb.append(_spacing);
_append_7.append("}");
String _leaving = this.leaving(switchStmnt, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLVariableDeclaration hvd, final SyntaxHighlighter highlight) {
final StringBuilder sb = highlight.getSpacing();
String _entering = this.entering(hvd, highlight);
sb.append(_entering);
final Optional<? extends HDLType> resolveType = hvd.resolveType();
ArrayList<HDLAnnotation> _annotations = hvd.getAnnotations();
boolean _tripleNotEquals = (_annotations != null);
if (_tripleNotEquals) {
ArrayList<HDLAnnotation> _annotations_1 = hvd.getAnnotations();
for (final HDLAnnotation hdla : _annotations_1) {
String _string = this.toString(hdla, highlight);
StringBuilder _append = sb.append(_string);
String _simpleSpace = highlight.simpleSpace();
_append.append(_simpleSpace);
}
}
HDLVariableDeclaration.HDLDirection _direction = hvd.getDirection();
final String dirString = _direction.toString();
int _length = dirString.length();
boolean _greaterThan = (_length > 0);
if (_greaterThan) {
String _direction_1 = highlight.direction(dirString);
StringBuilder _append_1 = sb.append(_direction_1);
String _simpleSpace_1 = highlight.simpleSpace();
_append_1.append(_simpleSpace_1);
}
HDLRegisterConfig _register = hvd.getRegister();
boolean _tripleNotEquals_1 = (_register != null);
if (_tripleNotEquals_1) {
HDLRegisterConfig _register_1 = hvd.getRegister();
String _string_1 = this.toString(_register_1, highlight);
sb.append(_string_1);
}
boolean _isPresent = resolveType.isPresent();
boolean _not = (!_isPresent);
if (_not) {
sb.append("#UNRESOLVED_TYPE#");
} else {
HDLType _get = resolveType.get();
if ((_get instanceof HDLEnum)) {
String _keyword = highlight.keyword("enum");
StringBuilder _append_2 = sb.append(_keyword);
String _simpleSpace_2 = highlight.simpleSpace();
StringBuilder _append_3 = _append_2.append(_simpleSpace_2);
HDLType _get_1 = resolveType.get();
String _string_2 = this.toString(_get_1, highlight);
_append_3.append(_string_2);
} else {
HDLType _get_2 = resolveType.get();
String _string_3 = this.toString(_get_2, highlight);
sb.append(_string_3);
}
}
StringConcatenation _builder = new StringConcatenation();
{
ArrayList<HDLVariable> _variables = hvd.getVariables();
boolean _hasElements = false;
for(final HDLVariable hvar : _variables) {
if (!_hasElements) {
_hasElements = true;
String _simpleSpace_3 = highlight.simpleSpace();
_builder.append(_simpleSpace_3, "");
} else {
_builder.appendImmediate(",", "");
}
String _string_4 = this.toString(hvar, highlight);
_builder.append(_string_4, "");
}
}
_builder.append(";");
sb.append(_builder);
SyntaxHighlighter.Context _context = highlight.getContext();
boolean _equals = Objects.equal(_context, SyntaxHighlighter.Context.HDLPackage);
if (_equals) {
String _newLine = highlight.newLine();
sb.append(_newLine);
}
String _leaving = this.leaving(hvd, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLInterfaceDeclaration hid, final SyntaxHighlighter highlight) {
highlight.pushContext(SyntaxHighlighter.Context.HDLInterface);
final StringBuilder annos = highlight.getSpacing();
String _entering = this.entering(hid, highlight);
annos.append(_entering);
ArrayList<HDLAnnotation> _annotations = hid.getAnnotations();
for (final HDLAnnotation anno : _annotations) {
String _string = this.toString(anno, highlight);
StringBuilder _append = annos.append(_string);
String _simpleSpace = highlight.simpleSpace();
_append.append(_simpleSpace);
}
HDLInterface _hIf = hid.getHIf();
String _string_1 = this.toString(_hIf, highlight);
annos.append(_string_1);
String _leaving = this.leaving(hid, highlight);
annos.append(_leaving);
highlight.popContext();
return annos.toString();
}
protected String _toString(final HDLInterface hif, final SyntaxHighlighter highlight) {
final StringBuilder sb = highlight.getSpacing();
String _entering = this.entering(hif, highlight);
sb.append(_entering);
String _keyword = highlight.keyword("interface");
StringBuilder _append = sb.append(_keyword);
String _simpleSpace = highlight.simpleSpace();
_append.append(_simpleSpace);
String _name = hif.getName();
String _interfaceName = highlight.interfaceName(_name);
sb.append(_interfaceName);
StringBuilder _append_1 = sb.append("{");
String _newLine = highlight.newLine();
_append_1.append(_newLine);
highlight.incSpacing();
ArrayList<HDLVariableDeclaration> _ports = hif.getPorts();
for (final HDLVariableDeclaration hvar : _ports) {
String _string = this.toString(hvar, highlight);
StringBuilder _append_2 = sb.append(_string);
String _newLine_1 = highlight.newLine();
_append_2.append(_newLine_1);
}
highlight.decSpacing();
StringBuilder _append_3 = sb.append("}");
String _newLine_2 = highlight.newLine();
_append_3.append(_newLine_2);
String _leaving = this.leaving(hif, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLEnumRef ref, final SyntaxHighlighter highlight) {
String _entering = this.entering(ref, highlight);
HDLQualifiedName _hEnumRefName = ref.getHEnumRefName();
String _string = _hEnumRefName.toString();
String _enumRefType = highlight.enumRefType(_string);
String _plus = (_entering + _enumRefType);
String _plus_1 = (_plus + ".");
HDLQualifiedName _varRefName = ref.getVarRefName();
String _lastSegment = _varRefName.getLastSegment();
String _enumRefVar = highlight.enumRefVar(_lastSegment);
String _plus_2 = (_plus_1 + _enumRefVar);
String _leaving = this.leaving(ref, highlight);
return (_plus_2 + _leaving);
}
protected String _toString(final HDLEnum e, final SyntaxHighlighter highlight) {
String _entering = this.entering(e, highlight);
String _name = e.getName();
String _enumName = highlight.enumName(_name);
String _plus = (_entering + _enumName);
String _leaving = this.leaving(e, highlight);
return (_plus + _leaving);
}
protected String _toString(final HDLEnumDeclaration decl, final SyntaxHighlighter highlight) {
final StringBuilder sb = highlight.getSpacing();
String _entering = this.entering(decl, highlight);
sb.append(_entering);
ArrayList<HDLAnnotation> _annotations = decl.getAnnotations();
for (final HDLAnnotation anno : _annotations) {
String _string = this.toString(anno, highlight);
StringBuilder _append = sb.append(_string);
String _simpleSpace = highlight.simpleSpace();
_append.append(_simpleSpace);
}
String _keyword = highlight.keyword("enum");
StringBuilder _append_1 = sb.append(_keyword);
String _simpleSpace_1 = highlight.simpleSpace();
_append_1.append(_simpleSpace_1);
HDLEnum _hEnum = decl.getHEnum();
String _name = _hEnum.getName();
String _enumName = highlight.enumName(_name);
sb.append(_enumName);
String _simpleSpace_2 = highlight.simpleSpace();
sb.append(_simpleSpace_2);
StringConcatenation _builder = new StringConcatenation();
_builder.append("{");
{
HDLEnum _hEnum_1 = decl.getHEnum();
ArrayList<HDLVariable> _enums = _hEnum_1.getEnums();
boolean _hasElements = false;
for(final HDLVariable henum : _enums) {
if (!_hasElements) {
_hasElements = true;
} else {
String _simpleSpace_3 = highlight.simpleSpace();
String _plus = ("," + _simpleSpace_3);
_builder.appendImmediate(_plus, "");
}
String _string_1 = this.toString(henum, highlight);
_builder.append(_string_1, "");
}
}
_builder.append("}");
sb.append(_builder);
String _newLine = highlight.newLine();
sb.append(_newLine);
String _leaving = this.leaving(decl, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLRegisterConfig reg, final SyntaxHighlighter highlight) {
final StringBuilder sb = new StringBuilder();
String _entering = this.entering(reg, highlight);
sb.append(_entering);
String _keyword = highlight.keyword("register");
sb.append(_keyword);
final HDLRegisterConfig defaultReg = HDLRegisterConfig.defaultConfig();
final StringBuilder params = new StringBuilder();
params.append("(");
boolean first = true;
HDLExpression _clk = reg.getClk();
HDLExpression _clk_1 = defaultReg.getClk();
boolean _notEquals = (!Objects.equal(_clk, _clk_1));
if (_notEquals) {
String _param = highlight.param(HDLRegisterConfig.CLOCK_PARAM);
StringBuilder _append = params.append(_param);
StringBuilder _append_1 = _append.append("=");
HDLExpression _clk_2 = reg.getClk();
String _string = this.toString(_clk_2, highlight);
_append_1.append(_string);
first = false;
}
HDLExpression _rst = reg.getRst();
HDLExpression _rst_1 = defaultReg.getRst();
boolean _notEquals_1 = (!Objects.equal(_rst, _rst_1));
if (_notEquals_1) {
if ((!first)) {
params.append(", ");
}
String _param_1 = highlight.param(HDLRegisterConfig.RESET_PARAM);
StringBuilder _append_2 = params.append(_param_1);
StringBuilder _append_3 = _append_2.append("=");
HDLExpression _rst_2 = reg.getRst();
String _string_1 = this.toString(_rst_2, highlight);
_append_3.append(_string_1);
first = false;
}
HDLExpression _unresolvedClockType = reg.getUnresolvedClockType();
boolean _tripleNotEquals = (_unresolvedClockType != null);
if (_tripleNotEquals) {
if ((!first)) {
params.append(", ");
}
String _param_2 = highlight.param(HDLRegisterConfig.EDGE_PARAM);
StringBuilder _append_4 = params.append(_param_2);
StringBuilder _append_5 = _append_4.append("=");
HDLExpression _unresolvedClockType_1 = reg.getUnresolvedClockType();
String _string_2 = this.toString(_unresolvedClockType_1, highlight);
_append_5.append(_string_2);
first = false;
} else {
boolean _and = false;
HDLRegisterConfig.HDLRegClockType _clockType = reg.getClockType();
boolean _tripleNotEquals_1 = (_clockType != null);
if (!_tripleNotEquals_1) {
_and = false;
} else {
HDLRegisterConfig.HDLRegClockType _clockType_1 = reg.getClockType();
HDLRegisterConfig.HDLRegClockType _clockType_2 = defaultReg.getClockType();
boolean _tripleNotEquals_2 = (_clockType_1 != _clockType_2);
_and = _tripleNotEquals_2;
}
if (_and) {
if ((!first)) {
params.append(", ");
}
String _param_3 = highlight.param(HDLRegisterConfig.EDGE_PARAM);
StringBuilder _append_6 = params.append(_param_3);
StringBuilder _append_7 = _append_6.append("=");
String _enumRefType = highlight.enumRefType("Edge");
StringBuilder _append_8 = _append_7.append(_enumRefType);
StringBuilder _append_9 = _append_8.append(".");
HDLRegisterConfig.HDLRegClockType _clockType_3 = reg.getClockType();
String _string_3 = _clockType_3.toString();
String _enumRefVar = highlight.enumRefVar(_string_3);
_append_9.append(_enumRefVar);
first = false;
}
}
HDLExpression _unresolvedSyncType = reg.getUnresolvedSyncType();
boolean _tripleNotEquals_3 = (_unresolvedSyncType != null);
if (_tripleNotEquals_3) {
if ((!first)) {
params.append(", ");
}
String _param_4 = highlight.param(HDLRegisterConfig.EDGE_PARAM);
StringBuilder _append_10 = params.append(_param_4);
StringBuilder _append_11 = _append_10.append("=");
HDLExpression _unresolvedSyncType_1 = reg.getUnresolvedSyncType();
String _string_4 = this.toString(_unresolvedSyncType_1, highlight);
_append_11.append(_string_4);
first = false;
} else {
boolean _and_1 = false;
HDLRegisterConfig.HDLRegSyncType _syncType = reg.getSyncType();
boolean _tripleNotEquals_4 = (_syncType != null);
if (!_tripleNotEquals_4) {
_and_1 = false;
} else {
HDLRegisterConfig.HDLRegSyncType _syncType_1 = reg.getSyncType();
HDLRegisterConfig.HDLRegSyncType _syncType_2 = defaultReg.getSyncType();
boolean _tripleNotEquals_5 = (_syncType_1 != _syncType_2);
_and_1 = _tripleNotEquals_5;
}
if (_and_1) {
if ((!first)) {
params.append(", ");
}
String _param_5 = highlight.param(HDLRegisterConfig.RESET_SYNC_PARAM);
StringBuilder _append_12 = params.append(_param_5);
StringBuilder _append_13 = _append_12.append("=");
String _enumRefType_1 = highlight.enumRefType("Sync");
StringBuilder _append_14 = _append_13.append(_enumRefType_1);
StringBuilder _append_15 = _append_14.append(".");
HDLRegisterConfig.HDLRegSyncType _syncType_3 = reg.getSyncType();
String _string_5 = _syncType_3.toString();
String _enumRefVar_1 = highlight.enumRefVar(_string_5);
_append_15.append(_enumRefVar_1);
first = false;
}
}
HDLExpression _unresolvedResetType = reg.getUnresolvedResetType();
boolean _tripleNotEquals_6 = (_unresolvedResetType != null);
if (_tripleNotEquals_6) {
if ((!first)) {
params.append(", ");
}
String _param_6 = highlight.param(HDLRegisterConfig.EDGE_PARAM);
StringBuilder _append_16 = params.append(_param_6);
StringBuilder _append_17 = _append_16.append("=");
HDLExpression _unresolvedResetType_1 = reg.getUnresolvedResetType();
String _string_6 = this.toString(_unresolvedResetType_1, highlight);
_append_17.append(_string_6);
first = false;
} else {
boolean _and_2 = false;
HDLRegisterConfig.HDLRegResetActiveType _resetType = reg.getResetType();
boolean _tripleNotEquals_7 = (_resetType != null);
if (!_tripleNotEquals_7) {
_and_2 = false;
} else {
HDLRegisterConfig.HDLRegResetActiveType _resetType_1 = reg.getResetType();
HDLRegisterConfig.HDLRegResetActiveType _resetType_2 = defaultReg.getResetType();
boolean _tripleNotEquals_8 = (_resetType_1 != _resetType_2);
_and_2 = _tripleNotEquals_8;
}
if (_and_2) {
if ((!first)) {
params.append(", ");
}
String _param_7 = highlight.param(HDLRegisterConfig.RESET_TYPE_PARAM);
StringBuilder _append_18 = params.append(_param_7);
StringBuilder _append_19 = _append_18.append("=");
String _enumRefType_2 = highlight.enumRefType("Active");
StringBuilder _append_20 = _append_19.append(_enumRefType_2);
StringBuilder _append_21 = _append_20.append(".");
HDLRegisterConfig.HDLRegResetActiveType _resetType_3 = reg.getResetType();
String _string_7 = _resetType_3.toString();
String _enumRefVar_2 = highlight.enumRefVar(_string_7);
_append_21.append(_enumRefVar_2);
first = false;
}
}
HDLExpression _resetValue = reg.getResetValue();
HDLExpression _resetValue_1 = defaultReg.getResetValue();
boolean _notEquals_2 = (!Objects.equal(_resetValue, _resetValue_1));
if (_notEquals_2) {
if ((!first)) {
params.append(", ");
}
String _param_8 = highlight.param(HDLRegisterConfig.RESET_VALUE_PARAM);
StringBuilder _append_22 = params.append(_param_8);
StringBuilder _append_23 = _append_22.append("=");
HDLExpression _resetValue_2 = reg.getResetValue();
String _string_8 = this.toString(_resetValue_2, highlight);
_append_23.append(_string_8);
first = false;
}
HDLExpression _delay = reg.getDelay();
HDLExpression _delay_1 = defaultReg.getDelay();
boolean _notEquals_3 = (!Objects.equal(_delay, _delay_1));
if (_notEquals_3) {
if ((!first)) {
params.append(", ");
}
String _param_9 = highlight.param(HDLRegisterConfig.DELAY_PARAM);
StringBuilder _append_24 = params.append(_param_9);
StringBuilder _append_25 = _append_24.append("=");
HDLExpression _delay_2 = reg.getDelay();
String _string_9 = this.toString(_delay_2, highlight);
_append_25.append(_string_9);
first = false;
}
params.append(")");
if ((!first)) {
sb.append(params);
}
String _simpleSpace = highlight.simpleSpace();
sb.append(_simpleSpace);
String _leaving = this.leaving(reg, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLPackage pkg, final SyntaxHighlighter highlight) {
final StringBuilder sb = new StringBuilder();
highlight.pushContext(SyntaxHighlighter.Context.HDLPackage);
String _entering = this.entering(pkg, highlight);
sb.append(_entering);
String _pkg = pkg.getPkg();
boolean _tripleNotEquals = (_pkg != null);
if (_tripleNotEquals) {
String _keyword = highlight.keyword("package");
StringBuilder _append = sb.append(_keyword);
String _simpleSpace = highlight.simpleSpace();
StringBuilder _append_1 = _append.append(_simpleSpace);
String _pkg_1 = pkg.getPkg();
String _packageName = highlight.packageName(_pkg_1);
StringBuilder _append_2 = _append_1.append(_packageName);
StringBuilder _append_3 = _append_2.append(";");
String _newLine = highlight.newLine();
_append_3.append(_newLine);
}
ArrayList<HDLDeclaration> _declarations = pkg.getDeclarations();
for (final HDLDeclaration decl : _declarations) {
String _string = this.toString(decl, highlight);
sb.append(_string);
}
ArrayList<HDLUnit> _units = pkg.getUnits();
for (final HDLUnit unit : _units) {
String _string_1 = this.toString(unit, highlight);
sb.append(_string_1);
}
String _leaving = this.leaving(pkg, highlight);
sb.append(_leaving);
highlight.popContext();
return sb.toString();
}
protected String _toString(final HDLUnit unit, final SyntaxHighlighter highlight) {
final StringBuilder sb = new StringBuilder();
highlight.pushContext(SyntaxHighlighter.Context.HDLUnit);
String _entering = this.entering(unit, highlight);
sb.append(_entering);
ArrayList<HDLAnnotation> _annotations = unit.getAnnotations();
for (final HDLAnnotation anno : _annotations) {
String _string = this.toString(anno, highlight);
StringBuilder _append = sb.append(_string);
String _newLine = highlight.newLine();
_append.append(_newLine);
}
Boolean _simulation = unit.getSimulation();
boolean _not = (!(_simulation).booleanValue());
if (_not) {
String _keyword = highlight.keyword("module");
StringBuilder _append_1 = sb.append(_keyword);
String _simpleSpace = highlight.simpleSpace();
_append_1.append(_simpleSpace);
} else {
String _keyword_1 = highlight.keyword("testbench");
StringBuilder _append_2 = sb.append(_keyword_1);
String _simpleSpace_1 = highlight.simpleSpace();
_append_2.append(_simpleSpace_1);
}
String _name = unit.getName();
String _unitName = highlight.unitName(_name);
StringBuilder _append_3 = sb.append(_unitName);
StringBuilder _append_4 = _append_3.append("{");
String _newLine_1 = highlight.newLine();
_append_4.append(_newLine_1);
highlight.incSpacing();
ArrayList<String> _imports = unit.getImports();
for (final String imports : _imports) {
StringBuilder _spacing = highlight.getSpacing();
StringBuilder _append_5 = sb.append(_spacing);
String _keyword_2 = highlight.keyword("import");
StringBuilder _append_6 = _append_5.append(_keyword_2);
String _simpleSpace_2 = highlight.simpleSpace();
StringBuilder _append_7 = _append_6.append(_simpleSpace_2);
String _importName = highlight.importName(imports);
StringBuilder _append_8 = _append_7.append(_importName);
StringBuilder _append_9 = _append_8.append(";");
String _newLine_2 = highlight.newLine();
_append_9.append(_newLine_2);
}
ArrayList<HDLStatement> _inits = unit.getInits();
for (final HDLStatement stmnt : _inits) {
String _string_1 = this.toString(stmnt, highlight);
StringBuilder _append_10 = sb.append(_string_1);
String _newLine_3 = highlight.newLine();
_append_10.append(_newLine_3);
}
ArrayList<HDLStatement> _statements = unit.getStatements();
for (final HDLStatement stmnt_1 : _statements) {
String _string_2 = this.toString(stmnt_1, highlight);
StringBuilder _append_11 = sb.append(_string_2);
String _newLine_4 = highlight.newLine();
_append_11.append(_newLine_4);
}
highlight.decSpacing();
StringBuilder _append_12 = sb.append("}");
String _newLine_5 = highlight.newLine();
_append_12.append(_newLine_5);
String _leaving = this.leaving(unit, highlight);
sb.append(_leaving);
highlight.popContext();
return sb.toString();
}
protected String _toString(final HDLInterfaceInstantiation hii, final SyntaxHighlighter highlight) {
final StringBuilder sb = highlight.getSpacing();
String _entering = this.entering(hii, highlight);
sb.append(_entering);
ArrayList<HDLAnnotation> _annotations = hii.getAnnotations();
for (final HDLAnnotation anno : _annotations) {
String _string = this.toString(anno, highlight);
StringBuilder _append = sb.append(_string);
String _simpleSpace = highlight.simpleSpace();
_append.append(_simpleSpace);
}
HDLQualifiedName _hIfRefName = hii.getHIfRefName();
String _string_1 = _hIfRefName.toString();
String _interfaceName = highlight.interfaceName(_string_1);
StringBuilder _append_1 = sb.append(_interfaceName);
String _simpleSpace_1 = highlight.simpleSpace();
StringBuilder _append_2 = _append_1.append(_simpleSpace_1);
HDLVariable _var = hii.getVar();
String _string_2 = this.toString(_var, highlight);
_append_2.append(_string_2);
StringConcatenation _builder = new StringConcatenation();
{
ArrayList<HDLArgument> _arguments = hii.getArguments();
boolean _hasElements = false;
for(final HDLArgument arg : _arguments) {
if (!_hasElements) {
_hasElements = true;
_builder.append("(", "");
} else {
_builder.appendImmediate(",", "");
}
String _string_3 = this.toString(arg, highlight);
_builder.append(_string_3, "");
}
if (_hasElements) {
_builder.append(")", "");
}
}
sb.append(_builder);
sb.append(";");
String _leaving = this.leaving(hii, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLArgument arg, final SyntaxHighlighter highlight) {
final StringBuilder sb = new StringBuilder();
String _entering = this.entering(arg, highlight);
sb.append(_entering);
String _name = arg.getName();
String _param = highlight.param(_name);
StringBuilder _append = sb.append(_param);
StringBuilder _append_1 = _append.append("=");
HDLExpression _expression = arg.getExpression();
String _string = this.toString(_expression, highlight);
_append_1.append(_string);
String _leaving = this.leaving(arg, highlight);
sb.append(_leaving);
return sb.toString();
}
protected String _toString(final HDLRange range, final SyntaxHighlighter highlight) {
HDLExpression _from = range.getFrom();
boolean _tripleNotEquals = (_from != null);
if (_tripleNotEquals) {
String _entering = this.entering(range, highlight);
HDLExpression _from_1 = range.getFrom();
String _string = this.toString(_from_1, highlight);
String _plus = (_entering + _string);
String _plus_1 = (_plus + ":");
HDLExpression _to = range.getTo();
String _string_1 = this.toString(_to, highlight);
String _plus_2 = (_plus_1 + _string_1);
String _leaving = this.leaving(range, highlight);
return (_plus_2 + _leaving);
}
HDLExpression _inc = range.getInc();
boolean _tripleNotEquals_1 = (_inc != null);
if (_tripleNotEquals_1) {
String _entering_1 = this.entering(range, highlight);
HDLExpression _to_1 = range.getTo();
String _string_2 = this.toString(_to_1, highlight);
String _plus_3 = (_entering_1 + _string_2);
String _plus_4 = (_plus_3 + " +: ");
HDLExpression _inc_1 = range.getInc();
String _string_3 = this.toString(_inc_1, highlight);
String _plus_5 = (_plus_4 + _string_3);
String _leaving_1 = this.leaving(range, highlight);
return (_plus_5 + _leaving_1);
}
HDLExpression _dec = range.getDec();
boolean _tripleNotEquals_2 = (_dec != null);
if (_tripleNotEquals_2) {
String _entering_2 = this.entering(range, highlight);
HDLExpression _to_2 = range.getTo();
String _string_4 = this.toString(_to_2, highlight);
String _plus_6 = (_entering_2 + _string_4);
String _plus_7 = (_plus_6 + " -: ");
HDLExpression _dec_1 = range.getDec();
String _string_5 = this.toString(_dec_1, highlight);
String _plus_8 = (_plus_7 + _string_5);
String _leaving_2 = this.leaving(range, highlight);
return (_plus_8 + _leaving_2);
}
String _entering_3 = this.entering(range, highlight);
HDLExpression _to_3 = range.getTo();
String _string_6 = this.toString(_to_3, highlight);
String _plus_9 = (_entering_3 + _string_6);
String _leaving_3 = this.leaving(range, highlight);
return (_plus_9 + _leaving_3);
}
protected String _toString(final HDLVariable hVar, final SyntaxHighlighter highlight) {
final StringBuilder sb = new StringBuilder();
this.entering(hVar, highlight);
ArrayList<HDLAnnotation> _annotations = hVar.getAnnotations();
for (final HDLAnnotation anno : _annotations) {
String _string = this.toString(anno, highlight);
StringBuilder _append = sb.append(_string);
String _simpleSpace = highlight.simpleSpace();
_append.append(_simpleSpace);
}
String _varName = highlight.varName(hVar);
sb.append(_varName);
ArrayList<HDLExpression> _dimensions = hVar.getDimensions();
for (final HDLExpression arr : _dimensions) {
StringBuilder _append_1 = sb.append("[");
String _string_1 = this.toString(arr, highlight);
StringBuilder _append_2 = _append_1.append(_string_1);
_append_2.append("]");
}
HDLExpression _defaultValue = hVar.getDefaultValue();
boolean _tripleNotEquals = (_defaultValue != null);
if (_tripleNotEquals) {
StringBuilder _append_3 = sb.append("=");
HDLExpression _defaultValue_1 = hVar.getDefaultValue();
String _string_2 = this.toString(_defaultValue_1, highlight);
_append_3.append(_string_2);
}
this.leaving(hVar, highlight);
return sb.toString();
}
protected String _toString(final HDLDirectGeneration hdg, final SyntaxHighlighter highlight) {
final StringBuilder sb = highlight.getSpacing();
this.entering(hdg, highlight);
ArrayList<HDLAnnotation> _annotations = hdg.getAnnotations();
for (final HDLAnnotation anno : _annotations) {
String _string = this.toString(anno, highlight);
StringBuilder _append = sb.append(_string);
String _simpleSpace = highlight.simpleSpace();
_append.append(_simpleSpace);
}
Boolean _include = hdg.getInclude();
if ((_include).booleanValue()) {
StringBuilder _append_1 = sb.append("include");
String _simpleSpace_1 = highlight.simpleSpace();
_append_1.append(_simpleSpace_1);
}
String _ifName = hdg.getIfName();
String _interfaceName = highlight.interfaceName(_ifName);
StringBuilder _append_2 = sb.append(_interfaceName);
String _simpleSpace_2 = highlight.simpleSpace();
StringBuilder _append_3 = _append_2.append(_simpleSpace_2);
HDLVariable _var = hdg.getVar();
String _varName = highlight.varName(_var);
StringBuilder _append_4 = _append_3.append(_varName);
_append_4.append("=");
String _simpleSpace_3 = highlight.simpleSpace();
StringBuilder _append_5 = sb.append(_simpleSpace_3);
String _keyword = highlight.keyword("generate");
StringBuilder _append_6 = _append_5.append(_keyword);
String _simpleSpace_4 = highlight.simpleSpace();
StringBuilder _append_7 = _append_6.append(_simpleSpace_4);
String _generatorID = hdg.getGeneratorID();
String _generatorID_1 = highlight.generatorID(_generatorID);
_append_7.append(_generatorID_1);
sb.append("(");
ArrayList<HDLArgument> _arguments = hdg.getArguments();
for (final HDLArgument args : _arguments) {
String _string_1 = this.toString(args, highlight);
sb.append(_string_1);
}
sb.append(")");
String _generatorContent = hdg.getGeneratorContent();
boolean _tripleNotEquals = (_generatorContent != null);
if (_tripleNotEquals) {
String _generatorID_2 = hdg.getGeneratorID();
String _generatorContent_1 = hdg.getGeneratorContent();
String _generatorContent_2 = highlight.generatorContent(_generatorID_2, _generatorContent_1);
sb.append(_generatorContent_2);
}
sb.append(";");
this.leaving(hdg, highlight);
return sb.toString();
}
public String toString(final IHDLObject ref, final SyntaxHighlighter highlight) {
if (ref instanceof HDLInterfaceRef) {
return _toString((HDLInterfaceRef)ref, highlight);
} else if (ref instanceof HDLEnum) {
return _toString((HDLEnum)ref, highlight);
} else if (ref instanceof HDLEnumRef) {
return _toString((HDLEnumRef)ref, highlight);
} else if (ref instanceof HDLInlineFunction) {
return _toString((HDLInlineFunction)ref, highlight);
} else if (ref instanceof HDLNativeFunction) {
return _toString((HDLNativeFunction)ref, highlight);
} else if (ref instanceof HDLPrimitive) {
return _toString((HDLPrimitive)ref, highlight);
} else if (ref instanceof HDLSubstituteFunction) {
return _toString((HDLSubstituteFunction)ref, highlight);
} else if (ref instanceof HDLUnresolvedFragmentFunction) {
return _toString((HDLUnresolvedFragmentFunction)ref, highlight);
} else if (ref instanceof HDLVariableRef) {
return _toString((HDLVariableRef)ref, highlight);
} else if (ref instanceof HDLBitOp) {
return _toString((HDLBitOp)ref, highlight);
} else if (ref instanceof HDLBlock) {
return _toString((HDLBlock)ref, highlight);
} else if (ref instanceof HDLDirectGeneration) {
return _toString((HDLDirectGeneration)ref, highlight);
} else if (ref instanceof HDLEnumDeclaration) {
return _toString((HDLEnumDeclaration)ref, highlight);
} else if (ref instanceof HDLEqualityOp) {
return _toString((HDLEqualityOp)ref, highlight);
} else if (ref instanceof HDLForLoop) {
return _toString((HDLForLoop)ref, highlight);
} else if (ref instanceof HDLIfStatement) {
return _toString((HDLIfStatement)ref, highlight);
} else if (ref instanceof HDLInterface) {
return _toString((HDLInterface)ref, highlight);
} else if (ref instanceof HDLInterfaceDeclaration) {
return _toString((HDLInterfaceDeclaration)ref, highlight);
} else if (ref instanceof HDLInterfaceInstantiation) {
return _toString((HDLInterfaceInstantiation)ref, highlight);
} else if (ref instanceof HDLSwitchCaseStatement) {
return _toString((HDLSwitchCaseStatement)ref, highlight);
} else if (ref instanceof HDLSwitchStatement) {
return _toString((HDLSwitchStatement)ref, highlight);
} else if (ref instanceof HDLUnresolvedFragment) {
return _toString((HDLUnresolvedFragment)ref, highlight);
} else if (ref instanceof HDLVariableDeclaration) {
return _toString((HDLVariableDeclaration)ref, highlight);
} else if (ref instanceof HDLAnnotation) {
return _toString((HDLAnnotation)ref, highlight);
} else if (ref instanceof HDLArgument) {
return _toString((HDLArgument)ref, highlight);
} else if (ref instanceof HDLArrayInit) {
return _toString((HDLArrayInit)ref, highlight);
} else if (ref instanceof HDLAssignment) {
return _toString((HDLAssignment)ref, highlight);
} else if (ref instanceof HDLConcat) {
return _toString((HDLConcat)ref, highlight);
} else if (ref instanceof HDLExport) {
return _toString((HDLExport)ref, highlight);
} else if (ref instanceof HDLFunctionCall) {
return _toString((HDLFunctionCall)ref, highlight);
} else if (ref instanceof HDLFunctionParameter) {
return _toString((HDLFunctionParameter)ref, highlight);
} else if (ref instanceof HDLLiteral) {
return _toString((HDLLiteral)ref, highlight);
} else if (ref instanceof HDLManip) {
return _toString((HDLManip)ref, highlight);
} else if (ref instanceof HDLOpExpression) {
return _toString((HDLOpExpression)ref, highlight);
} else if (ref instanceof HDLPackage) {
return _toString((HDLPackage)ref, highlight);
} else if (ref instanceof HDLRange) {
return _toString((HDLRange)ref, highlight);
} else if (ref instanceof HDLRegisterConfig) {
return _toString((HDLRegisterConfig)ref, highlight);
} else if (ref instanceof HDLTernary) {
return _toString((HDLTernary)ref, highlight);
} else if (ref instanceof HDLUnit) {
return _toString((HDLUnit)ref, highlight);
} else if (ref instanceof HDLVariable) {
return _toString((HDLVariable)ref, highlight);
} else if (ref instanceof HDLExpression) {
return _toString((HDLExpression)ref, highlight);
} else if (ref instanceof HDLStatement) {
return _toString((HDLStatement)ref, highlight);
} else if (ref != null) {
return _toString(ref, highlight);
} else {
throw new IllegalArgumentException("Unhandled parameter types: " +
Arrays.<Object>asList(ref, highlight).toString());
}
}
}