Esempio n. 1
0
/*static dataitem*/
T_KRDDI *kr_ddi_construct(T_KRParamDDIDef *ptParamDDIDef, T_KRModule *ptModule,
        KRGetTypeFunc pfGetType, KRGetValueFunc pfGetValue)
{
    T_KRDDI *ptDDI = kr_calloc(sizeof(T_KRDDI));
    if (ptDDI == NULL) {
        KR_LOG(KR_LOGERROR, "kr_calloc ptDDI failed!");
        return NULL;
    }
    ptDDI->ptParamDDIDef = ptParamDDIDef;
    ptDDI->lDDIId = ptParamDDIDef->lDdiId;
    ptDDI->ptDDICalc = kr_calc_construct(ptParamDDIDef->caDdiFilterFormat[0], \
            ptParamDDIDef->caDdiFilterString, pfGetType, pfGetValue);
    ptDDI->eValueType = ptParamDDIDef->caDdiValueType[0];
    /*get the retrieve data function from module*/
    if (ptParamDDIDef->caDdiAggrFunc[0] != '\0') {
        ptDDI->pfDDIAggr = (KRDDIAggrFunc )kr_module_symbol(ptModule,
                ptParamDDIDef->caDdiAggrFunc);
        if (ptDDI->pfDDIAggr == NULL) {
            KR_LOG(KR_LOGERROR, "kr_module_symbol [%s] error!", \
                    ptParamDDIDef->caDdiAggrFunc);
            return NULL;
        }
    }
    ptDDI->eValueInd = KR_VALUE_UNSET;
    ptDDI->ptRelated = kr_hashtable_new(kr_pointer_hash, kr_pointer_equal);
    
    return ptDDI;
}
Esempio n. 2
0
void *kr_data_item_ddi_new(T_KRDataItem *ptDataItem)
{
    T_KRParamDdi *ptParamDdi = (T_KRParamDdi *)ptDataItem->ptDataItemDef;

    T_KRDdi *ptDdi = kr_calloc(sizeof(*ptDdi));
    if (ptDdi == NULL) {
        KR_LOG(KR_LOGERROR, "kr_calloc ptDdi failed!");
        return NULL;
    }

    ptDdi->ptFilterCalc = kr_calc_construct(
            ptParamDdi->caDdiFilterFormat[0], \
            ptParamDdi->caDdiFilterString, \
            ptDataItem->pfGetType, \
            ptDataItem->pfGetValue);
    if (ptDdi->ptFilterCalc == NULL) {
        KR_LOG(KR_LOGERROR, "kr_calc_construct filter failed!");
        return NULL;
    }

    /*
    ptDdi->ptResultCalc = kr_calc_construct(
            ptParamSdi->caSdiResultFormat[0], \
            ptParamSdi->caSdiResultString, \
            ptDataItem->pfGetType, \
            ptDataItem->pfGetValue);
    if (ptDdi->ptResultCalc == NULL) {
        KR_LOG(KR_LOGERROR, "kr_calc_construct result failed!");
        return NULL;
    }
    */

    ptDdi->ptRelated = kr_hashtable_new(kr_pointer_hash, kr_pointer_equal);
    if (ptDdi->ptRelated == NULL) {
        KR_LOG(KR_LOGERROR, "kr_hashtable_new related failed!");
        return NULL;
    }

    ptDataItem->ptPrivate = ptDdi;
    
    return ptDdi;
}