<commit_before>#ifndef NATIVE_C
#define NATIVE_C

#include <stdio.h>
#include <dlfcn.h>
#include <unistd.h>
#include <gtk/gtk.h>
#include <gio/gio.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <string.h>
#include <libappindicator/app-indicator.h>

static const char *icon = NULL;
static size_t iconSize = 0;
static const char *menu_title = NULL;
static const char *url = NULL;
static GtkWidget *menu = NULL;
char tmpIconNameBuf[32];

// implemented in go
extern void tray_callback(int itemId);

// internal wrapper for go callback
void _tray_callback(GtkMenuItem *item, gpointer user_data)
{
  tray_callback(GPOINTER_TO_INT(user_data));
}

void display_notification(int id, const char* title, const char* body, struct image imageData, double duration)
{
}

struct image get_clipboard_image()
{
  struct image i;  
  return i;
}

char* get_clipboard_string()
{
  return NULL;
}

void set_clipboard_string(const char* cp)
{
}

void add_menu_item(int id, const char* title, int disabled) {
  GtkWidget *item = gtk_menu_item_new_with_label(title);
  if (disabled == TRUE) {
     gtk_widget_set_sensitive(item, FALSE);
  }
  g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(_tray_callback), GINT_TO_POINTER(id));
  gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
}

void add_separator_item() {
  gtk_menu_shell_append(GTK_MENU_SHELL(menu), gtk_separator_menu_item_new());
}

typedef void* (*app_indicator_new_fun)(const gchar*, const gchar*, AppIndicatorCategory);
typedef void* (*app_indicator_set_status_fun)(AppIndicator*, AppIndicatorStatus);
typedef void* (*app_indicator_set_attention_icon_full_fun) (AppIndicator*,  const gchar* ,const gchar*);
typedef void* (*app_indicator_set_menu_fun)(AppIndicator*,GtkMenu*);

void create_indicator(void *handle)
{
  app_indicator_new_fun                       app_indicator_new;<commit_msg>add todo comments to placeholder linux methods<commit_after>#ifndef NATIVE_C
#define NATIVE_C

#include <stdio.h>
#include <dlfcn.h>
#include <unistd.h>
#include <gtk/gtk.h>
#include <gio/gio.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <string.h>
#include <libappindicator/app-indicator.h>

static const char *icon = NULL;
static size_t iconSize = 0;
static const char *menu_title = NULL;
static const char *url = NULL;
static GtkWidget *menu = NULL;
char tmpIconNameBuf[32];

// implemented in go
extern void tray_callback(int itemId);

// internal wrapper for go callback
void _tray_callback(GtkMenuItem *item, gpointer user_data)
{
  tray_callback(GPOINTER_TO_INT(user_data));
}

// TODO: Implement.
void display_notification(int id, const char* title, const char* body, struct image imageData, double duration)
{
}

// TODO: Implement.
struct image get_clipboard_image()
{
  struct image i;  
  return i;
}

// TODO: Implement.
char* get_clipboard_string()
{
  return NULL;
}

// TODO: Implement.
void set_clipboard_string(const char* cp)
{
}

void add_menu_item(int id, const char* title, int disabled) {
  GtkWidget *item = gtk_menu_item_new_with_label(title);
  if (disabled == TRUE) {
     gtk_widget_set_sensitive(item, FALSE);
  }
  g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(_tray_callback), GINT_TO_POINTER(id));
  gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
}

void add_separator_item() {
  gtk_menu_shell_append(GTK_MENU_SHELL(menu), gtk_separator_menu_item_new());
}

typedef void* (*app_indicator_new_fun)(const gchar*, const gchar*, AppIndicatorCategory);
typedef void* (*app_indicator_set_status_fun)(AppIndicator*, AppIndicatorStatus);
typedef void* (*app_indicator_set_attention_icon_full_fun) (AppIndicator*,  const gchar* ,const gchar*);
typedef void* (*app_indicator_set_menu_fun)(AppIndicator*,GtkMenu*);

void create_indicator(void *handle)
{
  app_indicator_new_fun                       app_indicator_new;
{'fraction_non_alphanumeric': 0.11324730050039505, 'fraction_numerical': 0.0015801948907031868, 'mean_word_length': 6.046382189239332, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 19, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3671365', 'n_tokens_mistral': 1390, 'n_tokens_neox': 1355, 'n_words': 305}