size_t json_measure(json_value *value) { return json_measure_ex(value, default_opts); }
//exit funtion void saveData() { printf("Saving data @ %d...\n", currentMatchId); //make new arrays to hold the data json_value *outputArray = json_array_new(0); json_value **structures = malloc(1024); //TODO: Save brawler data into BRAWLER_DATA_FILE json_value *outputBrawlerArray = json_array_new(0); json_value *(brawlerStructs[4]); //for every champion that may or may not have had data stored for for (int i = 0; i < 1024; i++) { //if this champion had any data stored for it (at least one brawler has been bought on this champ) if (outputData[i].razorfinsBought + outputData[i].ironbacksBought + outputData[i].plundercrabsBought + outputData[i].ocklepodsBought > 0) { //make it a new array structures[i] = json_array_new(11); //push the appropriate data into it json_array_push(structures[i], json_integer_new(i)); json_array_push(structures[i], json_integer_new(outputData[i].razorfinsBought)); json_array_push(structures[i], json_integer_new(outputData[i].ironbacksBought)); json_array_push(structures[i], json_integer_new(outputData[i].plundercrabsBought)); json_array_push(structures[i], json_integer_new(outputData[i].ocklepodsBought)); json_array_push(structures[i], json_integer_new(outputData[i].offensiveBuilds)); json_array_push(structures[i], json_integer_new(outputData[i].defensiveBuilds)); json_array_push(structures[i], json_integer_new(outputData[i].totalDamageTaken)); json_array_push(structures[i], json_integer_new(outputData[i].totalDamageDealt)); json_array_push(structures[i], json_integer_new(outputData[i].wins)); json_array_push(structures[i], json_integer_new(outputData[i].picks)); //add it to the output array json_array_push(outputArray, structures[i]); } } //for every brawler for (int i = 0; i < 4; i++) { //make it a new array brawlerStructs[i] = json_array_new(6); //push the appropriate data into it json_array_push(brawlerStructs[i], json_integer_new(outputBrawlerData[i].offensiveBuilds)); json_array_push(brawlerStructs[i], json_integer_new(outputBrawlerData[i].defensiveBuilds)); json_array_push(brawlerStructs[i], json_integer_new(outputBrawlerData[i].totalDamageTakenByBuyers)); json_array_push(brawlerStructs[i], json_integer_new(outputBrawlerData[i].totalDamageDealtByBuyers)); json_array_push(brawlerStructs[i], json_integer_new(outputBrawlerData[i].wins)); json_array_push(brawlerStructs[i], json_integer_new(outputBrawlerData[i].picks)); json_value *boughtObject = json_object_new(0); for (int j = 0; j < 8192; j++) { if (outputBrawlerData[i].itemsBought[j] < 1) continue; char itemName[63]; snprintf(itemName, 62, "%d", j); json_object_push(boughtObject, itemName, json_integer_new(outputBrawlerData[i].itemsBought[j])); } json_array_push(brawlerStructs[i], boughtObject); //add it to the output array json_array_push(outputBrawlerArray, brawlerStructs[i]); } json_serialize_opts opts; opts.mode = json_serialize_mode_packed; int length = json_measure_ex(outputArray, opts); char *outputJSONString = malloc(length); json_serialize_ex(outputJSONString, outputArray, opts); fwrite(outputJSONString, sizeof(char), length, outputDataFileStream); length = json_measure_ex(outputBrawlerArray, opts); char *outputJSONString_brawlers = malloc(length); json_serialize_ex(outputJSONString_brawlers, outputBrawlerArray, opts); fwrite(outputJSONString_brawlers, sizeof(char), length, outputBrawlerDataFileStream); fcloseall(); //json_builder_free(outputArray); //json_builder_free(outputBrawlerArray); json_value_free(matchIdArray); return; }