package st.gravel.support.compiler.ast; /* This file is automatically generated from typed smalltalk source. Do not edit by hand. (C) AG5.com */ import java.math.BigInteger; import st.gravel.support.jvm.NonLocalReturn; import st.gravel.support.compiler.ast.Node; import st.gravel.support.compiler.ast.Node.Node_Factory; import st.gravel.support.compiler.ast.PackageNode; import st.gravel.support.compiler.ast.NodeVisitor; import st.gravel.support.compiler.ast.Reference; import st.gravel.support.compiler.ast.ClassNode; import st.gravel.support.compiler.ast.NamespaceNode; import st.gravel.support.compiler.ast.SourcePrinter; import st.gravel.support.compiler.ast.SourcePosition; public class SystemDefinitionNode extends Node implements Cloneable { public static SystemDefinitionNode_Factory factory = new SystemDefinitionNode_Factory(); PackageNode[] _packageNodes; public static class SystemDefinitionNode_Factory extends Node_Factory { public SystemDefinitionNode basicNew() { SystemDefinitionNode newInstance = new SystemDefinitionNode(); newInstance.initialize(); return newInstance; } public SystemDefinitionNode packageNodes_(final PackageNode[] _anArray) { return ((SystemDefinitionNode) this.basicNew().initializePackageNodes_(_anArray)); } } static public SystemDefinitionNode _packageNodes_(Object receiver, final PackageNode[] _anArray) { return factory.packageNodes_(_anArray); } @Override public <X> X accept_(final NodeVisitor<X> _visitor) { return _visitor.visitSystemDefinitionNode_(this); } @Override public SystemDefinitionNode allNodesDo_(final st.gravel.support.jvm.Block1<Object, Node> _aBlock) { this.nodesDo_(new st.gravel.support.jvm.Block1<Object, Node>() { @Override public Object value_(final Node _each) { return _each.withAllNodesDo_(_aBlock); } }); return this; } @Override public SystemDefinitionNode allNodesDo_pruneWhere_(final st.gravel.support.jvm.Block1<Object, Node> _aBlock, final st.gravel.support.jvm.Block1<Boolean, Node> _pruneBlock) { this.nodesDo_(new st.gravel.support.jvm.Block1<Object, Node>() { @Override public Object value_(final Node _each) { if (!_pruneBlock.value_(_each)) { return _each.withAllNodesDo_pruneWhere_(_aBlock, _pruneBlock); } return SystemDefinitionNode.this; } }); return this; } public ClassNode classNodeAt_ifAbsent_(final Reference _reference, final st.gravel.support.jvm.Block0<ClassNode> _aBlock) { final ClassNode[] _cn; _cn = new ClassNode[1]; for (final PackageNode _each : _packageNodes) { _cn[0] = _each.classNodeAt_ifAbsent_(_reference, ((st.gravel.support.jvm.Block0<ClassNode>) (new st.gravel.support.jvm.Block0<ClassNode>() { @Override public ClassNode value() { return (ClassNode) null; } }))); if (_cn[0] != null) { return _cn[0]; } } return _aBlock.value(); } public SystemDefinitionNode copy() { try { SystemDefinitionNode _temp1 = (SystemDefinitionNode) this.clone(); _temp1.postCopy(); return _temp1; } catch (CloneNotSupportedException e) { throw new RuntimeException(e); } } public SystemDefinitionNode copyUpdatePackage_do_(final st.gravel.core.Symbol _packageName, final st.gravel.support.jvm.Block1<PackageNode, PackageNode> _aBlock) { final int _idx; final PackageNode _updatedPackage; _idx = st.gravel.support.jvm.ArrayExtensions.indexWhere_(_packageNodes, new st.gravel.support.jvm.Predicate1<PackageNode>() { @Override public boolean value_(final PackageNode _pkg) { return st.gravel.support.jvm.ObjectExtensions.equals_(_pkg.name(), _packageName); } }); _updatedPackage = _aBlock.value_(_packageNodes[_idx - 1]); return this.copy().pvtSetPackageNodes_(st.gravel.support.jvm.ArrayExtensions.copyAt_put_(_packageNodes, _idx, _updatedPackage)); } public SystemDefinitionNode_Factory factory() { return factory; } public SystemDefinitionNode initializePackageNodes_(final PackageNode[] _anArray) { _packageNodes = _anArray; this.initialize(); return this; } @Override public SystemDefinitionNode localVarNamesDo_(final st.gravel.support.jvm.Block1<Object, String> _aBlock) { return this; } @Override public SystemDefinitionNode nodesDo_(final st.gravel.support.jvm.Block1<Object, Node> _aBlock) { for (final PackageNode _temp1 : _packageNodes) { _aBlock.value_(_temp1); } return this; } public st.gravel.core.Symbol[] packageNames() { return st.gravel.support.jvm.ArrayExtensions.collect_(_packageNodes, ((st.gravel.support.jvm.Block1<st.gravel.core.Symbol, PackageNode>) (new st.gravel.support.jvm.Block1<st.gravel.core.Symbol, PackageNode>() { @Override public st.gravel.core.Symbol value_(final PackageNode _each) { return (st.gravel.core.Symbol) _each.name(); } }))); } public PackageNode[] packageNodes() { return _packageNodes; } @Override public SystemDefinitionNode prettySourceOn_(final StringBuilder _aStream) { SourcePrinter.factory.on_(_aStream).visit_(this); return this; } @Override public SystemDefinitionNode printOn_(final StringBuilder _aStream) { final String _title; _title = this.factory().toString(); _aStream.append(st.gravel.support.jvm.CharacterExtensions.isVowel(_title.charAt(0)) ? "an " : "a "); _aStream.append(_title); _aStream.append('['); this.sourceOn_(_aStream); _aStream.append(']'); return this; } public SystemDefinitionNode pvtSetPackageNodes_(final PackageNode[] _anArray) { _packageNodes = _anArray; return this; } @Override public SystemDefinitionNode pvtSetSourcePosition_(final SourcePosition _aSourcePosition) { _sourcePosition = _aSourcePosition; return this; } @Override public SystemDefinitionNode sourceOn_(final StringBuilder _aStream) { return this; } @Override public SystemDefinitionNode withAllNodesDo_(final st.gravel.support.jvm.Block1<Object, Node> _aBlock) { _aBlock.value_(this); this.allNodesDo_(_aBlock); return this; } @Override public SystemDefinitionNode withAllNodesDo_pruneWhere_(final st.gravel.support.jvm.Block1<Object, Node> _aBlock, final st.gravel.support.jvm.Block1<Boolean, Node> _pruneBlock) { _aBlock.value_(this); this.allNodesDo_pruneWhere_(_aBlock, _pruneBlock); return this; } public SystemDefinitionNode withPackageNamed_classNode_(final st.gravel.core.Symbol _packageName, final ClassNode _aClassNode) { return this.withPackageNode_(PackageNode.factory.name_classes_namespaces_(_packageName, st.gravel.support.jvm.ArrayFactory.with_(_aClassNode), new NamespaceNode[] {})); } public SystemDefinitionNode withPackageNode_(final PackageNode _aPackageNode) { return this.copy().pvtSetPackageNodes_(st.gravel.support.jvm.ArrayExtensions.copyWith_(_packageNodes, _aPackageNode)); } @Override public SystemDefinitionNode withSourcePosition_(final SourcePosition _aSourcePosition) { if (_sourcePosition == _aSourcePosition) { return SystemDefinitionNode.this; } return this.copy().pvtSetSourcePosition_(_aSourcePosition); } }