• R/O
  • HTTP
  • SSH
  • HTTPS

提交

标签
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

修订版b110f544a7c6bcb4163b3bf55be79a2937bc89ef (tree)
时间2019-03-14 18:40:23
作者dhrname <dhrname@user...>
Commiterdhrname

Log Message

Modify the callback interface

更改概述

差异

--- a/source_code/Makefile
+++ b/source_code/Makefile
@@ -1,4 +1,4 @@
1-CC = gcc
1+CC = clang
22 DEBUGMODE = -Wall -std=c11 -O0 -g -pg
33 NODEBUGMODE = -Wall -std=c11 -O2
44 SHELL = /bin/sh
--- a/source_code/orderedpair/list/tree/nodelist/class/class.h
+++ b/source_code/orderedpair/list/tree/nodelist/class/class.h
@@ -11,13 +11,12 @@
1111 * 以下のサンプルコードでは、名前と乙が添数集合の元
1212 * すなわち、以下のような添数集合Λがあるとき、
1313 * Λ = {名前, 乙}
14- * 写像集合を元とするようなある集合族Aについて、
15- * Λから集合族Aへの写像aを、クラスと考える
16- * インスタンス化は、この集合族Aから、Aの元である写像集合B(A∍B)の元を集めた集合への写像bと考える
17- * いわば、Bの選出である
18- * メソッドの呼び出しは、写像aと写像bの関数合成、すなわち、
19- * c = a ∘ b
20- * を満たす写像cと考える(メソッドの名前集合はΛであることに注意せよ)
14+ * Λによって添数づけられた写像集合系Aの元の族Cを、クラスと考える
15+ * インスタンス化は、この集合系Aから、Aの元である写像集合B(A∍B)の元を集めた集合への写像bと考える
16+ * このとき、インスタンス化を選出と呼ぶ
17+ * メソッドの呼び出しは、集合族Cと写像bの関数合成、すなわち、
18+ * a = C ∘ b
19+ * を満たす写像aと考える(このとき、メソッドの名前集合はΛであることに注意せよ)
2120 *
2221 *
2322 * 継承は遺伝継承である(クラスの単一継承と多重継承の両方のメリットを生かす)
--- a/source_code/shadowstar.c
+++ b/source_code/shadowstar.c
@@ -1320,29 +1320,34 @@ uint_fast64_t ST_readFile(ST_Char *name, ST_File_Call callback)
13201320 if (NULL == fp)
13211321 {
13221322 /*ファイルを開くことを失敗した場合*/
1323- eprint_log("Fail to open that file\n");
1323+ eprint_log("Fail To Open That File\n");
13241324 return ST_FILE_FAIL;
13251325 }
13261326
13271327 /*ファイルの長さ*/
13281328 size_t filelength = fread(s, sizeof(ST_Char), ST_TEXT_LENGTH, fp);
1329-
1329+ if ( (sizeof(ST_Char) == 0) || (0 == ST_TEXT_LENGTH) )
1330+ {
1331+ errno = EINVAL;
1332+ eprint_log("ST_Char or ST_TEXT_LENGTH is Zero Error on the fread:");
1333+ return ST_FILE_FAIL;
1334+ }
13301335 if ( ferror(fp) )
13311336 {
13321337 /*ファイルの読み込みに失敗した場合*/
1333- eprint_log("Fail to read that file\n");
1338+ eprint_log("Fail To Read That File\n");
13341339 fclose(fp);
13351340 return ST_FILE_FAIL;
13361341 }
13371342 else
13381343 {
1339- callback(s, (uint_fast64_t)filelength);
1344+ callback(name, s, (uint_fast64_t)filelength);
13401345 }
13411346
13421347 if ( EOF == fclose(fp) )
13431348 {
13441349 /*ファイルを閉じることに失敗した場合*/
1345- eprint_log("Fail to close that file\n");
1350+ eprint_log("Fail To Close That File\n");
13461351 return ST_FILE_FAIL;
13471352 }
13481353
@@ -1357,7 +1362,7 @@ uint_fast64_t ST_readFile(ST_Char *name, ST_File_Call callback)
13571362 if ( ST_FILE_FAIL == fd )
13581363 {
13591364 /*ファイルを開くことを失敗した場合*/
1360- eprint_log("Fail to open that file\n");
1365+ eprint_log("Fail To Open That File" name "\n");
13611366 return ST_FILE_FAIL;
13621367 }
13631368
@@ -1367,19 +1372,19 @@ uint_fast64_t ST_readFile(ST_Char *name, ST_File_Call callback)
13671372 if (ST_FILE_FAIL == filelength)
13681373 {
13691374 /*ファイルの読み込みを失敗した場合*/
1370- eprint_log("Fail to read that file\n");
1375+ eprint_log("Fail To Read That File\n");
13711376 close(fd);
13721377 return ST_FILE_FAIL;
13731378 }
13741379 else
13751380 {
1376- callback(s, (uint_fast64_t)filelength);
1381+ callback(name, s, (uint_fast64_t)filelength);
13771382 }
13781383
13791384 if ( ST_FILE_FAIL == close(fd) )
13801385 {
13811386 /*ファイルを閉じることを失敗した場合*/
1382- eprint_log("Fail to close that file\n");
1387+ eprint_log("Fail To Close That File" name "\n");
13831388 return ST_FILE_FAIL;
13841389 }
13851390
@@ -1396,6 +1401,7 @@ static inline ST_Token_Mode* alloca_tokens(uint_fast64_t filelength)
13961401 return s;
13971402 }
13981403
1404+/*ゲーデル数の一種である自然数のペアのコード化関数*/
13991405 static inline uint64_t pair (uint64_t x, uint64_t y)
14001406 {
14011407 return (((x+y) * (x+y+1) / 2 ) + x + 1);
@@ -1405,7 +1411,7 @@ static inline uint64_t pair (uint64_t x, uint64_t y)
14051411 * 引数sはソースコードの文字列。
14061412 * 引数filelengthはsの長さ
14071413 * 上記のST_readFile関数のコールバック関数として使用*/
1408-void ST_main(ST_Char* s, uint_fast64_t filelength)
1414+void ST_main(ST_Char* name, ST_Char* s, uint_fast64_t filelength)
14091415 {
14101416 if (filelength > STAR_TOKEN_LENGTH_MAX)
14111417 {
--- a/source_code/shadowstar.h
+++ b/source_code/shadowstar.h
@@ -69,7 +69,7 @@ typedef struct ST_Text_Code {
6969
7070 /*callback用の関数型
7171 * ST_readFile 関数で使う*/
72-typedef void (*ST_File_Call)(ST_Char*, uint_fast64_t);
72+typedef void (*ST_File_Call)(ST_Char*, ST_Char*, uint_fast64_t);
7373
7474 /*ST_readFile 関数
7575 * 引数nameで指定された名前のファイルの読み込みを行う*/
@@ -79,4 +79,4 @@ uint_fast64_t ST_readFile(ST_Char*, ST_File_Call);
7979 * 引数sはソースコードの文字列。
8080 * 引数filelengthはsの長さ
8181 * 上記のST_readFile関数のコールバック関数として使用*/
82-void ST_main(ST_Char*, uint_fast64_t);
82+void ST_main(ST_Char*, ST_Char*, uint_fast64_t);
Binary files a/source_code/shadowstar.o and b/source_code/shadowstar.o differ
Binary files a/source_code/star.o and b/source_code/star.o differ
--- a/source_code/startest.c
+++ b/source_code/startest.c
@@ -33,9 +33,10 @@ int tests_invalid(void);
3333 static uint_fast64_t tests_file_length = 0;
3434
3535 /*ST_readFile 関数のテストに使うコールバック用の関数*/
36-void tests_callback_file(ST_Char *s, uint_fast64_t n)
36+void tests_callback_file(ST_Char* name, ST_Char *s, uint_fast64_t n)
3737 {
3838 tests_file_length = n;
39+ printf("FileName: %s\n", name);
3940 printf("%d\n", n);
4041 printf("%s\n", s);
4142 }
@@ -926,8 +927,8 @@ int tests_invalid() {
926927
927928 assert(ST_FILE_FAIL == ST_readFile(NULL, tests_callback_file));
928929
929- ST_main(u8"w\np\n", 1048577);
930- ST_main(u8"w\np\n", 0);
930+ ST_main(u8"error", u8"w\np\n", 1048577);
931+ ST_main(u8"error", u8"w\np\n", 0);
931932
932933 printf("ended error test...\n");
933934
Binary files a/source_code/startest.o and b/source_code/startest.o differ