text: // Copyright (c) 2009-2019 The Bitcoin Core developers
  // Distributed under the MIT software license, see the accompanying
  // file COPYING or http://www.opensource.org/licenses/mit-license.php.
  
  #include <checkpoints.h>
  
  #include <chain.h>
  #include <chainparams.h>
  #include <reverse_iterator.h>
  #include <validation.h>
  
  #include <stdint.h>
  
  
  namespace Checkpoints {
  
      CBlockIndex* GetLastCheckpoint(const CCheckpointData& data)
      {
          const MapCheckpoints& checkpoints = data.mapCheckpoints;
  
          for (const MapCheckpoints::value_type& i : reverse_iterate(checkpoints))
          {
              const uint256& hash = i.second;
              CBlockIndex* pindex = LookupBlockIndex(hash);
              if (pindex) {
                  return pindex;
              }
          }
          return nullptr;
      }
  
      int GetLastCheckpointHeight(const CCheckpointData& data)
      {
          int nHeightLast = 0;
          const MapCheckpoints& checkpoints = data.mapCheckpoints;
  
          for (const MapCheckpoints::value_type& i : reverse_iterate(checkpoints)) {
              if (i.first > nHeightLast)
                  nHeightLast = i.first;
          }
          return nHeightLast;
      }
  
  } // namespace Checkpoints
  