~ubuntu-branches/ubuntu/wily/ruby-ferret/wily

« back to all changes in this revision

Viewing changes to ext/ferret.h

  • Committer: Bazaar Package Importer
  • Author(s): Antonio Terceiro
  • Date: 2011-07-28 00:02:49 UTC
  • Revision ID: james.westby@ubuntu.com-20110728000249-v0443y69ftcpxwi6
Tags: upstream-0.11.6
ImportĀ upstreamĀ versionĀ 0.11.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef __FERRET_H_
 
2
#define __FERRET_H_
 
3
 
 
4
#include "global.h"
 
5
#include "hashset.h"
 
6
#include "document.h"
 
7
 
 
8
/* IDs */
 
9
extern ID id_new;
 
10
extern ID id_call;
 
11
extern ID id_hash;
 
12
extern ID id_eql;
 
13
extern ID id_capacity;
 
14
extern ID id_less_than;
 
15
extern ID id_lt;
 
16
extern ID id_is_directory;
 
17
extern ID id_close;
 
18
extern ID id_cclass;
 
19
extern ID id_data;
 
20
 
 
21
/* Symbols */
 
22
extern VALUE sym_yes;
 
23
extern VALUE sym_no;
 
24
extern VALUE sym_true;
 
25
extern VALUE sym_false;
 
26
extern VALUE sym_path;
 
27
extern VALUE sym_dir;
 
28
 
 
29
/* Modules */
 
30
extern VALUE mFerret;
 
31
extern VALUE mIndex;
 
32
extern VALUE mSearch;
 
33
extern VALUE mStore;
 
34
extern VALUE mStringHelper;
 
35
extern VALUE mSpans;
 
36
 
 
37
/* Classes */
 
38
extern VALUE cDirectory;
 
39
extern VALUE cLockError;
 
40
extern VALUE cTerm;
 
41
 
 
42
/* Ferret Inits */
 
43
extern void Init_Utils();
 
44
extern void Init_Analysis();
 
45
extern void Init_Store();
 
46
extern void Init_Index();
 
47
extern void Init_Search();
 
48
extern void Init_QueryParser();
 
49
 
 
50
//extern void object_add(void *key, VALUE obj);
 
51
#define object_add(key, obj) object_add2(key, obj,  __FILE__, __LINE__)
 
52
extern void object_add2(void *key, VALUE obj, const char *file, int line);
 
53
//extern void object_set(void *key, VALUE obj);
 
54
#define object_set(key, obj) object_set2(key, obj,  __FILE__, __LINE__)
 
55
extern void object_set2(void *key, VALUE obj, const char *file, int line);
 
56
//extern void object_del(void *key);
 
57
#define object_del(key) object_del2(key,  __FILE__, __LINE__)
 
58
extern void object_del2(void *key, const char *file, int line);
 
59
extern void frt_gc_mark(void *key);
 
60
extern VALUE object_get(void *key);
 
61
extern VALUE frt_data_alloc(VALUE klass);
 
62
extern void frt_deref_free(void *p);
 
63
extern void frt_create_dir(VALUE rpath);
 
64
extern VALUE frt_hs_to_rb_ary(HashSet *hs);
 
65
extern void *frt_rb_data_ptr(VALUE val);
 
66
extern char * frt_field(VALUE rfield);
 
67
extern VALUE frt_get_term(const char *field, const char *term);
 
68
extern char *json_concat_string(char *s, char *field);
 
69
extern char *rs2s(VALUE rstr);
 
70
extern char *nstrdup(VALUE rstr);
 
71
#define Frt_Make_Struct(klass)\
 
72
  rb_data_object_alloc(klass,NULL,(RUBY_DATA_FUNC)NULL,(RUBY_DATA_FUNC)NULL)
 
73
 
 
74
#define Frt_Wrap_Struct(self,mmark,mfree,mdata)\
 
75
  do {\
 
76
    ((struct RData *)(self))->data = mdata;\
 
77
    ((struct RData *)(self))->dmark = (RUBY_DATA_FUNC)mmark;\
 
78
    ((struct RData *)(self))->dfree = (RUBY_DATA_FUNC)mfree;\
 
79
  } while (0)
 
80
 
 
81
#define Frt_Unwrap_Struct(self)\
 
82
  do {\
 
83
    ((struct RData *)(self))->data = NULL;\
 
84
    ((struct RData *)(self))->dmark = NULL;\
 
85
    ((struct RData *)(self))->dfree = NULL;\
 
86
  } while (0)
 
87
 
 
88
#endif
 
89
 
 
90
#define frt_mark_cclass(klass) rb_ivar_set(klass, id_cclass, Qtrue)
 
91
#define frt_is_cclass(obj) (rb_ivar_get(CLASS_OF(obj), id_cclass) == Qtrue)