clipsruby 0.0.37 → 0.0.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +30 -0
  3. data/ext/clipsruby/clipsruby.c +133 -16
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6bdf3718a68644b1772e951c9a1056581d95b53a0d63d691d7cd434076d8877a
4
- data.tar.gz: d76e7156d421d9cb0db3bd73314f061377c2972ecdafcd3eef1c480c113d4d2f
3
+ metadata.gz: 80e4a680ddbc8bf4562a2b6995c645c0b5dd436ad36a1ee3445ba3fec7f13971
4
+ data.tar.gz: 297c0e0c46cb3355acddde65530c2f424d0994691a25aa84fd030fd041631d59
5
5
  SHA512:
6
- metadata.gz: 4b4e7e0f16be94698e19d4b8d53bfbc07eeecbcb26e71eb9347ee2d36a9526c4a50708ca2b8cefc042b846fa81197500a1c03a46020f61ebe6111c6d715b574b
7
- data.tar.gz: a29961896b77bd1cb0874bd51dc001d94b31c8b7000137b27fca0ef4820055895d69cc3302145514163a5b628791d625cb4208722feea618fb9488d25a5a049a
6
+ metadata.gz: c46acccb9d8b0edc1841f56ad046f8a36c06bcae3baf155b08ef3dff1b46acdf61ef82bcfc73ca5059796bfb87e767571f25f00fbc5a89bf359c992c38b3d32b
7
+ data.tar.gz: 76c92b24f599195d9878907a09d6ef765aea158784fcb1847692e608220463de97932baa96bcf9c6c5bdd484eed4d14ed9fffc9c0a8370d634531528d445b95d
data/README.md CHANGED
@@ -494,6 +494,16 @@ CLIPS::Environment::Defclass.defmodule_name(defclass)
494
494
  defclass.defmodule_name
495
495
  ```
496
496
 
497
+ ### `CLIPS::Environment::Defclass.defmodule`
498
+ ### `CLIPS::Environment::Defclass#defmodule`
499
+
500
+ Returns the defmodule in which the defclass is defined
501
+
502
+ ```ruby
503
+ CLIPS::Environment::Defclass.defmodule(defclass)
504
+ defclass.defmodule
505
+ ```
506
+
497
507
  ### `CLIPS::Environment::Defclass.get_instance_list`
498
508
  ### `CLIPS::Environment::Defclass#get_instance_list`
499
509
 
@@ -582,6 +592,16 @@ CLIPS::Environment::Defrule.defmodule_name(defrule)
582
592
  defrule.defmodule_name
583
593
  ```
584
594
 
595
+ ### `CLIPS::Environment::Defrule.defmodule`
596
+ ### `CLIPS::Environment::Defrule#defmodule`
597
+
598
+ Returns the defmodule in which the defrule is defined
599
+
600
+ ```ruby
601
+ CLIPS::Environment::Defrule.defmodule(defrule)
602
+ defrule.defmodule
603
+ ```
604
+
585
605
  ### `CLIPS::Environment::Defrule.is_deletable`
586
606
  ### `CLIPS::Environment::Defrule#is_deletable`
587
607
 
@@ -846,6 +866,16 @@ CLIPS::Environment::Deftemplate.defmodule_name(deftemplate)
846
866
  deftemplate.defmodule_name
847
867
  ```
848
868
 
869
+ ### `CLIPS::Environment::Deftemplate.defmodule`
870
+ ### `CLIPS::Environment::Deftemplate#defmodule`
871
+
872
+ Returns the defmodule in which the deftemplate is defined
873
+
874
+ ```ruby
875
+ CLIPS::Environment::Deftemplate.defmodule(deftemplate)
876
+ deftemplate.defmodule
877
+ ```
878
+
849
879
  ### `CLIPS::Environment::Deftemplate.slot_names`
850
880
  ### `CLIPS::Environment::Deftemplate#slot_names`
851
881
 
@@ -1,6 +1,24 @@
1
1
  #include "clips.h"
2
2
  #include "ruby.h"
3
3
 
4
+ void environment_free(void *data)
5
+ {
6
+ DestroyEnvironment((Environment*) data);
7
+ }
8
+
9
+ size_t environment_size(const void *data)
10
+ {
11
+ return MemUsed((Environment*) data);
12
+ }
13
+
14
+ static const rb_data_type_t Environment_type = {
15
+ .function = {
16
+ .dfree = environment_free,
17
+ .dsize = environment_size
18
+ },
19
+ .flags = RUBY_TYPED_FREE_IMMEDIATELY
20
+ };
21
+
4
22
  size_t deffacts_size(const void *data)
5
23
  {
6
24
  return sizeof(Deffacts);
@@ -133,6 +151,36 @@ static VALUE clips_environment_deftemplate_static_defmodule_name(VALUE self, VAL
133
151
  return clips_environment_deftemplate_defmodule_name(rbDeftemplate);
134
152
  }
135
153
 
154
+ static VALUE clips_environment_deftemplate_defmodule(VALUE self)
155
+ {
156
+ Deftemplate *template;
157
+ const char *defmoduleName;
158
+ Defmodule *defmodule = NULL;
159
+ Environment *env;
160
+
161
+ VALUE rbEnvironment = rb_iv_get(self, "@environment");
162
+ TypedData_Get_Struct(rbEnvironment, Environment, &Environment_type, env);
163
+
164
+ TypedData_Get_Struct(self, Deftemplate, &Deftemplate_type, template);
165
+
166
+ defmoduleName = DeftemplateModule(template);
167
+
168
+ if (defmoduleName != NULL) {
169
+ defmodule = FindDefmodule(env, defmoduleName);
170
+ }
171
+
172
+ if (defmodule != NULL) {
173
+ return TypedData_Wrap_Struct(rb_const_get(CLASS_OF(rbEnvironment), rb_intern("Defmodule")), &Defmodule_type, defmodule);
174
+ } else {
175
+ return Qnil;
176
+ }
177
+ }
178
+
179
+ static VALUE clips_environment_deftemplate_static_defmodule(VALUE self, VALUE rbDeftemplate)
180
+ {
181
+ return clips_environment_deftemplate_defmodule(rbDeftemplate);
182
+ }
183
+
136
184
  static VALUE clips_environment_defrule_defmodule_name(VALUE self)
137
185
  {
138
186
  Defrule *rule;
@@ -147,24 +195,36 @@ static VALUE clips_environment_defrule_static_defmodule_name(VALUE self, VALUE r
147
195
  return clips_environment_defrule_defmodule_name(rbDefrule);
148
196
  }
149
197
 
150
- void environment_free(void *data)
198
+ static VALUE clips_environment_defrule_defmodule(VALUE self)
151
199
  {
152
- DestroyEnvironment((Environment*) data);
200
+ Defrule *rule;
201
+ const char *defmoduleName;
202
+ Defmodule *defmodule = NULL;
203
+ Environment *env;
204
+
205
+ VALUE rbEnvironment = rb_iv_get(self, "@environment");
206
+ TypedData_Get_Struct(rbEnvironment, Environment, &Environment_type, env);
207
+
208
+ TypedData_Get_Struct(self, Defrule, &Defrule_type, rule);
209
+
210
+ defmoduleName = DefruleModule(rule);
211
+
212
+ if (defmoduleName != NULL) {
213
+ defmodule = FindDefmodule(env, defmoduleName);
214
+ }
215
+
216
+ if (defmodule != NULL) {
217
+ return TypedData_Wrap_Struct(rb_const_get(CLASS_OF(rbEnvironment), rb_intern("Defmodule")), &Defmodule_type, defmodule);
218
+ } else {
219
+ return Qnil;
220
+ }
153
221
  }
154
222
 
155
- size_t environment_size(const void *data)
223
+ static VALUE clips_environment_defrule_static_defmodule(VALUE self, VALUE rbDefrule)
156
224
  {
157
- return MemUsed((Environment*) data);
225
+ return clips_environment_defrule_defmodule(rbDefrule);
158
226
  }
159
227
 
160
- static const rb_data_type_t Environment_type = {
161
- .function = {
162
- .dfree = environment_free,
163
- .dsize = environment_size
164
- },
165
- .flags = RUBY_TYPED_FREE_IMMEDIATELY
166
- };
167
-
168
228
  static VALUE clips_environment_facts(VALUE self)
169
229
  {
170
230
  Environment *env;
@@ -279,6 +339,36 @@ static VALUE clips_environment_defclass_static_defmodule_name(VALUE self, VALUE
279
339
  return clips_environment_defclass_defmodule_name(rbDefclass);
280
340
  }
281
341
 
342
+ static VALUE clips_environment_defclass_defmodule(VALUE self)
343
+ {
344
+ Defclass *class;
345
+ const char *defmoduleName;
346
+ Defmodule *defmodule = NULL;
347
+ Environment *env;
348
+
349
+ VALUE rbEnvironment = rb_iv_get(self, "@environment");
350
+ TypedData_Get_Struct(rbEnvironment, Environment, &Environment_type, env);
351
+
352
+ TypedData_Get_Struct(self, Defclass, &Defclass_type, class);
353
+
354
+ defmoduleName = DefclassModule(class);
355
+
356
+ if (defmoduleName != NULL) {
357
+ defmodule = FindDefmodule(env, defmoduleName);
358
+ }
359
+
360
+ if (defmodule != NULL) {
361
+ return TypedData_Wrap_Struct(rb_const_get(CLASS_OF(rbEnvironment), rb_intern("Defmodule")), &Defmodule_type, defmodule);
362
+ } else {
363
+ return Qnil;
364
+ }
365
+ }
366
+
367
+ static VALUE clips_environment_defclass_static_defmodule(VALUE self, VALUE rbDefclass)
368
+ {
369
+ return clips_environment_defclass_defmodule(rbDefclass);
370
+ }
371
+
282
372
  static VALUE clips_environment_defclass_pp_form(VALUE self)
283
373
  {
284
374
  Defclass *defclass;
@@ -1952,6 +2042,7 @@ static VALUE clips_environment_fact_static_index(VALUE self, VALUE rbFact)
1952
2042
 
1953
2043
  static VALUE clips_environment_find_defrule(VALUE self, VALUE defrule_name)
1954
2044
  {
2045
+ VALUE rbDefrule;
1955
2046
  Environment *env;
1956
2047
  Defrule *rule;
1957
2048
 
@@ -1972,7 +2063,9 @@ static VALUE clips_environment_find_defrule(VALUE self, VALUE defrule_name)
1972
2063
  if (rule == NULL) {
1973
2064
  return Qnil;
1974
2065
  } else {
1975
- return TypedData_Wrap_Struct(rb_const_get(CLASS_OF(self), rb_intern("Defrule")), &Defrule_type, rule);
2066
+ rbDefrule = TypedData_Wrap_Struct(rb_const_get(CLASS_OF(self), rb_intern("Defrule")), &Defrule_type, rule);
2067
+ rb_iv_set(rbDefrule, "@environment", self);
2068
+ return rbDefrule;
1976
2069
  }
1977
2070
  }
1978
2071
 
@@ -2029,10 +2122,16 @@ static VALUE clips_environment_deffacts_static_name(VALUE self, VALUE rbDeffacts
2029
2122
  static VALUE clips_environment_deffacts_pp_form(VALUE self)
2030
2123
  {
2031
2124
  Deffacts *deffacts;
2125
+ const char *pp_form;
2032
2126
 
2033
2127
  TypedData_Get_Struct(self, Deffacts, &Deffacts_type, deffacts);
2034
2128
 
2035
- return rb_str_new2(DeffactsPPForm(deffacts));
2129
+ pp_form = DeffactsPPForm(deffacts);
2130
+ if (pp_form == NULL) {
2131
+ return Qnil;
2132
+ } else {
2133
+ return rb_str_new2(pp_form);
2134
+ }
2036
2135
  }
2037
2136
 
2038
2137
  static VALUE clips_environment_deffacts_static_pp_form(VALUE self, VALUE rbDeffacts)
@@ -2417,10 +2516,16 @@ static VALUE clips_environment_deftemplate_static_name(VALUE self, VALUE rbDefte
2417
2516
  static VALUE clips_environment_deftemplate_pp_form(VALUE self)
2418
2517
  {
2419
2518
  Deftemplate *deftemplate;
2519
+ const char *pp_form;
2420
2520
 
2421
2521
  TypedData_Get_Struct(self, Deftemplate, &Deftemplate_type, deftemplate);
2422
2522
 
2423
- return rb_str_new2(DeftemplatePPForm(deftemplate));
2523
+ pp_form = DeftemplatePPForm(deftemplate);
2524
+ if (pp_form == NULL) {
2525
+ return Qnil;
2526
+ } else {
2527
+ return rb_str_new2(pp_form);
2528
+ }
2424
2529
  }
2425
2530
 
2426
2531
  static VALUE clips_environment_deftemplate_static_pp_form(VALUE self, VALUE rbDeftemplate)
@@ -2967,10 +3072,16 @@ static VALUE clips_environment_defmodule_static_name(VALUE self, VALUE rbDefmodu
2967
3072
  static VALUE clips_environment_defmodule_pp_form(VALUE self)
2968
3073
  {
2969
3074
  Defmodule *defmodule;
3075
+ const char *pp_form;
2970
3076
 
2971
3077
  TypedData_Get_Struct(self, Defmodule, &Defmodule_type, defmodule);
2972
3078
 
2973
- return rb_str_new2(DefmodulePPForm(defmodule));
3079
+ pp_form = DefmodulePPForm(defmodule);
3080
+ if (pp_form == NULL) {
3081
+ return Qnil;
3082
+ } else {
3083
+ return rb_str_new2(pp_form);
3084
+ }
2974
3085
  }
2975
3086
 
2976
3087
  static VALUE clips_environment_defmodule_static_pp_form(VALUE self, VALUE rbDefmodule)
@@ -4197,6 +4308,8 @@ void Init_clipsruby(void)
4197
4308
  rb_define_method(rbDeftemplate, "pp_form", clips_environment_deftemplate_pp_form, 0);
4198
4309
  rb_define_singleton_method(rbDeftemplate, "assert_hash", clips_environment_deftemplate_static_assert_hash, 2);
4199
4310
  rb_define_method(rbDeftemplate, "assert_hash", clips_environment_deftemplate_assert_hash, 1);
4311
+ rb_define_singleton_method(rbDeftemplate, "defmodule", clips_environment_deftemplate_static_defmodule, 1);
4312
+ rb_define_method(rbDeftemplate, "defmodule", clips_environment_deftemplate_defmodule, 0);
4200
4313
  rb_define_singleton_method(rbDeftemplate, "defmodule_name", clips_environment_deftemplate_static_defmodule_name, 1);
4201
4314
  rb_define_method(rbDeftemplate, "defmodule_name", clips_environment_deftemplate_defmodule_name, 0);
4202
4315
  rb_define_singleton_method(rbDeftemplate, "slot_names", clips_environment_deftemplate_static_slot_names, 1);
@@ -4284,6 +4397,8 @@ void Init_clipsruby(void)
4284
4397
  rb_define_method(rbDefrule, "salience", clips_environment_defrule_salience, 0);
4285
4398
  rb_define_singleton_method(rbDefrule, "defmodule_name", clips_environment_defrule_static_defmodule_name, 1);
4286
4399
  rb_define_method(rbDefrule, "defmodule_name", clips_environment_defrule_defmodule_name, 0);
4400
+ rb_define_singleton_method(rbDefrule, "defmodule", clips_environment_defrule_static_defmodule, 1);
4401
+ rb_define_method(rbDefrule, "defmodule", clips_environment_defrule_defmodule, 0);
4287
4402
 
4288
4403
  VALUE rbDefclass = rb_define_class_under(rbEnvironment, "Defclass", rb_cObject);
4289
4404
  rb_define_alloc_func(rbDefclass, defclass_alloc);
@@ -4291,6 +4406,8 @@ void Init_clipsruby(void)
4291
4406
  rb_define_method(rbDefclass, "name", clips_environment_defclass_name, 0);
4292
4407
  rb_define_singleton_method(rbDefclass, "defmodule_name", clips_environment_defclass_static_defmodule_name, 1);
4293
4408
  rb_define_method(rbDefclass, "defmodule_name", clips_environment_defclass_defmodule_name, 0);
4409
+ rb_define_singleton_method(rbDefclass, "defmodule", clips_environment_defclass_static_defmodule, 1);
4410
+ rb_define_method(rbDefclass, "defmodule", clips_environment_defclass_defmodule, 0);
4294
4411
  rb_define_singleton_method(rbDefclass, "pp_form", clips_environment_defclass_static_pp_form, 1);
4295
4412
  rb_define_method(rbDefclass, "pp_form", clips_environment_defclass_pp_form, 0);
4296
4413
  rb_define_singleton_method(rbDefclass, "get_instance_list", clips_environment_defclass_static_get_instance_list, -1);
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clipsruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.37
4
+ version: 0.0.39
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Johnston
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-28 00:00:00.000000000 Z
11
+ date: 2024-09-30 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Calling the CLIPS programming language from within Ruby
14
14
  email: mrryanjohnston@gmail.com