package org.ObjectLayout.examples;/*
* Written by Gil Tene, and released to the public domain,
* as explained at http://creativecommons.org/publicdomain/zero/1.0/
*/
import org.ObjectLayout.Intrinsic;
import org.ObjectLayout.IntrinsicObjects;
import java.lang.invoke.MethodHandles;
/**
* A simple Line class example with two intrinsic Point end point objects. Demonstrates use of
* {@link org.ObjectLayout.Intrinsic} and {@link org.ObjectLayout.IntrinsicObjects}
*
*/
public class SimpleLine {
private static final MethodHandles.Lookup lookup = MethodHandles.lookup();
/**
* Simple intrinsic object declaration and initialization:
*/
@Intrinsic
private final Point endPoint1 = IntrinsicObjects.constructWithin(lookup, "endPoint1", this);
@Intrinsic
private final Point endPoint2 = IntrinsicObjects.constructWithin(lookup, "endPoint2", this);
public SimpleLine() {
this(0, 0, 0, 0);
}
public SimpleLine(final long x1, final long y1, long x2, long y2) {
this.endPoint1.set(x1, y1);
this.endPoint1.set(x2, y2);
}
public SimpleLine(final SimpleLine source) {
this(source.endPoint1.getX(), source.endPoint1.getY(),
source.endPoint2.getX(), source.endPoint2.getY());
}
public Point getEndPoint1() {
return endPoint1;
}
public Point getEndPoint2() {
return endPoint2;
}
}