/**
 * 擬似コードによるマニュアル
 *
 * 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 utf8 UTF-8 のファイルを使う場合は true
     */
    function initStorage(filename,utf8=false);

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

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

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

    /**
     * テキストに対するパース処理を実行する。
     * @param filename テキストのファイル名
     * @param utf8 UTF-8 のファイルを使う場合は true
     */
    function parseStorage(filename,utf8=false);

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

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