void schema_flat_map_impl< K, V >::get_str_schema( std::string& s ) { if( str_schema != "" ) { s = str_schema; return; } std::vector< std::shared_ptr< abstract_schema > > deps; get_deps( deps ); std::string k_name, v_name; deps[0]->get_name(k_name); deps[1]->get_name(v_name); std::string my_name; get_name( my_name ); fc::mutable_variant_object mvo; mvo("name", my_name) ("type", "map") ("ktype", k_name) ("vtype", v_name) ; str_schema = fc::json::to_string( mvo ); s = str_schema; return; }
void schema_optional_impl< E >::get_str_schema( std::string& s ) { if( str_schema != "" ) { s = str_schema; return; } std::vector< std::shared_ptr< abstract_schema > > deps; get_deps( deps ); std::string e_type; deps[0]->get_name(e_type); std::string my_name; get_name( my_name ); fc::mutable_variant_object mvo; mvo("name", my_name) ("type", "optional") ("etype", e_type) ; str_schema = fc::json::to_string( mvo ); s = str_schema; return; }
void schema_static_variant_impl<Types...>::get_str_schema(std::string &s) { if (str_schema != "") { s = str_schema; return; } std::vector<std::shared_ptr<abstract_schema>> deps; get_deps(deps); std::vector<std::string> e_types; for (std::shared_ptr<abstract_schema> &schema : deps) { e_types.emplace_back(); schema->get_name(e_types.back()); } std::string my_name; get_name(my_name); fc::mutable_variant_object mvo; mvo("name", my_name) ("type", "static_variant") ("etypes", e_types); str_schema = fc::json::to_string(mvo); s = str_schema; return; }
void operator()( const char* name )const { if( (value.*member).valid() ) mvo( name, value.*member ); }