Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
tizen.helpers-body.mustache Maven / Gradle / Ivy
#include
#include
#include
#include
#include
#include
#include "Helpers.h"
#include "Object.h"
using namespace std;
using namespace Tizen::{{prefix}};
void helper_func(JsonObject *object, const gchar* member_name, JsonNode *member_node,gpointer user_data)
{
gchar* member_string;
if (!JSON_NODE_HOLDS_VALUE(member_node)) {
if (JSON_NODE_HOLDS_OBJECT(member_node)) {
JsonNode* tempnode = json_node_alloc();
json_node_init_object(tempnode,json_node_get_object(member_node));
member_string = json_to_string(tempnode,false);
json_node_free(tempnode);
} else {
JsonNode* tempnode = json_node_alloc();
json_node_init_array(tempnode,json_node_get_array(member_node));
member_string = json_to_string(tempnode,false);
json_node_free(tempnode);
}
} else {
member_string = (char*) json_node_get_string(member_node);
if (member_string == NULL) {
char * valueType = (char*) json_node_type_name(member_node);
if(strcmp(valueType,"Boolean") == 0){
gboolean member_boolean = json_node_get_boolean(member_node);
if (member_boolean == 0) {
member_string = new char[std::strlen("false") + 1];
strcpy(member_string, "false");
} else {
member_string = new char[std::strlen("true") + 1];
strcpy(member_string, "true");
}
}
else if(strcmp(valueType,"Integer") == 0){
long long int member_int = json_node_get_int(member_node);
ostringstream ss;
ss << member_int;
string temp_member = ss.str();
const char * temp_char = temp_member.c_str();
member_string = new char[strlen(temp_char) + 1];
strcpy(member_string, temp_char);
}
else{
double member_double = json_node_get_double(member_node);
ostringstream ss;
ss << member_double;
string temp_member = ss.str();
const char * temp_char = temp_member.c_str();
member_string = new char[strlen(temp_char) + 1];
strcpy(member_string, temp_char);
}
}
}
map* new_map = static_cast*>(user_data);
(*new_map)[string(member_name)] = string(member_string);
delete[] member_string;
}
char * json_to_string(JsonNode *node, gboolean pretty)
{
JsonGenerator *generator;
char *retval;
g_return_val_if_fail(node != NULL, NULL);
generator = json_generator_new();
json_generator_set_pretty(generator, pretty);
json_generator_set_root(generator, node);
retval = json_generator_to_data(generator, NULL);
g_object_unref(generator);
return retval;
}
JsonNode *
json_from_string(const char *str, GError **mygerror)
{
JsonParser *parser;
JsonNode *retval;
g_return_val_if_fail(str != NULL, NULL);
mygerror = NULL;
parser = json_parser_new();
if (!json_parser_load_from_data(parser, str, -1, mygerror))
{
g_object_unref(parser);
if(str == NULL)
return NULL;
retval = json_node_alloc();
retval = json_node_init_string (retval, str);
return retval;
}
retval = json_node_copy(json_parser_get_root(parser));
g_object_unref(parser);
return retval;
}
JsonNode*
converttoJson(void* ptr, string type, string containerType)
{
if (ptr == NULL)
return NULL;
if (strcmp(containerType.c_str(), "array") == 0) {
if (!type.empty()) {
JsonArray* json_array = json_array_new();
JsonNode* node = json_node_alloc();
JsonNode* node_temp;
if (strcmp("bool", type.c_str()) == 0) {
list* new_list = static_cast*> (ptr);
for (list::iterator it = (*new_list).begin(); it != (*new_list).end(); it++) {
bool b = *it;
node_temp = converttoJson(&b, type, "");
json_array_add_element(json_array, node_temp);
}
} else if (strcmp("std::string", type.c_str()) == 0) {
list* new_list = static_cast*> (ptr);
for (list::iterator it = (*new_list).begin(); it != (*new_list).end(); it++) {
string b = *it;
node_temp = converttoJson(&b, type, "");
json_array_add_element(json_array, node_temp);
}
} else if (strcmp("int", type.c_str()) == 0) {
list* new_list = static_cast*> (ptr);
for (list::iterator it = (*new_list).begin(); it != (*new_list).end(); it++) {
int b = *it;
node_temp = converttoJson(&b, type, "");
json_array_add_element(json_array, node_temp);
}
} else if (strcmp("long long", type.c_str()) == 0) {
list* new_list = static_cast*> (ptr);
for (list::iterator it = (*new_list).begin(); it != (*new_list).end(); it++) {
long long b = *it;
node_temp = converttoJson(&b, type, "");
json_array_add_element(json_array, node_temp);
}
} else if (strcmp("float", type.c_str()) == 0) {
list* new_list = static_cast*> (ptr);
for (list::iterator it = (*new_list).begin(); it != (*new_list).end(); it++) {
float b = *it;
node_temp = converttoJson(&b, type, "");
json_array_add_element(json_array, node_temp);
}
} else if (strcmp("double", type.c_str()) == 0) {
list* new_list = static_cast*> (ptr);
for (list::iterator it = (*new_list).begin(); it != (*new_list).end(); it++) {
double b = *it;
node_temp = converttoJson(&b, type, "");
json_array_add_element(json_array, node_temp);
}
} else {
cout << "This case not handled in Sami Helpers. Make a loop and iterate there." << endl;
//Object* obj = static_cast (ptr);
//GError *mygerror = (GError*) malloc(sizeof (GError));
//JsonNode *node = json_from_string(obj->toJson(), &mygerror);
//return node;
}
json_node_init_array(node, json_array);
json_array_unref(json_array);
return node;
}
return NULL;
} else if (strcmp("std::string", type.c_str()) == 0) {
JsonNode* node = json_node_alloc();
string* v = static_cast (ptr);
//const_gchar* b = v;
json_node_init(node, JSON_NODE_VALUE);
json_node_set_string(node, v->c_str());
return node;
} else if (strcmp("int", type.c_str()) == 0) {
JsonNode* node = json_node_alloc();
int* v = static_cast (ptr);
gint b = *v;
json_node_init(node, JSON_NODE_VALUE);
json_node_set_int(node, b);
return node;
} else if (strcmp("float", type.c_str()) == 0) {
JsonNode* node = json_node_alloc();
float* v = static_cast (ptr);
gdouble b = (double) *v;
json_node_init(node, JSON_NODE_VALUE);
json_node_set_double(node, b);
return node;
} else if (strcmp("long long", type.c_str()) == 0) {
JsonNode* node = json_node_alloc();
long long* v = static_cast (ptr);
gint64 b = (long long) *v;
json_node_init(node, JSON_NODE_VALUE);
json_node_set_int(node, b);
return node;
} else if (strcmp("double", type.c_str()) == 0) {
JsonNode* node = json_node_alloc();
double* v = static_cast (ptr);
gdouble b = *v;
json_node_init(node, JSON_NODE_VALUE);
json_node_set_double(node, b);
return node;
} else if (strcmp("bool", type.c_str()) == 0) {
JsonNode* node = json_node_alloc();
bool* v = static_cast (ptr);
gboolean b = *v;
json_node_init(node, JSON_NODE_VALUE);
json_node_set_boolean(node, b);
return node;
}
else if (!isprimitive(type)) {
//Object* obj = static_cast (ptr);
//GError *mygerror = (GError*) malloc(sizeof (GError));
//JsonNode *node = json_from_string(obj->toJson(), &mygerror);
//return node;
}
return NULL;
}
// DateTime Class to be seen
// void
// toISO8601(String str, DateTime* dt) {
// int idx, start;
// int year, month, day, hour, minute, second;
// start = 0;
// str.IndexOf("-", start, idx);
// String yearString;
// str.SubString(0, idx, yearString);
// Integer::Parse(yearString, year);
// start = idx+1;
// str.IndexOf("-", start, idx);
// String monthString;
// str.SubString(start, idx - start, monthString);
// Integer::Parse(monthString, month);
// start = idx+1;
// str.IndexOf("T", start, idx);
// String dayString;
// str.SubString(start, idx - start, dayString);
// Integer::Parse(dayString, day);
// start = idx+1;
// str.IndexOf(":", start, idx);
// if(idx > 0) {
// String hourString;
// str.SubString(start, idx - start, hourString);
// Integer::Parse(hourString, hour);
// }
// start = idx+1;
// str.IndexOf(":", start, idx);
// if(idx > 0) {
// String minuteString;
// str.SubString(start, idx - start, minuteString);
// Integer::Parse(minuteString, minute);
// }
// start = idx+1;
// str.IndexOf("+", start, idx);
// if(idx > 0) {
// String secondString;
// str.SubString(start, idx - start, secondString);
// Integer::Parse(secondString, second);
// }
// dt->SetValue(year, month, day, hour, minute, second);
// }
void
jsonToValue(void* target, JsonNode* node, string type, string innerType)
{
if (target == NULL || node == NULL || !JSON_NODE_HOLDS_VALUE(node)) {
return;
} else if (strcmp("bool", type.c_str()) == 0) {
bool* val = static_cast (target);
*val = json_node_get_boolean(node);
} else if (strcmp("int", type.c_str()) == 0) {
int* val = static_cast (target);
*val = json_node_get_int(node);
} else if (strcmp("float", type.c_str()) == 0) {
float* val = static_cast (target);
*val = (float)(json_node_get_double(node));
} else if (strcmp("long long", type.c_str()) == 0) {
long long* val = static_cast (target);
*val = (long long)(json_node_get_int(node));
} else if (strcmp("double", type.c_str()) == 0) {
double* val = static_cast (target);
*val = json_node_get_double(node);
} else if (strcmp("std::string", type.c_str()) == 0) {
string* val = static_cast (target);
const gchar *temp = json_node_get_string(node);
if (node == NULL) {
}
*val = string(temp);
}
//Implement
// else if(type.StartsWith("DateTime", 0)) {
// JsonString* json = static_cast< JsonString* >(ptr);
// String str;
// str.Append(json->GetPointer());
// DateTime* val = static_cast< DateTime* > (target);
// toISO8601(str, val);
// }
else if (!isprimitive(type)) {
cout<<"SOMETHING IS WRONG"<(target);
// JsonArray* pJsonArray = static_cast< JsonArray* >(ptr);
// IEnumeratorT< IJsonValue* >* pEnum = pJsonArray->GetEnumeratorN();
// while (pEnum->MoveNext() == E_SUCCESS) {
// IJsonValue* pJsonValue = NULL;
// pEnum->GetCurrent(pJsonValue);
// void* updatedTarget = NULL;
// updatedTarget = create(innerType);
// if(updatedTarget != NULL) {
// jsonToValue(updatedTarget, pJsonValue, innerType, "");
// obj->Add((Object*)updatedTarget);
// }
// }
// delete pEnum;
// }
}
string
stringify(void* ptr, string type)
{
if(ptr == NULL){
string retval = "";
return retval;
} else if (strcmp("std::string", type.c_str()) == 0) {
string * str = static_cast (ptr);
string retval = string(*str);
return retval;
} else if (strcmp("int", type.c_str()) == 0) {
int* pInt = static_cast (ptr);
stringstream ss;
ss << *pInt;
string retval = ss.str();
return retval;
} else if (strcmp("long long", type.c_str()) == 0) {
long long* pLong = static_cast (ptr);
stringstream ss;
ss << *pLong;
string retval = ss.str();
return retval;
} else if (strcmp("bool", type.c_str()) == 0) {
bool* pBool = static_cast (ptr);
string retval;
if (*pBool == true) {
retval = "true";
} else {
retval = "false";
}
return retval;
} else if (strcmp("double", type.c_str()) == 0) {
double* pDouble = static_cast (ptr);
stringstream ss;
ss << *pDouble;
string retval = ss.str();
return retval;
} else if (strcmp("float", type.c_str()) == 0) {
float* pFloat = static_cast (ptr);
stringstream ss;
ss << *pFloat;
string retval = ss.str();
return retval;
}
return "";
}
bool isprimitive(string type){
if(strcmp("std::string", type.c_str()) == 0||
strcmp("int", type.c_str()) == 0||
strcmp("long long", type.c_str()) == 0||
strcmp("double", type.c_str()) == 0||
strcmp("float", type.c_str()) == 0||
strcmp("bool", type.c_str()) == 0||
strcmp("std::map", type.c_str()) == 0||
strcmp("std::list", type.c_str()) == 0) {
return true;
}
return false;
}