123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #define JIM_IMPLEMENTATION
- #include "../jim.h"
- #include "fruits.h"
- typedef struct Node Node;
- struct Node {
- const char *value;
- Node *left;
- Node *right;
- };
- Node *generate_tree_of_fruits(size_t level_cur, size_t level_max)
- {
- if (level_cur < level_max) {
- // Let It Leak! Let It Leak!
- // Let It Leak! Oh, Let It Leak!
- // Memory costs nothing!
- // Let It Leak!
- Node *node = malloc(sizeof(*node));
- node->value = fruits[rand() % fruits_count];
- node->left = generate_tree_of_fruits(level_cur + 1, level_max);
- node->right = generate_tree_of_fruits(level_cur + 1, level_max);
- return node;
- } else {
- return NULL;
- }
- }
- void render_node_as_json(Jim *jim, Node *node)
- {
- if (node == NULL) {
- jim_null(jim);
- } else {
- jim_object_begin(jim);
- jim_member_key(jim, "value");
- jim_string(jim, node->value);
- jim_member_key(jim, "left");
- render_node_as_json(jim, node->left);
- jim_member_key(jim, "right");
- render_node_as_json(jim, node->right);
- jim_object_end(jim);
- }
- }
- int main()
- {
- srand(time(0));
- Jim jim = {0};
- render_node_as_json(&jim, generate_tree_of_fruits(0, 4));
- fwrite(jim.sink, jim.sink_count, 1, stdout);
- return 0;
- }
|