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

com.speedment.common.tuple.Tuples Maven / Gradle / Ivy

/**
 *
 * Copyright (c) 2006-2017, Speedment, Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); You may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at:
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.speedment.common.tuple;

import com.speedment.common.tuple.internal.*;

/**
 * Basic convenience factory for Tuples.
 *
 * @author pemi
 */
public interface Tuples {

    /**
     * Creates and returns an empty Tuple
     *
     * @return a {@link Tuple0}
     *
     * @see Tuple0
     * @see Tuple
     */
    static Tuple0 of() {
        return Tuple0Impl.EMPTY_TUPLE;
    }

    /**
     * Creates and returns a Tuple1 with the given parameters.
     *
     * @param  type of element 0
     * @param e0 element 0
     *
     * @return a {@link Tuple1} with the given parameters
     *
     * @see Tuple1
     * @see Tuple
     */
    static  Tuple1 of(T0 e0) {
        return new Tuple1Impl<>(e0);
    }

    /**
     * Creates and returns a Tuple2 with the given parameters.
     *
     * @param  type of element 0
     * @param  type of element 1
     * @param e0 element 0
     * @param e1 element 1
     *
     * @return a {@link Tuple2} with the given parameters
     *
     * @see Tuple2
     * @see Tuple
     */
    static  Tuple2 of(T0 e0, T1 e1) {
        return new Tuple2Impl<>(e0, e1);
    }

    /**
     * Creates and returns a Tuple3 with the given parameters.
     *
     * @param  type of element 0
     * @param  type of element 1
     * @param  type of element 2
     * @param e0 element 0
     * @param e1 element 1
     * @param e2 element 2
     *
     * @return a {@link Tuple3} with the given parameters
     *
     * @see Tuple3
     * @see Tuple
     */
    static  Tuple3 of(T0 e0, T1 e1, T2 e2) {
        return new Tuple3Impl<>(e0, e1, e2);
    }

    /**
     * Creates and returns a Tuple3 with the given parameters.
     *
     * @param  type of element 0
     * @param  type of element 1
     * @param  type of element 2
     * @param  type of element 3
     * @param e0 element 0
     * @param e1 element 1
     * @param e2 element 2
     * @param e3 element 3
     *
     * @return a {@link Tuple4} with the given parameters
     *
     * @see Tuple4
     * @see Tuple
     */
    static  Tuple4 of(T0 e0, T1 e1, T2 e2, T3 e3) {
        return new Tuple4Impl<>(e0, e1, e2, e3);
    }

    /**
     * Creates and returns a Tuple3 with the given parameters.
     *
     * @param  type of element 0
     * @param  type of element 1
     * @param  type of element 2
     * @param  type of element 3
     * @param  type of element 3
     * @param e0 element 0
     * @param e1 element 1
     * @param e2 element 2
     * @param e3 element 3
     * @param e4 element 4
     *
     * @return a {@link Tuple5} with the given parameters
     *
     * @see Tuple5
     * @see Tuple
     */
    static  Tuple5 of(T0 e0, T1 e1, T2 e2, T3 e3, T4 e4) {
        return new Tuple5Impl<>(e0, e1, e2, e3, e4);
    }

    /**
     * Creates and returns a Tuple3 with the given parameters.
     *
     * @param  type of element 0
     * @param  type of element 1
     * @param  type of element 2
     * @param  type of element 3
     * @param  type of element 3
     * @param  type of element 4
     * @param e0 element 0
     * @param e1 element 1
     * @param e2 element 2
     * @param e3 element 3
     * @param e4 element 4
     * @param e5 element 5
     *
     * @return a {@link Tuple6} with the given parameters
     *
     * @see Tuple6
     * @see Tuple
     */
    static  Tuple6 of(T0 e0, T1 e1, T2 e2, T3 e3, T4 e4, T5 e5) {
        return new Tuple6Impl<>(e0, e1, e2, e3, e4, e5);
    }

    /**
     * Creates and returns a Tuple0OfNullables .
     *
     * @return a {@link Tuple0OfNullables}
     *
     * @see Tuple0OfNullables
     * @see Tuple
     */
    static Tuple0OfNullables ofNullables() {
        return Tuple0OfNullablesImpl.EMPTY_TUPLE;
    }

    /**
     * Creates and returns a Tuple1OfNullables with the given parameters.
     *
     * @param  type of element 0
     * @param e0 element 0
     *
     * @return a {@link Tuple1OfNullables} with the given parameters
     *
     * @see Tuple1OfNullables
     * @see Tuple
     */
    static  Tuple1OfNullables ofNullables(T0 e0) {
        return new Tuple1OfNullablesImpl<>(e0);
    }

    /**
     * Creates and returns a Tuple2OfNullables with the given parameters.
     *
     * @param  type of element 0
     * @param  type of element 1
     * @param e0 element 0
     * @param e1 element 1
     *
     * @return a {@link Tuple2OfNullables} with the given parameters
     *
     * @see Tuple2OfNullables
     * @see Tuple
     */
    static  Tuple2OfNullables ofNullables(T0 e0, T1 e1) {
        return new Tuple2OfNullablesImpl<>(e0, e1);
    }

    /**
     * Creates and returns a Tuple3OfNullables with the given parameters.
     *
     * @param  type of element 0
     * @param  type of element 1
     * @param  type of element 2
     * @param e0 element 0
     * @param e1 element 1
     * @param e2 element 2
     *
     * @return a {@link Tuple3OfNullables} with the given parameters
     *
     * @see Tuple3OfNullables
     * @see Tuple
     */
    static  Tuple3OfNullables ofNullables(T0 e0, T1 e1, T2 e2) {
        return new Tuple3OfNullablesImpl<>(e0, e1, e2);
    }

    /**
     * Creates and returns a Tuple4OfNullables with the given parameters.
     *
     * @param  type of element 0
     * @param  type of element 1
     * @param  type of element 2
     * @param  type of element 3
     * @param e0 element 0
     * @param e1 element 1
     * @param e2 element 2
     * @param e3 element 3
     *
     * @return a {@link Tuple4OfNullables} with the given parameters
     *
     * @see Tuple4OfNullables
     * @see Tuple
     */
    static  Tuple4OfNullables ofNullables(T0 e0, T1 e1, T2 e2, T3 e3) {
        return new Tuple4OfNullablesImpl<>(e0, e1, e2, e3);
    }

    /**
     * Creates and returns a Tuple5OfNullables with the given parameters.
     *
     * @param  type of element 0
     * @param  type of element 1
     * @param  type of element 2
     * @param  type of element 3
     * @param  type of element 4
     * @param e0 element 0
     * @param e1 element 1
     * @param e2 element 2
     * @param e3 element 3
     * @param e4 element 4
     *
     * @return a {@link Tuple5OfNullables} with the given parameters
     *
     * @see Tuple5OfNullables
     * @see Tuple
     */
    static  Tuple5OfNullables ofNullables(T0 e0, T1 e1, T2 e2, T3 e3, T4 e4) {
        return new Tuple5OfNullablesImpl<>(e0, e1, e2, e3, e4);
    }

    /**
     * Creates and returns a Tuple6OfNullables with the given parameters.
     *
     * @param  type of element 0
     * @param  type of element 1
     * @param  type of element 2
     * @param  type of element 3
     * @param  type of element 4
     * @param  type of element 5
     * @param e0 element 0
     * @param e1 element 1
     * @param e2 element 2
     * @param e3 element 3
     * @param e4 element 4
     * @param e5 element 5
     *
     * @return a {@link Tuple6OfNullables} with the given parameters
     *
     * @see Tuple5OfNullables
     * @see Tuple
     */
    static  Tuple6OfNullables ofNullables(T0 e0, T1 e1, T2 e2, T3 e3, T4 e4, T5 e5) {
        return new Tuple6OfNullablesImpl<>(e0, e1, e2, e3, e4, e5);
    }

    // Todo: Add builder that makes .add(e0) -> Tuple1  .add(e0).add(e2) -> Tuple2   .set(3, e3) -> Tuple3
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy