message: [docs] Add doxygen comment for CReserveKey
diff: @@ -228,16 +228,35 @@ public:
  }
  };
  -/** A key allocated from the key pool. */
  +/** A wrapper to reserve a key from a wallet keypool
  + *
  + * CReserveKey is used to reserve a key from the keypool. It is passed around
  + * during the CreateTransaction/CommitTransaction procedure.
  + *
  + * Instantiating a CReserveKey does not reserve a keypool key. To do so,
  + * GetReservedKey() needs to be called on the object. Once a key has been
  + * reserved, call KeepKey() on the CReserveKey object to make sure it is not
  + * returned to the keypool. Call ReturnKey() to return the key to the keypool
  + * so it can be re-used (for example, if the key was used in a new transaction
  + * and that transaction was not completed and needed to be aborted).
  + *
  + * If a key is reserved and KeepKey() is not called, then the key will be
  + * returned to the keypool when the CReserveObject goes out of scope.
  + */
  class CReserveKey
  {
  protected:
  + //! The wallet to reserve the keypool key from
  CWallet* pwallet;
  + //! The index of the key in the keypool
  int64_t nIndex{-1};
  + //! The public key
  CPubKey vchPubKey;
  + //! Whether this is from the internal (change output) keypool
  bool fInternal{false};
  public:
  + //! Construct a CReserveKey object. This does NOT reserve a key from the keypool yet
  explicit CReserveKey(CWallet* pwalletIn)
  {
  pwallet = pwalletIn;
  @@ -246,13 +265,17 @@ public:
  CReserveKey(const CReserveKey&) = delete;
  CReserveKey& operator=(const CReserveKey&) = delete;
  + //! Destructor. If a key has been reserved and not KeepKey'ed, it will be returned to the keypool
  ~CReserveKey()
  {
  ReturnKey();
  }
  - void ReturnKey();
  + //! Reserve a key from the keypool
  bool GetReservedKey(CPubKey &pubkey, bool internal = false);
  + //! Return a key to the keypool
  + void ReturnKey();
  + //! Keep the key. Do not return it to the keypool when this object goes out of scope
  void KeepKey();
  };
  