001    /**
002     * Copyright (c) 2011, The University of Southampton and the individual contributors.
003     * All rights reserved.
004     *
005     * Redistribution and use in source and binary forms, with or without modification,
006     * are permitted provided that the following conditions are met:
007     *
008     *   *  Redistributions of source code must retain the above copyright notice,
009     *      this list of conditions and the following disclaimer.
010     *
011     *   *  Redistributions in binary form must reproduce the above copyright notice,
012     *      this list of conditions and the following disclaimer in the documentation
013     *      and/or other materials provided with the distribution.
014     *
015     *   *  Neither the name of the University of Southampton nor the names of its
016     *      contributors may be used to endorse or promote products derived from this
017     *      software without specific prior written permission.
018     *
019     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
020     * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
021     * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
022     * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
023     * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
024     * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
025     * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
026     * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
027     * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
028     * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
029     */
030    package com.github.sarxos.webcam.ds.buildin.natives;
031    
032    import java.util.ArrayList;
033    import java.util.List;
034    
035    import org.bridj.Pointer;
036    import org.bridj.ann.Field;
037    import org.bridj.ann.Library;
038    import org.bridj.cpp.CPPObject;
039    
040    
041    /**
042     * <i>native declaration : line 1</i><br>
043     * This file was autogenerated by <a
044     * href="http://jnaerator.googlecode.com/">JNAerator</a>,<br>
045     * a tool written by <a href="http://ochafik.free.fr/">Olivier Chafik</a> that
046     * <a href="http://code.google.com/p/jnaerator/wiki/CreditsAndLicense">uses a
047     * few opensource projects.</a>.<br>
048     * For help, please visit <a
049     * href="http://nativelibs4java.googlecode.com/">NativeLibs4Java</a> or <a
050     * href="http://bridj.googlecode.com/">BridJ</a> .
051     */
052    @Library("OpenIMAJGrabber")
053    @SuppressWarnings("all")
054    public class DeviceList extends CPPObject {
055    
056            public DeviceList() {
057                    super();
058            }
059    
060            @SuppressWarnings({ "rawtypes", "unchecked" })
061            public DeviceList(Pointer pointer) {
062                    super(pointer);
063            }
064    
065            @Field(0)
066            protected int nDevices() {
067                    return this.io.getIntField(this, 0);
068            }
069    
070            @Field(0)
071            protected DeviceList nDevices(int nDevices) {
072                    this.io.setIntField(this, 0, nDevices);
073                    return this;
074            }
075    
076            // / C type : Device**
077            @Field(1)
078            protected Pointer<Pointer<Device>> devices() {
079                    return this.io.getPointerField(this, 1);
080            }
081    
082            // / C type : Device**
083            @Field(1)
084            protected DeviceList devices(Pointer<Pointer<Device>> devices) {
085                    this.io.setPointerField(this, 1, devices);
086                    return this;
087            }
088    
089            public native int getNumDevices();
090    
091            public native Pointer<Device> getDevice(int i);
092    
093            public List<Device> asArrayList() {
094                    List<Device> devices = new ArrayList<Device>();
095    
096                    for (int i = 0; i < getNumDevices(); i++) {
097                            devices.add(getDevice(i).get());
098                    }
099    
100                    return devices;
101            }
102    }