Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(66)

Side by Side Diff: tools/servicec/lib/src/resources/java/dartino/Builder.java

Issue 2035023003: Remove service-compiler related code. (Closed) Base URL: git@github.com:dartino/sdk.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE.md file.
4
5 package dartino;
6
7 import java.nio.ByteBuffer;
8 import java.nio.CharBuffer;
9
10 class Builder {
11 public Builder() { }
12
13 public Builder(BuilderSegment segment, int base) {
14 this.segment = segment;
15 this.base = base;
16 }
17
18 public BuilderSegment segment() { return segment; }
19
20 public Object[] getSegments() {
21 Object[] result = new Object[2];
22 int segments = segment().builder().segments();
23 byte[][] segmentArray = new byte[segments][];
24 int[] sizeArray = new int[segments];
25 BuilderSegment current = segment;
26 for (int i = 0; i < segments; i++) {
27 segmentArray[i] = current.buffer().array();
28 sizeArray[i] = current.used();
29 current = current.next();
30 }
31 result[0] = segmentArray;
32 result[1] = sizeArray;
33 return result;
34 }
35
36 public Builder newStruct(Builder builder, int offset, int size) {
37 offset += base;
38 BuilderSegment s = segment;
39 while (true) {
40 int result = s.allocate(size);
41 ByteBuffer memory = s.buffer();
42 if (result >= 0) {
43 memory.putInt(offset + 0, (result << 2) | 1);
44 memory.putInt(offset + 4, 0);
45 builder.segment = s;
46 builder.base = result;
47 return builder;
48 }
49
50 BuilderSegment other = s.builder().findSegmentForBytes(size + 8);
51 int target = other.allocate(8);
52 memory.putInt(offset + 0, (target << 2) | 3);
53 memory.putInt(offset + 4, other.id());
54
55 s = other;
56 offset = target;
57 }
58 }
59
60 public ListBuilder newList(ListBuilder list,
61 int offset,
62 int length,
63 int size) {
64 list.length = length;
65 offset += base;
66 size *= length;
67 BuilderSegment s = segment;
68 while (true) {
69 int result = s.allocate(size);
70 ByteBuffer memory = s.buffer();
71 if (result >= 0) {
72 memory.putInt(offset + 0, (result << 2) | 2);
73 memory.putInt(offset + 4, length);
74 list.segment = s;
75 list.base = result;
76 return list;
77 }
78
79 BuilderSegment other = s.builder().findSegmentForBytes(size + 8);
80 int target = other.allocate(8);
81 memory.putInt(offset + 0, (target << 2) | 3);
82 memory.putInt(offset + 4, other.id());
83
84 s = other;
85 offset = target;
86 }
87 }
88
89
90 public void newString(int offset, String value) {
91 int length = value.length();
92 ListBuilder stringBuilder = new ListBuilder();
93 newList(stringBuilder, offset, length, 2);
94 CharBuffer cb = stringBuilder.segment.buffer().asCharBuffer();
95 int base = stringBuilder.base / 2;
96 for (int i = 0; i < length; i++) {
97 cb.put(base + i, value.charAt(i));
98 }
99 }
100
101 protected BuilderSegment segment;
102 protected int base;
103 }
OLDNEW
« no previous file with comments | « tools/servicec/lib/src/resources/dart/struct.dart ('k') | tools/servicec/lib/src/resources/java/dartino/BuilderSegment.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698