Package st.gravel.support.compiler.ast

Source Code of st.gravel.support.compiler.ast.PackageNode

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);
  }
}
TOP

Related Classes of st.gravel.support.compiler.ast.PackageNode

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.