#include "membrane.h"

int send_membrane_log(UnifexEnv *env, UnifexPid pid, int flags,
                      char const *level, char const *message, char const *time,
                      char **tags, unsigned int tags_length) {
  ERL_NIF_TERM term = ({
    const ERL_NIF_TERM terms[] = {
        enif_make_atom(env, "membrane_log"), enif_make_atom(env, level),
        unifex_string_to_term(env, message), unifex_string_to_term(env, time),
        ({
          ERL_NIF_TERM list = enif_make_list(env, 0);
          for (int i = tags_length - 1; i >= 0; i--) {
            list = enif_make_list_cell(env, enif_make_atom(env, tags[i]), list);
          }
          list;
        })

    };
    enif_make_tuple_from_array(env, terms, 5);
  });
  return unifex_send(env, &pid, term, flags);
}
