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 };