No need to generate primitive final fields as their values get inlined in the classfiles anyway
2 * Back 2 Browser Bytecode Translator
3 * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, version 2 of the License.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. Look for COPYING file in the top folder.
16 * If not, see http://opensource.org/licenses/GPL-2.0.
18 package org.apidesign.vm4brwsr;
20 import org.apidesign.bck2brwsr.core.JavaScriptBody;
24 * @author Jaroslav Tulach <jtulach@netbeans.org>
26 public class StaticMethod {
27 public static final int MISSING_CONSTANT = 1;
28 private static int cnt;
29 private static Object NULL;
31 public static int minusOne() {
35 public static Object none(int x, int y) {
37 for (int i = x; i < y; i++) {
47 public static boolean isNull() {
51 public static int sum(int x, int y) {
54 public static float power(float x) {
57 public static double minus(double x, long y) {
60 public static int div(byte c, double d) {
63 public static int mix(int a, long b, byte c, double d) {
64 return (int)((b / a + c) * d);
66 public static long xor(int a, long b) {
69 public static long orOrAnd(boolean doOr, int a, int b) {
70 return doOr ? a | b : a & b;
72 public static int shiftLeft(int what, int much) {
75 public static int shiftArithmRight(int what, int much, boolean signed) {
82 public static long factRec(int n) {
86 return n * factRec(n - MISSING_CONSTANT);
89 public static long factIter(int n) {
91 for (int i = 2; i <= n; i++) {
96 public static int inc4() {
104 args={"i","j"}, body="\n\r\treturn (i + j).toString();"
106 public static String i2s(int i, int j) {
107 throw new IllegalStateException();
110 public static String castNull(boolean n) {
111 Object value = n ? null : "Ahoj";
112 return (String)value;
115 public static String swtch(int what) {
117 case 0: return "Jarda";
118 case 1: return "Darda";
119 case 2: return "Parda";
120 default: return "Marda";
123 public static String swtch2(int what) {
125 case 0: return "Jarda";
126 case 11: return "Darda";
127 case 22: return "Parda";
128 default: return "Marda";
132 public static int castString(Object o) {
133 return ((String)o).length();
136 public static int initInflater(int w, boolean nowrap) {
137 Instance i = new Instance(w, 0.0);
138 return i.sum(nowrap?-w:w, 1);
141 public static String toStringArr() {
142 class N implements Next {
146 public boolean hasNext() {
151 public String next() {
153 case 0: return "Zero";
154 case 1: return "One";
155 case 2: return "Two";
156 case 3: return "Three";
157 case 4: return "Four";
159 throw new IllegalStateException();
162 return toString(null, new N()).toString();
165 static String toString(Object thiz, Next it) {
170 StringBuilder sb = new StringBuilder();
173 String e = it.next();
174 sb.append(e == thiz ? "(this Collection)" : e);
176 return sb.append(']').toString();
178 sb.append(',').append(' ');
182 static interface Next {
189 // check order of initializers
190 StaticUse.NON_NULL.equals(new Object());