==== Vzorovy kod pre ESuperCommonData ====
//collection -> EDataCollection prisla niekde zo vstupu, jeden z moznych sposobov pouzitia
ESuperCommonData *data = (ESuperCommonData*)collection->GetClassByType(TYPE_SUPER_COMMON_DATA);
unsigned long count = data->GetCommonObjectsCount();
EAbstractCardData *tmpData = NULL;
for(int i = 0;i < count;i++)
{
switch(data->GetDataByIdx(i)->WhoIAm())
{
case TYPE_COMMON_DATA:
tmpData = superData->GetDataByIdx(i);
// kod kde spracujete data
break;
case TYPE_IDS_CUSTOMER_PROFILE:
tmpData = superData->GetDataByIdx(i);
// kod kde spracujete data
break;
case TYPE_IDOL_CARD_PUBLISHER:
tmpData = superData->GetDataByIdx(i);
// kod kde spracujete data
break;
default:
AddLog("Unknown common type %d",superData->GetDataByIdx(i)->WhoIAm());
break;
}
}
==== alebo ====
//data -> ESuperCommonData objekt ktory mam z kolekcie
EAbstractCardData *tmpData = data->GetDataByType(TYPE_COMMON_DATA);
if (tmpData != NULL)
{
//emtest stara vetva, vsetky doteraz implementovane karty
}
else
{
tmpData = data->GetDataByType(TYPE_IDOL_CARD_PUBLISHER);
if (tmpData)
{
//osetrenie IDOL karty potrebujeme este TYPE_IDS_CUSTOMER_PROFILE
tmpData = data->GetDataByType(TYPE_IDS_CUSTOMER_PROFILE);
}
else// moze to byt este ina karta napr IDS Pardubice
{
tmpData = data->GetDataByType(TYPE_IDS_CUSTOMER_PROFILE);
//osetrenie IDS Pardubice
}
// ak sa nenajde ziadny objekt z definovanych typov => ina karta doteraz neimplementovana
if (tmpData == NULL)
return error;
}