virtual int init( int argc, const char *argv[] ) { offset = 0; curBlock = 0; lastBlock = 0; firstBlock = 0; addrMap.setEmptyKey(emptyKey); addrMap.resize(15 * 1000 * 1000); allAddrs.reserve(15 * 1000 * 1000); optparse::Values &values = parser.parse_args(argc, argv); cutoffBlock = values.get("atBlock"); showAddr = values.get("withAddr"); detailed = values.get("detailed"); limit = values.get("limit"); auto args = parser.args(); for(size_t i=1; i<args.size(); ++i) { loadKeyList(restricts, args[i].c_str()); } if(0<=cutoffBlock) { info("only taking into account transactions before block %" PRIu64 "\n", cutoffBlock); } if(0!=restricts.size()) { info( "restricting output to %" PRIu64 " addresses ...\n", (uint64_t)restricts.size() ); auto e = restricts.end(); auto i = restricts.begin(); restrictMap.setEmptyKey(emptyKey); while(e!=i) { const uint160_t &h = *(i++); restrictMap[h.v] = 1; } } else { if(detailed) { warning("asking for --detailed for *all* addresses in the blockchain will be *very* slow"); warning("as a matter of fact, it likely won't ever finish unless you have *lots* of RAM"); } } info("analyzing blockchain ..."); return 0; }
virtual int init( int argc, char *argv[] ) { curBlock = 0; lastBlock = 0; firstBlock = 0; addrMap.setEmptyKey(emptyKey); addrMap.resize(15 * 1000 * 1000); allAddrs.reserve(15 * 1000 * 1000); option::Stats stats(usageDescriptor, argc, argv); option::Option *buffer = new option::Option[stats.buffer_max]; option::Option *options = new option::Option[stats.options_max]; option::Parser parse(usageDescriptor, argc, argv, options, buffer); if(parse.error()) exit(1); for(int i=0; i<parse.nonOptionsCount(); ++i) { loadKeyList(restricts, parse.nonOption(i)); } if(0!=restricts.size()) { info( "restricting output to %" PRIu64 " addresses ...\n", (uint64_t)restricts.size() ); auto e = restricts.end(); auto i = restricts.begin(); restrictMap.setEmptyKey(emptyKey); while(e!=i) { const uint160_t &h = *(i++); restrictMap[h.v] = 1; } } info("analyzing blockchain ..."); delete [] options; delete [] buffer; return 0; }