blob: 4940834c1f9122ef54444072a0793487bbafcce3 [file] [log] [blame]
David Tolnay7db73692019-10-20 14:51:12 -04001#include "demo-cxx/demo.h"
David Tolnay1a2683a2020-03-17 19:09:29 -07002#include "demo-rs/src/main.rs.h"
David Tolnay7db73692019-10-20 14:51:12 -04003#include <iostream>
4
5namespace org {
David Tolnayaa17a5a2020-03-01 13:44:24 -08006namespace example {
David Tolnay7db73692019-10-20 14:51:12 -04007
8ThingC::ThingC(std::string appname) : appname(std::move(appname)) {}
9
10ThingC::~ThingC() { std::cout << "done with ThingC" << std::endl; }
11
David Tolnay7c295462020-04-25 12:45:07 -070012std::unique_ptr<ThingC> make_demo(rust::Str appname) {
David Tolnay404d6892020-03-01 20:19:41 -080013 return std::unique_ptr<ThingC>(new ThingC(std::string(appname)));
David Tolnay7db73692019-10-20 14:51:12 -040014}
15
David Tolnayb6a5f672020-04-17 15:04:56 -070016const std::string &get_name(const ThingC &thing) { return thing.appname; }
17
Myron Ahneba35cf2020-02-05 19:41:51 +070018std::unique_ptr<std::vector<uint8_t>> do_thing(SharedThing state) {
19 print_r(*state.y);
20 auto vec = std::unique_ptr<std::vector<uint8_t>>(new std::vector<uint8_t>());
21 for (uint8_t i = 0; i < 10; i++) {
22 vec->push_back(i * i);
23 }
24 return vec;
25}
26
David Tolnay37dd7e12020-04-25 12:51:59 -070027JsonBlob get_jb(const ::rust::Vec<uint8_t> &vec) {
Myron Ahneba35cf2020-02-05 19:41:51 +070028 JsonBlob retval;
29
30 std::cout << "incoming vec length is " << vec.size() << "\n";
31 auto vec_copy = static_cast<std::vector<uint8_t>>(vec);
32 std::cout << "vec_copy length is " << vec_copy.size() << "\n";
33 std::cout << "vec_copy[0] is " << (int)vec_copy[0] << "\n";
34
35 auto blob = std::unique_ptr<std::vector<uint8_t>>(new std::vector<uint8_t>());
36 for (uint8_t i = 0; i < 10; i++) {
37 blob->push_back(i * 2);
38 }
39
40 auto json = std::unique_ptr<std::string>(new std::string("{\"demo\": 23}"));
41
42 retval.json = std::move(json);
43 retval.blob = std::move(blob);
44
45 return retval;
46}
David Tolnay7db73692019-10-20 14:51:12 -040047
David Tolnayaa17a5a2020-03-01 13:44:24 -080048} // namespace example
David Tolnay7db73692019-10-20 14:51:12 -040049} // namespace org