clipsruby 0.0.37 → 0.0.38

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 +112 -13
  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: 2d5b2eff6dfde994a41ed4226415ed61cc22f4a60164ca7f0adb14f2913ed831
4
+ data.tar.gz: 18f6b5748632239dac343f0b91b41620a2973699e27a9d52a2aef28bde921a0c
5
5
  SHA512:
6
- metadata.gz: 4b4e7e0f16be94698e19d4b8d53bfbc07eeecbcb26e71eb9347ee2d36a9526c4a50708ca2b8cefc042b846fa81197500a1c03a46020f61ebe6111c6d715b574b
7
- data.tar.gz: a29961896b77bd1cb0874bd51dc001d94b31c8b7000137b27fca0ef4820055895d69cc3302145514163a5b628791d625cb4208722feea618fb9488d25a5a049a
6
+ metadata.gz: 634dd08bc164e971d4484e18a2fadc51a56e7b7976994b3cfb3bad903445157da9b6bc1ef4dc424faacef0a68217f774c6c3ec9f9fd717c3d579df04d0e6525e
7
+ data.tar.gz: b31052a98c2238d3d97bf6938193202ca6b05333286e61500000da33dd4baaeddc915b5bd53c53cf989c366bcc51d5469428632766ad625e616249f9eb996655
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
 
@@ -4197,6 +4290,8 @@ void Init_clipsruby(void)
4197
4290
  rb_define_method(rbDeftemplate, "pp_form", clips_environment_deftemplate_pp_form, 0);
4198
4291
  rb_define_singleton_method(rbDeftemplate, "assert_hash", clips_environment_deftemplate_static_assert_hash, 2);
4199
4292
  rb_define_method(rbDeftemplate, "assert_hash", clips_environment_deftemplate_assert_hash, 1);
4293
+ rb_define_singleton_method(rbDeftemplate, "defmodule", clips_environment_deftemplate_static_defmodule, 1);
4294
+ rb_define_method(rbDeftemplate, "defmodule", clips_environment_deftemplate_defmodule, 0);
4200
4295
  rb_define_singleton_method(rbDeftemplate, "defmodule_name", clips_environment_deftemplate_static_defmodule_name, 1);
4201
4296
  rb_define_method(rbDeftemplate, "defmodule_name", clips_environment_deftemplate_defmodule_name, 0);
4202
4297
  rb_define_singleton_method(rbDeftemplate, "slot_names", clips_environment_deftemplate_static_slot_names, 1);
@@ -4284,6 +4379,8 @@ void Init_clipsruby(void)
4284
4379
  rb_define_method(rbDefrule, "salience", clips_environment_defrule_salience, 0);
4285
4380
  rb_define_singleton_method(rbDefrule, "defmodule_name", clips_environment_defrule_static_defmodule_name, 1);
4286
4381
  rb_define_method(rbDefrule, "defmodule_name", clips_environment_defrule_defmodule_name, 0);
4382
+ rb_define_singleton_method(rbDefrule, "defmodule", clips_environment_defrule_static_defmodule, 1);
4383
+ rb_define_method(rbDefrule, "defmodule", clips_environment_defrule_defmodule, 0);
4287
4384
 
4288
4385
  VALUE rbDefclass = rb_define_class_under(rbEnvironment, "Defclass", rb_cObject);
4289
4386
  rb_define_alloc_func(rbDefclass, defclass_alloc);
@@ -4291,6 +4388,8 @@ void Init_clipsruby(void)
4291
4388
  rb_define_method(rbDefclass, "name", clips_environment_defclass_name, 0);
4292
4389
  rb_define_singleton_method(rbDefclass, "defmodule_name", clips_environment_defclass_static_defmodule_name, 1);
4293
4390
  rb_define_method(rbDefclass, "defmodule_name", clips_environment_defclass_defmodule_name, 0);
4391
+ rb_define_singleton_method(rbDefclass, "defmodule", clips_environment_defclass_static_defmodule, 1);
4392
+ rb_define_method(rbDefclass, "defmodule", clips_environment_defclass_defmodule, 0);
4294
4393
  rb_define_singleton_method(rbDefclass, "pp_form", clips_environment_defclass_static_pp_form, 1);
4295
4394
  rb_define_method(rbDefclass, "pp_form", clips_environment_defclass_pp_form, 0);
4296
4395
  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.38
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-29 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