map_prof.cpp
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:18k
源码类别:

Symbian

开发平台:

Visual C++

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Source last modified: $Id: map_prof.cpp,v 1.3.50.4 2004/07/09 01:45:54 hubbe Exp $
  3.  * 
  4.  * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
  5.  * 
  6.  * The contents of this file, and the files included with this file,
  7.  * are subject to the current version of the RealNetworks Public
  8.  * Source License (the "RPSL") available at
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed
  10.  * the file under the current version of the RealNetworks Community
  11.  * Source License (the "RCSL") available at
  12.  * http://www.helixcommunity.org/content/rcsl, in which case the RCSL
  13.  * will apply. You may also obtain the license terms directly from
  14.  * RealNetworks.  You may not use this file except in compliance with
  15.  * the RPSL or, if you have a valid RCSL with RealNetworks applicable
  16.  * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
  17.  * the rights, obligations and limitations governing use of the
  18.  * contents of the file.
  19.  * 
  20.  * Alternatively, the contents of this file may be used under the
  21.  * terms of the GNU General Public License Version 2 or later (the
  22.  * "GPL") in which case the provisions of the GPL are applicable
  23.  * instead of those above. If you wish to allow use of your version of
  24.  * this file only under the terms of the GPL, and not to allow others
  25.  * to use your version of this file under the terms of either the RPSL
  26.  * or RCSL, indicate your decision by deleting the provisions above
  27.  * and replace them with the notice and other provisions required by
  28.  * the GPL. If you do not delete the provisions above, a recipient may
  29.  * use your version of this file under the terms of any one of the
  30.  * RPSL, the RCSL or the GPL.
  31.  * 
  32.  * This file is part of the Helix DNA Technology. RealNetworks is the
  33.  * developer of the Original Code and owns the copyrights in the
  34.  * portions it created.
  35.  * 
  36.  * This file, and the files included with this file, is distributed
  37.  * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
  38.  * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
  39.  * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
  40.  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
  41.  * ENJOYMENT OR NON-INFRINGEMENT.
  42.  * 
  43.  * Technology Compatibility Kit Test Suite(s) Location:
  44.  *    http://www.helixcommunity.org/content/tck
  45.  * 
  46.  * Contributor(s):
  47.  * 
  48.  * ***** END LICENSE BLOCK ***** */
  49. #include "./map_prof.h"
  50. #include "hx_ut_debug.h"
  51. #include "ut_param_util.h"
  52. #include "./gen_map_prof.h"
  53. #include "./param_util.h"
  54. #include "chxmapptrtoptr.h"
  55. #include "chxmapstringtoob.h"
  56. #include "hxmap.h"
  57. #include "hxguidmap.h"
  58. #ifndef _WINCE
  59. #include <errno.h>
  60. #ifndef _WINDOWS
  61. #include <sys/time.h>
  62. #endif
  63. #endif //_WINCE
  64. #include <time.h>
  65. HLXMapProf::HLXMapProf() : m_memCheckpoint(NULL), m_timeCheckpointSec(0), m_timeCheckpointMicro(0)
  66. {
  67.     m_typeArray = new CHXString[2];
  68.     m_array.Add(new GenMapProf<CHXMapPtrToPtr, void*, void*>());
  69.     m_typeArray[0] = "CHXMapPtrToPtr";
  70. }
  71. HLXMapProf::~HLXMapProf()
  72. {
  73.     for (int i = 0; i < m_array.GetSize(); i++)
  74.     {
  75. delete ((GenMapProfBase*)m_array.GetAt(i));
  76.     }
  77.     m_array.RemoveAll();
  78.     delete[] m_typeArray;
  79. }
  80.     
  81. void HLXMapProf::GetCommandInfo(UTVector<HLXUnitTestCmdInfo*>& cmds)
  82. {
  83.     int i = 0;
  84.     cmds.Resize(18);
  85.     cmds[i++] = new HLXUnitTestCmdInfoDisp<HLXMapProf>(this, 
  86.     "MemCheckpoint",
  87.     &HLXMapProf::HandleMemCheckpointCmd,
  88.     1);
  89.     cmds[i++] = new HLXUnitTestCmdInfoDisp<HLXMapProf>(this, 
  90.     "TimeCheckpoint",
  91.     &HLXMapProf::HandleTimeCheckpointCmd,
  92.     1);
  93.     cmds[i++] = new HLXUnitTestCmdInfoDisp<HLXMapProf>(this, 
  94.     "SetSeed",
  95.     &HLXMapProf::HandleSetSeedCmd,
  96.     2);
  97.     cmds[i++] = new HLXUnitTestCmdInfoDisp<HLXMapProf>(this, 
  98.     "CreateElement",
  99.     &HLXMapProf::HandleCreateElCmd,
  100.     2);
  101.     cmds[i++] = new HLXUnitTestCmdInfoDisp<HLXMapProf>(this, 
  102.     "CreateElements",
  103.     &HLXMapProf::HandleCreateElementsCmd,
  104.     3);
  105.     cmds[i++] = new HLXUnitTestCmdInfoDisp<HLXMapProf>(this, 
  106.     "ClearElements",
  107.     &HLXMapProf::HandleClearElCmd,
  108.     1);
  109.     cmds[i++] = new HLXUnitTestCmdInfoDisp<HLXMapProf>(this, 
  110.     "GetCount",
  111.     &HLXMapProf::HandleGetCountCmd,
  112.     2);
  113.     cmds[i++] = new HLXUnitTestCmdInfoDisp<HLXMapProf>(this, 
  114.     "IsEmpty",
  115.     &HLXMapProf::HandleIsEmptyCmd,
  116.     2);
  117.     cmds[i++] = new HLXUnitTestCmdInfoDisp<HLXMapProf>(this, 
  118.     "Lookup",
  119.     &HLXMapProf::HandleLookupCmd,
  120.     3);
  121.     cmds[i++] = new HLXUnitTestCmdInfoDisp<HLXMapProf>(this, 
  122.     "SetAt",
  123.     &HLXMapProf::HandleSetAtCmd,
  124.     2);
  125.     cmds[i++] = new HLXUnitTestCmdInfoDisp<HLXMapProf>(this, 
  126.      "RemoveKey",
  127.      &HLXMapProf::HandleRemoveKeyCmd,
  128.      3);
  129.     cmds[i++] = new HLXUnitTestCmdInfoDisp<HLXMapProf>(this, 
  130.      "RemoveAll",
  131.      &HLXMapProf::HandleRemoveAllCmd,
  132.      1);
  133.     cmds[i++] = new HLXUnitTestCmdInfoDisp<HLXMapProf>(this, 
  134.      "Rhs[]",
  135.      &HLXMapProf::HandleRhsArrayOpCmd,
  136.      3);
  137.     cmds[i++] = new HLXUnitTestCmdInfoDisp<HLXMapProf>(this, 
  138.      "Lhs[]",
  139.      &HLXMapProf::HandleLhsArrayOpCmd,
  140.      2);
  141.     cmds[i++] = new HLXUnitTestCmdInfoDisp<HLXMapProf>(this, 
  142.      "IsNull",
  143.      &HLXMapProf::HandleIsNullCmd,
  144.      3);
  145.     cmds[i++] = new HLXUnitTestCmdInfoDisp<HLXMapProf>(this, 
  146.      "RunMapSpecificProfs",
  147.      &HLXMapProf::HandleRunMapSpecificProfsCmd,
  148.      1);
  149.     cmds[i++] = new HLXUnitTestCmdInfoDisp<HLXMapProf>(this, 
  150.      "ProfileInsertions",
  151.      &HLXMapProf::HandleProfileInsertionsCmd,
  152.      2);
  153.     cmds[i++] = new HLXUnitTestCmdInfoDisp<HLXMapProf>(this, 
  154.      "InitHashTable",
  155.      &HLXMapProf::HandleInitHashTableCmd,
  156.      3);
  157. }
  158. HLXCmdBasedTest* HLXMapProf::Clone() const
  159. {
  160.     return new HLXMapProf();
  161. }
  162. namespace
  163. {
  164.     bool PropagateCall(CHXPtrArray& arr,
  165.                        bool (GenMapProfBase::* FN)())
  166.     {
  167.         bool ret = true;
  168.         for (int i = 0; ret && (i < arr.GetSize()); i++)
  169.         {
  170.             GenMapProfBase* pObj = (GenMapProfBase*)arr[i];
  171.             if (pObj)
  172.                 ret = (pObj->*FN)();
  173.         }
  174.         return ret;
  175.     }
  176.     template <typename ARG1TYPE>
  177.     bool PropagateCall(CHXPtrArray& arr,
  178.                        bool (GenMapProfBase::* FN)(ARG1TYPE),
  179.                        ARG1TYPE arg1)
  180.     {
  181.         bool ret = true;
  182.         for (int i = 0; ret && (i < arr.GetSize()); i++)
  183.         {
  184.             GenMapProfBase* pObj = (GenMapProfBase*)arr[i];
  185.             if (pObj)
  186.                 ret = (pObj->*FN)(arg1);
  187.         }
  188.         return ret;
  189.     }
  190.     template <typename ARG1TYPE, typename ARG2TYPE>
  191.     bool PropagateCall(CHXPtrArray& arr,
  192.                        bool (GenMapProfBase::* FN)(ARG1TYPE, ARG2TYPE),
  193.                        ARG1TYPE arg1, ARG2TYPE arg2)
  194.     {
  195.         bool ret = true;
  196.         for (int i = 0; ret && (i < arr.GetSize()); i++)
  197.         {
  198.             GenMapProfBase* pObj = (GenMapProfBase*)arr[i];
  199.             if (pObj)
  200.                 ret = (pObj->*FN)(arg1, arg2);
  201.         }
  202.         return ret;
  203.     }
  204. };
  205. bool HLXMapProf::HandleMemCheckpointCmd(const UTVector<UTString>& /*info*/)
  206. {
  207.     bool ret = true;
  208.     void* prev = m_memCheckpoint;
  209. #if !defined(_SYMBIAN) && !defined(_WINDOWS)
  210.     m_memCheckpoint = sbrk(0);
  211. #else
  212.     m_memCheckpoint = 0;
  213. #endif    
  214.     if (prev)
  215.     {
  216.         DPRINTF(D_INFO, ("HlxMapProf::MemCheckpoint: %p -> %p (%d bytes)n",
  217.                          prev, m_memCheckpoint,
  218.                          (char*)m_memCheckpoint - (char*)prev));
  219.     }
  220.     else
  221.     {
  222.         DPRINTF(D_INFO, ("HlxMapProf::MemCheckpoint: %pn", m_memCheckpoint));
  223.     }
  224.     return ret;
  225. }
  226. bool HLXMapProf::HandleTimeCheckpointCmd(const UTVector<UTString>& /*info*/)
  227. {
  228. #ifndef _WINCE
  229.     struct timeval prev = {m_timeCheckpointSec, m_timeCheckpointMicro};
  230.     struct timeval next = {0, 0};
  231. //XXXgfw look like this test has only worked on linux.    
  232. #ifndef _WINDOWS    
  233.     if (gettimeofday(&next, NULL) != 0)
  234.     {
  235.         DPRINTF(D_INFO, ("HlxMapProf::TimeCheckpoint: gettimeofday() error number %dn",
  236.                          errno));
  237.         return false;
  238.     }
  239.     if (prev.tv_sec || prev.tv_usec)
  240.     {
  241.         long diffSec = next.tv_sec - prev.tv_sec;
  242.         long diffUsec = next.tv_usec - prev.tv_usec;
  243.         if (diffUsec < 0)
  244.         {
  245.             --diffSec;
  246.             diffUsec += 1000000;
  247.         }
  248.         DPRINTF(D_INFO, ("HlxMapProf::TimeCheckpoint: %ld.%06ld -> %ld.%06ld (%ld.%06ld sec)n",
  249.                          prev.tv_sec, prev.tv_usec,
  250.                          next.tv_sec, next.tv_usec,
  251.                          diffSec, diffUsec));
  252.     }
  253.     else
  254.     {
  255.         DPRINTF(D_INFO, ("HlxMapProf::TimeCheckpoint: %ld.%06ldn",
  256.                          next.tv_sec, next.tv_usec));
  257.     }
  258.     m_timeCheckpointSec = next.tv_sec;
  259.     m_timeCheckpointMicro = next.tv_usec;
  260. #else
  261.         DPRINTF(D_INFO, ("This test has not been ported to windows yet. Maybe others.n"));
  262. #endif
  263. #endif //_WINCE
  264.     return true;
  265. }
  266. bool HLXMapProf::HandleSetSeedCmd(const UTVector<UTString>& info)
  267. {
  268.     bool ret = false;
  269.     unsigned int seed = 0;
  270.     if (!UTParamUtil::GetUInt(info[1], seed))
  271.     {
  272. DPRINTF(D_ERROR, ("HLXMapProf::HandleSetSeedCmd : failed to convert parametern"));
  273.     }
  274.     else
  275.     {
  276.         ret = true;
  277.         srand(seed);
  278.     }
  279.     return ret;
  280. }
  281. bool HLXMapProf::HandleCreateElCmd(const UTVector<UTString>& info)
  282. {
  283.     bool ret = false;
  284.     int index = 0;
  285.     if (!UTParamUtil::GetInt(info[1], index))
  286.     {
  287. DPRINTF(D_ERROR, ("HLXMapProf::HandleCreateElCmd : failed to convert parametern"));
  288.     }
  289.     else
  290.         ret = PropagateCall(m_array, &GenMapProfBase::CreateElement, index);
  291.     return ret;
  292. }
  293. #ifdef XXXSAB
  294. bool HLXMapProf::CreateElement(int index)
  295. {
  296.     bool ret = true;
  297.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  298.     {
  299. GenMapProfBase* pObj = (GenMapProfBase*)m_array[i];
  300. if (pObj)
  301.     ret = pObj->CreateElement(index);
  302.     }
  303.     return ret;
  304. }
  305. #endif /* XXXSAB */
  306. bool HLXMapProf::HandleCreateElementsCmd(const UTVector<UTString>& info)
  307. {
  308.     bool ret = false;
  309.     int index = 0;
  310.     int num = 0;
  311.     if (!UTParamUtil::GetInt(info[1], index) ||
  312.         !UTParamUtil::GetInt(info[2], num))
  313.     {
  314. DPRINTF(D_ERROR, ("HLXMapProf::HandleCreateElementsCmd : failed to convert parametern"));
  315.     }
  316.     else
  317. ret = PropagateCall(m_array, &GenMapProfBase::CreateElements,
  318.                             index, num);
  319.     return ret;
  320. }
  321. bool HLXMapProf::HandleClearElCmd(const UTVector<UTString>& /*info*/)
  322. {
  323.     return PropagateCall(m_array, &GenMapProfBase::ClearElements);
  324.     // return ClearElements();
  325. }
  326. #ifdef XXXSAB
  327. bool HLXMapProf::ClearElements()
  328. {
  329.     bool ret = true;
  330.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  331.     {
  332. GenMapProfBase* pObj = (GenMapProfBase*)m_array[i];
  333. if (pObj)
  334.     ret = pObj->ClearElements();
  335.     }
  336.     return ret;
  337. }
  338. #endif /* XXXSAB */
  339. bool HLXMapProf::HandleGetCountCmd(const UTVector<UTString>& info)
  340. {
  341.     bool ret = false;
  342.     int expected = 0;
  343.     if (!UTParamUtil::GetInt(info[1], expected))
  344.     {
  345. DPRINTF(D_ERROR, ("HLXMapProf::HandleGetCountCmd : failed to convert parametern"));
  346.     }
  347.     else
  348. ret = GetCount(expected);
  349.     return ret;
  350. }
  351. bool HLXMapProf::GetCount(int expected)
  352. {
  353.     bool ret = true;
  354.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  355.     {
  356. GenMapProfBase* pObj = (GenMapProfBase*)m_array[i];
  357. if (pObj)
  358.     ret = pObj->GetCount(expected);
  359.     }
  360.     return ret;
  361. }
  362. bool HLXMapProf::HandleIsEmptyCmd(const UTVector<UTString>& info)
  363. {
  364.     bool ret = false;
  365.     bool expected = false;
  366.     if (!UTParamUtil::GetBool(info[1],expected))
  367.     {
  368. DPRINTF(D_ERROR, ("HLXMapProf::HandleIsEmptyCmd : failed to convert parametern"));
  369.     }
  370.     else
  371. ret = IsEmpty(expected);
  372.     return ret;
  373. }
  374. bool HLXMapProf::IsEmpty(bool expected)
  375. {
  376.     bool ret = true;
  377.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  378.     {
  379. GenMapProfBase* pObj = (GenMapProfBase*)m_array[i];
  380. if (pObj)
  381.     ret = pObj->IsEmpty(expected);
  382.     }
  383.     return ret;
  384. }
  385. bool HLXMapProf::HandleLookupCmd(const UTVector<UTString>& info)
  386. {
  387.     bool ret = false;
  388.     int index = 0;
  389.     bool expected = false;
  390.     if (!UTParamUtil::GetInt(info[1], index) ||
  391. !UTParamUtil::GetBool(info[2],expected))
  392.     {
  393. DPRINTF(D_ERROR, ("HLXMapProf::HandleLookupCmd : failed to convert parametern"));
  394.     }
  395.     else
  396. ret = Lookup(index, expected);
  397.     return ret;
  398. }
  399. bool HLXMapProf::Lookup(int index, bool expected)
  400. {
  401.     bool ret = true;
  402.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  403.     {
  404. GenMapProfBase* pObj = (GenMapProfBase*)m_array[i];
  405. if (pObj)
  406.     ret = pObj->Lookup(index, expected);
  407.     }
  408.     return ret;
  409. }
  410. bool HLXMapProf::HandleSetAtCmd(const UTVector<UTString>& info)
  411. {
  412.     bool ret = false;
  413.     int index = 0;
  414.     if (!UTParamUtil::GetInt(info[1], index))
  415.     {
  416. DPRINTF(D_ERROR, ("HLXMapProf::HandleSetCmd : failed to convert parametern"));
  417.     }
  418.     else
  419. ret = SetAt(index);
  420.     return ret;
  421. }
  422. bool HLXMapProf::SetAt(int index)
  423. {
  424.     bool ret = true;
  425.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  426.     {
  427. GenMapProfBase* pObj = (GenMapProfBase*)m_array[i];
  428. if (pObj)
  429.     ret = pObj->SetAt(index);
  430.     }
  431.     
  432.     return ret;
  433. }
  434. bool HLXMapProf::HandleRemoveKeyCmd(const UTVector<UTString>& info)
  435. {
  436.     bool ret = false;
  437.     int index = 0;
  438.     bool expected = false;
  439.     if (!UTParamUtil::GetInt(info[1], index) ||
  440. !UTParamUtil::GetBool(info[2],expected))
  441.     {
  442. DPRINTF(D_ERROR, ("HLXMapProf::HandleRemoveKeyCmd : failed to convert parametern"));
  443.     }
  444.     else
  445. ret = RemoveKey(index, expected);
  446.     return ret;
  447. }
  448. bool HLXMapProf::RemoveKey(int index, bool expected)
  449. {
  450.     bool ret = true;
  451.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  452.     {
  453. GenMapProfBase* pObj = (GenMapProfBase*)m_array[i];
  454. if (pObj)
  455.     ret = pObj->RemoveKey(index, expected);
  456.     }
  457.     return ret;
  458. }
  459. bool HLXMapProf::HandleRemoveAllCmd(const UTVector<UTString>& /*info*/)
  460. {
  461.     bool ret = true;
  462.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  463.     {
  464. GenMapProfBase* pObj = (GenMapProfBase*)m_array[i];
  465. if (pObj)
  466.     ret = pObj->RemoveAll();
  467.     }
  468.     return ret;
  469. }
  470. bool HLXMapProf::HandleRhsArrayOpCmd(const UTVector<UTString>& info)
  471. {
  472.     bool ret = false;
  473.     int index = 0;
  474.     bool expected = false;
  475.     if (!UTParamUtil::GetInt(info[1], index) ||
  476. !UTParamUtil::GetBool(info[2], expected))
  477.     {
  478. DPRINTF(D_ERROR, ("HLXMapProf::HandleRhsArrayOpCmd : failed to convert parametern"));
  479.     }
  480.     else
  481.     {
  482. ret = RhsArrayOp(index, expected);
  483.     }
  484.     return ret;
  485. }
  486. bool HLXMapProf::RhsArrayOp(int index, bool expected)
  487. {
  488.     bool ret = true;
  489.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  490.     {
  491. GenMapProfBase* pObj = (GenMapProfBase*)m_array[i];
  492. if (pObj)
  493. {
  494.     ret = pObj->RhsArrayOp(index, expected);
  495. }
  496.     }
  497.     return ret;
  498. }
  499. bool HLXMapProf::HandleLhsArrayOpCmd(const UTVector<UTString>& info)
  500. {
  501.     bool ret = false;
  502.     int index = 0;
  503.     if (!UTParamUtil::GetInt(info[1], index))
  504.     {
  505. DPRINTF(D_ERROR, ("HLXMapProf::HandleLhsArrayOpCmd : failed to convert parametern"));
  506.     }
  507.     else
  508. ret = LhsArrayOp(index);
  509.     return ret;
  510. }
  511. bool HLXMapProf::LhsArrayOp(int index)
  512. {
  513.     bool ret = true;
  514.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  515.     {
  516. GenMapProfBase* pObj = (GenMapProfBase*)m_array[i];
  517. if (pObj)
  518.     ret = pObj->LhsArrayOp(index);
  519.     }
  520.     return ret;
  521. }
  522. bool HLXMapProf::HandleIsNullCmd(const UTVector<UTString>& info)
  523. {
  524.     bool ret = false;
  525.     int index = 0;
  526.     bool expected = false;
  527.     if (!UTParamUtil::GetInt(info[1], index) ||
  528. !UTParamUtil::GetBool(info[2], expected))
  529.     {
  530. DPRINTF(D_ERROR, ("HLXMapProf::HandleIsNullCmd : failed to convert parametern"));
  531.     }
  532.     else
  533.     {
  534. ret = IsNull(index, expected);
  535.     }
  536.     return ret;
  537. }
  538. bool HLXMapProf::IsNull(int index, bool expected)
  539. {
  540.     bool ret = true;
  541.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  542.     {
  543. GenMapProfBase* pObj = (GenMapProfBase*)m_array[i];
  544. if (pObj)
  545. {
  546.     ret = pObj->IsNull(index, expected);
  547. }
  548.     }
  549.     return ret;
  550. }
  551. bool HLXMapProf::HandleRunMapSpecificProfsCmd(const UTVector<UTString>& /*info*/)
  552. {
  553.     bool ret = true;
  554.     for (int i = 0; ret && (i < m_array.GetSize()); i++)
  555.     {
  556. GenMapProfBase* pObj = (GenMapProfBase*)m_array[i];
  557. if (pObj)
  558.     ret = pObj->RunMapSpecificProfs();
  559.     }
  560.     return ret;
  561. }
  562. bool HLXMapProf::HandleProfileInsertionsCmd(const UTVector<UTString>& info)
  563. {
  564.     bool ret = false;
  565.     int typeIdx = -1;
  566.     if (!UTParamUtil::GetInt(info[1], typeIdx) ||
  567.         (typeIdx < 0 || typeIdx >= m_array.GetSize()))
  568.     {
  569. DPRINTF(D_ERROR, ("HLXMapProf::HandleProfileInsertionsCmd : failed to convert parametern"));
  570.     }
  571.     else
  572.     {
  573. GenMapProfBase* pObj = (GenMapProfBase*)m_array[typeIdx];
  574. if (pObj)
  575.     ret = pObj->ProfileInsertions(m_typeArray[typeIdx]);
  576.     }
  577.     return ret;
  578. }
  579. bool HLXMapProf::HandleInitHashTableCmd(const UTVector<UTString>& info)
  580. {
  581.     bool ret = false;
  582.     int typeIdx = -1;
  583.     int num = 0;
  584.     if (!UTParamUtil::GetInt(info[1], typeIdx) ||
  585.         (typeIdx < 0 || typeIdx >= m_array.GetSize()) ||
  586. !UTParamUtil::GetInt(info[2], num))
  587.     {
  588. DPRINTF(D_ERROR, ("HLXMapProf::HandleInitHashTableCmd : failed to convert parametern"));
  589.     }
  590.     else
  591.     {
  592. GenMapProfBase* pObj = (GenMapProfBase*)m_array[typeIdx];
  593. if (pObj)
  594.     ret = pObj->InitHashTable(num);
  595.     }
  596.     return ret;
  597. }