Japanese | English | Korean

Samples


Memory Allocator와 Input Stream

MascotCapsule V3에서는 메모리 확보용의 allocator와 data Load용의 Stream에 대해서는 인터페이스만 정의하고 있으며, 그 실장에 대해서는 각 환경에 맡기고 있습니다.
이것의 실장에 대해 작업 프로젝트 내에서 지정할 것이 있으면 그 쪽을 사용해 주세요.
특별히 지정할 것이 없는 경우에는 환경에 응하여 아래의 인터페이스의 실장을 할 필요가 있습니다.

목차


1. Memory Allocator( IAllocator )

Memory Allocator로서 이하의 3개의 함수를 실장 해 주세요.

(1) void* ( *alloc )( IAllocator* This, hi_uint32 size )

인수 size에서 지정된 만큼의 메모리를 확보할 수 있도록 실장 해 주세요.
반환 값으로 확보한 메모리의 선두 Address를 반환해 주세요.
확보 못했을 경우는 0을 반환해 주세요.

(2) void* ( *realloc )( IAllocator* This, void* address, hi_uint32 size )

현재로서는 사용하고 있지 않기 때문에, 특별히 실장의 필요가 없습니다.

(3) void ( *free )( IAllocator* This, void* address )

인수 Address에서 지정된 메모리 공간을 개방하도록 실장해 주세요.
(1)의 실장에 맞춰 적절한 개방 처리를 해 주세요.


2.Input Stream(IIstream)

Input Stream에서는 이하의 6개의 함수를 실장 해 주세요.

(1) hi_sint8 ( *readSint8 )( IIstream* This )

8bit 부호 정수 값을 로드 하도록 실장 해 주세요.
반환 값으로서 로드 한 8bit 정수 값을 반환하도록 실장 해 주세요.
불러낸 분의 Stream 포인터는 진행하도록 해 주세요.

(2) hi_sint16 ( *readSint16 )( IIstream* This )

16bit 부호 정수 값을 로드 하도록 실장 해 주세요.
반환 값으로서 로드 한 16bit 정수 값을 반환하도록 실장 해 주세요.
불러낸 분의 만큼 Stream 포인터는 진행하도록 해 주세요.
또한, Stream이 읽어낸 대상은 little endian 데이터입니다.

(3) hi_sint32 ( *readSint32 )( IIstream* This )

32bit 부호 정수 값을 로드 하도록 실장 해 주세요.
반환 값으로서 로드 한 32bit 정수 값을 반환하도록 실장 해 주세요.
불러낸 분의 만큼 Stream 포인터는 진행하도록 해 주세요.
또한, Stream이 불러낸 분의 대상은 little endian 데이터입니다.

(4) void ( *readBytes )( IIstream* This, hi_byte* buffer, hi_uint32 n )

n byte만큼의 데이터를 불러내어 buffer로 격납하도록 실장 해 주세요.
불러낸 분의 만큼 Stream 포인터는 진행하도록 해 주세요.

(5) void ( *skipBytes )( IIstream* This, hi_uint32 n )

n byte만큼의 데이터를 불필요한 부분은 빼고 로드 하도록 실장 해 주세요.
불필요한 부분을 빼고 로드 한 만큼 Stream 포인터는 진행하도록 해 주세요.

(6) hi_bool ( *fail )( IIstream* This )

Load가 종료했는지를 반환하도록 실장 해 주세요.
Input Stream로부터 로드 한 것에 성공한 경우는 HI_FALSE를, 실패한 경우에는 HI_TRUE를 반환하도록 해 주세요.