ohisee
新手
UID:689690
注册:2008-4-10
最后登录:
2008-05-20
帖子: 12
精华:0
可用积分:12
(白手起家)
信誉积分: 0
专家积分: 0 (本版)
状态: ...离线...
[个人空间]
[短信]
[博客]
|
|
|
|
/*===================+ 内联VO函数 +====================*/
/* 注:内联VO函数和非内联VO函数的功能是完全相同的。*/
#if INLINE_VOFUNCTION == 1
/**
*
* 名称:VO_Open
* 描述:接口Open的VO函数。
* 参数:pObject --- [IN] 指向对象;
* pCaller --- [IN] 来访者。
*/
static _INLINE_ IRESULT VO_Open(OBJECT* pObject, const VR* pCaller)
{
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller);
extern FRESULT CallerLeave(OBJECT* pND, const VR* pCaller);
IRESULT ir = IR_O;
if( 0 == pCaller->cr || 0 == pCaller->mr )
return IR_N_INVALIDARG;
if( FR_P == CallerCome(pObject, pCaller) )
{
ir = pObject->Open(pObject, pCaller);
CallerLeave(pObject, pCaller);
}else { ir = IR_N; }
return ir;
}
/**
*
* 名称:VO_Input
* 描述:接口Input的VO函数。
* 参数:pObject --- [IN] 指向对象;
* IStrm --- [IN] 输入流;
* Qty --- [IN] 输入的Byte数量;
* pCaller --- [IN] 来访者。
*/
static _INLINE_ IRESULT VO_Input(OBJECT* pObject, BYTE* IStrm, BYTKTY Qty, const VR* pCaller)
{
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller);
extern FRESULT CallerLeave(OBJECT* pND, const VR* pCaller);
IRESULT ir = IR_O;
if( NULL == IStrm || 0 == Qty || 0 == pCaller->cr || 0 == pCaller->mr )
return IR_N_INVALIDARG;
if( FR_P == CallerCome(pObject, pCaller) )
{
ir = pObject->Input(pObject, IStrm, Qty, pCaller);
CallerLeave(pObject, pCaller);
}else { ir = IR_N; }
return ir;
}
/**
*
* 名称:VO_Output
* 描述:接口Output的VO函数。
* 参数:pObject --- [IN] 指向对象;
* OStrm --- [OUT] 输出流的流向;
* Cty --- [IN] OStrm所指存储空间的容量;
* pQty --- [OUT] 指向实际输出的Byte数量;
* pCaller --- [IN] 来访者。
*/
static _INLINE_ IRESULT VO_Output(OBJECT* pObject, BYTE* OStrm, BYTKTY Cty, BYTKTY* pQty, const VR* pCaller)
{
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller);
extern FRESULT CallerLeave(OBJECT* pND, const VR* pCaller);
IRESULT ir = IR_O;
if( NULL == OStrm || 0 == Cty || NULL == pQty || 0 == pCaller->cr || 0 == pCaller->mr )
return IR_N_INVALIDARG;
*pQty = 0;
if( FR_P == CallerCome(pObject, pCaller) )
{
ir = pObject->Output(pObject, OStrm, Cty, pQty, pCaller);
CallerLeave(pObject, pCaller);
}else { ir = IR_N; }
return ir;
}
/**
*
* 名称:VO_IOput
* 描述:接口IOput的VO函数。
* 参数:IStrm --- [IN] 输入流;
* Qty --- [IN] 输入的Byte数量;
* OStrm --- [OUT] 输出流的流向;
* Cty --- [IN] OStrm所指存储空间的容量;
* pQty --- [OUT] 指向实际输出的Byte数量;
* pCaller --- [IN] 来访者。
*/
static _INLINE_ IRESULT VO_IOput(OBJECT* pObject, BYTE* IStrm, BYTKTY Qty, BYTE* OStrm, BYTKTY Cty, BYTKTY* pQty, const VR* pCaller)
{
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller);
extern FRESULT CallerLeave(OBJECT* pND, const VR* pCaller);
IRESULT ir = IR_O;
if( NULL == IStrm || 0 == Qty || NULL == OStrm || 0 == Cty || NULL == pQty || 0 == pCaller->cr || 0 == pCaller->mr )
return IR_N_INVALIDARG;
*pQty = 0;
if( FR_P == CallerCome(pObject, pCaller) )
{
ir = pObject->IOput(pObject, IStrm, Qty, OStrm, Cty, pQty, pCaller);
CallerLeave(pObject, pCaller);
}else { ir = IR_N; }
return ir;
} |
|
| 您对本贴的看法:鲜花[0]
臭蛋[0] |
| Web安全应用现状有奖调查+Web安全应急处理沙龙+100积分 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 |
|