14c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin/*
24c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
34c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin *
54c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * This code is free software; you can redistribute it and/or modify it
64c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * under the terms of the GNU General Public License version 2 only, as
74c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * published by the Free Software Foundation.
84c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin *
94c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * This code is distributed in the hope that it will be useful, but WITHOUT
104c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
114c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
124c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * version 2 for more details (a copy is included in the LICENSE file that
134c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * accompanied this code).
144c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin *
154c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * You should have received a copy of the GNU General Public License version
164c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * 2 along with this work; if not, write to the Free Software Foundation,
174c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
184c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin *
194c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
204c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * or visit www.oracle.com if you need additional information or have any
214c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * questions.
224c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin */
234c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinpackage java.util.stream;
244c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin
254c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin/**
264c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin * An operation that injects or clears flags but otherwise performs no operation on elements.
274c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin */
284c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin@SuppressWarnings({"rawtypes", "unchecked"})
294c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkinpublic class FlagDeclaringOp<T> implements StatelessTestOp<T, T> {
304c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin    private final int flags;
314c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin    private final StreamShape shape;
324c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin
334c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin    public FlagDeclaringOp(int flags) {
344c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin        this(flags, StreamShape.REFERENCE);
354c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin    }
364c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin
374c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin    public FlagDeclaringOp(int flags, StreamShape shape) {
384c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin        this.flags = flags;
394c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin        this.shape = shape;
404c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin    }
414c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin
424c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin    @Override
434c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin    public StreamShape outputShape() {
444c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin        return shape;
454c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin    }
464c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin
474c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin    @Override
484c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin    public StreamShape inputShape() {
494c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin        return shape;
504c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin    }
514c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin
524c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin    @Override
534c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin    public int opGetFlags() {
544c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin        return flags;
554c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin    }
564c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin
574c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin    @Override
584c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin    public Sink<T> opWrapSink(int flags, boolean parallel, Sink sink) {
594c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin        return sink;
604c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin    }
614c65c01a4fcfe8c68cd73914370bd269712b91d9Igor Murashkin}
62