📄 inout.c
字号:
tree_cons (NULL_TREE, null_pointer_node, /* bufptr */ tree_cons (NULL_TREE, integer_zero_node, /* syserrno */ tree_cons (NULL_TREE, tmp, /* usage */ tree_cons (NULL_TREE, tmp, /* ctl_pre */ tree_cons (NULL_TREE, tmp, /* ctl_post */ NULL_TREE)))))))))); /* the type for stdin, stdout, stderr */ /* text part */ decl1 = build_decl (FIELD_DECL, get_identifier ("flags"), long_unsigned_type_node); DECL_INITIAL (decl1) = NULL_TREE; listbase = decl1; decl2 = build_decl (FIELD_DECL, get_identifier ("text_record"), ptr_type_node); DECL_INITIAL (decl2) = NULL_TREE; TREE_CHAIN (decl1) = decl2; decl1 = decl2; decl2 = build_decl (FIELD_DECL, get_identifier ("access_sub"), ptr_type_node); DECL_INITIAL (decl2) = NULL_TREE; TREE_CHAIN (decl1) = decl2; decl1 = decl2; decl2 = build_decl (FIELD_DECL, get_identifier ("actual_index"), long_unsigned_type_node); DECL_INITIAL (decl2) = NULL_TREE; TREE_CHAIN (decl1) = decl2; TREE_CHAIN (decl2) = NULL_TREE; txt = build_chill_struct_type (listbase); /* access part */ decl1 = build_decl (FIELD_DECL, get_identifier ("flags"), long_unsigned_type_node); DECL_INITIAL (decl1) = NULL_TREE; listbase = decl1; decl2 = build_decl (FIELD_DECL, get_identifier ("reclength"), long_unsigned_type_node); DECL_INITIAL (decl2) = NULL_TREE; TREE_CHAIN (decl1) = decl2; decl1 = decl2; decl2 = build_decl (FIELD_DECL, get_identifier ("lowindex"), long_integer_type_node); DECL_INITIAL (decl2) = NULL_TREE; TREE_CHAIN (decl1) = decl2; decl1 = decl2; decl2 = build_decl (FIELD_DECL, get_identifier ("highindex"), long_integer_type_node); DECL_INITIAL (decl2) = NULL_TREE; TREE_CHAIN (decl1) = decl2; decl2 = decl1; decl2 = build_decl (FIELD_DECL, get_identifier ("association"), ptr_type_node); DECL_INITIAL (decl2) = NULL_TREE; TREE_CHAIN (decl1) = decl2; decl1 = decl2; decl2 = build_decl (FIELD_DECL, get_identifier ("base"), long_unsigned_type_node); DECL_INITIAL (decl2) = NULL_TREE; TREE_CHAIN (decl1) = decl2; decl1 = decl2; decl2 = build_decl (FIELD_DECL, get_identifier ("storelocptr"), ptr_type_node); DECL_INITIAL (decl2) = NULL_TREE; TREE_CHAIN (decl1) = decl2; decl1 = decl2; decl2 = build_decl (FIELD_DECL, get_identifier ("rectype"), long_integer_type_node); DECL_INITIAL (decl2) = NULL_TREE; TREE_CHAIN (decl1) = decl2; TREE_CHAIN (decl2) = NULL_TREE; acc = build_chill_struct_type (listbase); /* the location */ tmp = build_string_type (char_type_node, build_int_2 (STDIO_TEXT_LENGTH, 0)); tloc = build_varying_struct (tmp); /* now the final mode */ decl1 = build_decl (FIELD_DECL, get_identifier ("txt"), txt); listbase = decl1; decl2 = build_decl (FIELD_DECL, get_identifier ("acc"), acc); TREE_CHAIN (decl1) = decl2; decl1 = decl2; decl2 = build_decl (FIELD_DECL, get_identifier ("tloc"), tloc); TREE_CHAIN (decl1) = decl2; decl1 = decl2; decl2 = build_lang_decl (TYPE_DECL, get_identifier ("__indexmode"), void_type_node); TREE_CHAIN (decl1) = decl2; decl1 = decl2; decl2 = build_decl (CONST_DECL, get_identifier ("__textlength"), integer_type_node); DECL_INITIAL (decl2) = build_int_2 (STDIO_TEXT_LENGTH, 0); TREE_CHAIN (decl1) = decl2; decl1 = decl2; decl2 = build_decl (CONST_DECL, get_identifier ("__dynamic"), integer_type_node); DECL_INITIAL (decl2) = integer_zero_node; TREE_CHAIN (decl1) = decl2; TREE_CHAIN (decl2) = NULL_TREE; result = build_chill_struct_type (listbase); pushdecl (tmp = build_decl (TYPE_DECL, get_identifier ("__stdio_text"), result)); DECL_SOURCE_LINE (tmp) = 0; satisfy_decl (tmp, 0); stdio_type_node = TREE_TYPE (tmp); CH_IS_TEXT_MODE (stdio_type_node) = 1; /* predefined usage mode */ enum1 = start_enum (NULL_TREE); listbase = NULL_TREE; result = build_enumerator ( get_identifier ((ignore_case || ! special_UC) ? "readonly" : "READONLY"), NULL_TREE); listbase = chainon (result, listbase); result = build_enumerator ( get_identifier ((ignore_case || ! special_UC) ? "writeonly" : "WRITEONLY"), NULL_TREE); listbase = chainon (result, listbase); result = build_enumerator ( get_identifier ((ignore_case || ! special_UC) ? "readwrite" : "READWRITE"), NULL_TREE); listbase = chainon (result, listbase); result = finish_enum (enum1, listbase); pushdecl (tmp = build_decl (TYPE_DECL, get_identifier ((ignore_case || ! special_UC) ? "usage" : "USAGE"), result)); DECL_SOURCE_LINE (tmp) = 0; satisfy_decl (tmp, 0); usage_type_node = TREE_TYPE (tmp); TYPE_NAME (usage_type_node) = tmp; CH_NOVELTY (usage_type_node) = tmp; /* predefined where mode */ enum1 = start_enum (NULL_TREE); listbase = NULL_TREE; result = build_enumerator ( get_identifier ((ignore_case || ! special_UC) ? "first" : "FIRST"), NULL_TREE); listbase = chainon (result, listbase); result = build_enumerator ( get_identifier ((ignore_case || ! special_UC) ? "same" : "SAME"), NULL_TREE); listbase = chainon (result, listbase); result = build_enumerator ( get_identifier ((ignore_case || ! special_UC) ? "last" : "LAST"), NULL_TREE); listbase = chainon (result, listbase); result = finish_enum (enum1, listbase); pushdecl (tmp = build_decl (TYPE_DECL, get_identifier ((ignore_case || ! special_UC) ? "where" : "WHERE"), result)); DECL_SOURCE_LINE (tmp) = 0; satisfy_decl (tmp, 0); where_type_node = TREE_TYPE (tmp); TYPE_NAME (where_type_node) = tmp; CH_NOVELTY (where_type_node) = tmp;}static voiddeclare_predefined_file (name, assembler_name) char *name; char* assembler_name;{ tree decl = build_lang_decl (VAR_DECL, get_identifier (name), stdio_type_node); DECL_ASSEMBLER_NAME (decl) = get_identifier(assembler_name); TREE_STATIC (decl) = 1; TREE_PUBLIC (decl) = 1; DECL_EXTERNAL (decl) = 1; DECL_IN_SYSTEM_HEADER (decl) = 1; make_decl_rtl (decl, 0, 1); pushdecl (decl);}/* initialisation of all IO/related functions, types, etc. */voidinout_init (){ /* We temporarily reset the maximum_field_alignment to zero so the compiler's init data structures can be compatible with the run-time system, even when we're compiling with -fpack. */ extern int maximum_field_alignment; int save_maximum_field_alignment = maximum_field_alignment; extern tree chill_predefined_function_type; tree endlink = void_list_node; tree bool_ftype_ptr_ptr_int; tree ptr_ftype_ptr_ptr_int; tree luns_ftype_ptr_ptr_int; tree int_ftype_ptr_ptr_int; tree ptr_ftype_ptr_ptr_int_ptr_int_ptr_int; tree void_ftype_ptr_ptr_int_ptr_int_ptr_int; tree void_ftype_ptr_ptr_int; tree void_ftype_ptr_ptr_int_int_int_long_ptr_int; tree ptr_ftype_ptr_int_ptr_ptr_int; tree void_ftype_ptr_int_ptr_luns_ptr_int; tree void_ftype_ptr_ptr_ptr_int; tree void_ftype_ptr_int_ptr_int; tree void_ftype_ptr_int_ptr_int_ptr_int_ptr_int; maximum_field_alignment = 0; builtin_function ((ignore_case || ! special_UC) ? "associate" : "ASSOCIATE", chill_predefined_function_type, BUILT_IN_ASSOCIATE, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "connect" : "CONNECT", chill_predefined_function_type, BUILT_IN_CONNECT, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "create" : "CREATE", chill_predefined_function_type, BUILT_IN_CREATE, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "delete" : "DELETE", chill_predefined_function_type, BUILT_IN_CH_DELETE, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "disconnect" : "DISCONNECT", chill_predefined_function_type, BUILT_IN_DISCONNECT, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "dissociate" : "DISSOCIATE", chill_predefined_function_type, BUILT_IN_DISSOCIATE, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "eoln" : "EOLN", chill_predefined_function_type, BUILT_IN_EOLN, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "existing" : "EXISTING", chill_predefined_function_type, BUILT_IN_EXISTING, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "getassociation" : "GETASSOCIATION", chill_predefined_function_type, BUILT_IN_GETASSOCIATION, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "gettextaccess" : "GETTEXTASSCESS", chill_predefined_function_type, BUILT_IN_GETTEXTACCESS, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "gettextindex" : "GETTEXTINDEX", chill_predefined_function_type, BUILT_IN_GETTEXTINDEX, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "gettextrecord" : "GETTEXTRECORD", chill_predefined_function_type, BUILT_IN_GETTEXTRECORD, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "getusage" : "GETUSAGE", chill_predefined_function_type, BUILT_IN_GETUSAGE, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "indexable" : "INDEXABLE", chill_predefined_function_type, BUILT_IN_INDEXABLE, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "isassociated" : "ISASSOCIATED", chill_predefined_function_type, BUILT_IN_ISASSOCIATED, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "modify" : "MODIFY", chill_predefined_function_type, BUILT_IN_MODIFY, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "outoffile" : "OUTOFFILE", chill_predefined_function_type, BUILT_IN_OUTOFFILE, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "readable" : "READABLE", chill_predefined_function_type, BUILT_IN_READABLE, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "readrecord" : "READRECORD", chill_predefined_function_type, BUILT_IN_READRECORD, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "readtext" : "READTEXT", chill_predefined_function_type, BUILT_IN_READTEXT, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "sequencible" : "SEQUENCIBLE", chill_predefined_function_type, BUILT_IN_SEQUENCIBLE, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "settextaccess" : "SETTEXTACCESS", chill_predefined_function_type, BUILT_IN_SETTEXTACCESS, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "settextindex" : "SETTEXTINDEX", chill_predefined_function_type, BUILT_IN_SETTEXTINDEX, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "settextrecord" : "SETTEXTRECORD", chill_predefined_function_type, BUILT_IN_SETTEXTRECORD, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "variable" : "VARIABLE", chill_predefined_function_type, BUILT_IN_VARIABLE, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "writeable" : "WRITEABLE", chill_predefined_function_type, BUILT_IN_WRITEABLE, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "writerecord" : "WRITERECORD", chill_predefined_function_type, BUILT_IN_WRITERECORD, NULL_PTR); builtin_function ((ignore_case || ! special_UC) ? "writetext" : "WRITETEXT", chill_predefined_function_type, BUILT_IN_WRITETEXT, NULL_PTR); /* build function prototypes */ bool_ftype_ptr_ptr_int = build_function_type (boolean_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, endlink)))); ptr_ftype_ptr_ptr_int_ptr_int_ptr_int = build_function_type (ptr_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, endlink)))))))); void_ftype_ptr_ptr_int = build_function_type (void_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, endlink)))); void_ftype_ptr_ptr_int_ptr_int_ptr_int = build_function_type (void_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, endlink)))))))); void_ftype_ptr_ptr_int_int_int_long_ptr_int = build_function_type (void_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, tree_cons (NULL_TREE, integer_type_node, tree_cons (NULL_TREE, integer_type_node, tree_cons (NULL_TREE, long_integer_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, endlink))))))))); ptr_ftype_ptr_ptr_int = build_function_type (ptr_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, endlink)))); int_ftype_ptr_ptr_int = build_function_type (integer_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, endlink)))); ptr_ftype_ptr_int_ptr_ptr_int = build_function_type (ptr_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, endlink)))))); void_ftype_ptr_int_ptr_luns_ptr_int = build_function_type (void_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, long_unsigned_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, endlink))))))); luns_ftype_ptr_ptr_int = build_function_type (long_unsigned_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, endlink)))); void_ftype_ptr_ptr_ptr_int = build_function_type (void_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, endlink))))); void_ftype_ptr_int_ptr_int = build_function_type (void_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, endlink))))); void_ftype_ptr_int_ptr_int_ptr_int_ptr_int = build_function_type (void_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, tree_cons (NULL_TREE, ptr_type_node, tree_cons (NULL_TREE, integer_type_node, endlink))))))))); builtin_function ("__associate", ptr_ftype_ptr_ptr_int_ptr_int_ptr_int, NOT_BUILT_IN, NULL_PTR); builtin_function ("__connect", void_ftype_ptr_ptr_int_int_int_long_ptr_int, NOT_BUILT_IN, NULL_PTR); builtin_function ("__create", void_ftype_ptr_ptr_int, NOT_BUILT_IN, NULL_PTR); builtin_function ("__delete", void_ftype_ptr_ptr_int, NOT_BUILT_IN, NULL_PTR);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -