osindepended.fileformats.pas

Переключить прокрутку окна
Загрузить этот исходный код

{
    osindepended.fileformats — модуль для реализации файловых форматов.

    Copyright © 2021 Малик Разработчик

    Это свободная программа: вы можете перераспространять её и/или
    изменять её на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
    в каком она была опубликована Фондом свободного программного обеспечения;
    либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.

    Эта программа распространяется в надежде, что она может быть полезна,
    но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
    или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
    общественной лицензии GNU.

    Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
    вместе с этой программой. Если это не так, см.
    <http://www.gnu.org/licenses/>.
}

unit osindepended.fileformats;

{$MODE DELPHI}

interface

uses
    pascalx.lang,
    pascalx.io;

{$ASMMODE INTEL,CALLING REGISTER,TYPEINFO ON}

{%region public }
type
    DataHolder = interface;
    DataDecoder = interface;
    DataEncoder = interface;
    InvalidStreamException = class;
    EmptyDataHolderException = class;
    InvalidDataFormatException = class;
    UnsupportedDataException = class;
    FullDataHolderException = class;

    DataHolder = interface(_Interface) ['{5E5A45F1-919C-47AD-965F-2D3E077AB6EE}']
        function isEmpty(): boolean;
        procedure clear();
    end;

    DataDecoder = interface(DataHolder) ['{5E5A45F1-919C-47AD-965F-2D3E077AB6EF}']
        procedure loadFromInputStream(stream: Input);
        procedure loadFromDataInputStream(stream: DataInput);
    end;

    DataEncoder = interface(DataHolder) ['{5E5A45F1-919C-47AD-965F-2D3E077AB6F0}']
        procedure saveToOutputStream(stream: Output);
        procedure saveToDataOutputStream(stream: DataOutput);
    end;

    InvalidStreamException = class(IOException);

    EmptyDataHolderException = class(IOException);

    InvalidDataFormatException = class(IOException);

    UnsupportedDataException = class(IOException);

    FullDataHolderException = class(UnsupportedDataException);

resourcestring
    msgInvalidStream = 'Недопустимый поток данных';
    msgEmptyDataHolder = 'Нет данных для кодирования';
    msgUnsupportedData = 'Данные не поддерживаются';
    msgInvalidDataFormat = 'Недопустимый формат данных';
    msgFullDataHolder = 'Переполнение данных';
{%endregion}

implementation

initialization
    classInfoAdd([
        typeInfo(DataHolder),
        typeInfo(DataDecoder),
        typeInfo(DataEncoder)
    ]);

end.