annotate truffle/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/Layout.java @ 22325:414e82b9fc35

Release 0.9 is out, let's remove deprecated elements from the API
author Jaroslav Tulach <jaroslav.tulach@oracle.com>
date Fri, 23 Oct 2015 20:23:00 +0200
parents 8bc57c7bbf88
children bb3c03f2442d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18407
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
1 /*
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
2 * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
4 *
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
7 * published by the Free Software Foundation. Oracle designates this
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
8 * particular file as subject to the "Classpath" exception as provided
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
9 * by Oracle in the LICENSE file that accompanied this code.
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
10 *
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
11 * This code is distributed in the hope that it will be useful, but WITHOUT
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
14 * version 2 for more details (a copy is included in the LICENSE file that
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
15 * accompanied this code).
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
16 *
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License version
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
18 * 2 along with this work; if not, write to the Free Software Foundation,
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
20 *
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
22 * or visit www.oracle.com if you need additional information or have any
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
23 * questions.
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
24 */
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
25 package com.oracle.truffle.api.object;
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
26
22150
ac6dadffdf32 add Layout.newLayout() as replacement for `new LayoutBuilder()`
Andreas Woess <andreas.woess@oracle.com>
parents: 22092
diff changeset
27 import java.util.EnumSet;
ac6dadffdf32 add Layout.newLayout() as replacement for `new LayoutBuilder()`
Andreas Woess <andreas.woess@oracle.com>
parents: 22092
diff changeset
28 import java.util.ServiceLoader;
18407
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
29
22180
5e5b38579bda remove FieldOffsetProvider
Andreas Woess <andreas.woess@oracle.com>
parents: 22164
diff changeset
30 import com.oracle.truffle.api.object.Shape.Allocator;
5e5b38579bda remove FieldOffsetProvider
Andreas Woess <andreas.woess@oracle.com>
parents: 22164
diff changeset
31
22092
1a1aa12ab310 add some missing javadoc
Andreas Woess <andreas.woess@oracle.com>
parents: 21951
diff changeset
32 /**
1a1aa12ab310 add some missing javadoc
Andreas Woess <andreas.woess@oracle.com>
parents: 21951
diff changeset
33 * Describes layout and behavior of a {@link DynamicObject} subclass and is used to create shapes.
1a1aa12ab310 add some missing javadoc
Andreas Woess <andreas.woess@oracle.com>
parents: 21951
diff changeset
34 *
1a1aa12ab310 add some missing javadoc
Andreas Woess <andreas.woess@oracle.com>
parents: 21951
diff changeset
35 * An object may change its shape but only to shapes of the same layout.
1a1aa12ab310 add some missing javadoc
Andreas Woess <andreas.woess@oracle.com>
parents: 21951
diff changeset
36 */
18407
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
37 public abstract class Layout {
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
38 public static final String OPTION_PREFIX = "truffle.object.";
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
39
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
40 private static final LayoutFactory LAYOUT_FACTORY = loadLayoutFactory();
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
41
22092
1a1aa12ab310 add some missing javadoc
Andreas Woess <andreas.woess@oracle.com>
parents: 21951
diff changeset
42 /**
1a1aa12ab310 add some missing javadoc
Andreas Woess <andreas.woess@oracle.com>
parents: 21951
diff changeset
43 * Specifies the allowed implicit casts between primitive types without losing type information.
1a1aa12ab310 add some missing javadoc
Andreas Woess <andreas.woess@oracle.com>
parents: 21951
diff changeset
44 */
18407
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
45 public enum ImplicitCast {
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
46 IntToDouble,
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
47 IntToLong,
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
48 }
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
49
22150
ac6dadffdf32 add Layout.newLayout() as replacement for `new LayoutBuilder()`
Andreas Woess <andreas.woess@oracle.com>
parents: 22092
diff changeset
50 /**
22164
567d324c306c Fixing broken Javadoc link
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents: 22157
diff changeset
51 * Creates a new {@link Builder}.
22150
ac6dadffdf32 add Layout.newLayout() as replacement for `new LayoutBuilder()`
Andreas Woess <andreas.woess@oracle.com>
parents: 22092
diff changeset
52 */
22151
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
53 public static Builder newLayout() {
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
54 return new Builder();
22150
ac6dadffdf32 add Layout.newLayout() as replacement for `new LayoutBuilder()`
Andreas Woess <andreas.woess@oracle.com>
parents: 22092
diff changeset
55 }
ac6dadffdf32 add Layout.newLayout() as replacement for `new LayoutBuilder()`
Andreas Woess <andreas.woess@oracle.com>
parents: 22092
diff changeset
56
ac6dadffdf32 add Layout.newLayout() as replacement for `new LayoutBuilder()`
Andreas Woess <andreas.woess@oracle.com>
parents: 22092
diff changeset
57 /**
ac6dadffdf32 add Layout.newLayout() as replacement for `new LayoutBuilder()`
Andreas Woess <andreas.woess@oracle.com>
parents: 22092
diff changeset
58 * Equivalent to {@code Layout.newLayout().build()}.
ac6dadffdf32 add Layout.newLayout() as replacement for `new LayoutBuilder()`
Andreas Woess <andreas.woess@oracle.com>
parents: 22092
diff changeset
59 */
18407
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
60 public static Layout createLayout() {
22287
479028cce974 Layout cleanup
Andreas Woess <andreas.woess@oracle.com>
parents: 22180
diff changeset
61 return newLayout().build();
18407
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
62 }
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
63
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
64 public abstract DynamicObject newInstance(Shape shape);
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
65
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
66 public abstract Class<? extends DynamicObject> getType();
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
67
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
68 public abstract Shape createShape(ObjectType operations);
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
69
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
70 public abstract Shape createShape(ObjectType operations, Object sharedData);
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
71
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
72 public abstract Shape createShape(ObjectType operations, Object sharedData, int id);
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
73
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
74 /**
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
75 * Create an allocator for static property creation. Reserves all array extension slots.
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
76 */
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
77 public abstract Allocator createAllocator();
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
78
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
79 protected static LayoutFactory getFactory() {
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
80 return LAYOUT_FACTORY;
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
81 }
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
82
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
83 private static LayoutFactory loadLayoutFactory() {
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
84 LayoutFactory bestLayoutFactory = null;
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
85
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
86 String layoutFactoryImplClassName = System.getProperty(OPTION_PREFIX + "LayoutFactory");
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
87 if (layoutFactoryImplClassName != null) {
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
88 Class<?> clazz;
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
89 try {
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
90 clazz = Class.forName(layoutFactoryImplClassName);
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
91 } catch (ClassNotFoundException e) {
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
92 throw new RuntimeException(e);
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
93 }
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
94 try {
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
95 bestLayoutFactory = (LayoutFactory) clazz.newInstance();
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
96 } catch (InstantiationException | IllegalAccessException e) {
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
97 throw new AssertionError(e);
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
98 }
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
99 } else {
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
100 ServiceLoader<LayoutFactory> serviceLoader = ServiceLoader.load(LayoutFactory.class, Layout.class.getClassLoader());
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
101 for (LayoutFactory currentLayoutFactory : serviceLoader) {
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
102 if (bestLayoutFactory == null) {
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
103 bestLayoutFactory = currentLayoutFactory;
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
104 } else if (currentLayoutFactory.getPriority() >= bestLayoutFactory.getPriority()) {
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
105 assert currentLayoutFactory.getPriority() != bestLayoutFactory.getPriority();
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
106 bestLayoutFactory = currentLayoutFactory;
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
107 }
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
108 }
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
109 }
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
110
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
111 if (bestLayoutFactory == null) {
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
112 throw new AssertionError("LayoutFactory not found");
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
113 }
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
114 return bestLayoutFactory;
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
115 }
22151
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
116
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
117 /**
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
118 * Layout builder.
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
119 *
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
120 * @see Layout
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
121 */
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
122 public static final class Builder {
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
123 private EnumSet<ImplicitCast> allowedImplicitCasts;
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
124
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
125 /**
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
126 * Create a new layout builder.
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
127 */
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
128 private Builder() {
22287
479028cce974 Layout cleanup
Andreas Woess <andreas.woess@oracle.com>
parents: 22180
diff changeset
129 this.allowedImplicitCasts = EnumSet.noneOf(ImplicitCast.class);
22151
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
130 }
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
131
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
132 /**
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
133 * Build {@link Layout} from the configuration in this builder.
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
134 */
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
135 public Layout build() {
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
136 return Layout.getFactory().createLayout(this);
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
137 }
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
138
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
139 /**
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
140 * Set the allowed implicit casts in this layout.
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
141 *
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
142 * @see Layout.ImplicitCast
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
143 */
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
144 public Builder setAllowedImplicitCasts(EnumSet<ImplicitCast> allowedImplicitCasts) {
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
145 this.allowedImplicitCasts = allowedImplicitCasts;
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
146 return this;
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
147 }
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
148
22287
479028cce974 Layout cleanup
Andreas Woess <andreas.woess@oracle.com>
parents: 22180
diff changeset
149 /**
479028cce974 Layout cleanup
Andreas Woess <andreas.woess@oracle.com>
parents: 22180
diff changeset
150 * Add an allowed implicit cast in this layout.
479028cce974 Layout cleanup
Andreas Woess <andreas.woess@oracle.com>
parents: 22180
diff changeset
151 *
479028cce974 Layout cleanup
Andreas Woess <andreas.woess@oracle.com>
parents: 22180
diff changeset
152 * @see Layout.ImplicitCast
479028cce974 Layout cleanup
Andreas Woess <andreas.woess@oracle.com>
parents: 22180
diff changeset
153 */
479028cce974 Layout cleanup
Andreas Woess <andreas.woess@oracle.com>
parents: 22180
diff changeset
154 public Builder addAllowedImplicitCast(ImplicitCast allowedImplicitCast) {
479028cce974 Layout cleanup
Andreas Woess <andreas.woess@oracle.com>
parents: 22180
diff changeset
155 this.allowedImplicitCasts.add(allowedImplicitCast);
479028cce974 Layout cleanup
Andreas Woess <andreas.woess@oracle.com>
parents: 22180
diff changeset
156 return this;
479028cce974 Layout cleanup
Andreas Woess <andreas.woess@oracle.com>
parents: 22180
diff changeset
157 }
22151
494bfe8a25ff move LayoutBuilder to Layout.Builder
Andreas Woess <andreas.woess@oracle.com>
parents: 22150
diff changeset
158 }
22306
8bc57c7bbf88 Deprecate Layout.Builder#getAllowedImplicitCasts()
Andreas Woess <andreas.woess@oracle.com>
parents: 22287
diff changeset
159
8bc57c7bbf88 Deprecate Layout.Builder#getAllowedImplicitCasts()
Andreas Woess <andreas.woess@oracle.com>
parents: 22287
diff changeset
160 protected static EnumSet<ImplicitCast> getAllowedImplicitCasts(Builder builder) {
8bc57c7bbf88 Deprecate Layout.Builder#getAllowedImplicitCasts()
Andreas Woess <andreas.woess@oracle.com>
parents: 22287
diff changeset
161 return builder.allowedImplicitCasts;
8bc57c7bbf88 Deprecate Layout.Builder#getAllowedImplicitCasts()
Andreas Woess <andreas.woess@oracle.com>
parents: 22287
diff changeset
162 }
18407
f439fdb137a3 Truffle: initial commit of object API
Andreas Woess <andreas.woess@jku.at>
parents:
diff changeset
163 }