From d5d8213871d8cb68b2e4ef9b3557879c80ff5b51 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sat, 1 Jun 2019 15:52:32 +0200 Subject: Added support for attributes/properties types --- json/jsonparse.cc | 12 ++++++------ json/jsonwrite.cc | 7 +++++-- 2 files changed, 11 insertions(+), 8 deletions(-) (limited to 'json') diff --git a/json/jsonparse.cc b/json/jsonparse.cc index a78affbe..df21eb0f 100644 --- a/json/jsonparse.cc +++ b/json/jsonparse.cc @@ -309,7 +309,7 @@ bool is_blackbox(JsonNode *node) } void json_import_cell_params(Context *ctx, string &modname, CellInfo *cell, JsonNode *param_node, - std::unordered_map *dest, int param_id) + std::unordered_map *dest, int param_id) { // JsonNode *param; @@ -319,9 +319,9 @@ void json_import_cell_params(Context *ctx, string &modname, CellInfo *cell, Json pId = ctx->id(param_node->data_dict_keys[param_id]); if (param->type == 'N') { - (*dest)[pId] = std::to_string(param->data_number); + (*dest)[pId].setNumber(param->data_number); } else if (param->type == 'S') - (*dest)[pId] = param->data_string; + (*dest)[pId].setString(param->data_string); else log_error("JSON parameter type of \"%s\' of cell \'%s\' not supported\n", pId.c_str(ctx), cell->name.c_str(ctx)); @@ -333,7 +333,7 @@ void json_import_cell_params(Context *ctx, string &modname, CellInfo *cell, Json } void json_import_net_attrib(Context *ctx, string &modname, NetInfo *net, JsonNode *param_node, - std::unordered_map *dest, int param_id) + std::unordered_map *dest, int param_id) { // JsonNode *param; @@ -343,9 +343,9 @@ void json_import_net_attrib(Context *ctx, string &modname, NetInfo *net, JsonNod pId = ctx->id(param_node->data_dict_keys[param_id]); if (param->type == 'N') { - (*dest)[pId] = std::to_string(param->data_number); + (*dest)[pId].setNumber(param->data_number); } else if (param->type == 'S') - (*dest)[pId] = param->data_string; + (*dest)[pId].setString(param->data_string); else log_error("JSON parameter type of \"%s\' of net \'%s\' not supported\n", pId.c_str(ctx), net->name.c_str(ctx)); diff --git a/json/jsonwrite.cc b/json/jsonwrite.cc index bedb2449..8c1f914f 100644 --- a/json/jsonwrite.cc +++ b/json/jsonwrite.cc @@ -48,13 +48,16 @@ std::string get_name(IdString name, Context *ctx) return get_string(name.c_str(ctx)); } -bool write_parameters(std::ostream &f, Context *ctx, const std::unordered_map ¶meters, bool for_module=false) +bool write_parameters(std::ostream &f, Context *ctx, const std::unordered_map ¶meters, bool for_module=false) { bool first = true; for (auto ¶m : parameters) { f << stringf("%s\n", first ? "" : ","); f << stringf(" %s%s: ", for_module ? "" : " ", get_name(param.first,ctx).c_str()); - f << get_string(param.second); + if (param.second.isString()) + f << get_string(param.second); + else + f << param.second.num; first = false; } return first; -- cgit v1.2.3