Пример #1
0
 void getMetaInfo(ThorDataLinkMetaInfo &info)
 {
     initMetaInfo(info);
     if (helper->canFilter())
         info.canReduceNumRows = true;
     calcMetaInfoSize(info,inputs.item(0));
 }
 void getMetaInfo(ThorDataLinkMetaInfo &info)
 {
     initMetaInfo(info);
     info.isSequential = true; 
     info.canReduceNumRows = true; // not sure what selectNth is doing
     calcMetaInfoSize(info,inputs.item(0));
 }
Пример #3
0
 void getMetaInfo(ThorDataLinkMetaInfo &info)
 {
     initMetaInfo(info);
     info.canReduceNumRows = true;
     info.totalRowsMax = helper->getLimit();
     calcMetaInfoSize(info,inputs.item(0));
 }
Пример #4
0
 virtual void getMetaInfo(ThorDataLinkMetaInfo &info) const override
 {
     initMetaInfo(info);
     info.canReduceNumRows = true;
     info.totalRowsMax = helper->getLimit();
     calcMetaInfoSize(info, queryInput(0));
 }
Пример #5
0
 void getMetaInfo(ThorDataLinkMetaInfo &info)
 {
     initMetaInfo(info);
     info.fastThrough = true;
     info.canReduceNumRows = true;
     calcMetaInfoSize(info,inputs.item(0));
 }
Пример #6
0
// IThorDataLink
    virtual void getMetaInfo(ThorDataLinkMetaInfo &info) override
    {
        initMetaInfo(info);
        info.fastThrough = true; // ish
        if (helper->canFilter())
            info.canReduceNumRows = true;
        calcMetaInfoSize(info, queryInput(0));
    }
Пример #7
0
 void getMetaInfo(ThorDataLinkMetaInfo &info)
 {
     initMetaInfo(info);
     info.canReduceNumRows = true;
     info.canBufferInput = false;
     info.totalRowsMax = rowLimit;
     calcMetaInfoSize(info,inputs.item(0));
 }
Пример #8
0
 virtual void getMetaInfo(ThorDataLinkMetaInfo &info)
 {
     initMetaInfo(info);
     info.canBufferInput = true;
     if (helper->canFilter())
         info.canReduceNumRows = true;
     calcMetaInfoSize(info, queryInput(0));
 }
 void getMetaInfo(ThorDataLinkMetaInfo &info)
 {
     initMetaInfo(info);
     info.isSequential = true;
     info.canReduceNumRows = true;
     info.canBufferInput = true;
     calcMetaInfoSize(info, queryInput(0));
 }
Пример #10
0
 virtual void getMetaInfo(ThorDataLinkMetaInfo &info) override
 {
     initMetaInfo(info);
     info.canReduceNumRows = true;
     info.canBufferInput = false;
     info.totalRowsMax = rowLimit;
     calcMetaInfoSize(info, queryInput(0));
 }
Пример #11
0
 virtual void getMetaInfo(ThorDataLinkMetaInfo &info) const override
 {
     initMetaInfo(info);
     if (rolloverEnabled)
     {
         info.isSequential = true;
         info.unknownRowsOutput = true; // don't know how many rolled over
     }
     else
         info.fastThrough = true;
     calcMetaInfoSize(info, queryInput(0));
 }
Пример #12
0
void CThorDataLink::calcMetaInfoSize(ThorDataLinkMetaInfo &info,IThorDataLink **link,unsigned ninputs)
{
    if (!link||(ninputs<=1)) {
        calcMetaInfoSize(info,link&&(ninputs==1)?link[0]:NULL);
        return ;
    }
    if (!info.unknownRowsOutput) {
        __int64 min=0;
        __int64 max=0;
        for (unsigned i=0;i<ninputs;i++ ) {
            if (link[i]) {
                ThorDataLinkMetaInfo prev;
                link[i]->getMetaInfo(prev);
                if (min>=0) {
                    if (prev.totalRowsMin>=0)
                        min += prev.totalRowsMin;
                    else
                        min = -1;
                }
                if (max>=0) {
                    if (prev.totalRowsMax>=0)
                        max += prev.totalRowsMax;
                    else
                        max = -1;
                }
            }
        }
        if (info.totalRowsMin<=0) {
            if (!info.canReduceNumRows)
                info.totalRowsMin = min;
            else
                info.totalRowsMin = 0;
        }
        if (info.totalRowsMax<0) {
            if (!info.canIncreaseNumRows) {
                info.totalRowsMax = max;
                if (info.totalRowsMin>info.totalRowsMax)
                    info.totalRowsMax = -1;
            }
        }
    }
    else if (info.totalRowsMin<0)
        info.totalRowsMin = 0; // a good bet
}
Пример #13
0
void getPartsMetaInfo(ThorDataLinkMetaInfo &metaInfo, unsigned nparts, IPartDescriptor **partDescs, CDiskPartHandlerBase *partHandler)
{
    ThorDataLinkMetaInfo *metaInfos = new ThorDataLinkMetaInfo[nparts];
    struct ownedMetaInfos
    {
        ThorDataLinkMetaInfo *&metaInfos;
        ownedMetaInfos(ThorDataLinkMetaInfo *&_metaInfos) : metaInfos(_metaInfos) { }
        ~ownedMetaInfos() { delete [] metaInfos; }
    } omi(metaInfos);
    unsigned __int64 sizeTotal = 0;
    unsigned p=0;
    for (; p<nparts; p++)
    {
        initMetaInfo(metaInfos[p]);
        partHandler->getMetaInfo(metaInfos[p], partDescs[p]);
        sizeTotal += partDescs[p]->queryProperties().getPropInt64("@size");
    }
    calcMetaInfoSize(metaInfo, metaInfos, nparts);
    if (!metaInfo.unknownRowsOutput && !metaInfo.canReduceNumRows && !metaInfo.canIncreaseNumRows)
        metaInfo.byteTotal = sizeTotal;
}
Пример #14
0
 virtual void getMetaInfo(ThorDataLinkMetaInfo &info)
 {
     initMetaInfo(info);
     info.buffersInput = true;
     calcMetaInfoSize(info,inputs.item(0));
 }
Пример #15
0
 virtual void getMetaInfo(ThorDataLinkMetaInfo &info) override
 {
     initMetaInfo(info);
     info.fastThrough = false;
     calcMetaInfoSize(info, queryInput(0));
 }
Пример #16
0
 void getMetaInfo(ThorDataLinkMetaInfo &info)
 {
     initMetaInfo(info);
     calcMetaInfoSize(info,inputs.item(0));
 }
Пример #17
0
 void getMetaInfo(ThorDataLinkMetaInfo &info)
 {
     initMetaInfo(info);
     info.fastThrough = true; // ish
     calcMetaInfoSize(info,inputs.item(0));
 }