// Copyright (c) Facebook, Inc. and its affiliates. // This source code is licensed under the MIT license found in the // LICENSE file in the root directory of this source tree. #pragma once #include #include #include namespace facebook { namespace xplat { namespace samples { // In a less contrived example, Sample would be part of a traditional // C++ library. class Sample { public: std::string hello(); double add(double a, double b); std::string concat(const std::string& a, const std::string& b); std::string repeat(int count, const std::string& str); void save(std::map dict); std::map load(); void call_later(int msec, std::function f); void except(); double twice(double n); private: std::map state_; }; class SampleCxxModule : public module::CxxModule { public: SampleCxxModule(std::unique_ptr sample); std::string getName(); virtual auto getConstants() -> std::map; virtual auto getMethods() -> std::vector; private: void save(folly::dynamic args); void load(folly::dynamic args, Callback cb); std::unique_ptr sample_; }; }}} extern "C" facebook::xplat::module::CxxModule *SampleCxxModule();