Какой прототип выбрать?
От: DirtyGarry  
Дата: 19.10.11 05:54
Оценка:
Есть блок данных. В этом блоке нужно найти данные и вернуть указатель на них. Но иногда данных в самом блоке нет, а есть лишь описание (размер, откуда прочитать и т.п.). Родился следующий (условный) прототип функции

BYTE* get_need_data(const BYTE* source_data, DATA_TYPE type, BYTE* need_data_buf)

— source_data [in] — исходные данные
— type [in] — "критерий" поиска нужных данных
— need_data_buf [out] — буфер, содержащий нужные данные, если они не в source_data

Функция всегда возвращает указатель на нужные данные. Если они находятся внутри source_data, то она вернет указатель, которые указывает внутрь source_data. Если нужных данных внутри source_data нет, она сама выделяет буфер need_data_buf, копирует туда данные и возвращает указатель на этот буфер.

Является ли такой подход естественным? Или, например, лучше разделить эту функцию на две: одна находит данные внутри source_data, а другая читает из вне?

Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.