Browse Source

script: move ToString and ValueString out of the header

tags/v0.15.1
Cory Fields 6 years ago
parent
commit
db8eb54bd7
2 changed files with 34 additions and 29 deletions
  1. 33
    0
      src/script/script.cpp
  2. 1
    29
      src/script/script.h

+ 33
- 0
src/script/script.cpp View File

@@ -7,6 +7,16 @@

#include <boost/foreach.hpp>

namespace {
inline std::string ValueString(const std::vector<unsigned char>& vch)
{
if (vch.size() <= 4)
return strprintf("%d", CScriptNum(vch).getint());
else
return HexStr(vch);
}
} // anon namespace

using namespace std;

const char* GetOpName(opcodetype opcode)
@@ -253,3 +263,26 @@ bool CScript::HasCanonicalPushes() const
}
return true;
}

std::string CScript::ToString() const
{
std::string str;
opcodetype opcode;
std::vector<unsigned char> vch;
const_iterator pc = begin();
while (pc < end())
{
if (!str.empty())
str += " ";
if (!GetOp(pc, opcode, vch))
{
str += "[error]";
return str;
}
if (0 <= opcode && opcode <= OP_PUSHDATA4)
str += ValueString(vch);
else
str += GetOpName(opcode);
}
return str;
}

+ 1
- 29
src/script/script.h View File

@@ -318,13 +318,6 @@ private:
int64_t m_value;
};

inline std::string ValueString(const std::vector<unsigned char>& vch)
{
if (vch.size() <= 4)
return strprintf("%d", CScriptNum(vch).getint());
else
return HexStr(vch);
}

/** Serialized script, used inside transaction inputs and outputs */
class CScript : public std::vector<unsigned char>
@@ -571,28 +564,7 @@ public:
return (size() > 0 && *begin() == OP_RETURN);
}

std::string ToString() const
{
std::string str;
opcodetype opcode;
std::vector<unsigned char> vch;
const_iterator pc = begin();
while (pc < end())
{
if (!str.empty())
str += " ";
if (!GetOp(pc, opcode, vch))
{
str += "[error]";
return str;
}
if (0 <= opcode && opcode <= OP_PUSHDATA4)
str += ValueString(vch);
else
str += GetOpName(opcode);
}
return str;
}
std::string ToString() const;
void clear()
{
// The default std::vector::clear() does not release memory.

Loading…
Cancel
Save