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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? codeswitch.java

?? 非常棒的java數據庫
?? JAVA
字號:
/*
 * Copyright 2004-2008 H2 Group. Licensed under the H2 License, Version 1.0
 * (license2)
 * Initial Developer: H2 Group
 */
package org.h2.tools.code;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;

/**
 * This application allows to switch source code to different 'modes', so that
 * it can be compiled for different JDKs.
 */
public class CodeSwitch {
    // TODO codeswitch: replace with ant 'Replace' task is possible
    private boolean recurse;
    private ArrayList list = new ArrayList();
    private ArrayList switchOn = new ArrayList();
    private ArrayList switchOff = new ArrayList();
    private ArrayList switches = new ArrayList();
    private byte[] file;
    private String endOfLine;
    private ArrayList lines;
    private boolean changed;

    public static void main(String[] argv) throws Exception {
        (new CodeSwitch()).run(argv);
    }

    private void run(String[] a) throws Exception {
        if (a.length == 0) {
            showUsage();
            return;
        }
        String propertiesFile = null, property = null, value = null;
        boolean path = false;
        recurse = true;
        for (int i = 0; i < a.length; i++) {
            String p = a[i];
            if (p.startsWith("+")) {
                switchOn.add(p.substring(1));
            } else if (p.startsWith("-r+")) {
                // (default)
                recurse = true;
            } else if (p.startsWith("-r-")) {
                recurse = false;
            } else if (p.startsWith("-set")) {
                propertiesFile = a[++i];
                property = a[++i];
                value = a[++i];
            } else if (p.startsWith("-")) {
                switchOff.add(p.substring(1));
            } else {
                addDir(p, true);
                path = true;
            }
        }
        if (!path) {
            printError("no path specified");
            showUsage();
        }
        process();
        if (switchOff.size() == 0 && switchOn.size() == 0) {
            printSwitches();
        }
        if (propertiesFile != null) {
            setProperty(propertiesFile, property, value);
        }
    }

    private static class SortedProperties extends Properties {

        private static final long serialVersionUID = 3926204645298674434L;

        public synchronized Enumeration keys() {
            Vector v = new Vector(keySet());
            Collections.sort(v);
            return v.elements();
        }

    }

    private void setProperty(String propertiesFile, String property, String value) throws IOException {
        SortedProperties prop = new SortedProperties();
        InputStream in = new BufferedInputStream(new FileInputStream(propertiesFile));
        prop.load(in);
        in.close();
        prop.setProperty(property, value);
        OutputStream out = new BufferedOutputStream(new FileOutputStream(propertiesFile));
        prop.store(out, null);
        out.close();
    }

    private void showUsage() {
        String className = getClass().getName();
        System.out.println("Usage: java " + className + " [-r+] [-r-] paths [+|-][labels] [-set file property value]");
        System.out.println("If no labels are specified then all used");
        System.out.println("labels in the source code are shown.");
        System.out.println("-r+ recurse subdirectories (default)");
        System.out.println("-r- do not recurse subdirectories");
        System.out.println("-set will update a value in a properties file after switching");
        System.out.println("Use +MODE to switch on code labeled MODE");
        System.out.println("Use -MODE to switch off code labeled MODE");
        System.out.println("Path: Any number of path or files may be specified.");
        System.out.println(" Use . for the current directory (including sub-directories).");
        System.out.println("Example: java " + className + " +JAVA2 .");
        System.out.println("This example switches on code labeled JAVA2 in all *.java files");
        System.out.println("in the current directory and all subdirectories.");
    }

    private void process() {
        int len = list.size();
        for (int i = 0; i < len; i++) {
            String fileName = (String) list.get(i);
            if (!processFile(fileName)) {
                System.out.println("in file " + fileName + " - this file is skipped");
            }
        }
    }

    private void printSwitches() {
        System.out.println("Used labels:");
        for (int i = 0; i < switches.size(); i++) {
            System.out.println((String) (switches.get(i)));
        }
    }

    private void addDir(String path, boolean recurseMore) {
        File f = new File(path);
        if (f.isFile() && path.endsWith(".java")) {
            list.add(path);
        } else if (f.isDirectory()) {
            if (recurse || recurseMore) {
                // one recursion at least
                String[] files = f.list();
                for (int i = 0; i < files.length; i++) {
                    addDir(path + File.separatorChar + files[i], false);
                }
            }
        }
    }

    // lines are terminated with \r, \n or \r\n
    private void breakIntoLines() {
        lines = new ArrayList();
        int len = file.length;
        int last = 0;
        int cr = 0, lf = 0, crlf = 0;
        for (int i = 0; i < len; i++) {
            byte c = file[i];
            if (c == '\r' || c == '\n') {
                if (c == '\r') {
                    if (i < len - 1 && file[i + 1] == '\n') {
                        i++;
                        crlf++;
                    } else {
                        cr++;
                    }
                } else {
                    lf++;
                }
                if (i < len) {
                    lines.add(new String(file, last, i - last + 1));
                    last = i + 1;
                }
            }
        }
        if (cr > lf && cr > crlf) {
            endOfLine = "\r";
        } else if (lf > crlf) {
            endOfLine = "\n";
        } else {
            endOfLine = "\r\n";
        }
        lines.add(new String(file, last, len - last));
    }

    private String getLine(int line) {
        return (String) lines.get(line);
    }

    private void insertLine(int line, String s) {
        lines.add(line, s);
        changed = true;
    }

    private void removeLine(int line) {
        lines.remove(line);
        changed = true;
    }

    private boolean processFile(String name) {
        File f = new File(name);
        boolean off = false;
        boolean working = false;
        int state = 0;
        try {
            long rawLen = f.length();
            if (rawLen > Integer.MAX_VALUE) {
                printError("Files bigger than Integer.MAX_VALUE are not supported");
                return false;
            }
            int len = (int) rawLen;
            file = new byte[len];
            RandomAccessFile read = new RandomAccessFile(f, "r");
            read.readFully(file);
            read.close();
            breakIntoLines();
            changed = false;

            for (int i = 0; i < lines.size(); i++) {
                String line = getLine(i);
                String lineTrim = line.trim();
                if (working) {
                    if (lineTrim.startsWith("/*") || lineTrim.startsWith("*/")) {
                        removeLine(i);
                        i--;
                        continue;
                    }
                }
                if (lineTrim.startsWith("//#")) {
                    if (lineTrim.startsWith("//#ifdef ")) {
                        if (state != 0) {
                            printError("//#ifdef not allowed inside " + "//#ifdef");
                            return false;
                        }
                        state = 1;
                        String s = lineTrim.substring(9);
                        boolean switchedOn = false;
                        boolean switchedOff = false;
                        if (switchOn.indexOf(s) != -1) {
                            switchedOn = true;
                        }
                        if (switchOff.indexOf(s) != -1) {
                            switchedOff = true;
                        }
                        if (s.indexOf("&&") != -1) {
                            switchedOn = true;
                            s += "&&";
                            while (s.length() > 0) {
                                int id = s.indexOf("&&");
                                if (id == -1) {
                                    break;
                                }
                                String s1 = s.substring(0, id).trim();
                                s = s.substring(id + 2).trim();
                                if (switches.indexOf(s1) == -1) {
                                    switches.add(s1);
                                    switchedOn = false;
                                }
                                if (switchOn.indexOf(s1) == -1) {
                                    switchedOff = true;
                                    switchedOn = false;
                                }
                                if (switchOff.indexOf(s1) != -1) {
                                    switchedOff = true;
                                    switchedOn = false;
                                }
                            }
                        }
                        if (switchedOn) {
                            working = true;
                            off = false;
                        } else if (switchedOff) {
                            working = true;
                            insertLine(++i, "/*" + endOfLine);
                            off = true;
                        }
                        if (switches.indexOf(s) == -1) {
                            switches.add(s);
                        }
                    } else if (lineTrim.startsWith("//#else")) {
                        if (state != 1) {
                            printError("//#else without " + "//#ifdef");
                            return false;
                        }
                        state = 2;
                        if (working) {
                            if (off) {
                                insertLine(++i, "*/" + endOfLine);
                                off = false;
                            } else {
                                insertLine(++i, "/*" + endOfLine);
                                off = true;
                            }
                        }
                    } else if (lineTrim.startsWith("//#endif")) {
                        if (state == 0) {
                            printError("//#endif without " + "//#ifdef");
                            return false;
                        }
                        state = 0;
                        if (working && off) {
                            insertLine(i++, "*/" + endOfLine);
                        }
                        working = false;
                    }
                }
            }
            if (state != 0) {
                printError("//#endif missing");
                return false;
            }
            if (changed) {
                File fileNew = new File(name + ".new");
                FileWriter write = new FileWriter(fileNew);
                for (int i = 0; i < lines.size(); i++) {
                    write.write(getLine(i));
                }
                write.close();
                File fileBack = new File(name + ".bak");
                fileBack.delete();
                f.renameTo(fileBack);
                File fileCopy = new File(name);
                fileNew.renameTo(fileCopy);
                fileBack.delete();
                System.out.println(name);
            }
            return true;
        } catch (Exception e) {
            printError(e);
            return false;
        }
    }

    private static void printError(Exception e) {
        e.printStackTrace();
    }

    private static void printError(String s) {
        System.out.println("ERROR: " + s);
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品视频免费看| 日韩一区二区三区在线观看 | 国产精品一级片在线观看| 午夜影院久久久| 亚洲一区在线观看网站| 亚洲激情综合网| 亚洲精品免费在线播放| 亚洲国产精品久久久男人的天堂| 亚洲精品少妇30p| 亚洲国产日韩一区二区| 亚洲成人动漫av| 蜜桃视频在线一区| 国产精品一区二区男女羞羞无遮挡 | 亚洲第一精品在线| 日韩黄色一级片| 久久国产剧场电影| 成人精品视频一区| 欧美在线视频不卡| 精品国产一区二区三区久久久蜜月 | 中文一区二区在线观看| 中文字幕一区二区三区乱码在线| 一区二区在线看| 蜜臀av性久久久久蜜臀aⅴ流畅| 激情图片小说一区| 成人av在线播放网站| 欧美亚洲高清一区| 欧美一区2区视频在线观看| 国产日韩av一区二区| 伊人开心综合网| 国产一区二区成人久久免费影院| av成人老司机| 日韩欧美二区三区| 亚洲三级电影网站| 日韩电影在线免费看| 成人午夜av电影| 777色狠狠一区二区三区| 国产日本一区二区| 日韩福利电影在线观看| 成人黄色免费短视频| 69堂亚洲精品首页| 国产精品成人免费精品自在线观看| 午夜免费欧美电影| jiyouzz国产精品久久| 日韩免费在线观看| 一区二区三区电影在线播| 国内精品视频一区二区三区八戒 | 欧美精品一卡二卡| 国产精品三级av| 久久精品国产秦先生| 日本韩国欧美国产| 国产欧美精品国产国产专区| 日本欧美一区二区三区乱码| 91小宝寻花一区二区三区| 久久一二三国产| 日韩精品欧美精品| 91激情五月电影| 中文字幕在线不卡一区| 国产一区二区h| 日韩欧美的一区二区| 午夜精品福利一区二区三区蜜桃| av一二三不卡影片| 国产亚洲成av人在线观看导航| 亚洲va国产va欧美va观看| 色综合中文字幕国产| 久久嫩草精品久久久久| 婷婷亚洲久悠悠色悠在线播放| 91麻豆蜜桃一区二区三区| 日本一区二区久久| 国产成人综合亚洲网站| 久久久亚洲精品石原莉奈| 久久精品国产99国产精品| 日韩一区国产二区欧美三区| 午夜精品免费在线| 欧美精品久久99久久在免费线 | 6080亚洲精品一区二区| 丝袜亚洲精品中文字幕一区| 欧美专区亚洲专区| 亚洲图片有声小说| 欧美精品高清视频| 视频一区二区国产| 欧美岛国在线观看| 久久 天天综合| 国产视频一区二区在线| 成人免费高清在线| 国产婷婷色一区二区三区| 麻豆freexxxx性91精品| www日韩大片| 懂色av噜噜一区二区三区av| 中文字幕一区二区三区四区 | 韩国中文字幕2020精品| 久久久精品日韩欧美| av一区二区三区在线| 亚洲一级二级三级| 日韩一区二区三区四区| 国产精品亚洲成人| 亚洲精品亚洲人成人网在线播放| 精品视频1区2区3区| 美女视频免费一区| 国产精品色婷婷| 欧美日韩一区成人| 精品一区二区三区影院在线午夜| 国产女人水真多18毛片18精品视频| 99久久精品免费| 视频一区视频二区中文字幕| 久久久不卡网国产精品二区| 99精品热视频| 另类小说综合欧美亚洲| 国产精品毛片高清在线完整版| 欧美优质美女网站| 国产精品456露脸| 一区二区三区中文在线| 久久嫩草精品久久久精品一| 色94色欧美sute亚洲线路一ni| 蜜臀91精品一区二区三区 | 色哟哟一区二区在线观看| 偷拍一区二区三区四区| 国产精品你懂的在线欣赏| 欧美乱熟臀69xxxxxx| 国产69精品一区二区亚洲孕妇| 亚洲激情自拍偷拍| 国产色综合久久| 欧美一级精品大片| 欧美在线观看一二区| 国产91丝袜在线18| 蜜臂av日日欢夜夜爽一区| 亚洲欧洲日韩一区二区三区| 欧美本精品男人aⅴ天堂| 欧洲激情一区二区| 成人av综合一区| 国产一区二区看久久| 日韩和欧美的一区| 一区二区三区免费观看| 国产人伦精品一区二区| 欧美另类变人与禽xxxxx| 91污在线观看| 风流少妇一区二区| 国产伦精品一区二区三区视频青涩| 午夜视黄欧洲亚洲| 亚洲一区二区精品视频| 亚洲欧美日韩中文字幕一区二区三区| 久久综合色播五月| 亚洲精品在线一区二区| 日韩精品专区在线影院重磅| 欧美精品一级二级| 欧美性一区二区| 欧美视频一区二区三区四区| 97se狠狠狠综合亚洲狠狠| www.亚洲精品| 99re在线视频这里只有精品| 国产精品系列在线播放| 国产福利91精品一区| 国产成人免费在线| 国产成人在线看| 成人v精品蜜桃久久一区| 国产99一区视频免费| 处破女av一区二区| av电影在线观看一区| 成人黄色a**站在线观看| 99免费精品在线| 色婷婷亚洲精品| 欧美精选在线播放| 日韩视频中午一区| 精品国内片67194| 中文字幕免费观看一区| 1024亚洲合集| 亚洲国产精品久久一线不卡| 肉色丝袜一区二区| 久久99蜜桃精品| 国产馆精品极品| 91免费视频网址| 欧美日韩综合色| 精品久久久久久亚洲综合网 | 99久久伊人网影院| 日本韩国一区二区| 日韩欧美精品在线视频| 国产亚洲成av人在线观看导航| 亚洲欧美综合网| 天使萌一区二区三区免费观看| 国内精品伊人久久久久av影院 | 精品sm在线观看| 一色屋精品亚洲香蕉网站| 亚洲午夜久久久久久久久久久 | 久久女同精品一区二区| 日韩理论在线观看| 轻轻草成人在线| www.66久久| 欧美成人性战久久| 一区在线播放视频| 美女在线一区二区| 色婷婷综合久久久中文一区二区| 欧美一区二区国产| 亚洲免费观看在线观看| 国内精品久久久久影院色| 91香蕉视频mp4| 国产亚洲一区字幕| 日韩国产在线观看一区| 99精品久久99久久久久| 精品美女在线播放| 亚洲成人www| 91丝袜高跟美女视频|