mirror of
https://github.com/ganelson/inform.git
synced 2024-05-19 09:28:51 +03:00
Improved C receiver functions
This commit is contained in:
parent
4a3dd923b2
commit
39bc558d65
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -6,6 +6,7 @@ gameinfo.dbg
|
|||
gametext.txt
|
||||
|
||||
makefile
|
||||
!inform7/Tests/Test Makes/Eg*/makefile
|
||||
tags
|
||||
*.glkdata
|
||||
|
||||
|
|
|
@ -467,7 +467,7 @@ function togglePopup(material_id) {
|
|||
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_to_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7val</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">wchar_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-identifier-syntax">NULL</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">fputc</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">stdout</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax">)(</span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax">)(</span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, "");</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_put_char_stream</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7val</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">stream_id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7val</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">x</span><span class="Extracts-plain-syntax">) {</span>
|
||||
|
|
|
@ -165,7 +165,7 @@ first of those:
|
|||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">jmp_buf</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">execution_env</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">termination_code</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">just_undid</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> (*</span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax">)(</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">wchar_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> (*</span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax">)(</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">wchar_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">style</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax">} </span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax">;</span>
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7state</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_new_state</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax">);</span>
|
||||
|
@ -177,12 +177,12 @@ first of those:
|
|||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_restore_snapshot_from</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7snapshot</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">ss</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_destroy_latest_snapshot</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_run_process</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_set_process_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> (*</span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax">)(</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">wchar_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">));</span>
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_set_process_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> (*</span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax">)(</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">wchar_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">style</span><span class="Extracts-plain-syntax">));</span>
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_initializer</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_fatal_exit</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_destroy_state</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7state</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">s</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_destroy_snapshot</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7snapshot</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">old</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_default_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">wchar_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_default_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">wchar_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">style</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">default_main</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">argc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> **</span><span class="Extracts-identifier-syntax">argv</span><span class="Extracts-plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.h.</li></ul>
|
||||
|
@ -315,7 +315,7 @@ first of those:
|
|||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_copy_state</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, &(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">), &(</span><span class="Extracts-identifier-syntax">ss</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">then</span><span class="Extracts-plain-syntax">));</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_default_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">wchar_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_default_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">wchar_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">style</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-constant-syntax">201</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">fputc</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">stdout</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
|
||||
|
@ -342,7 +342,7 @@ first of those:
|
|||
<span class="Extracts-plain-syntax"> }</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">return</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">termination_code</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_set_process_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> (*</span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax">)(</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">wchar_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">)) {</span>
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_set_process_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> (*</span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax">)(</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">wchar_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">style</span><span class="Extracts-plain-syntax">)) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
100.0% in inform7 run
|
||||
54.1% in compilation to Inter
|
||||
53.9% in compilation to Inter
|
||||
39.2% in //Sequence::undertake_queued_tasks//
|
||||
3.4% in //MajorNodes::pre_pass//
|
||||
2.5% in //MajorNodes::pass_1//
|
||||
1.5% in //RTPhrasebook::compile_entries//
|
||||
1.4% in //ImperativeDefinitions::assess_all//
|
||||
1.2% in //ImperativeDefinitions::assess_all//
|
||||
1.1% in //RTKindConstructors::compile//
|
||||
0.4% in //MajorNodes::pass_2//
|
||||
0.4% in //Sequence::undertake_queued_tasks//
|
||||
0.4% in //Sequence::undertake_queued_tasks//
|
||||
0.4% in //World::stage_V//
|
||||
0.2% in //ImperativeDefinitions::compile_first_block//
|
||||
0.2% in //Sequence::undertake_queued_tasks//
|
||||
0.1% in //CompletionModule::compile//
|
||||
0.1% in //InferenceSubjects::emit_all//
|
||||
0.1% in //RTKindConstructors::compile_permissions//
|
||||
0.1% in //Task::make_built_in_kind_constructors//
|
||||
0.1% in //World::stages_II_and_III//
|
||||
2.1% not specifically accounted for
|
||||
43.8% in running Inter pipeline
|
||||
2.0% not specifically accounted for
|
||||
44.0% in running Inter pipeline
|
||||
12.6% in step preparation
|
||||
9.5% in inter step 7/16: consolidate-text
|
||||
7.8% in inter step 16/16: generate inform6 -> auto.inf
|
||||
7.8% in inter step 2/16: link
|
||||
7.9% in inter step 16/16: generate inform6 -> auto.inf
|
||||
7.7% in inter step 2/16: link
|
||||
1.5% in inter step 11/16: make-identifiers-unique
|
||||
0.4% in inter step 12/16: reconcile-verbs
|
||||
0.2% in inter step 14/16: eliminate-redundant-operations
|
||||
|
|
|
@ -126,7 +126,7 @@ void i7_restore_snapshot_from(i7process_t *proc, i7snapshot *ss) {
|
|||
i7_copy_state(proc, &(proc->state), &(ss->then));
|
||||
}
|
||||
|
||||
void i7_default_receiver(int id, wchar_t c) {
|
||||
void i7_default_receiver(int id, wchar_t c, char *style) {
|
||||
if (id == 201) fputc(c, stdout);
|
||||
}
|
||||
|
||||
|
@ -153,7 +153,7 @@ int i7_run_process(i7process_t *proc) {
|
|||
}
|
||||
return proc->termination_code;
|
||||
}
|
||||
void i7_set_process_receiver(i7process_t *proc, void (*receiver)(int id, wchar_t c)) {
|
||||
void i7_set_process_receiver(i7process_t *proc, void (*receiver)(int id, wchar_t c, char *style)) {
|
||||
proc->receiver = receiver;
|
||||
}
|
||||
|
||||
|
@ -1341,7 +1341,7 @@ i7val i7_rock_of_window(i7process_t *proc, i7val id) {
|
|||
|
||||
void i7_to_receiver(i7process_t *proc, i7val rock, wchar_t c) {
|
||||
if (proc->receiver == NULL) fputc(c, stdout);
|
||||
(proc->receiver)(rock, c);
|
||||
(proc->receiver)(rock, c, "");
|
||||
}
|
||||
|
||||
void i7_do_glk_put_char_stream(i7process_t *proc, i7val stream_id, i7val x) {
|
||||
|
|
|
@ -47,7 +47,7 @@ typedef struct i7process_t {
|
|||
jmp_buf execution_env;
|
||||
int termination_code;
|
||||
int just_undid;
|
||||
void (*receiver)(int id, wchar_t c);
|
||||
void (*receiver)(int id, wchar_t c, char *style);
|
||||
} i7process_t;
|
||||
|
||||
i7state i7_new_state(void);
|
||||
|
@ -59,12 +59,12 @@ void i7_restore_snapshot(i7process_t *proc);
|
|||
void i7_restore_snapshot_from(i7process_t *proc, i7snapshot *ss);
|
||||
void i7_destroy_latest_snapshot(i7process_t *proc);
|
||||
int i7_run_process(i7process_t *proc);
|
||||
void i7_set_process_receiver(i7process_t *proc, void (*receiver)(int id, wchar_t c));
|
||||
void i7_set_process_receiver(i7process_t *proc, void (*receiver)(int id, wchar_t c, char *style));
|
||||
void i7_initializer(i7process_t *proc);
|
||||
void i7_fatal_exit(i7process_t *proc);
|
||||
void i7_destroy_state(i7process_t *proc, i7state *s);
|
||||
void i7_destroy_snapshot(i7process_t *proc, i7snapshot *old);
|
||||
void i7_default_receiver(int id, wchar_t c);
|
||||
void i7_default_receiver(int id, wchar_t c, char *style);
|
||||
int default_main(int argc, char **argv);
|
||||
#define i7_lvalue_SET 1
|
||||
#define i7_lvalue_PREDEC 2
|
||||
|
|
36
inform7/Tests/Test Makes/Eg1-C/makefile
Normal file
36
inform7/Tests/Test Makes/Eg1-C/makefile
Normal file
|
@ -0,0 +1,36 @@
|
|||
# Where inform7 is installed, relative to this directory
|
||||
|
||||
INST = ../../..
|
||||
|
||||
# Abbreviations for running C compiler, linker, and inform7 tools
|
||||
|
||||
CC = clang -g -std=c99 -c -I $(INST)/Internal/Miscellany
|
||||
LINK = clang -g
|
||||
INFORM = $(INST)/Tangled/inform7 -silence
|
||||
|
||||
# There is one build target: an executable.
|
||||
|
||||
.PHONY: all
|
||||
all: Eg1
|
||||
|
||||
Eg1: Eg1-I.o
|
||||
$(LINK) -o Eg1 Eg1-I.o
|
||||
|
||||
Eg1-I.o: Eg1-I.c
|
||||
$(CC) -o Eg1-I.o Eg1-I.c
|
||||
|
||||
Eg1-I.c: Eg1.i7
|
||||
$(INFORM) -basic -format=C -o Eg1-I.c Eg1.i7
|
||||
|
||||
.PHONY: run
|
||||
run: Eg1
|
||||
./Eg1
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -f Eg1-I.c
|
||||
rm -f *.o
|
||||
rm -f Eg1
|
||||
rm -f actual_output.txt
|
||||
rm -f build_log.txt
|
||||
|
38
inform7/Tests/Test Makes/Eg2-C/makefile
Normal file
38
inform7/Tests/Test Makes/Eg2-C/makefile
Normal file
|
@ -0,0 +1,38 @@
|
|||
# Where inform7 is installed, relative to this directory
|
||||
|
||||
INST = ../../..
|
||||
|
||||
# Abbreviations for running C compiler, linker, and inform7 tools
|
||||
|
||||
CC = clang -g -std=c99 -c -I $(INST)/Internal/Miscellany
|
||||
LINK = clang -g
|
||||
INFORM = $(INST)/Tangled/inform7 -silence
|
||||
|
||||
# There is one build target: an executable.
|
||||
|
||||
.PHONY: all
|
||||
all: Eg2
|
||||
|
||||
Eg2: Eg2-C.o Eg2-I.o
|
||||
$(LINK) -o Eg2 Eg2-C.o Eg2-I.o
|
||||
|
||||
Eg2-C.o: Eg2.c
|
||||
$(CC) -o Eg2-C.o Eg2.c
|
||||
|
||||
Eg2-I.o: Eg2-I.c
|
||||
$(CC) -o Eg2-I.o Eg2-I.c
|
||||
|
||||
Eg2-I.c: Eg2.i7
|
||||
$(INFORM) -basic -format=C/no-main -o Eg2-I.c Eg2.i7
|
||||
|
||||
.PHONY: run
|
||||
run: Eg2
|
||||
./Eg2
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -f Eg2-I.c
|
||||
rm -f *.o
|
||||
rm -f Eg2
|
||||
rm -f actual_output.txt
|
||||
rm -f build_log.txt
|
0
inform7/Tests/Test Makes/Eg3-C.txt
Normal file
0
inform7/Tests/Test Makes/Eg3-C.txt
Normal file
40
inform7/Tests/Test Makes/Eg3-C/Eg3.c
Normal file
40
inform7/Tests/Test Makes/Eg3-C/Eg3.c
Normal file
|
@ -0,0 +1,40 @@
|
|||
#include "inform7_clib.h"
|
||||
|
||||
char *current_201_style = "";
|
||||
void HTML_begin(void) {
|
||||
current_201_style = "";
|
||||
printf("<html><body>\n");
|
||||
}
|
||||
|
||||
void HTML_styling_receiver(int id, wchar_t c, char *style) {
|
||||
if (id == 201) {
|
||||
if (strcmp(style, current_201_style) != 0) {
|
||||
if (current_201_style) printf("</span>");
|
||||
current_201_style = style;
|
||||
if (style) printf("<span class=\"%s\">", style);
|
||||
}
|
||||
if (c == '&') printf("&");
|
||||
else if (c == '<') printf("<");
|
||||
else if (c == '>') printf(">");
|
||||
else putchar(c);
|
||||
}
|
||||
}
|
||||
|
||||
void HTML_end(void) {
|
||||
if (current_201_style) printf("</span>");
|
||||
printf("</html></body>\n");
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
printf("Hello from the C source code.\n");
|
||||
i7process_t proc = i7_new_process();
|
||||
i7_set_process_receiver(&proc, HTML_styling_receiver);
|
||||
HTML_begin();
|
||||
int exit_code = i7_run_process(&proc);
|
||||
HTML_end();
|
||||
if (exit_code == 1) {
|
||||
printf("*** Fatal error: halted ***\n");
|
||||
fflush(stdout); fflush(stderr);
|
||||
}
|
||||
return exit_code;
|
||||
}
|
2
inform7/Tests/Test Makes/Eg3-C/Eg3.i7
Normal file
2
inform7/Tests/Test Makes/Eg3-C/Eg3.i7
Normal file
|
@ -0,0 +1,2 @@
|
|||
To begin:
|
||||
say "Hello & [italic type]welcome[roman type] from <Inform code>!"
|
38
inform7/Tests/Test Makes/Eg3-C/makefile
Normal file
38
inform7/Tests/Test Makes/Eg3-C/makefile
Normal file
|
@ -0,0 +1,38 @@
|
|||
# Where inform7 is installed, relative to this directory
|
||||
|
||||
INST = ../../..
|
||||
|
||||
# Abbreviations for running C compiler, linker, and inform7 tools
|
||||
|
||||
CC = clang -g -std=c99 -c -I $(INST)/Internal/Miscellany
|
||||
LINK = clang -g
|
||||
INFORM = $(INST)/Tangled/inform7 -silence
|
||||
|
||||
# There is one build target: an executable.
|
||||
|
||||
.PHONY: all
|
||||
all: Eg3
|
||||
|
||||
Eg3: Eg3-C.o Eg3-I.o
|
||||
$(LINK) -o Eg3 Eg3-C.o Eg3-I.o
|
||||
|
||||
Eg3-C.o: Eg3.c
|
||||
$(CC) -o Eg3-C.o Eg3.c
|
||||
|
||||
Eg3-I.o: Eg3-I.c
|
||||
$(CC) -o Eg3-I.o Eg3-I.c
|
||||
|
||||
Eg3-I.c: Eg3.i7
|
||||
$(INFORM) -basic -format=C/no-main -o Eg3-I.c Eg3.i7
|
||||
|
||||
.PHONY: run
|
||||
run: Eg3
|
||||
./Eg3
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -f Eg3-I.c
|
||||
rm -f *.o
|
||||
rm -f Eg3
|
||||
rm -f actual_output.txt
|
||||
rm -f build_log.txt
|
|
@ -394,7 +394,7 @@ i7val i7_rock_of_window(i7process_t *proc, i7val id) {
|
|||
|
||||
void i7_to_receiver(i7process_t *proc, i7val rock, wchar_t c) {
|
||||
if (proc->receiver == NULL) fputc(c, stdout);
|
||||
(proc->receiver)(rock, c);
|
||||
(proc->receiver)(rock, c, "");
|
||||
}
|
||||
|
||||
void i7_do_glk_put_char_stream(i7process_t *proc, i7val stream_id, i7val x) {
|
||||
|
|
|
@ -90,7 +90,7 @@ typedef struct i7process_t {
|
|||
jmp_buf execution_env;
|
||||
int termination_code;
|
||||
int just_undid;
|
||||
void (*receiver)(int id, wchar_t c);
|
||||
void (*receiver)(int id, wchar_t c, char *style);
|
||||
} i7process_t;
|
||||
|
||||
i7state i7_new_state(void);
|
||||
|
@ -102,12 +102,12 @@ void i7_restore_snapshot(i7process_t *proc);
|
|||
void i7_restore_snapshot_from(i7process_t *proc, i7snapshot *ss);
|
||||
void i7_destroy_latest_snapshot(i7process_t *proc);
|
||||
int i7_run_process(i7process_t *proc);
|
||||
void i7_set_process_receiver(i7process_t *proc, void (*receiver)(int id, wchar_t c));
|
||||
void i7_set_process_receiver(i7process_t *proc, void (*receiver)(int id, wchar_t c, char *style));
|
||||
void i7_initializer(i7process_t *proc);
|
||||
void i7_fatal_exit(i7process_t *proc);
|
||||
void i7_destroy_state(i7process_t *proc, i7state *s);
|
||||
void i7_destroy_snapshot(i7process_t *proc, i7snapshot *old);
|
||||
void i7_default_receiver(int id, wchar_t c);
|
||||
void i7_default_receiver(int id, wchar_t c, char *style);
|
||||
int default_main(int argc, char **argv);
|
||||
=
|
||||
|
||||
|
@ -240,7 +240,7 @@ void i7_restore_snapshot_from(i7process_t *proc, i7snapshot *ss) {
|
|||
i7_copy_state(proc, &(proc->state), &(ss->then));
|
||||
}
|
||||
|
||||
void i7_default_receiver(int id, wchar_t c) {
|
||||
void i7_default_receiver(int id, wchar_t c, char *style) {
|
||||
if (id == 201) fputc(c, stdout);
|
||||
}
|
||||
|
||||
|
@ -267,7 +267,7 @@ int i7_run_process(i7process_t *proc) {
|
|||
}
|
||||
return proc->termination_code;
|
||||
}
|
||||
void i7_set_process_receiver(i7process_t *proc, void (*receiver)(int id, wchar_t c)) {
|
||||
void i7_set_process_receiver(i7process_t *proc, void (*receiver)(int id, wchar_t c, char *style)) {
|
||||
proc->receiver = receiver;
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ gameinfo.dbg
|
|||
gametext.txt
|
||||
|
||||
makefile
|
||||
!inform7/Tests/Test Makes/Eg*/makefile
|
||||
tags
|
||||
*.glkdata
|
||||
|
||||
|
|
Loading…
Reference in a new issue