1 /* Communication module for Android terminals. -*- c-file-style: "GNU" -*-
2
3 Copyright (C) 2023 Free Software Foundation, Inc.
4
5 This file is part of GNU Emacs.
6
7 GNU Emacs is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or (at
10 your option) any later version.
11
12 GNU Emacs is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
19
20 package org.gnu.emacs;
21
22 import java.lang.IllegalStateException;
23
24 /* This defines something that is a so-called ``handle''. Handles
25 must be created by C code, and will remain existing until
26 destroyHandle is called. C code then refers to the handle by a
27 number which maps into the Java object representing the handle.
28
29 All handle operations must be done from the Emacs thread. */
30
31 public abstract class EmacsHandleObject
32 {
33 /* Whether or not this handle has been destroyed. */
34 volatile boolean destroyed;
35
36 /* The handle associated with this object. */
37 public short handle;
38
39 public
40 EmacsHandleObject (short handle)
41 {
42 this.handle = handle;
43 }
44
45 public void
46 destroyHandle () throws IllegalStateException
47 {
48 synchronized (this)
49 {
50 destroyed = true;
51 }
52 }
53
54 public boolean
55 isDestroyed ()
56 {
57 return destroyed;
58 }
59 };