Ячейка данных способна хранить значение любого типа, как простого, так и объектного. Ячейки используются при записи и чтении данных в матрицах. Из ячеек составляются списки параметров.
Ниже перечислены функции интерфейса ImaCell.

- GetType ([out,retval] maType* type)
- GetAsBoolean ([out,retval] boolean* value)
- GetAsLong ([out,retval] int* value)
- GetAsDouble ([out,retval] double* value)
- GetAsString ([out,retval] maString* value)
- SetAsBoolean ([in] boolean value)
- SetAsLong ([in] int value)
- SetAsDouble ([in] double value)
- SetAsString ([in] maString value)
- GetAsComponent ([in] maType type,[out,retval] IPersist** value)
- GetAsAnyComponent ([out,retval] IPersist** value)
- SetAsComponent ([in] maType type,[in] IPersist* value);
- SetAsAnyComponent ([in] IPersist* value);
- Copy ([in] ImaCell* cell)
- IsEmpty ()
- Clear ()

    HRESULT GetType ([out,retval] maType* type)

Функция возвращает тип значения ячейки.

Параметры:

type Указатель на возвращаемое значение

Возвращаемое значение:

MA_NOERROR всегда

    HRESULT GetAsBoolean ([out,retval] boolean* value)
    HRESULT GetAsLong ([out,retval] int* value)
    HRESULT GetAsDouble ([out,retval] double* value)
    HRESULT GetAsString ([out,retval] maString* value)

Функции считывают из ячейки значение соответствующего типа. При необходимости выполняется преобразование данных к нужному типу.

Параметры:

value Указатель не возвращаемое значение

Возвращаемое значение:

MA_NOERROR при отсутствии ошибок
MA_ERR_ACCESS, если запрещено чтение из ячейки

Замечание:

Функция GetAsString может возвращать NULL, если ячейка пуста (тип MA_EMPTY) или в неё записана NULL строка функцией SetAsString.

    HRESULT SetAsBoolean ([in] boolean value)
    HRESULT SetAsLong ([in] int value)
    HRESULT SetAsDouble ([in] double value)
    HRESULT SetAsString ([in] maString value)

Функции записывают в ячейку значение соответствующего типа и изменяет тип ячейки. Если в ячейке хранился компонент, число ссылок на него уменьшается на 1.

Параметры:

value Записываемое значение

Возвращаемое значение:

MA_NOERROR при отсутствии ошибок
MA_ERR_ACCESS, если запрещена запись в ячейку

Замечание:

Аргумент функции SetAsString может быть == NULL. При этом тип ячейки будет MA_STRING.

    HRESULT GetAsComponent ([in] maType type,[out,retval] IPersist** value)
    HRESULT GetAsAnyComponent ([out,retval] IPersist** value)

Функции считывают из ячейки хранящийся там компонент. Если в ячейке значение простого типа или типа MA_EMPTY, то обе функции возвращают NULL. Функция GetAsComponent также возвращает NULL, если в ячейке — компонент не типа type.

Параметры:

type Тип затребованного компонента
value Указатель не возвращаемое значение

Возвращаемое значение:

MA_NOERROR при отсутствии ошибок
MA_ERR_ACCESS, если запрещено чтение из ячейки

    HRESULT SetAsComponent ([in] maType type,[in] IPersist* value);
    HRESULT SetAsAnyComponent ([in] IPersist* value);

Функции записывает компонент в ячейку. Тип ячейки устанавливается равным type (SetAsComponent) или типу, совместимому с любым компонентом (SetAsAnyComponent).

Параметры:

type Тип записываемого компонента
value Указатель не возвращаемое значение

Возвращаемое значение:

MA_NOERROR при отсутствии ошибок
MA_ERR_ACCESS, если запрещена запись в ячейку

    HRESULT Copy ([in] ImaCell* cell)

Функция копирует значение ячейки из ячейки cell.

Параметры:

cell ячейка, из которой будет скопировано значение

Возвращаемое значение:

MA_NOERROR при отсутствии ошибок
MA_ERR_ACCESS, если запрещена запись в ячейку или чтение из ячейки cell

    HRESULT IsEmpty ()

Функция проверяет, является ли ячейка пустой.

Возвращаемое значение:

MA_TRUE если ячейка пуста
MA_FALSE если ячейка непуста

    HRESULT Clear ()

Функция устанавливает пустое значение ячейки. Если ячейка содержала указатель на интерфейс, для него вызывается Release.

Возвращаемое значение:

MA_NOERROR при отсутствии ошибок
MA_ERR_ACCESS, если запрещена запись в ячейку