[291622] Contribution for LTTng JNI improvement
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng / src / org / eclipse / linuxtools / lttng / jni / Jni_C_Pointer.java
1 package org.eclipse.linuxtools.lttng.jni;
2
3 /**
4 * <b><u>Jni_C_Pointer</u></b>
5 * <p>
6 * Class pointer to handle properly "C pointer" <p>
7 *
8 * Can transparently handle pointer of 32 or 64 bits.
9 */
10 public class Jni_C_Pointer extends Jni_C_Common {
11
12 private long ptr = NULL;
13 private boolean isLong = true;
14
15 /**
16 * Default constructor.<p>
17 *
18 * Note : Pointer will be set to a 64bits "NULL".
19 */
20 public Jni_C_Pointer() {
21 ptr = NULL;
22 }
23
24 /**
25 * Constructor with parameters for 64bits pointers.
26 *
27 * @param newPtr long-converted (64 bits) C pointer.
28 */
29 public Jni_C_Pointer(long newPtr) {
30 ptr = newPtr;
31 isLong = true;
32 }
33
34 /**
35 * Constructor with parameters for 32bits pointers.
36 *
37 * @param newPtr int-converted (32 bits) C pointer.
38 */
39 public Jni_C_Pointer(int newPtr) {
40 ptr = (long)newPtr;
41 isLong = false;
42 }
43
44 /**
45 * Get the current pointer.
46 *
47 * @return The current pointer, in long.
48 */
49 public long getPointer() {
50 return ptr;
51 }
52
53 /**
54 * Set the pointer, as a 64bits pointer.
55 *
56 * @param newPtr long-converted (64 bits) C pointer.
57 */
58 public void setPointer(long newPtr) {
59 ptr = newPtr;
60 isLong = true;
61 }
62
63 /**
64 * Set the pointer, as a 64bits pointer.
65 *
66 * @param newPtr int-converted (32 bits) C pointer.
67 */
68 public void setPointer(int newPtr) {
69 ptr = newPtr;
70 isLong = false;
71 }
72
73 /**
74 * toString() method. <p>
75 *
76 * Convert the pointer to a nice looking int/long hexadecimal format.
77 *
78 * @return Attributes of the object concatenated in String
79 */
80 @Override
81 public String toString() {
82 String returnData = "0x";
83
84 if (isLong == true) {
85 returnData += Long.toHexString(ptr);
86 }
87 else {
88 returnData += Integer.toHexString((int) ptr);
89 }
90
91 return returnData;
92 }
93 }
This page took 0.038477 seconds and 6 git commands to generate.