001    /*
002     *  www.ti.bfh.ch
003     *
004     *  Copyright 2007, Berne University of Applied Sciences, 
005     *  School of Engineering and Information Technology
006     *  and individual contributors as indicated by the @authors tag.
007     *
008     *  This is free software; you can redistribute it and/or modify it under the terms of the 
009     *  GNU Lesser General Public License as published by the Free Software Foundation; 
010     *  either version 3 of the License, or (at your option) any later version.
011     *
012     *  This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
013     *  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
014     *  See the GNU Lesser General Public License for more details.
015     *
016     *  You should have received a copy of the GNU Lesser General Public License along with this software; 
017     *  if not, see <http://www.gnu.org/licenses/>.
018     *
019     */
020    package ch.bfh.algo.core.forest;
021    
022    import ch.bfh.algo.core.graph.GenericVertex;
023    import ch.bfh.algo.sequence.LinkedPosition;
024    import ch.bfh.algo.sequence.LinkedSequence;
025    
026    public class GenericNode<E,P extends GenericNode<E,P>> extends GenericVertex<Object,E,GenericLink<E,P>,P>{
027    
028            private LinkedPosition<P> rootPos;
029            private LinkedPosition<GenericLink<E,P>> edgePos;
030            
031            protected void setLinkPosition(LinkedPosition<GenericLink<E,P>> pos){ this.edgePos=pos; }
032            protected LinkedPosition<GenericLink<E,P>> getLinkPosition(){ return this.edgePos; }
033    
034            protected void markRoot(LinkedSequence<P> roots){
035                    if(rootPos==null) this.rootPos=roots.insert((P)this);
036            }
037            
038            protected void unmarkRoot(){
039                    if(rootPos!=null){
040                            this.rootPos.container().delete(this.rootPos);
041                            this.rootPos=null;
042                    }
043            }
044    }