遞迴與非遞迴

來源:互聯網
上載者:User

//遞迴
bool HtmImportDocument::hasSheetFilter(const HtmBox* htmBox)
{
 ASSERT(htmBox != NULL);

 int childCount = 0;
 if (htmBox->name() == Context::sStrHtml().sTr
  && (childCount = htmBox->childCount()) >= 1)
 {
  for (int i = 0; i < childCount; i++)
  {
   const HtmBox* tdBox = htmBox->childItem(i);
   if (tdBox != NULL && tdBox->name() == Context::sStrHtml().sTd)
   {
    AttrSlotsId slot = tdBox->attrSlots();
    if (slot.v() != 0)
    {
     const AttrPack* pack = Context::sGainPackFromSlots(slot).v();
     if(pack->getAttr(Context::sStrAttrName().sX_autofilter)
      || pack->getAttr(Context::sStrAttrName().sX_autofilterrange))
      return true; 
    }
   }
  }
 }
 else
 {
  if ((htmBox->name() == Context::sStrHtml().sBody
   || htmBox->name() == Context::sStrHtml().sTable
   || htmBox->name() == Context::sStrHtml().sTr)
   && (childCount = htmBox->childCount()) >= 1)
  {
   for (int i = 0; i < childCount; i++)
   {
    const HtmBox* childBox = htmBox->childItem(i);
       if (hasSheetFilter(childBox) == true)
     return true;
   }
  }
 }

 return false;
}

//非遞迴
bool HtmImportDocument::hasSheetFilter(const HtmBox* body)
{
 ASSERT(body != NULL);
 int childCount = 0;
 if (body->name() == Context::sStrHtml().sBody
  && (childCount = body->childCount()) >= 1)
 {
  for (int i= 0; i < childCount; i++)
  {
   const HtmBox* tableBox = body->childItem(i);
   int tableCount = 0;
   if (tableBox != NULL
    && tableBox->name() == Context::sStrHtml().sTable
    && (tableCount = tableBox->childCount()) >= 1)
   {
    for (int j = 0; j < tableCount; j++)
    {
     const HtmBox* trBox = tableBox->childItem(j);
     int trCount = 0;
     if (trBox != NULL
      && trBox->name() == Context::sStrHtml().sTr
      && (trCount = trBox->childCount()) >= 1)
     {
      for (int k = 0; k < trCount; k++)
      {
       const HtmBox* tdBox = trBox->childItem(k);
       if (tdBox != NULL && tdBox->name() == Context::sStrHtml().sTd)
       {
        AttrSlotsId slot = tdBox->attrSlots();
        if (slot.v() != 0)
        {
         const AttrPack* pack = Context::sGainPackFromSlots(slot).v();
         if(pack->getAttr(Context::sStrAttrName().sX_autofilter)
          || pack->getAttr(Context::sStrAttrName().sX_autofilterrange))
          return true; 
        }
       }
      }
     }
    }
   }
  } 
 }

 return false;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.