annotate src/handle.h @ 55:2b8e1416327d tip

Just change a couple of include guards
author Chris Cannam
date Wed, 16 Nov 2016 09:12:46 +0000
parents c9515589be7d
children
rev   line source
Chris@37 1 /*
Chris@37 2 jVamp
Chris@37 3
Chris@37 4 A Java host interface for Vamp audio analysis plugins
Chris@37 5
Chris@37 6 Centre for Digital Music, Queen Mary, University of London.
Chris@37 7 Copyright 2012 Chris Cannam and QMUL.
Chris@37 8
Chris@37 9 Permission is hereby granted, free of charge, to any person
Chris@37 10 obtaining a copy of this software and associated documentation
Chris@37 11 files (the "Software"), to deal in the Software without
Chris@37 12 restriction, including without limitation the rights to use, copy,
Chris@37 13 modify, merge, publish, distribute, sublicense, and/or sell copies
Chris@37 14 of the Software, and to permit persons to whom the Software is
Chris@37 15 furnished to do so, subject to the following conditions:
Chris@37 16
Chris@37 17 The above copyright notice and this permission notice shall be
Chris@37 18 included in all copies or substantial portions of the Software.
Chris@37 19
Chris@37 20 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
Chris@37 21 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
Chris@37 22 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
Chris@37 23 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
Chris@37 24 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
Chris@37 25 CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
Chris@37 26 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Chris@37 27
Chris@37 28 Except as contained in this notice, the names of the Centre for
Chris@37 29 Digital Music; Queen Mary, University of London; and Chris Cannam
Chris@37 30 shall not be used in advertising or otherwise to promote the sale,
Chris@37 31 use or other dealings in this Software without prior written
Chris@37 32 authorization.
Chris@37 33 */
Chris@0 34
Chris@55 35 #ifndef JVAMP_HANDLE_H_INCLUDED
Chris@55 36 #define JVAMP_HANDLE_H_INCLUDED
Chris@0 37
Chris@0 38 inline jfieldID getHandleField(JNIEnv *env, jobject obj)
Chris@0 39 {
Chris@0 40 jclass c = env->GetObjectClass(obj);
Chris@0 41 return env->GetFieldID(c, "nativeHandle", "J");
Chris@0 42 }
Chris@0 43
Chris@0 44 template <typename T>
Chris@0 45 T *getHandle(JNIEnv *env, jobject obj)
Chris@0 46 {
Chris@0 47 jlong handle = env->GetLongField(obj, getHandleField(env, obj));
Chris@0 48 return reinterpret_cast<T *>(handle);
Chris@0 49 }
Chris@0 50
Chris@0 51 template <typename T>
Chris@0 52 void setHandle(JNIEnv *env, jobject obj, T *t)
Chris@0 53 {
Chris@0 54 jlong handle = reinterpret_cast<jlong>(t);
Chris@0 55 env->SetLongField(obj, getHandleField(env, obj), handle);
Chris@0 56 }
Chris@0 57
Chris@0 58 #endif