File: ParameterComponent.java

package info (click to toggle)
brltty 6.8-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 35,776 kB
  • sloc: ansic: 150,447; java: 13,484; sh: 9,667; xml: 5,702; tcl: 2,634; makefile: 2,328; awk: 713; lisp: 366; python: 321; ml: 301
file content (141 lines) | stat: -rw-r--r-- 3,325 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/*
 * libbrlapi - A library providing access to braille terminals for applications.
 *
 * Copyright (C) 2006-2025 by
 *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
 *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
 *
 * libbrlapi comes with ABSOLUTELY NO WARRANTY.
 *
 * This is free software, placed under the terms of the
 * GNU Lesser General Public License, as published by the Free Software
 * Foundation; either version 2.1 of the License, or (at your option) any
 * later version. Please see the file LICENSE-LGPL for details.
 *
 * Web Page: http://brltty.app/
 *
 * This software is maintained by Dave Mielke <dave@mielke.cc>.
 */

package org.a11y.brlapi;

import java.util.Arrays;

public abstract class ParameterComponent extends Component {
  public final static long DEFAULT_SUBPARAM = 0;

  protected ParameterComponent () {
    super();
  }

  public static String asString (Object value) {
    return (String)value;
  }

  public static boolean[] asBooleanArray (Object value) {
    return (boolean[])value;
  }

  public static byte[] asByteArray (Object value) {
    return (byte[])value;
  }

  public static short[] asShortArray (Object value) {
    return (short[])value;
  }

  public static int[] asIntArray (Object value) {
    return (int[])value;
  }

  public static long[] asLongArray (Object value) {
    return (long[])value;
  }

  public static boolean asBoolean (Object value) {
    return asBooleanArray(value)[0];
  }

  public static byte asByte (Object value) {
    return asByteArray(value)[0];
  }

  public static short asShort (Object value) {
    return asShortArray(value)[0];
  }

  public static int asInt (Object value) {
    return asIntArray(value)[0];
  }

  public static long asLong (Object value) {
    return asLongArray(value)[0];
  }

  public static DisplaySize asDisplaySize (Object value) {
    return new DisplaySize(asIntArray(value));
  }

  public static BitMask asBitMask (Object value) {
    return new BitMask(asByteArray(value));
  }

  public static RowCells asRowCells (Object value) {
    return new RowCells(asByteArray(value));
  }

  public static String asDots (byte cell) {
    if (cell == 0) return "0";

    StringBuilder numbers = new StringBuilder();
    int dots = cell & BYTE_MASK;
    int dot = 1;

    while (true) {
      if ((dots & 1) != 0) numbers.append(dot);
      if ((dots >>= 1) == 0) break;
      dot += 1;
    }

    return numbers.toString();
  }

  public static String asDots (byte[] cells) {
    int count = cells.length;
    String[] dots = new String[count];

    for (int i=0; i<count; i+=1) {
      dots[i] = asDots(cells[i]);
    }

    return Arrays.toString(dots);
  }

  public static String toString (Object value) {
    if (value == null) return null;

    if (value.getClass().isArray()) {
      if (value instanceof boolean[]) {
        return Arrays.toString((boolean[])value);
      }

      if (value instanceof byte[]) {
        return Arrays.toString((byte[])value);
      }

      if (value instanceof short[]) {
        return Arrays.toString((short[])value);
      }

      if (value instanceof int[]) {
        return Arrays.toString((int[])value);
      }

      if (value instanceof long[]) {
        return Arrays.toString((long[])value);
      }
    }

    return value.toString();
  }
}