📄 oioic.h
字号:
fr = CallerCome(*(This->ppo_AIB+i), pCaller); \
if(FR_P == fr) ir = (*(This->ppo_AIB+i))->IOput(*(This->ppo_AIB+i), IStrm, Qty, OStrm, Cty, pQty, pCaller); \
else if(FR_N_HASVR == fr) continue; \
else ir = IR_N; \
if(ir != IR_O_SBOOIX) return ir; \
} \
return ir; \
}while(0)
/*
*
* 名称:_SBO_OBJECT_IOPUT
* 描述:宏,IOput接口的_SBO_O_IX。
*/
#define _SBO_OBJECT_IOPUT \
do{ \
IRESULT ir = IR_O__SBOOIX; \
NUMIB i; \
for(i=0; i<This->NIB; i++) \
{ \
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller); \
if(FR_P == CallerCome(*(This->ppo_AIB+i), pCaller)) \
ir = (*(This->ppo_AIB+i))->IOput(*(This->ppo_AIB+i), IStrm, Qty, OStrm, Cty, pQty, pCaller); \
} \
return ir; \
}while(0)
/*
*
* 名称:OBS_OBJECT_INTERACT0
* 描述:宏,Interact0接口的OBS_O_IX。
*/
#define OBS_OBJECT_INTERACT0 \
do{ \
IRESULT ir = IR_O_OBSOIX; \
IRESULT fr; \
NUMIB i; \
for(i=0; i<This->NIB; i++) \
{ \
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller); \
fr = CallerCome(*(This->ppo_AIB+i), pCaller); \
if(FR_P == fr) ir = (*(This->ppo_AIB+i))->Interact0(*(This->ppo_AIB+i), Act, pCaller); \
else if(FR_N_HASVR == fr) continue; \
else ir = IR_N; \
if(ir != IR_O_OBSOIX) return ir; \
} \
}while(0)
/*
*
* 名称:OBS_OBJECT_INTERACT0_
* 描述:宏,Interact0接口的OBS_O_IX_。
*/
#define OBS_OBJECT_INTERACT0_ \
do{ \
NUMIB i; \
for(i=0; i<This->NIB; i++) \
{ \
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller); \
if(FR_P == CallerCome(*(This->ppo_AIB+i), pCaller)) \
(*(This->ppo_AIB+i))->Interact0(*(This->ppo_AIB+i), Act, pCaller); \
} \
}while(0)
/*
*
* 名称:SBO_OBJECT_INTERACT0
* 描述:宏,Interact0接口的SBO_O_IX。
*/
#define SBO_OBJECT_INTERACT0 \
do{ \
IRESULT ir = IR_O_SBOOIX; \
IRESULT fr; \
NUMIB i; \
for(i=0; i<This->NIB; i++) \
{ \
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller); \
fr = CallerCome(*(This->ppo_AIB+i), pCaller); \
if(FR_P == fr) ir = (*(This->ppo_AIB+i))->Interact0(*(This->ppo_AIB+i), Act, pCaller); \
else if(FR_N_HASVR == fr) continue; \
else ir = IR_N; \
if(ir != IR_O_SBOOIX) return ir; \
} \
return ir; \
}while(0)
/*
*
* 名称:_SBO_OBJECT_INTERACT0
* 描述:宏,Interact0接口的_SBO_O_IX。
*/
#define _SBO_OBJECT_INTERACT0 \
do{ \
IRESULT ir = IR_O__SBOOIX; \
NUMIB i; \
for(i=0; i<This->NIB; i++) \
{ \
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller); \
if(FR_P == CallerCome(*(This->ppo_AIB+i), pCaller)) \
(*(This->ppo_AIB+i))->Interact0(*(This->ppo_AIB+i), Act, pCaller); \
} \
return ir; \
}while(0)
/*
*
* 名称:OBS_OBJECT_INTERACT1
* 描述:宏,Interact1接口的OBS_O_IX。
*/
#define OBS_OBJECT_INTERACT1 \
do{ \
IRESULT ir = IR_O_OBSOIX; \
IRESULT fr; \
NUMIB i; \
for(i=0; i<This->NIB; i++) \
{ \
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller); \
fr = CallerCome(*(This->ppo_AIB+i), pCaller); \
if(FR_P == fr) ir = (*(This->ppo_AIB+i))->Interact1(*(This->ppo_AIB+i), Act, OStrm, Cty, pQty, pCaller); \
else if(FR_N_HASVR == fr) continue; \
else ir = IR_N; \
if(ir != IR_O_OBSOIX) return ir; \
} \
}while(0)
/*
*
* 名称:OBS_OBJECT_INTERACT1_
* 描述:宏,Interact1接口的OBS_O_IX_。
*/
#define OBS_OBJECT_INTERACT1_ \
do{ \
NUMIB i; \
for(i=0; i<This->NIB; i++) \
{ \
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller); \
if(FR_P == CallerCome(*(This->ppo_AIB+i), pCaller)) \
(*(This->ppo_AIB+i))->Interact1(*(This->ppo_AIB+i), Act, OStrm, Cty, pQty, pCaller); \
} \
}while(0)
/*
*
* 名称:SBO_OBJECT_INTERACT1
* 描述:宏,Interact1接口的SBO_O_IX。
*/
#define SBO_OBJECT_INTERACT1 \
do{ \
IRESULT ir = IR_O_SBOOIX; \
IRESULT fr; \
NUMIB i; \
for(i=0; i<This->NIB; i++) \
{ \
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller); \
fr = CallerCome(*(This->ppo_AIB+i), pCaller); \
if(FR_P == fr) ir = (*(This->ppo_AIB+i))->Interact1(*(This->ppo_AIB+i), Act, OStrm, Cty, pQty, pCaller); \
else if(FR_N_HASVR == fr) continue; \
else ir = IR_N; \
if(ir != IR_O_SBOOIX) return ir; \
} \
return ir; \
}while(0)
/*
*
* 名称:_SBO_OBJECT_INTERACT1
* 描述:宏,Interact1接口的_SBO_O_IX。
*/
#define _SBO_OBJECT_INTERACT1 \
do{ \
IRESULT ir = IR_O__SBOOIX; \
NUMIB i; \
for(i=0; i<This->NIB; i++) \
{ \
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller); \
if(FR_P == CallerCome(*(This->ppo_AIB+i), pCaller)) \
ir = (*(This->ppo_AIB+i))->Interact1(*(This->ppo_AIB+i), Act, OStrm, Cty, pQty, pCaller); \
} \
return ir; \
}while(0)
/*
*
* 名称:OBS_OBJECT_INTERACT2
* 描述:宏,Interact2接口的OBS_O_IX。
*/
#define OBS_OBJECT_INTERACT2 \
do{ \
IRESULT ir = IR_O_OBSOIX; \
IRESULT fr; \
NUMIB i; \
for(i=0; i<This->NIB; i++) \
{ \
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller); \
fr = CallerCome(*(This->ppo_AIB+i), pCaller); \
if(FR_P == fr) ir = (*(This->ppo_AIB+i))->Interact2(*(This->ppo_AIB+i), Act, IStrm, Qty, pCaller); \
else if(FR_N_HASVR == fr) continue; \
else ir = IR_N; \
if(ir != IR_O_OBSOIX) return ir; \
} \
}while(0)
/*
*
* 名称:OBS_OBJECT_INTERACT2_
* 描述:宏,Interact2接口的OBS_O_IX_。
*/
#define OBS_OBJECT_INTERACT2_ \
do{ \
NUMIB i; \
for(i=0; i<This->NIB; i++) \
{ \
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller); \
if(FR_P == CallerCome(*(This->ppo_AIB+i), pCaller)) \
(*(This->ppo_AIB+i))->Interact2(*(This->ppo_AIB+i), Act, IStrm, Qty, pCaller); \
} \
}while(0)
/*
*
* 名称:SBO_OBJECT_INTERACT2
* 描述:宏,Interact2接口的SBO_O_IX。
*/
#define SBO_OBJECT_INTERACT2 \
do{ \
IRESULT ir = IR_O_SBOOIX; \
IRESULT fr; \
NUMIB i; \
for(i=0; i<This->NIB; i++) \
{ \
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller); \
fr = CallerCome(*(This->ppo_AIB+i), pCaller); \
if(FR_P == fr) ir = (*(This->ppo_AIB+i))->Interact2(*(This->ppo_AIB+i), Act, IStrm, Qty, pCaller); \
else if(FR_N_HASVR == fr) continue; \
else ir = IR_N; \
if(ir != IR_O_SBOOIX) return ir; \
} \
return ir; \
}while(0)
/*
*
* 名称:_SBO_OBJECT_INTERACT2
* 描述:宏,Interact2接口的_SBO_O_IX。
*/
#define _SBO_OBJECT_INTERACT2 \
do{ \
IRESULT ir = IR_O__SBOOIX; \
NUMIB i; \
for(i=0; i<This->NIB; i++) \
{ \
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller); \
if(FR_P == CallerCome(*(This->ppo_AIB+i), pCaller)) \
ir = (*(This->ppo_AIB+i))->Interact2(*(This->ppo_AIB+i), Act, IStrm, Qty, pCaller); \
} \
return ir; \
}while(0)
/*
*
* 名称:OBS_OBJECT_INTERACT3
* 描述:宏,Interact3接口的OBS_O_IX。
*/
#define OBS_OBJECT_INTERACT3 \
do{ \
IRESULT ir = IR_O_OBSOIX; \
IRESULT fr; \
NUMIB i; \
for(i=0; i<This->NIB; i++) \
{ \
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller); \
fr = CallerCome(*(This->ppo_AIB+i), pCaller); \
if(FR_P == fr) ir = (*(This->ppo_AIB+i))->Interact3(*(This->ppo_AIB+i), Act, IStrm, Qty, OStrm, Cty, pQty, pCaller); \
else if(FR_N_HASVR == fr) continue; \
else ir = IR_N; \
if(ir != IR_O_OBSOIX) return ir; \
} \
}while(0)
/*
*
* 名称:OBS_OBJECT_INTERACT3_
* 描述:宏,Interact3接口的OBS_O_IX_。
*/
#define OBS_OBJECT_INTERACT3_ \
do{ \
NUMIB i; \
for(i=0; i<This->NIB; i++) \
{ \
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller); \
if(FR_P == CallerCome(*(This->ppo_AIB+i), pCaller)) \
(*(This->ppo_AIB+i))->Interact3(*(This->ppo_AIB+i), Act, IStrm, Qty, OStrm, Cty, pQty, pCaller); \
} \
}while(0)
/*
*
* 名称:SBO_OBJECT_INTERACT3
* 描述:宏,Interact3接口的SBO_O_IX。
*/
#define SBO_OBJECT_INTERACT3 \
do{ \
IRESULT ir = IR_O_SBOOIX; \
IRESULT fr; \
NUMIB i; \
for(i=0; i<This->NIB; i++) \
{ \
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller); \
fr = CallerCome(*(This->ppo_AIB+i), pCaller); \
if(FR_P == fr) ir = (*(This->ppo_AIB+i))->Interact3(*(This->ppo_AIB+i), Act, IStrm, Qty, OStrm, Cty, pQty, pCaller); \
else if(FR_N_HASVR == fr) continue; \
else ir = IR_N; \
if(ir != IR_O_SBOOIX) return ir; \
} \
return ir; \
}while(0)
/*
*
* 名称:_SBO_OBJECT_INTERACT3
* 描述:宏,Interact3接口的_SBO_O_IX。
*/
#define _SBO_OBJECT_INTERACT3 \
do{ \
IRESULT ir = IR_O__SBOOIX; \
IRESULT fr; \
NUMIB i; \
for(i=0; i<This->NIB; i++) \
{ \
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller); \
if(FR_P == CallerCome(*(This->ppo_AIB+i), pCaller)) \
ir = (*(This->ppo_AIB+i))->Interact3(*(This->ppo_AIB+i), Act, IStrm, Qty, OStrm, Cty, pQty, pCaller); \
} \
return ir; \
}while(0)
/*
*
* 名称:OBS_OBJECT_CLOSE_
* 描述:宏,Close接口的OBS_O_IX_。
*/
#define OBS_OBJECT_CLOSE_ \
do{ \
IRESULT ir; \
IRESULT fr; \
NUMIB i; \
if( 0 == This->RefCnt ) \
return IR_O_NOPEN; \
This->RefCnt--; \
for(i=0; i<This->NIB; i++) \
{ \
extern FRESULT CallerCome(OBJECT* pND, const VR* pCaller); \
if((*(This->ppo_AIB+i))->RefCnt -1 == This->RefCnt) \
{ \
fr = CallerCome(*(This->ppo_AIB+i), pCaller); \
if(FR_P == fr) ir = (*(This->ppo_AIB+i))->Close(*(This->ppo_AIB+i), pCaller); \
else if(FR_N_HASVR == fr) continue; \
else ir = IR_N; \
if( NIR(ir) ) \
{ \
This->RefCnt++; \
return ir; \
} \
} \
} \
}while(0)
/*==========+ CreateObject & DestroyObject +===========*/
/**
*
* 名称:CreateObject
* 描述:宏,动态创建对象。
* 参数:Msn --- [IN] 模序号,指定创建哪个模的对象。
* IQCty --- [IN] 输入队列的容量。
* OQCty --- [IN] 输出队列的容量。
* NumCR --- [IN] 来访者数量。
* ppObj --- [OUT] 输出创建的对象。
*/
extern FRESULT __CreateObject__(MLDSN Msn, BYTKTY IQCty, BYTKTY OQCty, SI32 NumCR, OBJECT** ppObj, BYTE* pExotic);
#define CreateObject(Msn, IQCty, OQCty, NumCR, ppObj) \
__CreateObject__(Msn, IQCty, OQCty, NumCR, ppObj, NULL)
/*
*
* 名称:DestroyObject
* 描述:宏,销毁动态创建的对象,即销毁由CreateObject宏创建的对象。
* 参数:pObj --- [IN] 指向对象。
*/
extern BOOL __DestroyObject__(OBJECT* pObj);
#define DestroyObject( pObj ) \
do{ \
if(TRUE == __DestroyObject__(pObj)) \
{ \
free(pObj); \
(pObj) = NULL; \
} \
}while(0)
/*===========+ 向外声明外面直接调用的函数 +============*/
extern FRESULT Enqueue(QUEUE* pq, BYTE* IData, BYTKTY Qty);
extern FRESULT Dequeue(QUEUE* pq, BYTE* OData, BYTKTY Cty, BYTKTY* pQty);
extern OBJECT* GetBN(OBJECT* pND, MLDSN msn);
extern EM* GetEMofBN(OBJECT* pND, MLDSN msn);
extern QUEUE* GetIQ(OBJECT* pND);
extern QUEUE* GetOQ(OBJECT* pND);
#if INLINE_VOFUNCTION == 0
extern IRESULT VO_Open(OBJECT* pObject, const VR* pCaller);
extern IRESULT VO_Input(OBJECT* pObject, BYTE* IStrm, BYTKTY Qty, const VR* pCaller);
extern IRESULT VO_Output(OBJECT* pObject, BYTE* OStrm, BYTKTY Cty, BYTKTY* pQty, const VR* pCaller);
extern IRESULT VO_IOput(OBJECT* pObject, BYTE* IStrm, BYTKTY Qty, BYTE* OStrm, BYTKTY Cty, BYTKTY* pQty, const VR* pCaller);
extern IRESULT VO_Interact0(OBJECT* pObject, ACTION Act, const VR* pCaller);
extern IRESULT VO_Interact1(OBJECT* pObject, ACTION Act, BYTE* OStrm, BYTKTY Cty, BYTKTY* pQty, const VR* pCaller);
extern IRESULT VO_Interact2(OBJECT* pObject, ACTION Act, BYTE* IStrm, BYTKTY Qty, const VR* pCaller);
extern IRESULT VO_Interact3(OBJECT* pObject, ACTION Act, BYTE* IStrm, BYTKTY Qty, BYTE* OStrm, BYTKTY Cty, BYTKTY* pQty, const VR* pCaller);
extern IRESULT VO_Close(OBJECT* pObject, const VR* pCaller);
#endif
#endif /* #ifndef __OIOIC_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -