12d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross/*
22d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross * Copyright (C) 2011-2014 The Android Open Source Project
32d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross *
42d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross * Licensed under the Apache License, Version 2.0 (the "License");
52d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross * you may not use this file except in compliance with the License.
62d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross * You may obtain a copy of the License at
72d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross *
82d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross *      http://www.apache.org/licenses/LICENSE-2.0
92d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross *
102d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross * Unless required by applicable law or agreed to in writing, software
112d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross * distributed under the License is distributed on an "AS IS" BASIS,
122d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross * See the License for the specific language governing permissions and
142d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross * limitations under the License.
152d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross */
162d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross
172d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross/*
182d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross * This file is auto-generated. DO NOT MODIFY!
192d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross * The source Renderscript file: reduce_general_struct.rs
202d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross */
212d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross
222d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Grosspackage struct;
232d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross
242d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Grossimport android.renderscript.*;
252d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Grossimport struct.reduce_general_structBitCode;
262d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross
272d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross/**
282d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross * @hide
292d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross */
302d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Grosspublic class ScriptC_reduce_general_struct extends ScriptC {
312d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross    private static final String __rs_resource_name = "reduce_general_struct";
322d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross    // Constructor
332d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross    public  ScriptC_reduce_general_struct(RenderScript rs) {
342d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross        super(rs,
352d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross              __rs_resource_name,
362d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross              reduce_general_structBitCode.getBitCode32(),
372d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross              reduce_general_structBitCode.getBitCode64());
382d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross        mRSLocal = rs;
392d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross        __I32 = Element.I32(rs);
402d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross        __ScriptField_MyStruct = ScriptField_MyStruct.createElement(rs);
412d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross    }
422d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross
432d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross    private Element __I32;
442d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross    private Element __ScriptField_MyStruct;
452d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross    private RenderScript mRSLocal;
462d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross    // To obtain the result, invoke get(), which blocks
472d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross    // until the asynchronously-launched operation has completed.
482d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross    public static class result_int {
492d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross        public int get() {
50d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross            if (!mGotResult) {
51d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross                int[] outArray = new int[1];
52d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross                mOut.copyTo(outArray);
53d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross                mResult = outArray[0];
54d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross                mOut.destroy();
55d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross                mOut = null;  // make Java object eligible for garbage collection
56d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross                if (mTempIns != null) {
57d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross                    for (Allocation tempIn : mTempIns) {
58d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross                        tempIn.destroy();
59d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross                    }
60d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross
61d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross                    mTempIns = null;  // make Java objects eligible for garbage collection
62d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross                }
63d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross
64d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross                mGotResult = true;
65d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross            }
66d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross
67d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross            return mResult;
682d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross        }
692d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross
702d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross        private  result_int(Allocation out) {
71d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross            mTempIns = null;
722d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross            mOut = out;
73d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross            mGotResult = false;
742d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross        }
752d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross
76d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross        private Allocation[] mTempIns;
772d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross        private Allocation mOut;
78d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross        private boolean mGotResult;
79d204e65f7b46a3592a254d581e4b9f2af92b6eacDavid Gross        private int mResult;
802d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross    }
812d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross
828ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross    private final static int mExportReduceIdx_inStruct = 0;
832d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross    // ain1 = "/* struct <> */ val"
842d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross    public result_int reduce_inStruct(Allocation ain1) {
852d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross        return reduce_inStruct(ain1, null);
862d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross    }
872d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross
882d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross    // ain1 = "/* struct <> */ val"
892d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross    public result_int reduce_inStruct(Allocation ain1, Script.LaunchOptions sc) {
902d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross        // check ain1
912d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross        if (!ain1.getType().getElement().isCompatible(__ScriptField_MyStruct)) {
922d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross            throw new RSRuntimeException("Type mismatch with ScriptField_MyStruct!");
932d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross        }
942d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross        Allocation aout = Allocation.createSized(mRSLocal, __I32, 1);
952d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross        aout.setAutoPadding(true);
968ee018bdb53fc5abdc430878e2bec0c0c0aa560fDavid Gross        reduce(mExportReduceIdx_inStruct, new Allocation[]{ain1}, aout, sc);
972d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross        return new result_int(aout);
982d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross    }
992d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross
1002d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross}
1012d7f3f95947889e1ea48b0e925c5929af4fbf6b4David Gross
102