Skip to content

Commit febebff

Browse files
authored
Merge pull request #1702 from bitshares/1701-improve-serializer
Improve the serializer to fix #1701
2 parents 254da1b + 96dca2c commit febebff

File tree

1 file changed

+23
-23
lines changed
  • programs/js_operation_serializer

1 file changed

+23
-23
lines changed

programs/js_operation_serializer/main.cpp

+23-23
Original file line numberDiff line numberDiff line change
@@ -107,19 +107,21 @@ struct js_name<fc::array<T,N>>
107107
{
108108
static std::string name(){ return "fixed_array "+ fc::to_string(N) + ", " + remove_namespace(fc::get_typename<T>::name()); };
109109
};
110-
template<size_t N> struct js_name<fc::array<char,N>> { static std::string name(){ return "bytes "+ fc::to_string(N); }; };
111-
template<size_t N> struct js_name<fc::array<uint8_t,N>> { static std::string name(){ return "bytes "+ fc::to_string(N); }; };
112-
template<typename T> struct js_name< fc::optional<T> > { static std::string name(){ return "optional " + js_name<T>::name(); } };
110+
template<size_t N> struct js_name<fc::array<char,N>> { static std::string name(){ return "bytes("+ fc::to_string(N) + ")"; }; };
111+
template<size_t N> struct js_name<fc::array<uint8_t,N>> { static std::string name(){ return "bytes("+ fc::to_string(N) + ")"; }; };
112+
template<typename T> struct js_name< fc::optional<T> > { static std::string name(){ return "optional(" + js_name<T>::name() + ")"; } };
113+
template<typename T> struct js_name< fc::smart_ref<T> > { static std::string name(){ return js_name<T>::name(); } };
113114
template<> struct js_name< object_id_type > { static std::string name(){ return "object_id_type"; } };
114-
template<typename T> struct js_name< fc::flat_set<T> > { static std::string name(){ return "set " + js_name<T>::name(); } };
115-
template<typename T> struct js_name< std::vector<T> > { static std::string name(){ return "array " + js_name<T>::name(); } };
115+
template<typename T> struct js_name< fc::flat_set<T> > { static std::string name(){ return "set(" + js_name<T>::name() + ")"; } };
116+
template<typename T> struct js_name< std::vector<T> > { static std::string name(){ return "array(" + js_name<T>::name() + ")"; } };
116117
template<typename T> struct js_name< fc::safe<T> > { static std::string name(){ return js_name<T>::name(); } };
117118

118119

119120
template<> struct js_name< std::vector<char> > { static std::string name(){ return "bytes()"; } };
120-
template<> struct js_name<fc::uint160> { static std::string name(){ return "bytes 20"; } };
121-
template<> struct js_name<fc::sha224> { static std::string name(){ return "bytes 28"; } };
122-
template<> struct js_name<fc::sha256> { static std::string name(){ return "bytes 32"; } };
121+
template<> struct js_name<fc::uint160> { static std::string name(){ return "bytes(20)"; } };
122+
template<> struct js_name<fc::sha1> { static std::string name(){ return "bytes(20)"; } };
123+
template<> struct js_name<fc::sha224> { static std::string name(){ return "bytes(28)"; } };
124+
template<> struct js_name<fc::sha256> { static std::string name(){ return "bytes(32)"; } };
123125
template<> struct js_name<fc::unsigned_int> { static std::string name(){ return "varuint64"; } };
124126
template<> struct js_name< vote_id_type > { static std::string name(){ return "vote_id"; } };
125127
template<> struct js_name< time_point_sec > { static std::string name(){ return "time_point_sec"; } };
@@ -128,18 +130,18 @@ template<uint8_t S, uint8_t T, typename O>
128130
struct js_name<graphene::db::object_id<S,T,O> >
129131
{
130132
static std::string name(){
131-
return "protocol_id_type \"" + remove_namespace(fc::get_typename<O>::name()) + "\"";
133+
return "protocol_id_type(\"" + remove_namespace(fc::get_typename<O>::name()) + "\")";
132134
};
133135
};
134136

135137

136138
template<typename T> struct js_name< std::set<T> > { static std::string name(){ return "set " + js_name<T>::name(); } };
137139

138140
template<typename K, typename V>
139-
struct js_name< std::map<K,V> > { static std::string name(){ return "map (" + js_name<K>::name() + "), (" + js_name<V>::name() +")"; } };
141+
struct js_name< std::map<K,V> > { static std::string name(){ return "map(" + js_name<K>::name() + ", " + js_name<V>::name() +")"; } };
140142

141143
template<typename K, typename V>
142-
struct js_name< fc::flat_map<K,V> > { static std::string name(){ return "map (" + js_name<K>::name() + "), (" + js_name<V>::name() +")"; } };
144+
struct js_name< fc::flat_map<K,V> > { static std::string name(){ return "map(" + js_name<K>::name() + ", " + js_name<V>::name() +")"; } };
143145

144146

145147
template<typename... T> struct js_sv_name;
@@ -148,15 +150,15 @@ template<typename A> struct js_sv_name<A>
148150
{ static std::string name(){ return "\n " + js_name<A>::name(); } };
149151

150152
template<typename A, typename... T>
151-
struct js_sv_name<A,T...> { static std::string name(){ return "\n " + js_name<A>::name() +" " + js_sv_name<T...>::name(); } };
153+
struct js_sv_name<A,T...> { static std::string name(){ return "\n " + js_name<A>::name() +"," + js_sv_name<T...>::name(); } };
152154

153155
template<typename... T>
154156
struct js_name< fc::static_variant<T...> >
155157
{
156158
static std::string name( std::string n = ""){
157159
static const std::string name = n;
158160
if( name == "" )
159-
return "static_variant [" + js_sv_name<T...>::name() + "\n]";
161+
return "static_variant([" + js_sv_name<T...>::name() + "\n]);";
160162
else return name;
161163
}
162164
};
@@ -166,7 +168,7 @@ struct js_name< fc::static_variant<> >
166168
static std::string name( std::string n = ""){
167169
static const std::string name = n;
168170
if( name == "" )
169-
return "static_variant []";
171+
return "static_variant([]);";
170172
else return name;
171173
}
172174
};
@@ -208,7 +210,7 @@ class serialize_member_visitor
208210
template<typename Member, class Class, Member (Class::*member)>
209211
void operator()( const char* name )const
210212
{
211-
std::cout << " " << name <<": " << js_name<Member>::name() <<"\n";
213+
std::cout << " " << name <<": " << js_name<Member>::name() <<",\n";
212214
}
213215
};
214216

@@ -299,7 +301,7 @@ struct serializer< fc::static_variant<T...>, false >
299301

300302
static void generate()
301303
{
302-
std::cout << js_name<fc::static_variant<T...>>::name() << " = static_variant [" + js_sv_name<T...>::name() + "\n]\n\n";
304+
std::cout << "var " << js_name<fc::static_variant<T...>>::name() << " = static_variant([" + js_sv_name<T...>::name() + "\n]);\n\n";
303305
}
304306
};
305307
template<>
@@ -318,7 +320,7 @@ struct serializer< fc::static_variant<>, false >
318320

319321
static void generate()
320322
{
321-
std::cout << js_name<fc::static_variant<>>::name() << " = static_variant []\n\n";
323+
std::cout << js_name<fc::static_variant<>>::name() << " = static_variant([]);\n\n";
322324
}
323325
};
324326

@@ -351,13 +353,11 @@ struct serializer
351353
{
352354
auto name = remove_namespace( js_name<T>::name() );
353355
if( name == "int64" ) return;
354-
std::cout << "" << name
355-
<< " = new Serializer( \n"
356-
<< " \"" + name + "\"\n";
357-
356+
std::cout << "export const " << name
357+
<< " = new Serializer("
358+
<< "\"" + name + "\", {\n";
358359
fc::reflector<T>::visit( serialize_member_visitor() );
359-
360-
std::cout <<")\n\n";
360+
std::cout <<"});\n\n";
361361
}
362362
};
363363

0 commit comments

Comments
 (0)