001/*
002 * To change this template, choose Tools | Templates
003 * and open the template in the editor.
004 */
005package com.nativelibs4java.opencl.proxy;
006
007import org.bridj.NativeObject;
008import org.bridj.Pointer;
009import static org.bridj.Pointer.*;
010
011public class PointerUtils {
012   
013    protected static void setSizeT(long peer, long value) {
014        pointerToAddress(peer).setSizeT(value);
015    }
016    
017    protected static void setSizeTAtIndex(long peer, int index, long value) {
018        pointerToAddress(peer).setSizeTAtIndex(index, value);
019    }
020    
021    protected static void setPointerAtIndex(long peer, int index, Pointer<?> value) {
022        pointerToAddress(peer).setPointerAtIndex(index, value);
023    }
024    
025    protected static void setPointerAtIndex(long peer, int index, NativeObject value) {
026        pointerToAddress(peer).setSizeTAtIndex(index, Pointer.getPeer(Pointer.getPointer(value)));
027        // pointerToAddress(peer).setSizeTAtIndex(index, Pointer.getPeer(Pointer.pointerTo(value)));
028    }
029    
030    protected static long getSizeT(long peer) {
031        return pointerToAddress(peer).getSizeT();
032    }
033    
034    protected static <T> Pointer<T> getPointer(long peer, Class<T> targetClass) {
035        return pointerToAddress(peer).getPointer(targetClass);
036    }
037    
038    // public static <N extends NativeObject> Pointer<N> getPointer(N instance) {
039    //     return pointerTo(instance);
040    // }
041    
042    protected static void setInt(long peer, int value) {
043        pointerToAddress(peer).setInt(value);
044    }
045    
046    protected static int getInt(long peer) {
047        return pointerToAddress(peer).getInt();
048    }
049}