using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AIProofread.core
{
    public abstract class CorrectionFragmentAbstract
    {
        private List<CorrectionCharacter> characters = new List<CorrectionCharacter>();

        public List<CorrectionCharacter> Characters
        {
            get
            {
                return characters;
            }
            set
            {
                characters = value;
            }
        }

        public abstract CorrectionRangeAbstract UploadRange { get; set; }

        public abstract CorrectionRangeAbstract ArticleRange { get; set; }

        public abstract CorrectionRangeAbstract FormatRange { get; set; }

        public abstract void AddCorrectionRange(CorrectionRangeAbstract article, CorrectionRangeAbstract upload, CorrectionRangeAbstract format = null);

        public abstract void RemoveCorrectionRange();

        public abstract int[] SetCorrectionRange(int[] article, int[] upload);

        public abstract int[] Relocate(string upload, int offset);

        public abstract void ClearAll();

        public abstract int GetFirstStartPosition(bool containUnvisibleCharacter);

        public abstract int GetLastEndPosition(bool containUnvisibleCharacter);
    }
}
