1 // Copyright (c) 2009-2010 Satoshi Nakamoto 2 // Copyright (c) 2009-2019 The Bitcoin Core developers 3 // Distributed under the MIT software license, see the accompanying 4 // file COPYING or http://www.opensource.org/licenses/mit-license.php. 5 6 #ifndef BITCOIN_WALLET_ISMINE_H 7 #define BITCOIN_WALLET_ISMINE_H 8 9 #include <script/standard.h> 10 11 #include <stdint.h> 12 #include <bitset> 13 14 class CWallet; 15 class CScript; 16 17 /** IsMine() return codes */ 18 enum isminetype : unsigned int 19 { 20 ISMINE_NO = 0, 21 ISMINE_WATCH_ONLY = 1 << 0, 22 ISMINE_SPENDABLE = 1 << 1, 23 ISMINE_USED = 1 << 2, 24 ISMINE_ALL = ISMINE_WATCH_ONLY | ISMINE_SPENDABLE, 25 ISMINE_ALL_USED = ISMINE_ALL | ISMINE_USED, 26 ISMINE_ENUM_ELEMENTS, 27 }; 28 /** used for bitflags of isminetype */ 29 typedef uint8_t isminefilter; 30 31 /** 32 * Cachable amount subdivided into watchonly and spendable parts. 33 */ 34 struct CachableAmount 35 { 36 // NO and ALL are never (supposed to be) cached 37 std::bitset<ISMINE_ENUM_ELEMENTS> m_cached; 38 CAmount m_value[ISMINE_ENUM_ELEMENTS]; ResetCachableAmount39 inline void Reset() 40 { 41 m_cached.reset(); 42 } SetCachableAmount43 void Set(isminefilter filter, CAmount value) 44 { 45 m_cached.set(filter); 46 m_value[filter] = value; 47 } 48 }; 49 50 #endif // BITCOIN_WALLET_ISMINE_H 51