Hhehongzhemockcpp patch
af7c8d3c创建于 2025年12月26日历史提交
/***

    mockcpp is a generic C/C++ mock framework.

    Copyright (C) <2009>  <Darwin Yuan: darwin.yuan@gmail.com>



    This program is free software: you can redistribute it and/or modify

    it under the terms of the GNU General Public License as published by

    the Free Software Foundation, either version 3 of the License, or

    (at your option) any later version.



    This program is distributed in the hope that it will be useful,

    but WITHOUT ANY WARRANTY; without even the implied warranty of

    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

    GNU General Public License for more details.



    You should have received a copy of the GNU General Public License

    along with this program.  If not, see <http://www.gnu.org/licenses/>.

***/



#include <mockcpp/ApiHookKey.h>

#include <mockcpp/ApiHook.h>

#include <mockcpp/ApiHookHolder.h>



MOCKCPP_NS_START



///////////////////////////////////////////////////////////

ApiHookKey::ApiHookKey(const void* api, ApiHookHolder* holder)

   : apiAddress(api)

   , hookHolder(holder)

{

   hook = new ApiHook(api, holder->getApiHook());

}



///////////////////////////////////////////////////////////

ApiHookKey::ApiHookKey(const void* api)

   : apiAddress(api), hook(0), hookHolder(0)

{

}



////////////////////////////////////////////////////////////

ApiHookKey::~ApiHookKey()

{

   delete hook;

   delete hookHolder;

}   



////////////////////////////////////////////////////////////

bool ApiHookKey::equals(

      const ChainableMockMethodKey* const rhs) const

{

    if(rhs == 0)

    {

       return false;

    }



    if(this == rhs)

    {

       return true;

    }



    ApiHookKey* key = \

          dynamic_cast<ApiHookKey*> \

             (const_cast<ChainableMockMethodKey*>(rhs));

    if(key == 0)

    {

       return false;

    }

     

    return key->apiAddress == this->apiAddress;

}



MOCKCPP_NS_END