hamigaki.png

前のページ 上に戻る ホーム 次のページ

Class context

hamigaki::bjam::context —

bjamのコンテキスト情報を保持するクラス。

Synopsis

class context {
public:
  // construct/copy/destruct
  context();

  // frame functions
  frame& current_frame();
  void push_frame(const frame&);
  void pop_frame();

  // module functions
  boost::optional<std::string> caller_module_name(std::size_t) const;
  string_list back_trace(std::size_t, std::size_t = 0) const;
  module& get_module(const boost::optional<std::string>&);
  const module& get_module(const boost::optional<std::string>&) const;
  std::pair<module_iterator,module_iterator> module_entries() const;
  bool is_defined_module(const boost::optional<std::string>&) const;
  bool change_module(const boost::optional<std::string>&);

  // target functions
  target& get_target(const std::string&);
  std::pair<module_iterator,module_iterator> target_entries() const;
  string_list targets_to_update() const;
  void targets_to_update(const string_list&);

  // rule functions
  void set_builtin_rule(const std::string&, const list_of_list&, 
                        const boost::function1<string_list,context>&, 
                        bool = true);
  rule_definition get_rule_definition(const std::string&) const;
  string_list invoke_rule(const std::string&, const list_of_list&);

  // directory functions
  std::string working_directory() const;
  void working_directory(const std::string&);
};

Description

context construct/copy/destruct

  1. context();

context frame functions

  1. frame& current_frame();
    Effects: 現在のフレーム情報を返す
  2. void push_frame(const frame& f);
    Effects: フレーム情報をスタックに追加し、それを現在のフレーム情報とする
  3. void pop_frame();
    Effects: 現在のフレーム情報をスタックから削除し、直前のフレーム情報を現在のフレーム情報とする

context module functions

  1. boost::optional<std::string> caller_module_name(std::size_t level) const;

    呼び出し元のモジュール名を返す。levelは呼び出しの深さを指定するパラメータで、0が現在のフレームを意味する。

    Returns: 呼び出し元のモジュール名
  2. string_list back_trace(std::size_t level, std::size_t skip = 0) const;

    呼び出しフレームのバックトレース情報を返す。levelはバックトレースの深さ指定するパラメータで、0ならば全てのフレームが利用される。skipは、スキップするフレームの深さを指定するパラメータで、0なら現在のフレームから開始される。

    返される各バックトレース情報は次の形式を取る。

    jamファイル名 行番号 モジュール名 ルール名

    なお、モジュール名の末尾には「.」が付加される。

    Returns: バックトレース情報のリスト
  3. module& get_module(const boost::optional<std::string>& name);
    Effects: フレーム情報をスタックに追加し、それを現在のフレーム情報とする
  4. const module& get_module(const boost::optional<std::string>& name) const;
    Returns: nameに対応するモジュール
  5. std::pair<module_iterator,module_iterator> module_entries() const;
    Returns: 全モジュールを列挙する反復子のペア
  6. bool is_defined_module(const boost::optional<std::string>& name) const;
    Returns: nameに対応するモジュールが定義されているかどうか
  7. bool change_module(const boost::optional<std::string>& name);
    Effects: 現在のフレームのモジュールをnameで指定されたモジュールに変更する

context target functions

  1. target& get_target(const std::string& name);
    Returns: nameに対応するターゲット
  2. std::pair<module_iterator,module_iterator> target_entries() const;
    Returns: 全ターゲットを列挙する反復子のペア
  3. string_list targets_to_update() const;
    Returns: 組み込みルールUPDATEで設定されたターゲット名のリスト
  4. void targets_to_update(const string_list& x);
    Effects: 更新すべきターゲット名のリストを設定する。組み込みルールUPDATEから呼ばれる。

context rule functions

  1. void set_builtin_rule(const std::string& name, const list_of_list& params, 
                          const boost::function1<string_list,context>& func, 
                          bool exported = true);

    組み込み関数を登録する。引数の意味は次表の通り。

    引数 意味
    name ルール名
    params パラメタ宣言
    func 組み込み関数の実装
    exported 他のモジュールからアクセス可能か
  2. rule_definition get_rule_definition(const std::string& name) const;
    Returns: nameに対応した組み込み関数の定義
  3. string_list invoke_rule(const std::string& name, const list_of_list& args);

    ルールnameを引数argsで呼び出す。

    Returns: ルールからの戻り値

context directory functions

  1. std::string working_directory() const;
    Returns: bjamの作業ディレクトリ
  2. void working_directory(const std::string& dir);
    Effects: bjamの作業ディレクトリをdirに設定する。
製作著作 © 2007 Takeshi Mouri

前のページ 上に戻る ホーム 次のページ