/* word-completion.h generated by valac 0.56.19, the Vala compiler, do not modify */

#ifndef __PLUGINS_WORD_COMPLETION_WORD_COMPLETION_H__
#define __PLUGINS_WORD_COMPLETION_WORD_COMPLETION_H__

#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <gee.h>
#include <gtksourceview/gtksource.h>
#include "codecore.h"
#include <gtk/gtk.h>
#include <libpeas.h>

G_BEGIN_DECLS

#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif
#define SCRATCH_PLUGINS_COMPLETION_PROVIDER_COMPLETION_END_MARK_NAME "ScratchWordCompletionEnd"
#define SCRATCH_PLUGINS_COMPLETION_PROVIDER_COMPLETION_START_MARK_NAME "ScratchWordCompletionStart"
#define EUCLIDE_COMPLETION_PARSER_MINIMUM_WORD_LENGTH 1
#define EUCLIDE_COMPLETION_PARSER_MAX_TOKENS 1000000
#define EUCLIDE_COMPLETION_PARSER_DELIMITERS " .,;:?{}[]()0123456789+=&|<>*\\/\r\n\t\'\"`"
#define SCRATCH_PLUGINS_COMPLETION_INTERACTIVE_DELAY ((guint) 500)

#define SCRATCH_PLUGINS_TYPE_PREFIX_TREE (scratch_plugins_prefix_tree_get_type ())
#define SCRATCH_PLUGINS_PREFIX_TREE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_PLUGINS_TYPE_PREFIX_TREE, ScratchPluginsPrefixTree))
#define SCRATCH_PLUGINS_PREFIX_TREE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_PLUGINS_TYPE_PREFIX_TREE, ScratchPluginsPrefixTreeClass))
#define SCRATCH_PLUGINS_IS_PREFIX_TREE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_PLUGINS_TYPE_PREFIX_TREE))
#define SCRATCH_PLUGINS_IS_PREFIX_TREE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_PLUGINS_TYPE_PREFIX_TREE))
#define SCRATCH_PLUGINS_PREFIX_TREE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_PLUGINS_TYPE_PREFIX_TREE, ScratchPluginsPrefixTreeClass))

typedef struct _ScratchPluginsPrefixTree ScratchPluginsPrefixTree;
typedef struct _ScratchPluginsPrefixTreeClass ScratchPluginsPrefixTreeClass;
typedef struct _ScratchPluginsPrefixTreePrivate ScratchPluginsPrefixTreePrivate;

#define SCRATCH_PLUGINS_TYPE_PREFIX_NODE (scratch_plugins_prefix_node_get_type ())
#define SCRATCH_PLUGINS_PREFIX_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_PLUGINS_TYPE_PREFIX_NODE, ScratchPluginsPrefixNode))
#define SCRATCH_PLUGINS_PREFIX_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_PLUGINS_TYPE_PREFIX_NODE, ScratchPluginsPrefixNodeClass))
#define SCRATCH_PLUGINS_IS_PREFIX_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_PLUGINS_TYPE_PREFIX_NODE))
#define SCRATCH_PLUGINS_IS_PREFIX_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_PLUGINS_TYPE_PREFIX_NODE))
#define SCRATCH_PLUGINS_PREFIX_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_PLUGINS_TYPE_PREFIX_NODE, ScratchPluginsPrefixNodeClass))

typedef struct _ScratchPluginsPrefixNode ScratchPluginsPrefixNode;
typedef struct _ScratchPluginsPrefixNodeClass ScratchPluginsPrefixNodeClass;
typedef struct _ScratchPluginsPrefixNodePrivate ScratchPluginsPrefixNodePrivate;
typedef enum  {
	SCRATCH_PLUGINS_PREFIX_NODE_NODE_TYPE_ROOT,
	SCRATCH_PLUGINS_PREFIX_NODE_NODE_TYPE_CHAR,
	SCRATCH_PLUGINS_PREFIX_NODE_NODE_TYPE_WORD_END
} ScratchPluginsPrefixNodeNodeType;

#define SCRATCH_PLUGINS_PREFIX_NODE_TYPE_NODE_TYPE (scratch_plugins_prefix_node_node_type_get_type ())

#define SCRATCH_PLUGINS_TYPE_COMPLETION_PROVIDER (scratch_plugins_completion_provider_get_type ())
#define SCRATCH_PLUGINS_COMPLETION_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_PLUGINS_TYPE_COMPLETION_PROVIDER, ScratchPluginsCompletionProvider))
#define SCRATCH_PLUGINS_COMPLETION_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_PLUGINS_TYPE_COMPLETION_PROVIDER, ScratchPluginsCompletionProviderClass))
#define SCRATCH_PLUGINS_IS_COMPLETION_PROVIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_PLUGINS_TYPE_COMPLETION_PROVIDER))
#define SCRATCH_PLUGINS_IS_COMPLETION_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_PLUGINS_TYPE_COMPLETION_PROVIDER))
#define SCRATCH_PLUGINS_COMPLETION_PROVIDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_PLUGINS_TYPE_COMPLETION_PROVIDER, ScratchPluginsCompletionProviderClass))

typedef struct _ScratchPluginsCompletionProvider ScratchPluginsCompletionProvider;
typedef struct _ScratchPluginsCompletionProviderClass ScratchPluginsCompletionProviderClass;
typedef struct _ScratchPluginsCompletionProviderPrivate ScratchPluginsCompletionProviderPrivate;

#define EUCLIDE_COMPLETION_TYPE_PARSER (euclide_completion_parser_get_type ())
#define EUCLIDE_COMPLETION_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EUCLIDE_COMPLETION_TYPE_PARSER, EuclideCompletionParser))
#define EUCLIDE_COMPLETION_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EUCLIDE_COMPLETION_TYPE_PARSER, EuclideCompletionParserClass))
#define EUCLIDE_COMPLETION_IS_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EUCLIDE_COMPLETION_TYPE_PARSER))
#define EUCLIDE_COMPLETION_IS_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EUCLIDE_COMPLETION_TYPE_PARSER))
#define EUCLIDE_COMPLETION_PARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EUCLIDE_COMPLETION_TYPE_PARSER, EuclideCompletionParserClass))

typedef struct _EuclideCompletionParser EuclideCompletionParser;
typedef struct _EuclideCompletionParserClass EuclideCompletionParserClass;
typedef struct _EuclideCompletionParserPrivate EuclideCompletionParserPrivate;

#define SCRATCH_PLUGINS_TYPE_COMPLETION (scratch_plugins_completion_get_type ())
#define SCRATCH_PLUGINS_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_PLUGINS_TYPE_COMPLETION, ScratchPluginsCompletion))
#define SCRATCH_PLUGINS_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_PLUGINS_TYPE_COMPLETION, ScratchPluginsCompletionClass))
#define SCRATCH_PLUGINS_IS_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_PLUGINS_TYPE_COMPLETION))
#define SCRATCH_PLUGINS_IS_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_PLUGINS_TYPE_COMPLETION))
#define SCRATCH_PLUGINS_COMPLETION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_PLUGINS_TYPE_COMPLETION, ScratchPluginsCompletionClass))

typedef struct _ScratchPluginsCompletion ScratchPluginsCompletion;
typedef struct _ScratchPluginsCompletionClass ScratchPluginsCompletionClass;
typedef struct _ScratchPluginsCompletionPrivate ScratchPluginsCompletionPrivate;

struct _ScratchPluginsPrefixTree {
	GObject parent_instance;
	ScratchPluginsPrefixTreePrivate * priv;
};

struct _ScratchPluginsPrefixTreeClass {
	GObjectClass parent_class;
};

struct _ScratchPluginsPrefixNode {
	GObject parent_instance;
	ScratchPluginsPrefixNodePrivate * priv;
	GeeArrayList* children;
};

struct _ScratchPluginsPrefixNodeClass {
	GObjectClass parent_class;
};

struct _ScratchPluginsCompletionProvider {
	GObject parent_instance;
	ScratchPluginsCompletionProviderPrivate * priv;
};

struct _ScratchPluginsCompletionProviderClass {
	GObjectClass parent_class;
};

struct _EuclideCompletionParser {
	GObject parent_instance;
	EuclideCompletionParserPrivate * priv;
	GeeHashMap* text_view_words;
	gboolean parsing_cancelled;
};

struct _EuclideCompletionParserClass {
	GObjectClass parent_class;
};

struct _ScratchPluginsCompletion {
	PeasExtensionBase parent_instance;
	ScratchPluginsCompletionPrivate * priv;
};

struct _ScratchPluginsCompletionClass {
	PeasExtensionBaseClass parent_class;
};

GType scratch_plugins_prefix_tree_register_type (GTypeModule * module);
VALA_EXTERN GType scratch_plugins_prefix_tree_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ScratchPluginsPrefixTree, g_object_unref)
VALA_EXTERN void scratch_plugins_prefix_tree_clear (ScratchPluginsPrefixTree* self);
VALA_EXTERN void scratch_plugins_prefix_tree_insert (ScratchPluginsPrefixTree* self,
                                         const gchar* word);
VALA_EXTERN gboolean scratch_plugins_prefix_tree_find_prefix (ScratchPluginsPrefixTree* self,
                                                  const gchar* prefix);
VALA_EXTERN GList* scratch_plugins_prefix_tree_get_all_matches (ScratchPluginsPrefixTree* self,
                                                    const gchar* prefix);
VALA_EXTERN ScratchPluginsPrefixTree* scratch_plugins_prefix_tree_new (void);
VALA_EXTERN ScratchPluginsPrefixTree* scratch_plugins_prefix_tree_construct (GType object_type);
GType scratch_plugins_prefix_node_register_type (GTypeModule * module);
VALA_EXTERN GType scratch_plugins_prefix_node_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ScratchPluginsPrefixNode, g_object_unref)
VALA_EXTERN GType scratch_plugins_prefix_node_node_type_get_type (void) G_GNUC_CONST ;
VALA_EXTERN ScratchPluginsPrefixNode* scratch_plugins_prefix_node_new_from_unichar (gunichar c,
                                                                        ScratchPluginsPrefixNode* _parent);
VALA_EXTERN ScratchPluginsPrefixNode* scratch_plugins_prefix_node_construct_from_unichar (GType object_type,
                                                                              gunichar c,
                                                                              ScratchPluginsPrefixNode* _parent);
VALA_EXTERN ScratchPluginsPrefixNode* scratch_plugins_prefix_node_new_root (void);
VALA_EXTERN ScratchPluginsPrefixNode* scratch_plugins_prefix_node_construct_root (GType object_type);
VALA_EXTERN ScratchPluginsPrefixNode* scratch_plugins_prefix_node_new_word_end (ScratchPluginsPrefixNode* _parent);
VALA_EXTERN ScratchPluginsPrefixNode* scratch_plugins_prefix_node_construct_word_end (GType object_type,
                                                                          ScratchPluginsPrefixNode* _parent);
VALA_EXTERN ScratchPluginsPrefixNode* scratch_plugins_prefix_node_new (void);
VALA_EXTERN ScratchPluginsPrefixNode* scratch_plugins_prefix_node_construct (GType object_type);
VALA_EXTERN gunichar scratch_plugins_prefix_node_get_uc (ScratchPluginsPrefixNode* self);
VALA_EXTERN ScratchPluginsPrefixNodeNodeType scratch_plugins_prefix_node_get_node_type (ScratchPluginsPrefixNode* self);
VALA_EXTERN ScratchPluginsPrefixNode* scratch_plugins_prefix_node_get_parent (ScratchPluginsPrefixNode* self);
VALA_EXTERN gunichar scratch_plugins_prefix_node_get_value (ScratchPluginsPrefixNode* self);
GType scratch_plugins_completion_provider_register_type (GTypeModule * module);
VALA_EXTERN GType scratch_plugins_completion_provider_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ScratchPluginsCompletionProvider, g_object_unref)
GType euclide_completion_parser_register_type (GTypeModule * module);
VALA_EXTERN GType euclide_completion_parser_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (EuclideCompletionParser, g_object_unref)
VALA_EXTERN ScratchPluginsCompletionProvider* scratch_plugins_completion_provider_new (EuclideCompletionParser* _parser,
                                                                           ScratchServicesDocument* _doc);
VALA_EXTERN ScratchPluginsCompletionProvider* scratch_plugins_completion_provider_construct (GType object_type,
                                                                                 EuclideCompletionParser* _parser,
                                                                                 ScratchServicesDocument* _doc);
VALA_EXTERN const gchar* scratch_plugins_completion_provider_get_name (ScratchPluginsCompletionProvider* self);
VALA_EXTERN gint scratch_plugins_completion_provider_get_priority (ScratchPluginsCompletionProvider* self);
VALA_EXTERN gint scratch_plugins_completion_provider_get_interactive_delay (ScratchPluginsCompletionProvider* self);
VALA_EXTERN GtkSourceCompletionActivation scratch_plugins_completion_provider_get_activation (ScratchPluginsCompletionProvider* self);
VALA_EXTERN GtkTextView* scratch_plugins_completion_provider_get_view (ScratchPluginsCompletionProvider* self);
VALA_EXTERN EuclideCompletionParser* scratch_plugins_completion_provider_get_parser (ScratchPluginsCompletionProvider* self);
VALA_EXTERN gboolean euclide_completion_parser_is_delimiter (gunichar c);
VALA_EXTERN void euclide_completion_parser_back_to_word_start (GtkTextIter* iter);
VALA_EXTERN EuclideCompletionParser* euclide_completion_parser_new (void);
VALA_EXTERN EuclideCompletionParser* euclide_completion_parser_construct (GType object_type);
VALA_EXTERN gboolean euclide_completion_parser_match (EuclideCompletionParser* self,
                                          const gchar* to_find);
VALA_EXTERN gboolean euclide_completion_parser_get_for_word (EuclideCompletionParser* self,
                                                 const gchar* to_find,
                                                 GList** list);
VALA_EXTERN void euclide_completion_parser_rebuild_word_list (EuclideCompletionParser* self,
                                                  GtkTextView* view);
VALA_EXTERN void euclide_completion_parser_parse_text_view (EuclideCompletionParser* self,
                                                GtkTextView* view);
VALA_EXTERN void euclide_completion_parser_add_word (EuclideCompletionParser* self,
                                         const gchar* word);
VALA_EXTERN void euclide_completion_parser_cancel_parsing (EuclideCompletionParser* self);
GType scratch_plugins_completion_register_type (GTypeModule * module);
VALA_EXTERN GType scratch_plugins_completion_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ScratchPluginsCompletion, g_object_unref)
VALA_EXTERN void scratch_plugins_completion_on_new_source_view (ScratchPluginsCompletion* self,
                                                    ScratchServicesDocument* doc);
VALA_EXTERN ScratchPluginsCompletion* scratch_plugins_completion_new (void);
VALA_EXTERN ScratchPluginsCompletion* scratch_plugins_completion_construct (GType object_type);
VALA_EXTERN EuclideCompletionParser* scratch_plugins_completion_get_parser (ScratchPluginsCompletion* self);
VALA_EXTERN GtkSourceView* scratch_plugins_completion_get_current_view (ScratchPluginsCompletion* self);
VALA_EXTERN ScratchServicesDocument* scratch_plugins_completion_get_current_document (ScratchPluginsCompletion* self);
VALA_EXTERN void peas_register_types (GTypeModule* module);

G_END_DECLS

#endif
