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 org.bridj.Pointer;
033    import org.bridj.ann.Field;
034    import org.bridj.ann.Library;
035    import org.bridj.ann.Runtime;
036    import org.bridj.cpp.CPPObject;
037    import org.bridj.cpp.CPPRuntime;
038    
039    
040    /**
041     * <i>native declaration : line 1</i><br>
042     * This file was autogenerated by <a
043     * href="http://jnaerator.googlecode.com/">JNAerator</a>,<br>
044     * a tool written by <a href="http://ochafik.free.fr/">Olivier Chafik</a> that
045     * <a href="http://code.google.com/p/jnaerator/wiki/CreditsAndLicense">uses a
046     * few opensource projects.</a>.<br>
047     * For help, please visit <a
048     * href="http://nativelibs4java.googlecode.com/">NativeLibs4Java</a> or <a
049     * href="http://bridj.googlecode.com/">BridJ</a> .
050     */
051    @Library("OpenIMAJGrabber")
052    @Runtime(CPPRuntime.class)
053    @SuppressWarnings("all")
054    public final class Device extends CPPObject {
055    
056            public Device() {
057                    super();
058            }
059    
060            @SuppressWarnings({ "unchecked", "rawtypes" })
061            public Device(Pointer pointer) {
062                    super(pointer);
063            }
064    
065            // / C type : const char*
066            @Field(0)
067            protected Pointer<Byte> name() {
068                    return this.io.getPointerField(this, 0);
069            }
070    
071            // / C type : const char*
072            @Field(0)
073            protected Device name(Pointer<Byte> name) {
074                    this.io.setPointerField(this, 0, name);
075                    return this;
076            }
077    
078            // / C type : const char*
079            @Field(1)
080            protected Pointer<Byte> identifier() {
081                    return this.io.getPointerField(this, 1);
082            }
083    
084            // / C type : const char*
085            @Field(1)
086            protected Device identifier(Pointer<Byte> identifier) {
087                    this.io.setPointerField(this, 1, identifier);
088                    return this;
089            }
090    
091            protected native Pointer<Byte> getName();
092    
093            public String getNameStr() {
094                    return getName().getCString();
095            }
096    
097            protected native Pointer<Byte> getIdentifier();
098    
099            public String getIdentifierStr() {
100                    return getIdentifier().getCString();
101            }
102    
103            /*
104             * (non-Javadoc)
105             * @see org.bridj.NativeObject#equals(java.lang.Object)
106             */
107            @Override
108            public boolean equals(Object o) {
109                    return o.toString().equals(this.toString());
110            }
111    
112            /*
113             * (non-Javadoc)
114             * @see java.lang.Object#hashCode()
115             */
116            @Override
117            public int hashCode() {
118                    return this.toString().hashCode();
119            }
120    
121            @Override
122            public String toString() {
123                    return String.format("Device[%s]=\"%s\"", getIdentifierStr(), getNameStr());
124            }
125    }