1956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong/*
2956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** Copyright 2003-2010, VisualOn, Inc.
3956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong **
4956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** Licensed under the Apache License, Version 2.0 (the "License");
5956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** you may not use this file except in compliance with the License.
6956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** You may obtain a copy of the License at
7956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong **
8956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong **     http://www.apache.org/licenses/LICENSE-2.0
9956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong **
10956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** Unless required by applicable law or agreed to in writing, software
11956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** distributed under the License is distributed on an "AS IS" BASIS,
12956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** See the License for the specific language governing permissions and
14956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong ** limitations under the License.
15956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong */
16956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong/*******************************************************************************
17956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong	File:		voMem.h
18956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
19956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong	Content:	memory functions & data structures
20956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
21956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong*******************************************************************************/
22956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
23956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#ifndef __voMem_H__
24956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#define __voMem_H__
25956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
26956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#ifdef __cplusplus
27956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dongextern "C" {
28956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#endif /* __cplusplus */
29956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
30956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#include "voIndex.h"
31956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
32956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dongtypedef struct
33956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong{
34956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong	VO_S32				Size;				/*!< Buffer stride */
35956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong	VO_S32				Flag;
36956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong	VO_PTR				VBuffer;			/*!< user data pointer */
37956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong	VO_PTR				PBuffer;			/*!< user data pointer */
38956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong}
39956c553ab0ce72f8074ad0fda2ffd66a0305700cJames DongVO_MEM_INFO;
40956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
41956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dongtypedef struct VO_MEM_OPERATOR
42956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong{
43956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong	VO_U32 (VO_API * Alloc) (VO_S32 uID, VO_MEM_INFO * pMemInfo);
44956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong	VO_U32 (VO_API * Free) (VO_S32 uID, VO_PTR pBuff);
45956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong	VO_U32 (VO_API * Set) (VO_S32 uID, VO_PTR pBuff, VO_U8 uValue, VO_U32 uSize);
46956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong	VO_U32 (VO_API * Copy) (VO_S32 uID, VO_PTR pDest, VO_PTR pSource, VO_U32 uSize);
47956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong	VO_U32 (VO_API * Check) (VO_S32 uID, VO_PTR pBuffer, VO_U32 uSize);
48956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong	VO_S32 (VO_API * Compare) (VO_S32 uID, VO_PTR pBuffer1, VO_PTR pBuffer2, VO_U32 uSize);
49956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong	VO_U32 (VO_API * Move) (VO_S32 uID, VO_PTR pDest, VO_PTR pSource, VO_U32 uSize);
50956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong} VO_MEM_OPERATOR;
51956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
52956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#define voMemAlloc(pBuff, pMemOP, ID, nSize) \
53956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong{ \
54956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong	VO_MEM_INFO voMemInfo; \
55956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong	voMemInfo.Size=nSize; \
56956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong	pMemOP->Alloc(ID, &voMemInfo); \
57956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong	pBuff=(VO_PBYTE)voMemInfo.VBuffer; \
58956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong}
59956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
60956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
61956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#ifdef __cplusplus
62956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong}
63956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#endif /* __cplusplus */
64956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
65956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#endif // __voMem_H__
66