View Javadoc

1   /* Copyright (c) 2007 Timothy Wall, All Rights Reserved
2    *
3    * This library is free software; you can redistribute it and/or
4    * modify it under the terms of the GNU Lesser General Public
5    * License as published by the Free Software Foundation; either
6    * version 2.1 of the License, or (at your option) any later version.
7    * <p/>
8    * This library is distributed in the hope that it will be useful,
9    * but WITHOUT ANY WARRANTY; without even the implied warranty of
10   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11   * Lesser General Public License for more details.  
12   */
13  package com.ochafik.lang.jnaerator.runtime;
14  
15  import org.rococoa.cocoa.CGFloat;
16  
17  import com.sun.jna.ptr.ByReference;
18  
19  public class CGFloatByReference extends ByReference {
20  	public CGFloatByReference() {
21  		this(0d);
22  	}
23  
24  	public CGFloatByReference(float value) {
25  		super(CGFloat.SIZE);
26  		set(value);
27  	}
28  	public void set(float value) {
29  		set(new CGFloat(value));
30  	}
31  
32  	public CGFloatByReference(double value) {
33  		super(CGFloat.SIZE);
34  		set(value);
35  	}
36  	public void set(double value) {
37  
38  		set(new CGFloat(value));
39  	}
40  
41  	public void set(CGFloat value) {
42  		switch (CGFloat.SIZE) {
43  		case 4:
44  			getPointer().setFloat(0, value.floatValue());
45  			break;
46  		case 8:
47  			getPointer().setDouble(0, value.doubleValue());
48  			break;
49  		default:
50  			throw new UnsupportedOperationException("Unhandled CGFloat size : " + CGFloat.SIZE);
51  		}
52  	}
53  	public CGFloat get() {
54  		switch (CGFloat.SIZE) {
55  		case 4:
56  			return new CGFloat(getPointer().getFloat(0));
57  		case 8:
58  			return new CGFloat(getPointer().getDouble(0));
59  		default:
60  			throw new UnsupportedOperationException("Unhandled CGFloat size : " + CGFloat.SIZE);
61  		}
62  	}
63  
64  	public CGFloatByReference(CGFloat value) {
65  		super(CGFloat.SIZE);
66  		set(value);
67  	}
68  }