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.ClassNode; import st.gravel.support.compiler.ast.NamespaceNode; import st.gravel.support.compiler.ast.NodeVisitor; import st.gravel.support.compiler.ast.Reference; import st.gravel.support.compiler.ast.SourcePrinter; import st.gravel.support.compiler.ast.SourcePosition; public class PackageNode extends Node implements Cloneable { public static PackageNode_Factory factory = new PackageNode_Factory(); ClassNode[] _classes; st.gravel.core.Symbol _name; NamespaceNode[] _namespaces; public static class PackageNode_Factory extends Node_Factory { public PackageNode basicNew() { PackageNode newInstance = new PackageNode(); newInstance.initialize(); return newInstance; } public PackageNode empty() { return this.name_classes_namespaces_(null, new ClassNode[] {}, new NamespaceNode[] {}); } public PackageNode name_(final st.gravel.core.Symbol _aSymbol) { return ((PackageNode) this.name_classes_namespaces_(_aSymbol, new ClassNode[] {}, new NamespaceNode[] {})); } public PackageNode name_classes_namespaces_(final st.gravel.core.Symbol _anUndefinedObject, final ClassNode[] _anArray, final NamespaceNode[] _anArray2) { return this.basicNew().initializeName_classes_namespaces_(_anUndefinedObject, _anArray, _anArray2); } } static public PackageNode _empty(Object receiver) { return factory.empty(); } static public PackageNode _name_(Object receiver, final st.gravel.core.Symbol _aSymbol) { return factory.name_(_aSymbol); } static public PackageNode _name_classes_namespaces_(Object receiver, final st.gravel.core.Symbol _anUndefinedObject, final ClassNode[] _anArray, final NamespaceNode[] _anArray2) { return factory.name_classes_namespaces_(_anUndefinedObject, _anArray, _anArray2); } @Override public <X> X accept_(final NodeVisitor<X> _visitor) { return _visitor.visitPackageNode_(this); } @Override public PackageNode 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 PackageNode 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 PackageNode.this; } }); return this; } public ClassNode[] classes() { return _classes; } public ClassNode classNodeAt_ifAbsent_(final Reference _reference, final st.gravel.support.jvm.Block0<ClassNode> _aBlock) { return st.gravel.support.jvm.ArrayExtensions.detect_ifNone_(_classes, new st.gravel.support.jvm.Predicate1<ClassNode>() { @Override public boolean value_(final ClassNode _each) { return st.gravel.support.jvm.ObjectExtensions.equals_(_each.reference(), _reference); } }, _aBlock); } public PackageNode copy() { try { PackageNode _temp1 = (PackageNode) this.clone(); _temp1.postCopy(); return _temp1; } catch (CloneNotSupportedException e) { throw new RuntimeException(e); } } public PackageNode copyUpdateClassNode_do_(final Reference _aReference, final st.gravel.support.jvm.Block1<ClassNode, ClassNode> _aBlock) { return this.copy().pvtSetClasses_(st.gravel.support.jvm.ArrayExtensions.collect_(_classes, ((st.gravel.support.jvm.Block1<ClassNode, ClassNode>) (new st.gravel.support.jvm.Block1<ClassNode, ClassNode>() { @Override public ClassNode value_(final ClassNode _each) { if (st.gravel.support.jvm.ObjectExtensions.equals_(_each.reference(), _aReference)) { return _aBlock.value_(_each); } else { return _each; } } })))); } @Override public boolean equals(final Object _anObject) { if (!super.equals(_anObject)) { return false; } if (this._classes == null) { if (!(((PackageNode) _anObject)._classes == null)) { return false; } } else { if (!st.gravel.support.jvm.ArrayExtensions.equals_(this._classes, ((PackageNode) _anObject)._classes)) { return false; } } if (this._name == null) { if (!(((PackageNode) _anObject)._name == null)) { return false; } } else { if (!st.gravel.support.jvm.ObjectExtensions.equals_(this._name, ((PackageNode) _anObject)._name)) { return false; } } if (this._namespaces == null) { if (!(((PackageNode) _anObject)._namespaces == null)) { return false; } } else { if (!st.gravel.support.jvm.ArrayExtensions.equals_(this._namespaces, ((PackageNode) _anObject)._namespaces)) { return false; } } return true; } public PackageNode_Factory factory() { return factory; } @Override public int hashCode() { return (((this.factory() == null ? 0 : this.factory().hashCode()) ^ java.util.Arrays.hashCode(_classes)) ^ (_name == null ? 0 : _name.hashCode())); } public PackageNode initializeName_classes_namespaces_(final st.gravel.core.Symbol _anUndefinedObject, final ClassNode[] _anArray, final NamespaceNode[] _anArray2) { _name = _anUndefinedObject; _classes = _anArray; _namespaces = _anArray2; this.initialize(); return this; } @Override public PackageNode localVarNamesDo_(final st.gravel.support.jvm.Block1<Object, String> _aBlock) { return this; } public st.gravel.core.Symbol name() { return _name; } public NamespaceNode[] namespaces() { return _namespaces; } @Override public PackageNode nodesDo_(final st.gravel.support.jvm.Block1<Object, Node> _aBlock) { for (final ClassNode _temp1 : _classes) { _aBlock.value_(_temp1); } for (final NamespaceNode _temp2 : _namespaces) { _aBlock.value_(_temp2); } return this; } @Override public PackageNode prettySourceOn_(final StringBuilder _aStream) { SourcePrinter.factory.on_(_aStream).visit_(this); return this; } @Override public PackageNode 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 PackageNode pvtSetClasses_(final ClassNode[] _anArray) { _classes = _anArray; return this; } public PackageNode pvtSetNamespaces_(final NamespaceNode[] _anArray) { _namespaces = _anArray; return this; } public PackageNode pvtSetName_(final st.gravel.core.Symbol _aSymbol) { _name = _aSymbol; return this; } @Override public PackageNode pvtSetSourcePosition_(final SourcePosition _aSourcePosition) { _sourcePosition = _aSourcePosition; return this; } @Override public PackageNode sourceOn_(final StringBuilder _aStream) { _aStream.append(_name); return this; } @Override public PackageNode withAllNodesDo_(final st.gravel.support.jvm.Block1<Object, Node> _aBlock) { _aBlock.value_(this); this.allNodesDo_(_aBlock); return this; } @Override public PackageNode 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 PackageNode withClass_(final ClassNode _aClassNode) { return this.copy().pvtSetClasses_(st.gravel.support.jvm.ArrayExtensions.copyWith_(_classes, _aClassNode)); } public PackageNode withNamespace_(final NamespaceNode _aNamespaceNode) { final NamespaceNode _current; final NamespaceNode _merged; _current = ((NamespaceNode) st.gravel.support.jvm.ArrayExtensions.detect_ifNone_(_namespaces, new st.gravel.support.jvm.Predicate1<NamespaceNode>() { @Override public boolean value_(final NamespaceNode _each) { return st.gravel.support.jvm.ObjectExtensions.equals_(_each.reference(), _aNamespaceNode.reference()); } }, ((st.gravel.support.jvm.Block0<NamespaceNode>) (new st.gravel.support.jvm.Block0<NamespaceNode>() { @Override public NamespaceNode value() { return (NamespaceNode) null; } })))); _merged = _current == null ? _aNamespaceNode : _current.mergeWith_(_aNamespaceNode); return this.copy().pvtSetNamespaces_(st.gravel.support.jvm.ArrayExtensions.copyWith_(_namespaces, _merged)); } public PackageNode withName_(final st.gravel.core.Symbol _aSymbol) { return this.copy().pvtSetName_(_aSymbol); } public PackageNode withPackage_(final PackageNode _aPackageNode) { return PackageNode.factory.name_classes_namespaces_(_name, st.gravel.support.jvm.ArrayExtensions.copyWithAll_(_classes, _aPackageNode.classes()), st.gravel.support.jvm.ArrayExtensions.copyWithAll_(_namespaces, _aPackageNode.namespaces())); } @Override public PackageNode withSourcePosition_(final SourcePosition _aSourcePosition) { if (_sourcePosition == _aSourcePosition) { return PackageNode.this; } return this.copy().pvtSetSourcePosition_(_aSourcePosition); } }