All Downloads are FREE. Search and download functionalities are using the official Maven repository.

oms3.ds.Grid Maven / Gradle / Ivy

There is a newer version: 0.8.1
Show newest version
/*
 * $Id$
 * 
 * This software is provided 'as-is', without any express or implied
 * warranty. In no event will the authors be held liable for any damages
 * arising from the use of this software.
 * 
 * Permission is granted to anyone to use this software for any purpose,
 * including commercial applications, and to alter it and redistribute it
 * freely, subject to the following restrictions:
 * 
 *  1. The origin of this software must not be misrepresented; you must not
 *     claim that you wrote the original software. If you use this software
 *     in a product, an acknowledgment in the product documentation would be
 *     appreciated but is not required.
 * 
 *  2. Altered source versions must be plainly marked as such, and must not be
 *     misrepresented as being the original software.
 * 
 *  3. This notice may not be removed or altered from any source
 *     distribution.
 */
package oms3.ds;

import oms3.Compound;
import java.util.ArrayList;
import java.util.Iterator;

/**
 * Grid datastaructure.
 * 
 * @author Olaf David ([email protected])
 * @version $Id$ 
 */
public class Grid extends ArrayList {
    
    private static final long serialVersionUID = -1159467302002888533L;
    

    int cols;
    int rows;
    
    public Grid(int width, int height) {
        super(width * height);
        this.cols = width;
        this.rows = height;
    }

    private int index(int x, int y) {
        return x * cols + y;
    }

    public void set(int x, int y, Compound w) {
        super.set(index(x, y), w);
    }

    public Compound get(int x, int y) {
        return super.get(index(x, y));
    }

    public Iterator col_wise() {
        
        return new Iterator() {

            int y = 0;
            int x = 0;
            int idx = 0;
            
            public boolean hasNext() {
                if ((x == cols-1) && (y < rows-1)) {
                    x = 0;
                }
                return true;
            }

            public Compound next() {
                idx++;
                return get(x,y);
            }

            public void remove() {
                throw new UnsupportedOperationException();
            }
        };
    }
    
    public Iterator row_wise() {
        return super.iterator();
    }
}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy