Skip to content

Instantly share code, notes, and snippets.

@conr2d
Last active December 9, 2022 17:20
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save conr2d/3655a66a44209a3b8c1118a63a1ec35f to your computer and use it in GitHub Desktop.
Save conr2d/3655a66a44209a3b8c1118a63a1ec35f to your computer and use it in GitHub Desktop.
Pack parameters example
#include <eosio/eosio.hpp>
#include <eosio/asset.hpp>
using namespace eosio;
using namespace std;
class test: public contract {
public:
using contract::contract;
/**
* pack parameters
*/
[[eosio::action]]
void usepack(name from, name to, asset quantity, string memo) {
vector<char> packed = eosio::pack(std::make_tuple(from, to, quantity, memo));
printhex(packed.data(), packed.size());
}
[[eosio::action]]
void usestream(name from, name to, asset quantity, string memo) {
char buf[512];
datastream<char*> ds(buf, sizeof(buf));
ds << from;
ds << to;
ds << quantity;
ds << memo;
vector<char> packed = {buf, buf + ds.tellp()};
printhex(packed.data(), packed.size());
}
/**
* unpack parameters
*/
struct transfer {
name from;
name to;
asset quantity;
string memo;
};
[[eosio::action]]
void useunpack(vector<char> packed) {
auto unpacked = eosio::unpack<transfer>(packed);
print(unpacked.from, unpacked.to, unpacked.quantity, unpacked.memo);
}
[[eosio::action]]
void usestream2(vector<char> packed) {
name from;
name to;
asset quantity;
string memo;
datastream<char*> ds(packed.data(), packed.size());
ds >> from;
ds >> to;
ds >> quantity;
ds >> memo;
print(from, to, quantity, memo);
}
};
@NatPDeveloper
Copy link

Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment