亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? log.java

?? java編譯器gjc源碼 java編譯環(huán)境
?? JAVA
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/**
 * @(#)Log.java	1.26 03/01/23
 *
 * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */
package com.sun.tools.javac.v8.util;
import java.io.*;

import java.util.ResourceBundle;

import java.util.MissingResourceException;

import java.text.MessageFormat;


/**
 * A class for error logs. Reports errors and warnings, and
 *  keeps track of error numbers and positions.
 */
public class Log implements LayoutCharacters {

    /**
     * The context key for the log.
     */
    private static final Context.Key logKey = new Context.Key();

    /**
     * The context key for the output PrintWriter.
     */
    public static final Context.Key outKey = new Context.Key();
    public final PrintWriter errWriter;
    public final PrintWriter warnWriter;
    public final PrintWriter noticeWriter;

    /**
     * The maximum number of errors/warnings that are reported,
     *  can be reassigned from outside.
     */
    private final int MaxErrors;
    private final int MaxWarnings;

    /**
     * Switch: prompt user on each error.
     */
    public boolean promptOnError;

    /**
     * Switch: emit warning messages.
     */
    public boolean emitWarnings;

    /**
     * Construct a log with given I/O redirections.
     */
    protected Log(Context context, PrintWriter errWriter, PrintWriter warnWriter,
            PrintWriter noticeWriter) {
        super();
        context.put(logKey, this);
        this.errWriter = errWriter;
        this.warnWriter = warnWriter;
        this.noticeWriter = noticeWriter;
        Options options = Options.instance(context);
        this.promptOnError = options.get("-prompt") != null;
        this.emitWarnings = options.get("-nowarn") == null;
        this.sourcename = Name.Table.instance(context).__input;
        this.MaxErrors = getIntOption(options, "-Xmaxerrs", 100);
        this.MaxWarnings = getIntOption(options, "-Xmaxwarns", 100);
    }

    private int getIntOption(Options options, String optionName, int defaultValue) {
        String s = (String) options.get(optionName);
        try {
            if (s != null)
                return Integer.parseInt(s);
        } catch (NumberFormatException e) {
        }
        return defaultValue;
    }

    /**
      * The default writer for diagnostics
      */
    static final PrintWriter defaultWriter(Context context) {
        PrintWriter result = (PrintWriter) context.get(outKey);
        if (result == null)
            context.put(outKey, result = new PrintWriter(System.err));
        return result;
    }

    /**
      * Construct a with default settings.
      */
    protected Log(Context context) {
        this(context, defaultWriter(context));
    }

    /**
      * Construct a with all output redirected.
      */
    protected Log(Context context, PrintWriter defaultWriter) {
        this(context, defaultWriter, defaultWriter, defaultWriter);
    }

    /**
      * Get the Log instance for this context.
      */
    public static Log instance(Context context) {
        Log instance = (Log) context.get(logKey);
        if (instance == null)
            instance = new Log(context);
        return instance;
    }

    /**
      * The name of the file that's currently translated.
      */
    private Name sourcename;

    /**
     * The number of errors encountered so far.
     */
    public int nerrors = 0;

    /**
     * The number of warnings encountered so far.
     */
    public int nwarnings = 0;

    /**
     * A set of all errors generated so far. This is used to avoid printing an
     *  error message more than once. For each error, a pair consisting of the
     *  source file name and source code position of the errir is added to the set.
     */
    private Set recorded = Set.make();

    /**
     * The buffer containing the file that's currently translated.
     */
    private byte[] buf = null;

    /**
     * The position in the buffer at which last error was reported
     */
    private int bp;

    /**
     * the source line at which last error was reported.
     */
    private int lastLine;

    /**
     * Re-assign source name, returning previous setting.
     */
    public Name useSource(Name name) {
        Name prev = sourcename;
        sourcename = name;
        if (prev != sourcename)
            buf = null;
        return prev;
    }

    /**
      * Return current source name.
      */
    public Name currentSource() {
        return sourcename;
    }

    /**
      * Flush the logs
      */
    public void flush() {
        errWriter.flush();
        warnWriter.flush();
        noticeWriter.flush();
    }

    /**
      * Prompt user after an error.
      */
    public void prompt() {
        if (promptOnError) {
            System.err.println(getLocalizedString("resume.abort"));
            char ch;
            try {
                while (true) {
                    switch (System.in.read()) {
                    case 'a':

                    case 'A':
                        System.exit(-1);
                        return;

                    case 'r':

                    case 'R':
                        return;

                    case 'x':

                    case 'X':
                        throw new AssertionError("user abort");

                    default:

                    }
                }
            } catch (IOException e) {
            }
        }
    }

    /**
      * Print a faulty source code line and point to the error.
      *  @param line    The line number of the printed line in the current buffer.
      *  @param col     The number of the column to be highlighted as error position.
      */
    private void printErrLine(int line, int col, PrintWriter writer) {
        try {
            if (buf == null) {
                FileInputStream in = new FileInputStream(sourcename.toString());
                buf = new byte[in.available()];
                in.read(buf);
                in.close();
                bp = 0;
                lastLine = 1;
            } else if (lastLine > line) {
                bp = 0;
                lastLine = 1;
            }
            while (bp < buf.length && lastLine < line) {
                switch (buf[bp]) {
                case CR:
                    bp++;
                    if (bp < buf.length && buf[bp] == LF)
                        bp++;
                    lastLine++;
                    break;

                case LF:
                    bp++;
                    lastLine++;
                    break;

                default:
                    bp++;

                }
            }
            int lineEnd = bp;
            while (lineEnd < buf.length && buf[lineEnd] != CR && buf[lineEnd] != LF)
                lineEnd++;
            printLines(writer, new String(buf, bp, lineEnd - bp));
            if (col == 0)
                col = 1;
            byte[] ptr = new byte[col];
            for (int i = 0; i < col - 1; i++)
                ptr[i] = (byte)' ';
            ptr[col - 1] = (byte)'^';
            printLines(writer, new String(ptr, 0, col));
        } catch (IOException e) {

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一区二区精华| 欧美三级电影在线观看| 日本成人在线看| 亚洲黄色录像片| 国产精品国产精品国产专区不蜜| 日韩欧美自拍偷拍| 欧美另类videos死尸| 欧美日韩国产高清一区二区三区 | 7777精品伊人久久久大香线蕉完整版| 成人性生交大片| 成人一道本在线| 成人一区二区三区视频| 成人综合在线观看| 懂色av一区二区三区蜜臀| 国产精品一区二区久久不卡| 久久99国产精品尤物| 麻豆视频一区二区| 精品一区二区三区不卡| 激情五月激情综合网| 国产一区二区三区精品视频| 国产一区二区三区日韩 | 麻豆91小视频| 国产一区二区网址| 成人激情文学综合网| 91亚洲精品久久久蜜桃网站 | 在线精品国精品国产尤物884a| 91在线精品秘密一区二区| 色婷婷精品大视频在线蜜桃视频| 欧洲一区二区三区免费视频| 欧美日韩视频在线一区二区| 91精品国产综合久久福利| 欧美不卡视频一区| 国产欧美一区视频| 亚洲激情自拍偷拍| 精品亚洲欧美一区| 91一区二区在线| 制服丝袜av成人在线看| 精品国产亚洲一区二区三区在线观看| 久久久久亚洲综合| 一区二区三区四区在线免费观看| 婷婷激情综合网| 国产乱码精品一区二区三| 9人人澡人人爽人人精品| 欧美三级三级三级| 久久精品人人爽人人爽| 亚洲自拍偷拍麻豆| 国产一区二区三区综合| 欧美影院午夜播放| 久久久久99精品一区| 亚洲制服丝袜在线| 中文在线一区二区| 狠狠色丁香久久婷婷综合_中| 日韩一区二区精品葵司在线 | 午夜在线成人av| 欧美色手机在线观看| 亚洲国产综合人成综合网站| 欧美精品高清视频| 看国产成人h片视频| 久久精品视频一区二区三区| 成人精品国产免费网站| 成人免费一区二区三区在线观看| 色一区在线观看| 日韩国产成人精品| 久久精品一区二区三区不卡 | 亚洲免费在线视频一区 二区| jvid福利写真一区二区三区| 亚洲精品中文在线| 欧美日韩视频在线第一区 | 亚洲欧美一区二区三区久本道91| 在线一区二区视频| 日韩精品成人一区二区在线| 精品国产麻豆免费人成网站| av激情综合网| 天堂成人国产精品一区| 久久久久久久av麻豆果冻| 99re66热这里只有精品3直播| 香蕉成人伊视频在线观看| 精品国产一区二区三区不卡 | 亚洲天堂av老司机| 欧美老肥妇做.爰bbww视频| 国产一区二区视频在线| 日欧美一区二区| 色婷婷国产精品| 亚洲乱码国产乱码精品精98午夜 | 国产精品美女久久福利网站| 麻豆国产精品一区二区三区 | 日本不卡不码高清免费观看| 欧美午夜精品一区二区蜜桃| 中文字幕日韩一区| 99精品久久只有精品| 中文字幕一区三区| 色婷婷av久久久久久久| 亚洲一区二区四区蜜桃| 欧美无砖砖区免费| 午夜免费久久看| 91精品国产丝袜白色高跟鞋| 蜜臀av在线播放一区二区三区| 91精品国产色综合久久不卡蜜臀| 日本vs亚洲vs韩国一区三区二区| 日韩欧美精品在线| 国产精品一区二区三区网站| 国产精品美女久久久久久| 色94色欧美sute亚洲13| 亚洲丶国产丶欧美一区二区三区| 欧美精品乱码久久久久久按摩| 蜜臀精品一区二区三区在线观看 | 欧美成人官网二区| 国产xxx精品视频大全| 亚洲人精品午夜| 欧美日韩和欧美的一区二区| 青青草国产成人av片免费| 久久久久久亚洲综合影院红桃| 成人午夜电影小说| 亚洲一区二区av电影| 日韩情涩欧美日韩视频| 成人精品gif动图一区| 亚洲成人1区2区| 亚洲精品在线网站| 91农村精品一区二区在线| 亚洲va欧美va国产va天堂影院| 精品国免费一区二区三区| av在线不卡电影| 蜜桃视频在线观看一区二区| 国产精品乱码一区二区三区软件| 欧美性大战久久久久久久| 国产一区二区三区免费| 一区二区三区在线视频免费| 精品国产自在久精品国产| 91福利区一区二区三区| 国产露脸91国语对白| 亚洲国产精品久久人人爱 | 中文字幕av在线一区二区三区| 欧美专区亚洲专区| 国产福利精品一区二区| 午夜精品一区二区三区免费视频| 中文字幕成人在线观看| 日韩一区二区三区免费看| 一本大道综合伊人精品热热| 久久99久久久欧美国产| 亚洲一区二区三区中文字幕在线| 国产日产欧美一区| 欧美一区日韩一区| 欧美探花视频资源| 成人午夜激情视频| 国内精品免费在线观看| 日韩不卡免费视频| 洋洋成人永久网站入口| 国产精品国产三级国产专播品爱网 | 麻豆91在线播放免费| 亚洲国产三级在线| 亚洲你懂的在线视频| 国产精品久久久久四虎| 久久综合丝袜日本网| 日韩欧美国产综合| 欧美三电影在线| 欧美午夜一区二区三区| 91传媒视频在线播放| 91视频国产观看| 色悠久久久久综合欧美99| 91丝袜美女网| 91视频在线观看| 色狠狠一区二区| 色视频成人在线观看免| 色综合网色综合| 欧美精品丝袜久久久中文字幕| 日本韩国欧美国产| 在线亚洲一区二区| 日本高清不卡在线观看| 色偷偷成人一区二区三区91| 91色视频在线| 欧美日韩免费一区二区三区| 在线观看国产91| 欧美挠脚心视频网站| 欧美一区二区三区精品| 欧美大肚乱孕交hd孕妇| 精品国产精品网麻豆系列| 久久久综合精品| 国产精品乱码妇女bbbb| 自拍偷拍亚洲激情| 亚洲图片欧美视频| 久久精品国产精品亚洲综合| 国产精品自拍三区| 91亚洲资源网| 欧美日韩国产精选| 国产日韩av一区二区| 亚洲人成小说网站色在线| 天堂一区二区在线| 成人欧美一区二区三区视频网页| 精品午夜久久福利影院| 欧美亚洲高清一区二区三区不卡| 中日韩av电影| 国产乱子伦视频一区二区三区| 欧美精品一二三| 一区二区三区在线视频观看| 豆国产96在线|亚洲| 精品理论电影在线观看| 日本麻豆一区二区三区视频| 欧美午夜影院一区| 亚洲美女淫视频| 93久久精品日日躁夜夜躁欧美|