Beatmup Java package
Object.java
1 /*
2  Beatmup image and signal processing library
3  Copyright (C) 2019, lnstadrum
4 
5  This program is free software: you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation, either version 3 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18 
19 package Beatmup;
20 
21 /**
22  * Base class for objects natively managed by Beatmup.
23  */
24 public class Object {
25  protected long handle; //!< pointer to the native object
26 
27  private native void disposeNative();
28 
29  protected Object(long handle) {
30  this.handle = handle;
31  }
32 
33  /**
34  * Destroys the native object.
35  * After the native object is destroyed, its Java counterpart likely becomes unusable.
36  */
37  protected synchronized void dispose() {
38  disposeNative();
39  }
40 
41  @Override
42  public boolean equals(java.lang.Object obj) {
43  return (obj instanceof Beatmup.Object) && (handle == ((Beatmup.Object) obj).handle);
44  }
45 
46  @Override
47  protected void finalize() throws Throwable {
48  dispose();
49  super.finalize();
50  }
51 }
Base class for objects natively managed by Beatmup.
Definition: Object.java:24
long handle
pointer to the native object
Definition: Object.java:25
synchronized void dispose()
Destroys the native object.
Definition: Object.java:37