Altairのエディタの使い方

第0.43版 2016年10月23日
第0.00版 1996年 2月11日

Altairではメニューバーを使うことはほとんどありません。
代わりに、ウィンドウ上の右ボタンプレスで現れるメニューを
使用します。

データ入力方法の原則

Altairの各種エディタはラインエディタが基本になっています。
改行を入力しなければデータは入力されないのでご注意ください。

Altairでは、エディタのキーボード入力として行の置換と挿入しか考えていません。
表示されている文字列を変更しその行にキャレットをおいて改行すれば
原則としてその行は置き換わります。
改行だけを入力すれば、原則としてその行の下に空の行が現れ、
ここに挿入する文字列を打ち込むことになります。
文字列入力後改行を入れるとその文字列が入力されますが、
モードは挿入モードのままで続けて入力を行うことができます。
空の行の状態(スペースも入れない)のままで改行を入力すると
挿入モードから抜けます。

プロジェクトウィンドウ

現在読み込まれているプロジェクトの一覧を表示します。
メニューバーの「プロジェクト - ウィンドウ」で現れます。
プロジェクトファイル名(拡張子.apr)とそのプロジェクトファイルの
あるディレクトリが表示されます。

クラスウィンドウ

ひとつのプロジェクト内で使われているクラスのクラス階層を表示します。
プロジェクトウィンドウのプロジェクト上でダブルクリックすると
現れます。

メンバーウィンドウ

あるクラスの持っているメンバーの一覧を表示します。
クラスウィンドウのクラス上でダブルクリックすると現れます。

ボディウィンドウ

あるメンバー関数の中身を表示します。
メンバーウィンドウのメンバー関数上でダブルクリックすると現れます。

アウトプットウィンドウ

結果の出力のために用いられるウィンドウです。
エラー出力などはこのウィンドウに出力されます。

ユーザー定義ウィンドウ

インタプリタ実行中にプログラムで生成されるウィンドウです。

ファイル-新規作成

Altairの新規プロジェクトを作成します。
実行するとファイルダイアログが出てきますので
プロジェクトファイル名とそれの保管場所を入力してください。
Altairのプロジェクトファイルの拡張子は.aprです。
Altairは複数のプロジェクトを同時に開くことができます。

ファイル-開く

既に存在しているプロジェクトファイルを開きます。
実行するとファイルダイアログが出てきますので
プロジェクトファイル名を選択してOKボタンを押してください。
Altairのプロジェクトファイルの拡張子は.aprです。
Altairは複数のプロジェクトを同時に開くことができますが、
以下の場合には同時に開けません。

・プロジェクト間で同じライブラリを使っている場合で、
ライブラリ内のクラスの プロジェクトで定義した派生クラスで使っている場合で
その派生クラスの名前が一致している場合。

プロジェクトのロード中に画面が乱れますが、
気にしなくてかまいません。

ファイル-上書き保存

プロジェクトファイルを上書きして更新します。
Altairは、「新規作成」または「開く」を実行したときに
プロジェクトファイル名とその保存場所を覚えているので
そのファイルが更新されます。

ここで注意したければならないことがあります。
Altairはセーブ対象となっているクラスとその派生クラスだけを
セーブします。クラスをセーブ対象とするためには、
クラスウィンドウでセーブするクラスを「クラス登録」しなければ
なりません。クラス登録していないと何もセーブされていなかったという
憂き目をみることになるので十分注意してください。

プロジェクトのセーブ中に画面が乱れますが、
気にしなくてかまいません。

ファイル-名前を変えて保存

プロジェクトファイルと同じものを別の名前のファイルに保存します。
実行するとファイルダイアログが出てきますので、
保存場所とファイル名を入力してください。

この「名前を変えて保存」を行っても、
「上書き保存」するファイル名は更新されず前のままです。

プロジェクトのセーブ中に画面が乱れますが、
気にしなくてかまいません。

ファイル-閉じる

プロジェクトウィンドウ上のキャレットで指定されるプロジェクトを
閉じます。

通常プロジェクトは内部にループとなる参照を持っているので、
何もしなければメモリリークを起こしますが、
プロジェクトを閉じた後にガーベージコレクションを行っているので
メモリリークは起こりません。

ファイル-印刷

開かれているエディタの中身をテキストのファイルに落とします。
実行するとファイルダイアログが出てきますので、テキストファイルの
名前と保存場所を入れてください。

ファイル-終了

Altairを終了します。

Altairを終了するにあたって、
プログラムが変更されていてもそれに関係なく
Altairは終了してしまいますので、
プログラムに変更があった場合は、ユーザーの責任において
「上書き保存」を行った上で終了してください。

ウィンドウ-再表示

そのウィンドウの再表示を行います。

表示が乱れた場合や入力内容が正しく入力されたかのチェックなどに
用います。

注: 再表示を行うと表示位置が内容の最初になってしまいます。

ウィンドウ-親エディタ

メンバーウィンドウなら元のクラスウィンドウを
ボディウィンドウなら元のメンバーウィンドウをレイズします。

ウィンドウ-閉じる

そのウィンドウを閉じます。

プロジェクトウィンドウ、クラスウィンドウ、メンバーウィンドウを
閉じると、その子孫のウィンドウも閉じます。

ウィンドウ-すべて閉じる

すべてのチャイルドウィンドウを閉じます。

アウトプットにマーク

アウトプットウィンドウにマークとなる文字列を出力します。

アウトプットウィンドウがないときはアウトプットウィンドウを出します。
あるときはアウトプットウィンドウをレイズします。

ガーベージコレクション

ガーベージコレクションを行います。

回収されたセルの数、使用中のセルの数等の情報を
アウトプットウィンドウに出力します。

どこからも参照されていないクラス/メンバー変数/メンバー関数は削除できるはずですが、
ガーベージから参照されている場合があります。
この場合、クラス/メンバー変数/メンバー関数を削除することができません。
これが原因でクラスの削除ができない場合はこのメニュー項目を実行した後で
クラス/メンバー変数/メンバー関数を削除することができるようになります。

プロジェクトの項目を上へ移動

プロジェクトウィンドウに複数のプロジェクトが表示されている場合に
プロジェクトの表示順序を変えるのに用います。

プロジェクトの項目を下へ移動

プロジェクトウィンドウに複数のプロジェクトが表示されている場合に
プロジェクトの表示順序を変えるのに用います。

ソースを出力しながら開く

Altairでは変数の削除などの編集後のプログラムの正当性のチェックをしていないので
セーブしたファイルにエラーが含まれることがあります。
このようなエラーを含むテキスト形式のファイル(プロジェクト/ライブラリ)を開く場合、
ロードエラーになりロードができず、原因がなかなか分かりません。
また、やむお得ずテキスト形式のファイルを手で編集した場合も同様のことが発生します。
このような場合に、エラーの原因を特定するため、ソースをアウトプットウィンドウに
出力しながらロードを行う機能があります。
ロードエラーが発生したとき、アウトプットウィンドウに出力された最後の文にエラーが
含まれています。

このメニュー項目はトグルになっていてソースを出力するか否かを切り換えます。

クラス挿入位置を上に

クラスウィンドウで新規クラスを挿入するとき、キャレットのあるクラスから
見てどこに挿入するかを指定するメニュー項目です。
このメニュー項目を実行すると、新規クラスはキャレットのあるクラスと
兄弟クラスとなり、ウィンドウ上では新規クラスの方が上にきます。

クラス挿入位置を下に

クラスウィンドウで新規クラスを挿入するとき、キャレットのあるクラスから
見てどこに挿入するかを指定するメニュー項目です。
このメニュー項目を実行すると、新規クラスはキャレットのあるクラスと
兄弟クラスとなり、ウィンドウ上では新規クラスの方が下にきます。

クラス挿入位置を子クラスに

クラスウィンドウで新規クラスを挿入するとき、キャレットのあるクラスから
見てどこに挿入するかを指定するメニュー項目です。
このメニュー項目を実行すると、新規クラスはキャレットのあるクラスの
派生クラスととなり、ウィンドウ上では新規クラスの方が下にきます。
これがデフォルトです。

クラスを上に移動

クラス階層を変えるためのメニュー項目のひとつです。
キャレットのあるクラスをひとつ上に動かします。
このメニュー項目を実行してもクラス階層図は意味的には
変わりません。

クラスを下に移動

クラス階層を変えるためのメニュー項目のひとつです。
キャレットのあるクラスをひとつ下に動かします。
このメニュー項目を実行してもクラス階層図は意味的には
変わりません。

クラスを左に移動

クラス階層を変えるためのメニュー項目のひとつです。
キャレットのあるクラスがその親クラスと兄弟クラスになります。

クラスを右に移動

クラス階層を変えるためのメニュー項目のひとつです。
キャレットのあるクラスがひとつ上の兄弟クラスの派生クラスに
なります。

クラスの削除

クラスを削除します。

削除するクラスはどこからも使われていない場合にのみ
削除することが可能です。どこからか参照されていると
削除できない旨のメッセージがアウトプットウインドウに
出されます。

登録クラスの一覧

現在セーブ対象になっているクラスの名前を
アウトプットウィンドウに出力します。
セーブ対象になっているクラスとは「クラス登録」したクラスのことです。

クラス登録

プロジェクトで使っているクラスをセーブ対象のクラスとして登録します。

このクラス登録をしないとプログラムが保存されませんので十分注意して
ください。

クラス登録するとそのクラスの派生クラスもすべてセーブ対象になりますので
先祖クラスがセーブ対象になっていればそのクラスをクラス登録する必要は
ありません。
逆にこれをクラス登録してしまうとロード時にクラス名が
バッティングしてしまいロードエラーになってしまいますので
注意してください。

クラス登録の解除

「クラス登録」されているクラスを登録解除します。

ライブラリ作成(1)

現在キャレットのあるクラスとその派生クラスをライブラリにします。
ライブラリにはテキスト形式とグラフ形式があります。
テキスト形式はサイズは小さいですがロードにかなりの時間がかかります。
グラフ形式はサイズはやや大きいですがロードが高速です。
また、外部への参照があってもテキスト形式ライブラリは作れますが、
外部への参照があるとグラフ形式ライブラリを作ることはできません。

Altairのバージョンがあがるとグラフ形式のライブラリはファイル互換性が
なくなります。テキスト形式のライブラリは互換性があります。
グラフ形式のライブラリを作るときには同時にテキスト形式の
ライブラリも作っておいた方がよいです。

ライブラリの作成中に画面が乱れますが、
気にしなくてかまいません。

ライブラリ作成(2)

テキスト形式、グラフ形式では、ひとつのクラスをルートとして
その派生クラスしかライブラリに含めることができません。
テキスト2形式は、派生関係にない複数のクラスをひとつのライブラリに
するための形式です。
複数のクラスをルートとしたライブラリ作成と言うことができます。
「クリア」はルートとなるクラスをなくします。
「クラスリスト」は現在登録されているルートクラスのリストを出力します。
「クラスの追加」は、現在キャレットの置かれているクラスをルートの
ひとつとして登録します。
「作成」を行うとファイルダイアログが現れ、
ファイル名を指定してテキスト2形式のライブラリを作成します。

注: テキスト2形式ライブラリは複数のプロジェクトで共有することは
できません。

ライブラリのロード

プロジェクトにライブラリをロードします。ロードしたら「上書き保存」を
してください。次回からプロジェクトを開くと自動的にそのライブラリが
ロードされるようになります。

ライブラリが参照しているクラスは前もってロードされていなければなりません。
ライブラリのロード中に画面が乱れますが、気にしなくてかまいません。

ライブラリの一時ロード

「ライブラリのロード」と基本的に同じですが、
一時ロードではプロジェクトにライブラリが登録されません。

使用メモリ容量

Altairは20バイトのセルを基本単位としています。
このセルと文字列領域でAltairが純粋にヒープ領域として
何バイトメモリを使っているかをアウトプットウィンドウに出力します。

VTBLアップデート

VTBL(バーチャル関数テーブル)を最新の状態にアップデートします。

Altairは実行を始める前にVTBL(バーチャル関数テーブル)を最新の状態にアップデートします。
Altairは、プログラムの実行中にもたいていの場合はインタラクティブにプログラムの修正が
問題なく行えます。しかしながら、クラスへの関数の追加や関数のプロトタイプの変更を行った場合、
既に作成されているオブジェクトのクラスのVTBL(バーチャル関数テーブル)が不整合を起こします。
不整合を起こした関数を実行するとエラーが発生することがあります。
VTBLアップデートを行えばVTBLの不整合が解消され、関数の追加や置き換えを行った後でも
既に作成済みのオブジェクトを破棄したり、プログラムを停止させずに実行を続けることができます。

メンバー挿入位置を上に

入力のときに、キャレットのある行の上の行にメンバーを挿入するようにします。

メンバー挿入位置を下に

入力のときに、キャレットのある行の下の行にメンバーを挿入するようにします。
これがデフォルトです。

メンバーを上に移動

クラスのメンバーを見やすくするために並べ換えるためのものです。
キャレットで指定されるメンバーを上に移動します。

メンバーを下に移動

クラスのメンバーを見やすくするために並べ換えるためのものです。
キャレットで指定されるメンバーを下に移動します。

メンバーの削除

メンバーを削除します。

削除するメンバーはどこからも使われていない場合にのみ
削除することが可能です。
どこからか参照されていると削除できない旨のメッセージが
アウトプットウインドウに出されます。

インタプリタテスト実行

キャレットのおいてある引数なしのstatic関数を実行します。
そのときに開いているウィンドウはそのままです。

インタプリタ実行

キャレットのおいてある引数なしのstatic関数を実行します。
そのときに開いているウィンドウはすべて閉じてから実行されます。

行挿入位置を上に

入力のときに、キャレットのある行の上の行に文を挿入するようにします。
このメニュー項目は実行しないでください。

行挿入位置を下に

入力のときに、キャレットのある行の下の行に文を挿入するようにします。
これがデフォルトです。

カット

ボディウィンドウ上で選択された範囲のテキストをカットします。
このときカットされた文がクリップボードに入ります。

コピー

ボディウィンドウ上で選択された範囲のテキストを
クリップボードにコピーします。

貼り付け

ボディウィンドウ上のキャレットのある行の後にクリップボードの内容を
挿入します。このとき、文法のチェックも行われますので何でもペースト
するわけにはいきません。

削除

ボディウィンドウ上で選択された範囲のテキストを削除します。

ユーザー定義ウィンドウのメニュー項目

ユーザー定義ウィンドウには、プログラムで任意のメニュー項目を
出すことができます。