/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.jdo.tck.pc.fieldtypes;

import java.io.Serializable;

public class FieldsOfPrimitivefloat {
  public int identifier;
  private float float0;
  private float float1;
  private float float2;
  private float float3;
  private float float4;
  private float float5;
  private float float6;
  private float float7;
  private static float float8;
  private transient float float9;
  private transient float float10;
  private transient float float11;
  private transient float float12;
  private transient float float13;
  private transient float float14;
  private final float float15 = 5;
  private volatile float float16;
  private volatile float float17;
  private volatile float float18;
  private volatile float float19;
  private volatile float float20;
  private volatile float float21;
  private volatile float float22;
  private volatile float float23;
  private static transient float float24;
  private static final float float25 = 5;
  private static volatile float float26;
  private final transient float float27 = 5;
  private transient volatile float float28;
  private transient volatile float float29;
  private transient volatile float float30;
  private transient volatile float float31;
  private transient volatile float float32;
  private transient volatile float float33;
  private static final transient float float34 = 5;
  private static transient volatile float float35;
  public float float36;
  public float float37;
  public float float38;
  public float float39;
  public float float40;
  public float float41;
  public float float42;
  public float float43;
  public static float float44;
  public transient float float45;
  public transient float float46;
  public transient float float47;
  public transient float float48;
  public transient float float49;
  public transient float float50;
  public final float float51 = 5;
  public volatile float float52;
  public volatile float float53;
  public volatile float float54;
  public volatile float float55;
  public volatile float float56;
  public volatile float float57;
  public volatile float float58;
  public volatile float float59;
  public static transient float float60;
  public static final float float61 = 5;
  public static volatile float float62;
  public final transient float float63 = 5;
  public transient volatile float float64;
  public transient volatile float float65;
  public transient volatile float float66;
  public transient volatile float float67;
  public transient volatile float float68;
  public transient volatile float float69;
  public static final transient float float70 = 5;
  public static transient volatile float float71;
  protected float float72;
  protected float float73;
  protected float float74;
  protected float float75;
  protected float float76;
  protected float float77;
  protected float float78;
  protected float float79;
  protected static float float80;
  protected transient float float81;
  protected transient float float82;
  protected transient float float83;
  protected transient float float84;
  protected transient float float85;
  protected transient float float86;
  protected final float float87 = 5;
  protected volatile float float88;
  protected volatile float float89;
  protected volatile float float90;
  protected volatile float float91;
  protected volatile float float92;
  protected volatile float float93;
  protected volatile float float94;
  protected volatile float float95;
  protected static transient float float96;
  protected static final float float97 = 5;
  protected static volatile float float98;
  protected final transient float float99 = 5;
  protected transient volatile float float100;
  protected transient volatile float float101;
  protected transient volatile float float102;
  protected transient volatile float float103;
  protected transient volatile float float104;
  protected transient volatile float float105;
  protected static final transient float float106 = 5;
  protected static transient volatile float float107;
  float float108;
  float float109;
  float float110;
  float float111;
  float float112;
  float float113;
  float float114;
  float float115;
  static float float116;
  transient float float117;
  transient float float118;
  transient float float119;
  transient float float120;
  transient float float121;
  transient float float122;
  final float float123 = 5;
  volatile float float124;
  volatile float float125;
  volatile float float126;
  volatile float float127;
  volatile float float128;
  volatile float float129;
  volatile float float130;
  volatile float float131;
  static transient float float132;
  static final float float133 = 5;
  static volatile float float134;
  final transient float float135 = 5;
  transient volatile float float136;
  transient volatile float float137;
  transient volatile float float138;
  transient volatile float float139;
  transient volatile float float140;
  transient volatile float float141;
  static final transient float float142 = 5;
  static transient volatile float float143;

  public static final boolean[] isPersistent = {
    true, true, true, false, true, true, true, false, false, false,
    false, true, true, true, false, false, true, true, true, false,
    true, true, true, false, false, false, false, false, false, false,
    true, true, true, false, false, false, true, true, true, false,
    true, true, true, false, false, false, false, true, true, true,
    false, false, true, true, true, false, true, true, true, false,
    false, false, false, false, false, false, true, true, true, false,
    false, false, true, true, true, false, true, true, true, false,
    false, false, false, true, true, true, false, false, true, true,
    true, false, true, true, true, false, false, false, false, false,
    false, false, true, true, true, false, false, false, true, true,
    true, false, true, true, true, false, false, false, false, true,
    true, true, false, false, true, true, true, false, true, true,
    true, false, false, false, false, false, false, false, true, true,
    true, false, false, false
  };

  public static final boolean[] isStatic = {
    false, false, false, false, false, false, false, false, true, false,
    false, false, false, false, false, false, false, false, false, false,
    false, false, false, false, true, true, true, false, false, false,
    false, false, false, false, true, true, false, false, false, false,
    false, false, false, false, true, false, false, false, false, false,
    false, false, false, false, false, false, false, false, false, false,
    true, true, true, false, false, false, false, false, false, false,
    true, true, false, false, false, false, false, false, false, false,
    true, false, false, false, false, false, false, false, false, false,
    false, false, false, false, false, false, true, true, true, false,
    false, false, false, false, false, false, true, true, false, false,
    false, false, false, false, false, false, true, false, false, false,
    false, false, false, false, false, false, false, false, false, false,
    false, false, true, true, true, false, false, false, false, false,
    false, false, true, true
  };

  public static final boolean[] isFinal = {
    false, false, false, false, false, false, false, false, false, false,
    false, false, false, false, false, true, false, false, false, false,
    false, false, false, false, false, true, false, true, false, false,
    false, false, false, false, true, false, false, false, false, false,
    false, false, false, false, false, false, false, false, false, false,
    false, true, false, false, false, false, false, false, false, false,
    false, true, false, true, false, false, false, false, false, false,
    true, false, false, false, false, false, false, false, false, false,
    false, false, false, false, false, false, false, true, false, false,
    false, false, false, false, false, false, false, true, false, true,
    false, false, false, false, false, false, true, false, false, false,
    false, false, false, false, false, false, false, false, false, false,
    false, false, false, true, false, false, false, false, false, false,
    false, false, false, true, false, true, false, false, false, false,
    false, false, true, false
  };

  public static final String[] fieldSpecs = {
    "private float float0",
    "embedded= true   private float float1",
    "embedded= false   private float float2",
    "persistence-modifier= none    private float float3",
    "persistence-modifier= persistent    private float float4",
    "persistence-modifier= persistent  embedded= true   private float float5",
    "persistence-modifier= persistent  embedded= false   private float float6",
    "persistence-modifier= transactional    private float float7",
    "private static float float8",
    "private transient float float9",
    "persistence-modifier= none    private transient float float10",
    "persistence-modifier= persistent    private transient float float11",
    "persistence-modifier= persistent  embedded= true   private transient float float12",
    "persistence-modifier= persistent  embedded= false   private transient float float13",
    "persistence-modifier= transactional    private transient float float14",
    "private final float float15",
    "private volatile float float16",
    "embedded= true   private volatile float float17",
    "embedded= false   private volatile float float18",
    "persistence-modifier= none    private volatile float float19",
    "persistence-modifier= persistent    private volatile float float20",
    "persistence-modifier= persistent  embedded= true   private volatile float float21",
    "persistence-modifier= persistent  embedded= false   private volatile float float22",
    "persistence-modifier= transactional    private volatile float float23",
    "private static transient float float24",
    "private static final float float25",
    "private static volatile float float26",
    "private transient final float float27",
    "private transient volatile float float28",
    "persistence-modifier= none    private transient volatile float float29",
    "persistence-modifier= persistent    private transient volatile float float30",
    "persistence-modifier= persistent  embedded= true   private transient volatile float float31",
    "persistence-modifier= persistent  embedded= false   private transient volatile float float32",
    "persistence-modifier= transactional    private transient volatile float float33",
    "private static transient final float float34",
    "private static transient volatile float float35",
    "public float float36",
    "embedded= true   public float float37",
    "embedded= false   public float float38",
    "persistence-modifier= none    public float float39",
    "persistence-modifier= persistent    public float float40",
    "persistence-modifier= persistent  embedded= true   public float float41",
    "persistence-modifier= persistent  embedded= false   public float float42",
    "persistence-modifier= transactional    public float float43",
    "public static float float44",
    "public transient float float45",
    "persistence-modifier= none    public transient float float46",
    "persistence-modifier= persistent    public transient float float47",
    "persistence-modifier= persistent  embedded= true   public transient float float48",
    "persistence-modifier= persistent  embedded= false   public transient float float49",
    "persistence-modifier= transactional    public transient float float50",
    "public final float float51",
    "public volatile float float52",
    "embedded= true   public volatile float float53",
    "embedded= false   public volatile float float54",
    "persistence-modifier= none    public volatile float float55",
    "persistence-modifier= persistent    public volatile float float56",
    "persistence-modifier= persistent  embedded= true   public volatile float float57",
    "persistence-modifier= persistent  embedded= false   public volatile float float58",
    "persistence-modifier= transactional    public volatile float float59",
    "public static transient float float60",
    "public static final float float61",
    "public static volatile float float62",
    "public transient final float float63",
    "public transient volatile float float64",
    "persistence-modifier= none    public transient volatile float float65",
    "persistence-modifier= persistent    public transient volatile float float66",
    "persistence-modifier= persistent  embedded= true   public transient volatile float float67",
    "persistence-modifier= persistent  embedded= false   public transient volatile float float68",
    "persistence-modifier= transactional    public transient volatile float float69",
    "public static transient final float float70",
    "public static transient volatile float float71",
    "protected float float72",
    "embedded= true   protected float float73",
    "embedded= false   protected float float74",
    "persistence-modifier= none    protected float float75",
    "persistence-modifier= persistent    protected float float76",
    "persistence-modifier= persistent  embedded= true   protected float float77",
    "persistence-modifier= persistent  embedded= false   protected float float78",
    "persistence-modifier= transactional    protected float float79",
    "protected static float float80",
    "protected transient float float81",
    "persistence-modifier= none    protected transient float float82",
    "persistence-modifier= persistent    protected transient float float83",
    "persistence-modifier= persistent  embedded= true   protected transient float float84",
    "persistence-modifier= persistent  embedded= false   protected transient float float85",
    "persistence-modifier= transactional    protected transient float float86",
    "protected final float float87",
    "protected volatile float float88",
    "embedded= true   protected volatile float float89",
    "embedded= false   protected volatile float float90",
    "persistence-modifier= none    protected volatile float float91",
    "persistence-modifier= persistent    protected volatile float float92",
    "persistence-modifier= persistent  embedded= true   protected volatile float float93",
    "persistence-modifier= persistent  embedded= false   protected volatile float float94",
    "persistence-modifier= transactional    protected volatile float float95",
    "protected static transient float float96",
    "protected static final float float97",
    "protected static volatile float float98",
    "protected transient final float float99",
    "protected transient volatile float float100",
    "persistence-modifier= none    protected transient volatile float float101",
    "persistence-modifier= persistent    protected transient volatile float float102",
    "persistence-modifier= persistent  embedded= true   protected transient volatile float float103",
    "persistence-modifier= persistent  embedded= false   protected transient volatile float float104",
    "persistence-modifier= transactional    protected transient volatile float float105",
    "protected static transient final float float106",
    "protected static transient volatile float float107",
    "float float108",
    "embedded= true   float float109",
    "embedded= false   float float110",
    "persistence-modifier= none    float float111",
    "persistence-modifier= persistent    float float112",
    "persistence-modifier= persistent  embedded= true   float float113",
    "persistence-modifier= persistent  embedded= false   float float114",
    "persistence-modifier= transactional    float float115",
    "static float float116",
    "transient float float117",
    "persistence-modifier= none    transient float float118",
    "persistence-modifier= persistent    transient float float119",
    "persistence-modifier= persistent  embedded= true   transient float float120",
    "persistence-modifier= persistent  embedded= false   transient float float121",
    "persistence-modifier= transactional    transient float float122",
    "final float float123",
    "volatile float float124",
    "embedded= true   volatile float float125",
    "embedded= false   volatile float float126",
    "persistence-modifier= none    volatile float float127",
    "persistence-modifier= persistent    volatile float float128",
    "persistence-modifier= persistent  embedded= true   volatile float float129",
    "persistence-modifier= persistent  embedded= false   volatile float float130",
    "persistence-modifier= transactional    volatile float float131",
    "static transient float float132",
    "static final float float133",
    "static volatile float float134",
    "transient final float float135",
    "transient volatile float float136",
    "persistence-modifier= none    transient volatile float float137",
    "persistence-modifier= persistent    transient volatile float float138",
    "persistence-modifier= persistent  embedded= true   transient volatile float float139",
    "persistence-modifier= persistent  embedded= false   transient volatile float float140",
    "persistence-modifier= transactional    transient volatile float float141",
    "static transient final float float142",
    "static transient volatile float float143"
  };

  public int getLength() {
    return fieldSpecs.length;
  }

  public float get(int index) {
    switch (index) {
      case (0):
        return float0;
      case (1):
        return float1;
      case (2):
        return float2;
      case (3):
        return float3;
      case (4):
        return float4;
      case (5):
        return float5;
      case (6):
        return float6;
      case (7):
        return float7;
      case (8):
        return float8;
      case (9):
        return float9;
      case (10):
        return float10;
      case (11):
        return float11;
      case (12):
        return float12;
      case (13):
        return float13;
      case (14):
        return float14;
      case (15):
        return float15;
      case (16):
        return float16;
      case (17):
        return float17;
      case (18):
        return float18;
      case (19):
        return float19;
      case (20):
        return float20;
      case (21):
        return float21;
      case (22):
        return float22;
      case (23):
        return float23;
      case (24):
        return float24;
      case (25):
        return float25;
      case (26):
        return float26;
      case (27):
        return float27;
      case (28):
        return float28;
      case (29):
        return float29;
      case (30):
        return float30;
      case (31):
        return float31;
      case (32):
        return float32;
      case (33):
        return float33;
      case (34):
        return float34;
      case (35):
        return float35;
      case (36):
        return float36;
      case (37):
        return float37;
      case (38):
        return float38;
      case (39):
        return float39;
      case (40):
        return float40;
      case (41):
        return float41;
      case (42):
        return float42;
      case (43):
        return float43;
      case (44):
        return float44;
      case (45):
        return float45;
      case (46):
        return float46;
      case (47):
        return float47;
      case (48):
        return float48;
      case (49):
        return float49;
      case (50):
        return float50;
      case (51):
        return float51;
      case (52):
        return float52;
      case (53):
        return float53;
      case (54):
        return float54;
      case (55):
        return float55;
      case (56):
        return float56;
      case (57):
        return float57;
      case (58):
        return float58;
      case (59):
        return float59;
      case (60):
        return float60;
      case (61):
        return float61;
      case (62):
        return float62;
      case (63):
        return float63;
      case (64):
        return float64;
      case (65):
        return float65;
      case (66):
        return float66;
      case (67):
        return float67;
      case (68):
        return float68;
      case (69):
        return float69;
      case (70):
        return float70;
      case (71):
        return float71;
      case (72):
        return float72;
      case (73):
        return float73;
      case (74):
        return float74;
      case (75):
        return float75;
      case (76):
        return float76;
      case (77):
        return float77;
      case (78):
        return float78;
      case (79):
        return float79;
      case (80):
        return float80;
      case (81):
        return float81;
      case (82):
        return float82;
      case (83):
        return float83;
      case (84):
        return float84;
      case (85):
        return float85;
      case (86):
        return float86;
      case (87):
        return float87;
      case (88):
        return float88;
      case (89):
        return float89;
      case (90):
        return float90;
      case (91):
        return float91;
      case (92):
        return float92;
      case (93):
        return float93;
      case (94):
        return float94;
      case (95):
        return float95;
      case (96):
        return float96;
      case (97):
        return float97;
      case (98):
        return float98;
      case (99):
        return float99;
      case (100):
        return float100;
      case (101):
        return float101;
      case (102):
        return float102;
      case (103):
        return float103;
      case (104):
        return float104;
      case (105):
        return float105;
      case (106):
        return float106;
      case (107):
        return float107;
      case (108):
        return float108;
      case (109):
        return float109;
      case (110):
        return float110;
      case (111):
        return float111;
      case (112):
        return float112;
      case (113):
        return float113;
      case (114):
        return float114;
      case (115):
        return float115;
      case (116):
        return float116;
      case (117):
        return float117;
      case (118):
        return float118;
      case (119):
        return float119;
      case (120):
        return float120;
      case (121):
        return float121;
      case (122):
        return float122;
      case (123):
        return float123;
      case (124):
        return float124;
      case (125):
        return float125;
      case (126):
        return float126;
      case (127):
        return float127;
      case (128):
        return float128;
      case (129):
        return float129;
      case (130):
        return float130;
      case (131):
        return float131;
      case (132):
        return float132;
      case (133):
        return float133;
      case (134):
        return float134;
      case (135):
        return float135;
      case (136):
        return float136;
      case (137):
        return float137;
      case (138):
        return float138;
      case (139):
        return float139;
      case (140):
        return float140;
      case (141):
        return float141;
      case (142):
        return float142;
      case (143):
        return float143;
      default:
        throw new IndexOutOfBoundsException();
    }
  }

  public boolean set(int index, float value) {
    if (fieldSpecs[index].indexOf("final") != -1) return false;
    switch (index) {
      case (0):
        float0 = value;
        break;
      case (1):
        float1 = value;
        break;
      case (2):
        float2 = value;
        break;
      case (3):
        float3 = value;
        break;
      case (4):
        float4 = value;
        break;
      case (5):
        float5 = value;
        break;
      case (6):
        float6 = value;
        break;
      case (7):
        float7 = value;
        break;
      case (8):
        float8 = value;
        break;
      case (9):
        float9 = value;
        break;
      case (10):
        float10 = value;
        break;
      case (11):
        float11 = value;
        break;
      case (12):
        float12 = value;
        break;
      case (13):
        float13 = value;
        break;
      case (14):
        float14 = value;
        break;
      case (16):
        float16 = value;
        break;
      case (17):
        float17 = value;
        break;
      case (18):
        float18 = value;
        break;
      case (19):
        float19 = value;
        break;
      case (20):
        float20 = value;
        break;
      case (21):
        float21 = value;
        break;
      case (22):
        float22 = value;
        break;
      case (23):
        float23 = value;
        break;
      case (24):
        float24 = value;
        break;
      case (26):
        float26 = value;
        break;
      case (28):
        float28 = value;
        break;
      case (29):
        float29 = value;
        break;
      case (30):
        float30 = value;
        break;
      case (31):
        float31 = value;
        break;
      case (32):
        float32 = value;
        break;
      case (33):
        float33 = value;
        break;
      case (35):
        float35 = value;
        break;
      case (36):
        float36 = value;
        break;
      case (37):
        float37 = value;
        break;
      case (38):
        float38 = value;
        break;
      case (39):
        float39 = value;
        break;
      case (40):
        float40 = value;
        break;
      case (41):
        float41 = value;
        break;
      case (42):
        float42 = value;
        break;
      case (43):
        float43 = value;
        break;
      case (44):
        float44 = value;
        break;
      case (45):
        float45 = value;
        break;
      case (46):
        float46 = value;
        break;
      case (47):
        float47 = value;
        break;
      case (48):
        float48 = value;
        break;
      case (49):
        float49 = value;
        break;
      case (50):
        float50 = value;
        break;
      case (52):
        float52 = value;
        break;
      case (53):
        float53 = value;
        break;
      case (54):
        float54 = value;
        break;
      case (55):
        float55 = value;
        break;
      case (56):
        float56 = value;
        break;
      case (57):
        float57 = value;
        break;
      case (58):
        float58 = value;
        break;
      case (59):
        float59 = value;
        break;
      case (60):
        float60 = value;
        break;
      case (62):
        float62 = value;
        break;
      case (64):
        float64 = value;
        break;
      case (65):
        float65 = value;
        break;
      case (66):
        float66 = value;
        break;
      case (67):
        float67 = value;
        break;
      case (68):
        float68 = value;
        break;
      case (69):
        float69 = value;
        break;
      case (71):
        float71 = value;
        break;
      case (72):
        float72 = value;
        break;
      case (73):
        float73 = value;
        break;
      case (74):
        float74 = value;
        break;
      case (75):
        float75 = value;
        break;
      case (76):
        float76 = value;
        break;
      case (77):
        float77 = value;
        break;
      case (78):
        float78 = value;
        break;
      case (79):
        float79 = value;
        break;
      case (80):
        float80 = value;
        break;
      case (81):
        float81 = value;
        break;
      case (82):
        float82 = value;
        break;
      case (83):
        float83 = value;
        break;
      case (84):
        float84 = value;
        break;
      case (85):
        float85 = value;
        break;
      case (86):
        float86 = value;
        break;
      case (88):
        float88 = value;
        break;
      case (89):
        float89 = value;
        break;
      case (90):
        float90 = value;
        break;
      case (91):
        float91 = value;
        break;
      case (92):
        float92 = value;
        break;
      case (93):
        float93 = value;
        break;
      case (94):
        float94 = value;
        break;
      case (95):
        float95 = value;
        break;
      case (96):
        float96 = value;
        break;
      case (98):
        float98 = value;
        break;
      case (100):
        float100 = value;
        break;
      case (101):
        float101 = value;
        break;
      case (102):
        float102 = value;
        break;
      case (103):
        float103 = value;
        break;
      case (104):
        float104 = value;
        break;
      case (105):
        float105 = value;
        break;
      case (107):
        float107 = value;
        break;
      case (108):
        float108 = value;
        break;
      case (109):
        float109 = value;
        break;
      case (110):
        float110 = value;
        break;
      case (111):
        float111 = value;
        break;
      case (112):
        float112 = value;
        break;
      case (113):
        float113 = value;
        break;
      case (114):
        float114 = value;
        break;
      case (115):
        float115 = value;
        break;
      case (116):
        float116 = value;
        break;
      case (117):
        float117 = value;
        break;
      case (118):
        float118 = value;
        break;
      case (119):
        float119 = value;
        break;
      case (120):
        float120 = value;
        break;
      case (121):
        float121 = value;
        break;
      case (122):
        float122 = value;
        break;
      case (124):
        float124 = value;
        break;
      case (125):
        float125 = value;
        break;
      case (126):
        float126 = value;
        break;
      case (127):
        float127 = value;
        break;
      case (128):
        float128 = value;
        break;
      case (129):
        float129 = value;
        break;
      case (130):
        float130 = value;
        break;
      case (131):
        float131 = value;
        break;
      case (132):
        float132 = value;
        break;
      case (134):
        float134 = value;
        break;
      case (136):
        float136 = value;
        break;
      case (137):
        float137 = value;
        break;
      case (138):
        float138 = value;
        break;
      case (139):
        float139 = value;
        break;
      case (140):
        float140 = value;
        break;
      case (141):
        float141 = value;
        break;
      case (143):
        float143 = value;
        break;
      default:
        throw new IndexOutOfBoundsException();
    }
    return true;
  }

  public static class Oid implements Serializable {

    private static final long serialVersionUID = 1L;

    public int identifier;

    public Oid() {}

    public Oid(String s) {
      identifier = Integer.parseInt(justTheId(s));
    }

    public String toString() {
      return this.getClass().getName() + ": " + identifier;
    }

    public int hashCode() {
      return identifier;
    }

    public boolean equals(Object other) {
      if (other != null && (other instanceof Oid)) {
        Oid k = (Oid) other;
        return k.identifier == this.identifier;
      }
      return false;
    }

    protected static String justTheId(String str) {
      return str.substring(str.indexOf(':') + 1);
    }
  }
}
