1 /*
   2  * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 final value class Value {
  25     final char char_v;
  26     final byte byte_v;
  27     final boolean boolean_v;
  28     final int int_v;
  29     final short short_v;
  30     final long long_v;
  31     final double double_v;
  32     final float float_v;
  33     Value() {
  34         char_v = 'z';
  35         boolean_v = true;
  36         byte_v = 0;
  37         int_v = 1;
  38         short_v = 2;
  39         long_v = 3;
  40         float_v = 0.1f;
  41         double_v = 0.2d;
  42     }
  43     static Value makeValue(char c, boolean z, byte b, int x, short y, long l, float f, double d) {
  44         Value v = Value.default;
  45         v = __WithField(v.char_v, c);
  46         v = __WithField(v.byte_v, b);
  47         v = __WithField(v.boolean_v, z);
  48         v = __WithField(v.int_v, x);
  49         v = __WithField(v.short_v, y);
  50         v = __WithField(v.long_v, l);
  51         v = __WithField(v.float_v, f);
  52         v = __WithField(v.double_v, d);
  53         return v;
  54     }
  55 
  56     static Value getInstance() {
  57         return makeValue('\u0123', true, (byte)0x01, 0x01234567, (short)0x0123, 0x0123456789ABCDEFL, 1.0f, 1.0d);
  58     }
  59 
  60 }