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

クラス BmsType


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

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

    データ型一覧
    データ型はBMSライブラリ側で規定されており、下記が全てです。
    「データ型名(実際のデータ型名)」で表記します。

    関連項目:
    BmsMeta, BmsChannel
    • フィールドの詳細

      • 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]+ となり、前後の空白文字は許可されません。文字列の内容が 値の範囲を超えている場合の変換後の値は未定義です。

      • NUMERIC

        public static final BmsType NUMERIC
        実数型

        このデータ型の値は内部的には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になります。

      • ARRAY16

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

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

      • ARRAY36

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

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

      • 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 final String getName()
        データ型の名称を取得します。
        戻り値:
        データ型の名称
      • getPattern

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

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

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

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

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

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

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

        戻り値:
        数値型である場合はtrue
      • isArrayType

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

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

        戻り値:
        配列型である場合はtrue
      • isValueType

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

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

        戻り値:
        値型である場合はtrue
      • test

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

        public final 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の表現可能範囲を超えた