/**
 * 擬似コードによるマニュアル
 *
 * Copyright 2005-2009 GoWatanabe
 */

class CSVParser {

    /**
	 * コンストラクタ
	 * @param target イベントを転送するターゲット。未指定時は自分に送る
	 * @param separator 区切り文字。デフォルトは ","
	 * @param newline 中途で区切られた場合のデータでの改行文字。デフォルトは "\r\n"
     */
	function CSVParser(target, separator, newline);

    /**
     * 処理対象テキストの初期化
     * @param text テキスト
     */
    function init(text);

    /**
     * 処理対象テキストの初期化
     * @param filename テキストのファイル名
	 * @param readmode 読み込みモード
	 *        typeof readmode == "String"  : Array.load相当のテキスト読み込み処理として動作
	 *        typeof readmode == "Integer" : trueの場合はUTF-8読み込みモードとして動作，それ以外はCP_ACPテキスト読み込み
	 * ※プラグインコンパイル時に /D:CSVPARSER_DEFAULT_TEXTSTREAM=1 とすると，readmode='' の省略時デフォルトになります
     */
    function initStorage(filename,readmode=false);

    /**
     * 次の行の情報を配列として取得する
     * @return カラムデータ(Array)
     */
    function getNextLine();

    /**
     * 現在の処理済み行番号を取得する
     */
    property currentLineNumber;

    /**
     * テキストに対するパース処理を実行する。
     * 行ごとに doLine() イベントを呼び出す。
     * @param text テキスト。省略時は現在設定中のテキストに対して処理を行なう
     */
    function parse(text);

    /**
     * テキストに対するパース処理を実行する。
     * @param filename テキストのファイル名
	 * @param readmode 読み込みモード（詳細説明はinitStorageの項目を参照）
     */
	function parseStorage(filename,readmode);

    // ----------------------------------

    /**
     * parse/parseStorage で呼び出されるイベント
     * @param columns カラムデータ(Array)
     * @param lineNo 論理行番号(1〜)
     */
    function doLine(columns, lineNo);
};
