/*
 * SDK Pullenti Lingvo, version 4.33, fabruary 2026. Copyright (c) 2013-2026, Pullenti. All rights reserved. 
 * Non-Commercial Freeware and Commercial Software.
 * This class is generated using the converter Unisharping (www.unisharping.ru) from Pullenti C# project. 
 * The latest version of the code is available on the site www.pullenti.ru
 */

package com.pullenti.ner.core;

/**
 * Возможное значение номера
 */
public class SingleNumValue {

    /**
     * Тип значения
     */
    public SingleNumValueType typ = SingleNumValueType.DIGIT;

    /**
     * Целочесленное значение
     */
    public int val;

    /**
     * Символ при буквенном типе
     */
    public char letter;

    /**
     * Признак, что буква в верхнем регистре
     */
    public boolean upper;

    @Override
    public String toString() {
        if (typ == SingleNumValueType.DIGIT) 
            return ((Integer)val).toString();
        if (typ == SingleNumValueType.ROMAN) 
            return ("rom(" + val + ")");
        return (String.valueOf(letter));
    }

    public boolean isOne() {
        if (val == 1) 
            return true;
        if ((letter == 'A' || letter == 'А' || letter == 'a') || letter == 'а') 
            return true;
        return false;
    }


    public int toInt() {
        if (typ != SingleNumValueType.LETTER) 
            return val;
        if (!Character.isLetter(letter)) 
            return -1;
        if (((int)letter) < 0x80) {
            if (Character.isUpperCase(letter)) 
                return ((((int)letter) - ((int)'A')) + 1);
            else 
                return ((((int)letter) - ((int)'a')) + 1);
        }
        else {
            char ch = Character.toUpperCase(letter);
            int i = "АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЫЭЮЯ".indexOf(ch);
            if (i >= 0) 
                return i + 1;
            return -1;
        }
    }
    public SingleNumValue() {
    }
}
