パッケージ com.lmt.lib.bms

クラス BmsType


  • public class BmsType
    extends Object
    メタ情報・チャンネルのデータ型を表します。

    当クラスが提供する機能は、データ型の情報参照、データの変換テスト、データ変換です。当クラスが提供する機能は、 主にBmsContentから使用され、BMSコンテンツのデータに関する制御処理に用いられます。

    導入されたバージョン:
    0.0.1
    関連項目:
    BmsMeta, BmsChannel
    • メソッドの概要

      すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド 
      修飾子とタイプ メソッド 説明
      Object cast​(Object src)
      指定オブジェクトをBMSデータ型が示す形式に変換します。
      static Object cast​(Object src, BmsType require)
      指定オブジェクトをBMSデータ型が示す形式に変換します。
      boolean equals​(Object obj)
      BMSデータ型が同一かどうかを判定します。
      int getBase()
      数値データの基数を取得します。
      String getName()
      データ型の名称を取得します。
      int getNativeType()
      BMSデータ型を示すためのデータのネイティブなデータ型を取得します。
      Pattern getPattern()
      文字列解析時の許容正規表現パターンを取得します。
      boolean isArray16Type()
      BMSデータ型が16進数値配列型であるかどうかを取得します。
      boolean isArray36Type()
      BMSデータ型が36進数値配列型であるかどうかを取得します。
      boolean isArray62Type()
      BMSデータ型が62進数値配列型であるかどうかを取得します。
      boolean isArrayType()
      BMSデータ型が配列型であるかどうかを取得します。
      boolean isBase16Type()
      BMSデータ型が16進数値型であるかどうかを取得します。
      boolean isBase36Type()
      BMSデータ型が36進数値型であるかどうかを取得します。
      boolean isBase62Type()
      BMSデータ型が62進数値型であるかどうかを取得します。
      boolean isFloatType()
      BMSデータ型が実数型であるかどうかを取得します。
      boolean isIntegerType()
      BMSデータ型が整数型であるかどうかを取得します。
      boolean isNormalType()
      BMSデータ型が通常型であるかどうかを取得します。
      boolean isNumberType()
      BMSデータ型が数値型であるかどうかを取得します。
      boolean isObjectType()
      BMSデータ型が任意型であるかどうかを取得します。
      boolean isSelectable()
      BMSデータ型が基数選択可能なデータ型かどうかを取得します。
      boolean isSelectableArrayType()
      BMSデータ型が基数選択数値配列型であるかどうかを取得します。
      boolean isSelectableBaseType()
      BMSデータ型が基数選択数値型であるかどうかを取得します。
      boolean isStringType()
      BMSデータ型が文字列型であるかどうかを取得します。
      boolean isValueType()
      BMSデータ型が値型であるかどうかを取得します。
      static BmsType REGEX​(String pattern)
      正規表現文字列型
      boolean test​(String data)
      指定文字列が許容正規表現パターンにマッチするかどうかをテストします。
      String toString()
      データ型の名称を返します。
    • フィールドの詳細

      • NTYPE_LONG

        public static final int NTYPE_LONG
        ネイティブデータ型がLongであることを示します。
        関連項目:
        定数フィールド値
      • NTYPE_DOUBLE

        public static final int NTYPE_DOUBLE
        ネイティブデータ型がDoubleであることを示します。
        関連項目:
        定数フィールド値
      • NTYPE_STRING

        public static final int NTYPE_STRING
        ネイティブデータ型がStringであることを示します。
        関連項目:
        定数フィールド値
      • NTYPE_ARRAY

        public static final int NTYPE_ARRAY
        ネイティブデータ型がBmsArrayであることを示します。
        関連項目:
        定数フィールド値
      • NTYPE_OBJECT

        public static final int NTYPE_OBJECT
        ネイティブデータ型がObjectであることを示します。
        関連項目:
        定数フィールド値
      • INTEGER

        public static final BmsType INTEGER
        整数型

        このデータ型の値は内部的にはlong型として扱われ、値の範囲はLong.MIN_VALUE から Long.MAX_VALUEとなります。

        文字列で許可される表現は [\+\-]?[0-9]+ となり、前後の空白文字は許可されません。文字列の内容が 値の範囲を超えている場合の変換後の値は未定義です。

      • FLOAT

        public static final BmsType FLOAT
        実数型

        このデータ型の値は内部的にはdouble型として扱われ、値の範囲はDouble.MIN_VALUE から Double.MAX_VALUEとなります。

        文字列で許可される表現は [\\+\\-]?[0-9]+(\\.[0-9]+)?([eE][\\+\\-]?[0-9]+)? となり、前後の空白文字は許可されません。 小数点以下の記述は必須ではありません。文字列の内容が値の範囲を超えている場合、および小数点以下の精度が double型で表現不可能な場合の変換後の値は未定義です。

      • STRING

        public static final BmsType STRING
        文字列型

        このデータ型の値は内部的にはStringとして扱われます。文字列の長さはStringが取り得る最大の長さまで 表現可能です。

      • BASE16

        public static final BmsType BASE16
        16進数値型

        このデータ型では、1個の16進数値を表現できます。数値は2文字で表現可能な0(00)~255(FF)までとなり、 その範囲を超える数値は表現できません。

        castによるデータ変換において、文字列から変換する際は基数が16になることに 注意してください。例えば、変換元データが"80"の場合の出力はlong型の128Lになります。

      • BASE36

        public static final BmsType BASE36
        36進数値型

        このデータ型では、1個の36進数値を表現できます。数値は2文字で表現可能な0(00)~1295(ZZ)までとなり、 その範囲を超える数値は表現できません。

        castによるデータ変換において、文字列から変換する際は基数が36になることに 注意してください。例えば、変換元データが"80"の場合の出力はlong型の288Lになります。

      • BASE62

        public static final BmsType BASE62
        62進数値型

        このデータ型では、1個の62進数値を表現できます。数値は2文字で表現可能な0(00)~3843(zz)までとなり、 その範囲を超える数値は表現できません。

        castによるデータ変換において、文字列から変換する際は基数が62になることに 注意してください。例えば、変換元データが"80"の場合の出力はlong型の496Lになります。

        導入されたバージョン:
        0.8.0
      • BASE

        public static final BmsType BASE
        基数選択数値型

        このデータ型は、最大で62進数値を表現できます。BASE16, BASE36, BASE62 と異なる点は、BMSコンテンツまたはライブラリ利用者側の指定によって表現可能な値の範囲が変化する点にあります。

        castによるデータ変換において、文字列から変換する際は基数が62になることに 注意してください。例えば、変換元データが"80"の場合の出力はlong型の496Lになります。

        導入されたバージョン:
        0.8.0
      • ARRAY16

        public static final BmsType ARRAY16
        16進数値配列型

        このデータ型は、0個以上のBASE16型データを並べた配列です。内部的には BmsArrayとして表現されます。

      • ARRAY36

        public static final BmsType ARRAY36
        36進数値配列型

        このデータ型は、0個以上のBASE36型データを並べた配列です。内部的には BmsArrayとして表現されます。

      • ARRAY62

        public static final BmsType ARRAY62
        62進数値配列型

        このデータ型は、0個以上のBASE62型データを並べた配列です。内部的には BmsArrayとして表現されます。

        導入されたバージョン:
        0.8.0
      • ARRAY

        public static final BmsType ARRAY
        基数選択数値配列型

        このデータ型は、0個以上のBASE型データを並べた配列です。内部的には BmsArrayとして表現されます。

        導入されたバージョン:
        0.8.0
      • OBJECT

        public static final BmsType OBJECT
        任意型

        このデータ型には、あらゆるデータ型を設定可能です。但し、任意型はユーザーメタ情報、ユーザーチャンネルに対してのみ指定可能です。 この制約に違反したBMS仕様は作成することができません。そのため、BmsLoader, BmsSaverでの入出力には対応していません。

    • メソッドの詳細

      • REGEX

        public static BmsType REGEX​(String pattern)
        正規表現文字列型

        STRINGとは異なり、正規表現による書式の制約がある文字列型です。 それ以外の振る舞いは文字列型と同様です。

        パラメータ:
        pattern - 正規表現パターン
        戻り値:
        指定した正規表現パターン制約のある文字列型
        例外:
        NullPointerException - patternがnull
        PatternSyntaxException - 正規表現の構文が無効である場合
      • equals

        public boolean equals​(Object obj)
        BMSデータ型が同一かどうかを判定します。

        ネイティブデータ型、および文字列解析時の許容正規表現パターンが一致するものを同一と見なします。

        オーバーライド:
        equals クラス内 Object
        パラメータ:
        obj - 比較対象のオブジェクト
        戻り値:
        同一である場合はtrue、そうでなければfalse
      • toString

        public String toString()
        データ型の名称を返します。
        オーバーライド:
        toString クラス内 Object
        戻り値:
        データ型の名称
      • getName

        public String getName()
        データ型の名称を取得します。
        戻り値:
        データ型の名称
      • getPattern

        public Pattern getPattern()
        文字列解析時の許容正規表現パターンを取得します。
        戻り値:
        文字列解析時の許容正規表現パターン
      • getBase

        public int getBase()
        数値データの基数を取得します。

        このメソッドが返す基数は、文字列から当該データ型へ変換する際に、期待する基数を返します。 INTEGER / FLOATは10、 BASE16 / ARRAY16は16、 BASE36 / ARRAY36は36、 BASE62 / BASE / ARRAY62 / ARRAYは62、 それ以外の型は全て0を示します。

        戻り値:
        数値データの基数
      • getNativeType

        public int getNativeType()
        BMSデータ型を示すためのデータのネイティブなデータ型を取得します。
        戻り値:
        ネイティブデータ型
      • isIntegerType

        public boolean isIntegerType()
        BMSデータ型が整数型であるかどうかを取得します。
        戻り値:
        整数型である場合はtrue
        導入されたバージョン:
        0.8.0
      • isFloatType

        public boolean isFloatType()
        BMSデータ型が実数型であるかどうかを取得します。
        戻り値:
        実数型である場合はtrue
        導入されたバージョン:
        0.8.0
      • isStringType

        public boolean isStringType()
        BMSデータ型が文字列型であるかどうかを取得します。
        戻り値:
        文字列型である場合はtrue
        導入されたバージョン:
        0.8.0
      • isBase16Type

        public boolean isBase16Type()
        BMSデータ型が16進数値型であるかどうかを取得します。
        戻り値:
        16進数値型である場合はtrue
        導入されたバージョン:
        0.8.0
      • isBase36Type

        public boolean isBase36Type()
        BMSデータ型が36進数値型であるかどうかを取得します。
        戻り値:
        36進数値型である場合はtrue
        導入されたバージョン:
        0.8.0
      • isBase62Type

        public boolean isBase62Type()
        BMSデータ型が62進数値型であるかどうかを取得します。
        戻り値:
        62進数値型である場合はtrue
        導入されたバージョン:
        0.8.0
      • isArray16Type

        public boolean isArray16Type()
        BMSデータ型が16進数値配列型であるかどうかを取得します。
        戻り値:
        16進数値配列型である場合はtrue
        導入されたバージョン:
        0.8.0
      • isArray36Type

        public boolean isArray36Type()
        BMSデータ型が36進数値配列型であるかどうかを取得します。
        戻り値:
        36進数値配列型である場合はtrue
        導入されたバージョン:
        0.8.0
      • isArray62Type

        public boolean isArray62Type()
        BMSデータ型が62進数値配列型であるかどうかを取得します。
        戻り値:
        62進数値配列型である場合はtrue
        導入されたバージョン:
        0.8.0
      • isObjectType

        public boolean isObjectType()
        BMSデータ型が任意型であるかどうかを取得します。
        戻り値:
        任意型である場合はtrue
        導入されたバージョン:
        0.8.0
      • isNumberType

        public boolean isNumberType()
        BMSデータ型が数値型であるかどうかを取得します。

        INTEGER / FLOATが数値型に該当します。

        戻り値:
        数値型である場合はtrue
        導入されたバージョン:
        0.8.0
      • isArrayType

        public boolean isArrayType()
        BMSデータ型が配列型であるかどうかを取得します。

        ネイティブデータ型がNTYPE_ARRAYを示すBMS型が該当します。

        戻り値:
        配列型である場合はtrue
        導入されたバージョン:
        0.8.0
      • isValueType

        public boolean isValueType()
        BMSデータ型が値型であるかどうかを取得します。

        BMSデータ型における「値型」とは、「配列型」「任意型」ではないデータ型全てを示します。

        戻り値:
        値型である場合はtrue
        導入されたバージョン:
        0.8.0
      • isSelectableBaseType

        public boolean isSelectableBaseType()
        BMSデータ型が基数選択数値型であるかどうかを取得します。
        戻り値:
        基数選択数値型であればtrue
        導入されたバージョン:
        0.8.0
        関連項目:
        BASE
      • isSelectableArrayType

        public boolean isSelectableArrayType()
        BMSデータ型が基数選択数値配列型であるかどうかを取得します。
        戻り値:
        基数選択数値配列型であればtrue
        導入されたバージョン:
        0.8.0
        関連項目:
        ARRAY
      • isSelectable

        public boolean isSelectable()
        BMSデータ型が基数選択可能なデータ型かどうかを取得します。
        戻り値:
        基数選択可能なデータ型であればtrue
        導入されたバージョン:
        0.8.0
        関連項目:
        isSelectableBaseType(), isSelectableArrayType()
      • isNormalType

        public boolean isNormalType()
        BMSデータ型が通常型であるかどうかを取得します。

        通常型とは OBJECT 以外の全てのデータ型が該当します。
        つまり、isObjectType() とは常に逆の結果を返します。

        戻り値:
        BMSデータ型が通常型である場合はtrue
        導入されたバージョン:
        0.8.0
      • test

        public boolean test​(String data)
        指定文字列が許容正規表現パターンにマッチするかどうかをテストします。
        パラメータ:
        data - テストする文字列
        戻り値:
        マッチする場合はtrue
        例外:
        NullPointerException - dataがnull
      • cast

        public Object cast​(Object src)
        指定オブジェクトをBMSデータ型が示す形式に変換します。

        変換後のデータ型は、BMSデータ型が示すネイティブデータ型によって決まります。

        このメソッドの変換処理では、BMSデータ型ごとに保有する許容正規表現パターンの影響を受けません。 変換元オブジェクトのデータ型から、BMSデータ型のネイティブデータ型への純粋なデータ変換処理を 提供するのみであることに注意してください。但し、BMSデータ型に設定された値の表現可能範囲の チェックは行われ、これに違反する場合は変換失敗となり例外がスローされます。

        任意型への変換を行った場合、変換処理は行われず、戻り値はsrcと同じ参照を返します。

        パラメータ:
        src - 変換元オブジェクト
        戻り値:
        変換後オブジェクト
        例外:
        NullPointerException - srcがnull
        ClassCastException - srcの変換に失敗、または数値が表現可能範囲を超えた
      • cast

        public static Object cast​(Object src,
                                  BmsType require)
        指定オブジェクトをBMSデータ型が示す形式に変換します。

        変換後のデータ型は、要求データ型が示すネイティブデータ型によって決まります。

        このメソッドの変換処理では、要求データ型が保有する許容正規表現パターンの影響を受けません。 変換元オブジェクトのデータ型から、要求データ型のネイティブデータ型への純粋なデータ変換処理を 提供するのみであることに注意してください。但し、要求データ型に設定された値の表現可能範囲の チェックは行われ、これに違反する場合は変換失敗となり例外がスローされます。

        任意型への変換を行った場合、変換処理は行われず、戻り値はsrcと同じ参照を返します。

        パラメータ:
        src - 変換元オブジェクト
        require - 要求データ型
        戻り値:
        変換後オブジェクト
        例外:
        NullPointerException - srcがnull
        NullPointerException - requireがnull
        ClassCastException - srcの変換に失敗、またはrequireの表現可能範囲を超えた