Exemple #1
0
STDMETHODIMP CFusionCHPQuantificationDataCOM::get_SummaryParameters(VARIANT* pVal)
{
	if (chp == NULL)
		return E_FAIL;

	VariantInit(pVal);
	pVal->vt = VT_ARRAY | VT_DISPATCH;
	pVal->parray = NULL;
	affymetrix_calvin_parameter::ParameterNameValueTypeList params = chp->GetSummaryParams();
	int nparams = (int)params.size();
	SAFEARRAYBOUND  rgsaBound[1];
	rgsaBound[0].lLbound = 0;
	rgsaBound[0].cElements = nparams;
	pVal->parray = SafeArrayCreate(VT_DISPATCH, 1, rgsaBound);
	long index=0;
	affymetrix_calvin_parameter::ParameterNameValueTypeList::iterator it;
	for (it=params.begin(); it!=params.end(); ++it)
	{
		CComPtr<IFusionTagValuePairType> param;
		affymetrix_fusion_io::FusionTagValuePairType fparam;
		param.CoCreateInstance(CLSID_FusionTagValuePairType);
		CFusionTagValuePairTypeCOM *pParam = static_cast<CFusionTagValuePairTypeCOM *>(param.p);
		fparam.Tag = it->GetName();
		fparam.Value = it->ToString();
		pParam->SetParam(fparam);
		HRESULT hr = SafeArrayPutElement(pVal->parray, &index, param);
		++index;
	}
	return S_OK;
}
STDMETHODIMP CFusionCHPHeaderCOM::get_AlgorithmParameters(VARIANT* pVal)
{
	VariantInit(pVal);
	pVal->vt = VT_ARRAY | VT_DISPATCH;
	pVal->parray = NULL;
	affymetrix_fusion_io::FusionTagValuePairTypeList values;
	header->AlgorithmParameters(values);
	int nparams = (int)values.size();
	SAFEARRAYBOUND  rgsaBound[1];
	rgsaBound[0].lLbound = 0;
	rgsaBound[0].cElements = nparams;
	pVal->parray = SafeArrayCreate(VT_DISPATCH, 1, rgsaBound);
	long index=0;
	affymetrix_fusion_io::FusionTagValuePairTypeList::iterator it;
	for (it=values.begin(); it!=values.end(); ++it)
	{
		CComPtr<IFusionTagValuePairType> param;
		param.CoCreateInstance(CLSID_FusionTagValuePairType);
		CFusionTagValuePairTypeCOM *pParam = static_cast<CFusionTagValuePairTypeCOM *>(param.p);
		pParam->SetParam((*it));
		HRESULT hr = SafeArrayPutElement(pVal->parray, &index, param);
		++index;
	}
	return S_OK;
}
STDMETHODIMP CFusionCHPMultiDataDataCOM::GetDataSetHeaderParameters(MultiDataType dataType, VARIANT* pVal)
{
	if (chp == NULL)
		return E_FAIL;

	VariantInit(pVal);
	pVal->vt = VT_ARRAY | VT_DISPATCH;
	pVal->parray = NULL;
	affymetrix_calvin_io::DataSetHeader *dsh = chp->GetDataSetHeader((affymetrix_calvin_io::MultiDataType)dataType);
	affymetrix_calvin_parameter::ParameterNameValueTypeConstIt begin;
	affymetrix_calvin_parameter::ParameterNameValueTypeConstIt end;
	dsh->GetNameValIterators(begin, end);
	int nparams = dsh->GetNameValParamCnt();
	SAFEARRAYBOUND  rgsaBound[1];
	rgsaBound[0].lLbound = 0;
	rgsaBound[0].cElements = nparams;
	pVal->parray = SafeArrayCreate(VT_DISPATCH, 1, rgsaBound);
	long index=0;
	for (ParameterNameValueTypeConstIt it=begin; it!=end; ++it)
	{
		CComPtr<IFusionTagValuePairType> param;
		affymetrix_fusion_io::FusionTagValuePairType fparam;
		param.CoCreateInstance(CLSID_FusionTagValuePairType);
		CFusionTagValuePairTypeCOM *pParam = static_cast<CFusionTagValuePairTypeCOM *>(param.p);
		fparam.Tag = it->GetName();
		fparam.Value = it->ToString();
		pParam->SetParam(fparam);
		HRESULT hr = SafeArrayPutElement(pVal->parray, &index, param);
		++index;
	}
    return S_OK;
}