feature.c文件分析
接口相关使用文件
知识分享
Feature:开发功能时,需要实现的功能的生命周期接口。
IUnknown:基于IUnknown开发服务或功能的对外接口。
特征实施结构体的组成
struct FeatureImpl {
Feature *feature;
IUnknown *iUnknown;
};
这里的结构体有两个元素组成,一个是feature生命周期元素,另一个是iUnknown接口
这个文件主要功能就是一些接口的添加和获取
代码部分
1.SAMGR_AddInterface
函数功能:在生命周期添加一个对外接口
BOOL SAMGR_AddInterface(FeatureImpl *featureImpl, IUnknown *iUnknown)
{
if (featureImpl == NULL || iUnknown == NULL || featureImpl->iUnknown != NULL) {
return FALSE;
}
featureImpl->iUnknown = iUnknown;
return TRUE;
}
2.SAMGR_DelInterface
函数功能:删除生命周期中的iunknown接口
函数实现:该函数直接传入一个生命周期,没个周期有且仅有一个iunknown接口,所以可以实现删除功能。函数最后返回值为删除的对象
//删除一个生命周期的接口
IUnknown *SAMGR_DelInterface(FeatureImpl *featureImpl)
{
if (featureImpl == NULL) {
return NULL;
}
IUnknown *iUnknown = featureImpl->iUnknown;
featureImpl->iUnknown = NULL;
return iUnknown;
}
3.SAMGR_GetInterface
函数功能:获取生命周期的iunknown接口
//获取接口
IUnknown *SAMGR_GetInterface(FeatureImpl *featureImpl)
{
if (featureImpl == NULL) {
return NULL;
}
return featureImpl->iUnknown;
}
4.SAMGR_IsNoInterface
函数功能:判断接口是否合法
//判断接口是否为空或者feature是否存在
BOOL SAMGR_IsNoInterface(FeatureImpl *featureImpl)
{
return (BOOL)(featureImpl == NULL || featureImpl->iUnknown == NULL);
}
5.FEATURE_CreateInstance
函数功能:创建一组实例
FeatureImpl *FEATURE_CreateInstance(Feature *feature)
{
if (feature == NULL) {
return NULL;
}
FeatureImpl *featureImpl = (FeatureImpl *)SAMGR_Malloc(sizeof(FeatureImpl));
//申请相关空间
if (featureImpl == NULL) {
return NULL;
}
featureImpl->feature = feature;
featureImpl->iUnknown = NULL;
return featureImpl;
}