mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-07-18 04:58:07 +00:00
137 lines
3.3 KiB
Java
137 lines
3.3 KiB
Java
/* Copyright (c) 2010 Daniel Doubrovkine, All Rights Reserved
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*/
|
|
package com.sun.jna.platform.win32;
|
|
|
|
import com.sun.jna.IntegerType;
|
|
import com.sun.jna.Pointer;
|
|
import com.sun.jna.ptr.ByReference;
|
|
import com.sun.jna.win32.StdCallLibrary;
|
|
|
|
/**
|
|
* Based on basetsd.h (various types)
|
|
*
|
|
* @author dblock[at]dblock[dot]org
|
|
*/
|
|
@SuppressWarnings("serial")
|
|
public interface BaseTSD extends StdCallLibrary {
|
|
|
|
/**
|
|
* Signed long type for pointer precision. Use when casting a pointer to a
|
|
* long to perform pointer arithmetic.
|
|
*/
|
|
public static class LONG_PTR extends IntegerType {
|
|
|
|
public LONG_PTR() {
|
|
this(0);
|
|
}
|
|
|
|
public LONG_PTR(long value) {
|
|
super(Pointer.SIZE, value);
|
|
}
|
|
|
|
public Pointer toPointer() {
|
|
return Pointer.createConstant(longValue());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Signed SIZE_T.
|
|
*/
|
|
public static class SSIZE_T extends LONG_PTR {
|
|
|
|
public SSIZE_T() {
|
|
this(0);
|
|
}
|
|
|
|
public SSIZE_T(long value) {
|
|
super(value);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Unsigned LONG_PTR.
|
|
*/
|
|
public static class ULONG_PTR extends IntegerType {
|
|
|
|
public ULONG_PTR() {
|
|
this(0);
|
|
}
|
|
|
|
public ULONG_PTR(long value) {
|
|
super(Pointer.SIZE, value, true);
|
|
}
|
|
|
|
public Pointer toPointer() {
|
|
return Pointer.createConstant(longValue());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* PULONG_PTR
|
|
*/
|
|
public static final class ULONG_PTRByReference extends ByReference {
|
|
|
|
public ULONG_PTRByReference() {
|
|
this(new ULONG_PTR(0));
|
|
}
|
|
|
|
public ULONG_PTRByReference(ULONG_PTR value) {
|
|
super(Pointer.SIZE);
|
|
setValue(value);
|
|
}
|
|
|
|
public void setValue(ULONG_PTR value) {
|
|
if (Pointer.SIZE == 4) {
|
|
getPointer().setInt(0, value.intValue());
|
|
} else {
|
|
getPointer().setLong(0, value.longValue());
|
|
}
|
|
}
|
|
|
|
public ULONG_PTR getValue() {
|
|
return new ULONG_PTR(Pointer.SIZE == 4
|
|
? getPointer().getInt(0)
|
|
: getPointer().getLong(0));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Unsigned DWORD_PTR.
|
|
*/
|
|
public static class DWORD_PTR extends IntegerType {
|
|
|
|
public DWORD_PTR() {
|
|
this(0);
|
|
}
|
|
|
|
public DWORD_PTR(long value) {
|
|
super(Pointer.SIZE, value);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* The maximum number of bytes to which a pointer can point. Use for a count
|
|
* that must span the full range of a pointer.
|
|
*/
|
|
public static class SIZE_T extends ULONG_PTR {
|
|
|
|
public SIZE_T() {
|
|
this(0);
|
|
}
|
|
|
|
public SIZE_T(long value) {
|
|
super(value);
|
|
}
|
|
}
|
|
}
|