Package st.gravel.support.compiler.ast

Source Code of st.gravel.support.compiler.ast.NamespaceNode$NamespaceNode_Factory

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.Reference;
import st.gravel.support.compiler.ast.AbsoluteReference;
import st.gravel.support.compiler.ast.SharedDeclarationNode;
import st.gravel.support.compiler.ast.NodeVisitor;
import st.gravel.support.compiler.ast.SystemNode;
import java.util.Set;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.ArrayList;
import java.util.HashMap;
import st.gravel.support.compiler.ast.SourcePrinter;
import st.gravel.support.compiler.ast.SourcePosition;

public class NamespaceNode extends Node implements Cloneable {

  public static NamespaceNode_Factory factory = new NamespaceNode_Factory();

  AbsoluteReference[] _privateImports;

  AbsoluteReference[] _publicImports;

  AbsoluteReference _reference;

  SharedDeclarationNode[] _sharedVariables;

  public static class NamespaceNode_Factory extends Node_Factory {

    public NamespaceNode basicNew() {
      NamespaceNode newInstance = new NamespaceNode();
      newInstance.initialize();
      return newInstance;
    }

    public NamespaceNode for_(final Reference _aReference) {
      final AbsoluteReference _orgGravelLang;
      _orgGravelLang = AbsoluteReference.factory.path_(new st.gravel.core.Symbol[] { st.gravel.core.Symbol.value("st"), st.gravel.core.Symbol.value("gravel"), st.gravel.core.Symbol.value("lang") });
      if (st.gravel.support.jvm.ObjectExtensions.equals_(_aReference, _orgGravelLang)) {
        return NamespaceNode.factory.reference_(((AbsoluteReference) _aReference));
      }
      return NamespaceNode.factory.reference_publicImports_privateImports_sharedVariables_(((AbsoluteReference) _aReference), new AbsoluteReference[] {}, st.gravel.support.jvm.ArrayFactory.with_(_orgGravelLang), new SharedDeclarationNode[] {});
    }

    public NamespaceNode reference_(final AbsoluteReference _anAbsoluteReference) {
      return this.reference_publicImports_privateImports_sharedVariables_(_anAbsoluteReference, new AbsoluteReference[] {}, new AbsoluteReference[] {}, new SharedDeclarationNode[] {});
    }

    public NamespaceNode reference_publicImports_privateImports_sharedVariables_(final AbsoluteReference _anAbsoluteReference, final AbsoluteReference[] _anArray, final AbsoluteReference[] _anArray2, final SharedDeclarationNode[] _sharedVariables) {
      return this.basicNew().initializeReference_publicImports_privateImports_sharedVariables_(_anAbsoluteReference, _anArray, _anArray2, _sharedVariables);
    }
  }

  static public NamespaceNode _for_(Object receiver, final Reference _aReference) {
    return factory.for_(_aReference);
  }

  static public NamespaceNode _reference_(Object receiver, final AbsoluteReference _anAbsoluteReference) {
    return factory.reference_(_anAbsoluteReference);
  }

  static public NamespaceNode _reference_publicImports_privateImports_sharedVariables_(Object receiver, final AbsoluteReference _anAbsoluteReference, final AbsoluteReference[] _anArray, final AbsoluteReference[] _anArray2, final SharedDeclarationNode[] _sharedVariables) {
    return factory.reference_publicImports_privateImports_sharedVariables_(_anAbsoluteReference, _anArray, _anArray2, _sharedVariables);
  }

  @Override
  public <X> X accept_(final NodeVisitor<X> _visitor) {
    return _visitor.visitNamespaceNode_(this);
  }

  public NamespaceNode allImportsIn_do_(final SystemNode _aSystemNode, final st.gravel.support.jvm.Block1<Object, NamespaceNode> _aBlock) {
    final java.util.Set<AbsoluteReference> _aSet;
    _aSet = new java.util.HashSet();
    _aSet.add(_reference);
    _aBlock.value_(this);
    this.allImportsIn_private_except_do_(_aSystemNode, true, _aSet, _aBlock);
    return this;
  }

  public NamespaceNode allImportsIn_private_except_do_(final SystemNode _aSystemNode, final boolean _aBoolean, final java.util.Set<AbsoluteReference> _aSet, final st.gravel.support.jvm.Block1<Object, NamespaceNode> _aBlock) {
    this.importReferences_do_(_aBoolean, new st.gravel.support.jvm.Block1<Object, AbsoluteReference>() {

      @Override
      public Object value_(final AbsoluteReference _each) {
        if (!_aSet.contains(_each)) {
          final NamespaceNode _ns;
          _aSet.add(_each);
          _ns = _aSystemNode.namespaceNodeAt_(_each);
          _aBlock.value_(_ns);
          return _ns.allImportsIn_private_except_do_(_aSystemNode, false, _aSet, _aBlock);
        }
        return NamespaceNode.this;
      }
    });
    return this;
  }

  @Override
  public NamespaceNode 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 NamespaceNode 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 NamespaceNode.this;
      }
    });
    return this;
  }

  public NamespaceNode copy() {
    try {
      NamespaceNode _temp1 = (NamespaceNode) this.clone();
      _temp1.postCopy();
      return _temp1;
    } catch (CloneNotSupportedException e) {
      throw new RuntimeException(e);
    }
  }

  @Override
  public boolean equals(final Object _anObject) {
    if (!super.equals(_anObject)) {
      return false;
    }
    if (this._reference == null) {
      if (!(((NamespaceNode) _anObject)._reference == null)) {
        return false;
      }
    } else {
      if (!st.gravel.support.jvm.ObjectExtensions.equals_(this._reference, ((NamespaceNode) _anObject)._reference)) {
        return false;
      }
    }
    if (this._publicImports == null) {
      if (!(((NamespaceNode) _anObject)._publicImports == null)) {
        return false;
      }
    } else {
      if (!st.gravel.support.jvm.ArrayExtensions.equals_(this._publicImports, ((NamespaceNode) _anObject)._publicImports)) {
        return false;
      }
    }
    if (this._privateImports == null) {
      if (!(((NamespaceNode) _anObject)._privateImports == null)) {
        return false;
      }
    } else {
      if (!st.gravel.support.jvm.ArrayExtensions.equals_(this._privateImports, ((NamespaceNode) _anObject)._privateImports)) {
        return false;
      }
    }
    if (this._sharedVariables == null) {
      if (!(((NamespaceNode) _anObject)._sharedVariables == null)) {
        return false;
      }
    } else {
      if (!st.gravel.support.jvm.ArrayExtensions.equals_(this._sharedVariables, ((NamespaceNode) _anObject)._sharedVariables)) {
        return false;
      }
    }
    return true;
  }

  public NamespaceNode_Factory factory() {
    return factory;
  }

  @Override
  public int hashCode() {
    return ((((this.factory() == null ? 0 : this.factory().hashCode()) ^ (_reference == null ? 0 : _reference.hashCode())) ^ java.util.Arrays.hashCode(_publicImports)) ^ java.util.Arrays.hashCode(_privateImports));
  }

  public NamespaceNode importReferences_do_(final boolean _private, final st.gravel.support.jvm.Block1<Object, AbsoluteReference> _aBlock) {
    for (final AbsoluteReference _temp1 : _publicImports) {
      _aBlock.value_(_temp1);
    }
    if (_private) {
      for (final AbsoluteReference _temp2 : _privateImports) {
        _aBlock.value_(_temp2);
      }
    }
    return this;
  }

  public NamespaceNode initializeReference_publicImports_privateImports_sharedVariables_(final AbsoluteReference _anAbsoluteReference, final AbsoluteReference[] _anArray, final AbsoluteReference[] _anArray2, final SharedDeclarationNode[] _anArray3) {
    _reference = _anAbsoluteReference;
    _publicImports = _anArray;
    _privateImports = _anArray2;
    _sharedVariables = _anArray3;
    this.initialize();
    return this;
  }

  @Override
  public NamespaceNode localVarNamesDo_(final st.gravel.support.jvm.Block1<Object, String> _aBlock) {
    return this;
  }

  public NamespaceNode mergeWith_(final NamespaceNode _aNamespaceNode) {
    final List<AbsoluteReference>[] _nPublic;
    final List<AbsoluteReference>[] _nPrivate;
    final Map<String, SharedDeclarationNode>[] _nSharedVariables;
    _nSharedVariables = new Map[1];
    _nPrivate = new List[1];
    _nPublic = new List[1];
    _nPublic[0] = new java.util.ArrayList();
    _nPrivate[0] = new java.util.ArrayList();
    _nSharedVariables[0] = new java.util.HashMap<String, SharedDeclarationNode>();
    for (final AbsoluteReference _each : _aNamespaceNode.publicImports()) {
      if (!_nPublic[0].contains(_each)) {
        _nPublic[0].add(_each);
      }
    }
    for (final AbsoluteReference _each : _publicImports) {
      if (!_nPublic[0].contains(_each)) {
        _nPublic[0].add(_each);
      }
    }
    for (final AbsoluteReference _each : _aNamespaceNode.privateImports()) {
      if (!(_nPublic[0].contains(_each) || _nPrivate[0].contains(_each))) {
        _nPrivate[0].add(_each);
      }
    }
    for (final AbsoluteReference _each : _privateImports) {
      if (!(_nPublic[0].contains(_each) || _nPrivate[0].contains(_each))) {
        _nPrivate[0].add(_each);
      }
    }
    for (final SharedDeclarationNode _each : _sharedVariables) {
      _nSharedVariables[0].put(_each.name(), _each);
    }
    for (final SharedDeclarationNode _each : _aNamespaceNode.sharedVariables()) {
      _nSharedVariables[0].put(_each.name(), _each);
    }
    return this.withPrivateImports_publicImports_sharedVariables_(_nPrivate[0].toArray(new AbsoluteReference[_nPrivate[0].size()]), _nPublic[0].toArray(new AbsoluteReference[_nPublic[0].size()]), _nSharedVariables[0].values().toArray(new SharedDeclarationNode[_nSharedVariables[0].size()]));
  }

  @Override
  public NamespaceNode nodesDo_(final st.gravel.support.jvm.Block1<Object, Node> _aBlock) {
    return this;
  }

  @Override
  public NamespaceNode prettySourceOn_(final StringBuilder _aStream) {
    SourcePrinter.factory.on_(_aStream).visit_(this);
    return this;
  }

  @Override
  public NamespaceNode 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 AbsoluteReference[] privateImports() {
    return _privateImports;
  }

  public AbsoluteReference[] publicImports() {
    return _publicImports;
  }

  public NamespaceNode pvtSetPrivateImports_(final AbsoluteReference[] _privateArray) {
    _privateImports = _privateArray;
    return this;
  }

  public NamespaceNode pvtSetPublicImports_(final AbsoluteReference[] _publicArray) {
    _publicImports = _publicArray;
    return this;
  }

  public NamespaceNode pvtSetSharedVariables_(final SharedDeclarationNode[] _anArray) {
    _sharedVariables = _anArray;
    return this;
  }

  @Override
  public NamespaceNode pvtSetSourcePosition_(final SourcePosition _aSourcePosition) {
    _sourcePosition = _aSourcePosition;
    return this;
  }

  public AbsoluteReference reference() {
    return _reference;
  }

  public SharedDeclarationNode sharedVariableAt_ifAbsent_(final String _aName, final st.gravel.support.jvm.Block0<SharedDeclarationNode> _aBlock) {
    return st.gravel.support.jvm.ArrayExtensions.detect_ifNone_(_sharedVariables, new st.gravel.support.jvm.Predicate1<SharedDeclarationNode>() {

      @Override
      public boolean value_(final SharedDeclarationNode _each) {
        return st.gravel.support.jvm.StringExtensions.equals_(_each.name(), _aName);
      }
    }, _aBlock);
  }

  public SharedDeclarationNode[] sharedVariables() {
    return _sharedVariables;
  }

  @Override
  public NamespaceNode sourceOn_(final StringBuilder _aStream) {
    _aStream.append(_reference.toString());
    return this;
  }

  @Override
  public NamespaceNode withAllNodesDo_(final st.gravel.support.jvm.Block1<Object, Node> _aBlock) {
    _aBlock.value_(this);
    this.allNodesDo_(_aBlock);
    return this;
  }

  @Override
  public NamespaceNode 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 NamespaceNode withPrivateImports_publicImports_sharedVariables_(final AbsoluteReference[] _privateArray, final AbsoluteReference[] _publicArray, final SharedDeclarationNode[] _sharedVariablesArray) {
    final NamespaceNode _cp;
    _cp = this.copy();
    _cp.pvtSetPrivateImports_(_privateArray);
    _cp.pvtSetPublicImports_(_publicArray);
    _cp.pvtSetSharedVariables_(_sharedVariablesArray);
    return _cp;
  }

  public NamespaceNode withSharedVariable_(final SharedDeclarationNode _aSharedDeclarationNode) {
    return this.copy().pvtSetSharedVariables_(st.gravel.support.jvm.ArrayExtensions.copyWith_(_sharedVariables, _aSharedDeclarationNode));
  }

  @Override
  public NamespaceNode withSourcePosition_(final SourcePosition _aSourcePosition) {
    if (_sourcePosition == _aSourcePosition) {
      return NamespaceNode.this;
    }
    return this.copy().pvtSetSourcePosition_(_aSourcePosition);
  }
}
TOP

Related Classes of st.gravel.support.compiler.ast.NamespaceNode$NamespaceNode_Factory

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.