static CRB_Value nv_fputs_proc(CRB_Interpreter *interpreter, CRB_LocalEnvironment *env, int arg_count, CRB_Value *args) { CRB_Value value; FILE *fp; CRB_check_argument_count(interpreter, env, arg_count, 2); value.type = CRB_NULL_VALUE; if (args[0].type != CRB_STRING_VALUE || args[1].type != CRB_NATIVE_POINTER_VALUE || (!CRB_check_native_pointer_type(args[1].u.object, &st_file_type_info))) { CRB_error(interpreter, env, &st_lib_info, __LINE__, (int)FPUTS_ARGUMENT_TYPE_ERR, CRB_MESSAGE_ARGUMENT_END); } check_file_pointer(interpreter,env, args[1].u.object); fp = CRB_object_get_native_pointer(args[1].u.object); CRB_print_wcs(fp, CRB_object_get_string(args[0].u.object)); return value; }
CRB_Value crb_nv_print_proc(CRB_Interpreter *interpreter, CRB_LocalEnvironment *env, int arg_count, CRB_Value *args) { CRB_Value value; CRB_Char *str; value.type = CRB_NULL_VALUE; check_argument_count(arg_count, 1); str = CRB_value_to_string(&args[0]); CRB_print_wcs(stdout, str); MEM_free(str); return value; }
CRB_Value crb_nv_fputs_proc(CRB_Interpreter *interpreter, CRB_LocalEnvironment *env, int arg_count, CRB_Value *args) { CRB_Value value; FILE *fp; check_argument_count(arg_count, 2); value.type = CRB_NULL_VALUE; if (args[0].type != CRB_STRING_VALUE || (args[1].type != CRB_NATIVE_POINTER_VALUE || !check_native_pointer(&args[1]))) { crb_runtime_error(0, FPUTS_ARGUMENT_TYPE_ERR, MESSAGE_ARGUMENT_END); } fp = args[1].u.native_pointer.pointer; CRB_print_wcs(fp, args[0].u.object->u.string.string); return value; }