From f2f5f37fb93a3fd27f3af163646c44650ea89fa8 Mon Sep 17 00:00:00 2001 From: moneroexamples Date: Mon, 6 May 2019 07:15:04 +0800 Subject: [PATCH] parse_subaddress_index added --- src/UniversalIdentifier.cpp | 2 ++ src/tools.cpp | 37 +++++++++++++++++++++++++++++++++++++ src/tools.h | 3 +++ 3 files changed, 42 insertions(+) diff --git a/src/UniversalIdentifier.cpp b/src/UniversalIdentifier.cpp index 5c6f32f..0675866 100644 --- a/src/UniversalIdentifier.cpp +++ b/src/UniversalIdentifier.cpp @@ -190,6 +190,8 @@ Output::identify(transaction const& tx, i, subaddress_spendkey); + // do same comparison as above depending of the + // avaliabity of the PrimaryAddress Account if (!pacc) { mine_output = (pub_spend_key == subaddress_spendkey); diff --git a/src/tools.cpp b/src/tools.cpp index f459eea..3f8b31f 100755 --- a/src/tools.cpp +++ b/src/tools.cpp @@ -220,4 +220,41 @@ nettype_based_on_address(string const& address) return {determined_network_type, determined_address_type}; } + +boost::optional +parse_subaddress_index(string idx_str) +{ + vector split_index; + + boost::split(split_index, idx_str, + boost::is_any_of(",/")); + + if (split_index.empty() + || split_index.size() != 2) + { + cerr << "Incorrect subaddress index given: " + << idx_str << '\n'; + return {}; + } + + try + { + auto idx_major + = boost::lexical_cast(split_index[0]); + auto idx_minor + = boost::lexical_cast(split_index[1]); + + return subaddress_index {idx_major, idx_minor}; + + } + catch (boost::bad_lexical_cast const& e) + { + cerr << e.what() << '\n'; + } + + return {}; +} + + + } diff --git a/src/tools.h b/src/tools.h index dbd988e..6cedde8 100755 --- a/src/tools.h +++ b/src/tools.h @@ -76,4 +76,7 @@ for_each_network_type(F f) pair nettype_based_on_address(string const& address); +boost::optional +parse_subaddress_index(string idx_str); + }