Sub_system


[ libohymos | Source | Keywords | Summary | Ancestors | All Members | Descendants ]

Quick Index

DESCRIPTION

Class Summary

class Sub_system : public Element
{

public:
Boolean Register(void* p, int obj) ;
void* Get_component(char* c_name, char* o_name, int o_num);
void* Get_component(char* o_name, int o_num);
Boolean Construct(void);
Boolean Switch(void);
Boolean Are_you_ready(void);
void Clear_data_string(void);
void Set_parameter(FILE*) ;
void Parameter(FILE* fp, char*& buffer, int buflen, Boolean& stock_p);
Boolean Initial_time(time_t i_time);
void Set_initial_state(FILE* fp);
void Initial_state(FILE* fp, char*& buffer, int buflen, Boolean& stock_p);
void Save_terminal_state(FILE* fp) ;
void Terminal_state(FILE* fp);
void Save_send_port_stock(FILE* fp);
void Print_components(FILE* fp , char* head );
Boolean Initial_work(void) ;
time_t Necessary_time_from(void* rp);
time_t Necessary_time_to(void* rp);
Boolean Can_you_calculate(void) ;
time_t Calculate_time_step(void) ;
Boolean Calculate(void) ;
Boolean Do_you_reach_target_time(int num);
Boolean Do_you_converge(int num);
Boolean Work(void);
Boolean Init(char* o_name, int o_num, int num_of_objs , int num_of_itr , char* p_line );
Boolean Init(char* o_name, int o_num, int num_of_objs , char* p_line );
Sub_system(char* o_name, int o_num, int num_of_objs , int num_of_itr , char* p_line );
Sub_system(char* o_name, int o_num, int num_of_objs , char* p_line );
Sub_system(char* o_name, int o_num, char* p_line);
Sub_system(void);
~Sub_system(void);
protected:
void** component_array;
int number_of_components;
void*** iterator_array;
int number_of_iterator_sets;
int* number_of_iterators;
void Register_receive_ports(void) ;
void Register_send_ports(void) ;
void Register_components(void) ;
void Initialize_iterator_array(void);
void Register_iterators(void) ;
Boolean Register(int num, ...);
Boolean Register(void* p) ;
Boolean Connect(void* my_p, void* r, char* rp_c_name, char* rp_name, int rp_num);
Boolean Connect(void* s, char* sp_c_name, char* sp_name, int sp_num, void* r, char* rp_c_name, char* rp_name, int rp_num);
Boolean Connect(void* s, char* sp_c_name, char* sp_name, int sp_num, void* my_p);
Boolean Connect(void* my_p, void* r, char* rp_name, int rp_num);
Boolean Connect(void* s, char* sp_name, int sp_num, void* r, char* rp_name, int rp_num);
Boolean Connect(void* s, char* sp_name, int sp_num, void* my_p);
Boolean Connect(void* my_sp, void* my_rp);
void Connect_ports(void) ;
void Connect_components(void) ;
Boolean Initial_output(void) ;
Boolean Renew_current_time(void);
void Rewind_current_time(int num);
void Flush_data(int num);
void Renew_fixed_time(int num);
void Renew_target_time(int num, time_t itrs);
void Initialize_target_time(void);
time_t Calculate_iteration_step(int num);
}; // Sub_system

Back to the top of Sub_system


DESCRIPTION

subsystem class.

部分系モデルは, 要素・部分系など複数のインスタンス (以下, 構成要素) により構成されるモデルです。 本システムでは, 部分系モデルは原則とし て数理計算を行わず, こうしたデータを直接処理する作業は, 内部の要素に より行うものとしました。 従って, 部分系モデルの計算作業は, 構成要素 に順次計算命令を送ることになります。 ところで, 部分系モデルは, 送信 用中継端子・受信用中継端子を所有しますが, これらの中継端子を登録・接 続する手続きは, 要素モデルの受信端子・送信端子の場合と同一の手続きと して定義できます。

そこで本システムでは部分系モデルを新たに作成するのではなく, 要素モデ ルを継承して作成することとしました。 部分系モデルでは, 受信用中継端 子・送信用中継端子を Element::receive\_port\_array, Element::send_port_array に記憶しています。 また, 端子の登録に関 わる{\tt Element} のメンバ関数を, 構成要素の登録作業にも用い, 端子の 登録と全く同一の手続きで構成要素の登録を行い, 部分系モデル作成者の利 便性を高めています。

部分系モデルでは, 上記のように登録した各構成要素・中継端子間の接続を 定義しなければなりません。しかし, 基本型部分系モデルに接続のためのメ ンバ関数が既に定義されているので, 基本型部分系モデルを継承して作成し た部分系モデルでは, 接続作業は基本型部分系モデルのメンバ関数に引数を 与えるのみの作業に単純化されています。

基本型部分系モデルを表すクラス Sub_system で新たに追加されたデー タメンバ, メンバ関数, また Element と異なる内容に再定義されたメン バ関数は以下の通りです。

要素・部分系どうしが直接通信を用いて反復計算を行なうためには、 それらを所有する部分系がそれらを管理する必要があります。

反復計算のためのデータメンバはつぎのようです。

void*** iterator_array
反復計算する要素群のアドレスの配列
number_of_iterator_sets
反復計算する要素群の数(コンストラクタで初期化される)
int* number_of_iterators
反復計算する要素群に含まれる要素の数を格納する配列

反復計算のためのメンバ関数はつぎのようです。

Initialize_iterator_array
iterator_array を要素が number_of_iterator_sets 個の配列にする.
Register_iterators (pure virtual)
反復計算する要素を iterator_array に登録する.

Back to the top of Sub_system


void** component_array;

Pointer to the area where the pointers to the constituent elements are stored.

構成オブジェクト記憶用配列

  void**    component_array;

Back to the top of Sub_system


int number_of_components;

Number of constituent elements

  int       number_of_components;

Back to the top of Sub_system


void*** iterator_array;

  void*** iterator_array;        //; 反復計算する構成要素記憶用配列

Back to the top of Sub_system


int number_of_iterator_sets;

  int number_of_iterator_sets; //; 反復計算する要素群の数

Back to the top of Sub_system


int* number_of_iterators;

  int* number_of_iterators;  //; 要素群を構成する要素の数

Back to the top of Sub_system


void Register_receive_ports(void) ;

受信側中継端子を登録します。派生クラスで定義します。Construct から 呼ばれます。登録されていない受信側中継端子は接続できません.

  void Register_receive_ports(void) = NULL;

Back to the top of Sub_system


void Register_send_ports(void) ;

送信側中継端子を登録します。派生クラスで定義します。Construct から 呼ばれます。登録されていない送信側中継端子は接続できません.

  void Register_send_ports(void) = NULL;

Back to the top of Sub_system


void Register_components(void) ;

全構成要素のうち, 反復計算を行なわない構成オブジェクトのアドレスを component_array に登録します.

登録されていない構成オブジェクトには, 計算実行命令が送れません.

例えば, 派生クラスで構成オブジェクト abc をデータメンバとして定義 した場合, 次のように abc を登録します.

       void Register_components(void) { Register((void*) &abc); }
     
この時, 必ず &abc を void* 型にキャストして下さい.

これにより &abc は, 一時的に object_list に収録された後, 最終的に void* 型配列 component_array 中に記憶されます. (Sub_system::Construct 参照)

  virtual void Register_components(void) = NULL;

Back to the top of Sub_system


void Initialize_iterator_array(void);

  void Initialize_iterator_array(void);

Back to the top of Sub_system


void Register_iterators(void) ;

Register_iterators は, 全構成要素のうち, 反復計算を行なう要素のアド レスを iterator_array に登録します. 反復計算を行なう部分系モデルを 新に作成するプログラマが、この関数を定義しなければなりません。

同様に、派生クラスで反復計算する構成オブジェクト def, gih をデータメンバとして定義した場合, 次のように def, gih を登録します.

       void Register_iterators(void)
         { Register(2, (void*) &def, (void*) &gih); }
     
最初の引数は反復計算するオブジェクトの数です. これにより &def, &gih は, 一時的に object_list に収録さ れた後, 最終的に void* 型配列 iterator_array 中に記憶されます.

  virtual void Register_iterators(void) = NULL;

Back to the top of Sub_system


Boolean Register(int num, ...);

  Boolean Register(int num, ...);

Back to the top of Sub_system


Boolean Register(void* p) ;

  Boolean Register(void* p)                  ;

Function is currently defined inline.


Back to the top of Sub_system


Boolean Register(void* p, int obj) ;

  Boolean Register(void* p, int obj)
                         ;

Function is currently defined inline.


Back to the top of Sub_system


void* Get_component(char* c_name, char* o_name, int o_num);

Get_component は, クラス名, オブジェクト名, オブジェクト番号を指 定して, component_array から, 構成オブジェクトのアドレス (void* 型) を取得します.

指定されたオブジェクトのアドレスが登録されていない場合は, NULL を 返します.

number_of_components が負の場合, component_array が作成されていな いと判断し, エラーメッセージを表示後 NULL を返します.


        ARGUMENT:
            ・c_name    取得する構成オブジェクトのクラス名.
            ・o_name    取得する構成オブジェクトのオブジェクト名.
            ・o_num     取得する構成オブジェクトのオブジェクト番号.
        RETURN:
            ・void*     指定された構成オブジェクトのアドレス.
                        指定のオブジェクトを取得できない場合 NULL.
        ACCIDENT:
            ・component_array に Object* 型以外の変数が void* にキャスト
             されて収録されている場合.
     

  void* Get_component(char* c_name, char* o_name, int o_num);

Back to the top of Sub_system


void* Get_component(char* o_name, int o_num);

  void* Get_component(char* o_name, int o_num);

Back to the top of Sub_system


Boolean Connect(void* my_p, void* r, char* rp_c_name, char* rp_name, int rp_num);

  Boolean Connect(void* my_p,
                    void* r, char* rp_c_name, char* rp_name, int rp_num);

Back to the top of Sub_system


Boolean Connect(void* s, char* sp_c_name, char* sp_name, int sp_num, void* r, char* rp_c_name, char* rp_name, int rp_num);

  Boolean Connect(void* s, char* sp_c_name, char* sp_name, int sp_num,
                    void* r, char* rp_c_name, char* rp_name, int rp_num);

Back to the top of Sub_system


Boolean Connect(void* s, char* sp_c_name, char* sp_name, int sp_num, void* my_p);

  Boolean Connect(void* s, char* sp_c_name, char* sp_name, int sp_num,
                    void* my_p);

Back to the top of Sub_system


Boolean Connect(void* my_p, void* r, char* rp_name, int rp_num);

  Boolean Connect(void* my_p,
                    void* r, char* rp_name, int rp_num);

Back to the top of Sub_system


Boolean Connect(void* s, char* sp_name, int sp_num, void* r, char* rp_name, int rp_num);

  Boolean Connect(void* s, char* sp_name, int sp_num,
                    void* r, char* rp_name, int rp_num);

Back to the top of Sub_system


Boolean Connect(void* s, char* sp_name, int sp_num, void* my_p);

  Boolean Connect(void* s, char* sp_name, int sp_num,
                    void* my_p);

Back to the top of Sub_system


Boolean Connect(void* my_sp, void* my_rp);

  Boolean Connect(void* my_sp, void* my_rp);

Back to the top of Sub_system


void Connect_ports(void) ;

部分系モデル内部の端子の接続を Sub_system::Connect を用いて定義し ます.

  virtual void Connect_ports(void) = NULL;

Back to the top of Sub_system


void Connect_components(void) ;

部分系モデル内部の直接通信接続を Element::Register(void*,int) を 用いて定義します. 例えば、次のように定義します。

EXAMPLE void Connect_components(void) { a.Register(&b, 0); b.Register(&a, 0); a.Register(&c, 1); c.Register(&a, 0); } END

ここで, a, b, c は, この部分系のデータメンバです。これにより, 要素 a の object_array[0] に要素 b のアドレスが格納され, 要素 a の object_array[1] に要素 c のアドレスが格納されることになります。要素 b の object_array[0] に要素 a のアドレスが格納されます。要素 c の object_array[0] に要素 a のアドレスが格納されます。

純粋仮想関数なので, 派生クラスで必ず定義して下さい.

  virtual void Connect_components(void) = NULL;

Back to the top of Sub_system


Boolean Construct(void);

この部分系モデル, 構成オブジェクトの構造を設定します.

Construct では, まず object_list が NULL であることを確認します. NULL でない場合は object_list が使用中と判断し, エラーメッセージ を表示後 return します.

次に, 以下の手続きに従います.

  1. List 型オブジェクトをヒープに作成して object_list に設定する.
  2. Element::Register_receive_ports, Element::Make_object_array により receive_port_array を作成する.
  3. List::Clear により object_list を空にする.
  4. Element::Register_send_ports, Element::Make_object_array によ り send_port_array を作成する.
  5. List::Clear により object_list を空にする.
  6. Sub_system::Register_components, Element::Make_object_array により component_array を作成する.
  7. List::Clear により object_list を空にする.
  8. Sub_system::Initialize_iterator_array により iterator_array の第一次配列を確保する.
  9. Sub_system::Register_iterators により iterator_array を作成する.
  10. object_list を delete し, NULL に設定する.
  11. Element::Construct により, 構成オブジェクトの構造を設定する.
  12. Sub_system::Connect_components により, 部分系モデル内部の接 続を行う.

RETURN:

・YES
部分系モデル内部の構造が正常に設定された場合.
・NO
このオブジェクトの構造設定に異常が生じた場合. 構成オブジェクトの構造設定に異常が生じた場合. 部分系モデル内部の接続に異常が生じた場合.

  Boolean Construct(void);

Back to the top of Sub_system


Boolean Switch(void);

端子の接続に使用していた作業用配列を、端子のデータ送受信のために使 用するようにします。これにより、送受信接続作業を終了して、送受信開 始のための準備作業をします。

部分系モデル内部に存在する全端子に Switch (virtual) を実行させま す.

Relay_port では receiver_array が作成されます. Send_port では, receiver_array が作成され, buffer_list がデータパ ック収録用に作成されます.

まず Element::Switch を実行し, この戻り値が NO の場合, エラーメッ セージを表示後 NO を返します.

次に, 構成オブジェクトに Switch (virtual) を実行させます. ここで戻り値が NO の構成オブジェクトが存在する場合は, 全構成オブ ジェクトに Switch を実行させた後, エラーメッセージを表示して NO を返します.

       RETURN:
         ・YES   部分系モデル内部の全端子を正常に転換できた場合.
         ・NO    部分系モデル内部の端子の内, 正常に転換できないものが
                 存在する場合.
     

  Boolean Switch(void);

Back to the top of Sub_system


Boolean Are_you_ready(void);

計算開始前の確認

この関数の戻り値が YES ならば, Sub_system は計算を開始できます.

まず Element::Are_you_ready を用いて, 所有受信側中継端子, 所有送 信側中継端子に対して計算前の確認作業を行います. この戻り値が NO の場合, エラーメッセージを表示後 NO を返します.

次に, 全構成オブジェクトに Are_you_ready (virtual) を用いて計算前 の確認作業を行います. ここで戻り値が NO のオブジェクトが存在する場合, 全構成オブジェク トを Are_you_redy で確認後, エラーメッセージを表示して NO を返し ます.

         RETURN:
            ・YES   計算開始可.
            ・NO    計算開始不可.
     

  Boolean Are_you_ready(void);

Back to the top of Sub_system


void Clear_data_string(void);

構成オブジェクトのデータ文字列の消去

  void Clear_data_string(void);

Back to the top of Sub_system


void Set_parameter(FILE*) ;

Set_parameter は、Element の純粋仮想関数です。標準的な部分系モデル は, 数理的処理を構成オブジェクトにより行うので, パラメータ, 状態量 を持たないものと考えられます. そこで, Sub_system で、何もしないよ うに定義しました。 仮想関数なので, 必要ならば派生クラスで変更して下さい.

  void Set_parameter(FILE*)   
;

Function is currently defined inline.


Back to the top of Sub_system


void Parameter(FILE* fp, char*& buffer, int buflen, Boolean& stock_p);

Paramter は、部分系自身のパラメタと、部分系の構成要素のパラメタを読 み取ります。

  void Parameter(FILE* fp, char*& buffer, int buflen,
                Boolean& stock_p);

Back to the top of Sub_system


Boolean Initial_time(time_t i_time);

構成オブジェクトの時刻の初期化

current_time を読み込みます。読み込んだ値が 0 なら,current_time を変更しません。

  Boolean Initial_time(time_t i_time);

Back to the top of Sub_system


void Set_initial_state(FILE* fp);

部分系自身の初期状態量の設定

  void Set_initial_state(FILE* fp);

Back to the top of Sub_system


void Initial_state(FILE* fp, char*& buffer, int buflen, Boolean& stock_p);

部分系自身と初期状態量と構成オブジェクトの初期状態量の設定

  void Initial_state(FILE* fp, char*& buffer, int buflen,
        Boolean& stock_p);

Back to the top of Sub_system


void Save_terminal_state(FILE* fp) ;

部分系自身の最終状態のファイルへの保存

  virtual void Save_terminal_state(FILE* fp)                                                                                          
;

Function is currently defined inline.


Back to the top of Sub_system


void Terminal_state(FILE* fp);

部分系自身の最終状態と構成要素の最終状態の保存

Sub_system::Terminal_state(FILE* fp) は,構成要素に最終状態を書 き出すように指令を送ります。

  virtual void Terminal_state(FILE* fp);

Back to the top of Sub_system


void Save_send_port_stock(FILE* fp);

部分系の構成要素のそれぞれに指令を送り、ファイルポインタ fp で指定 されているファイルに書き出させます。

  virtual void Save_send_port_stock(FILE* fp);

Back to the top of Sub_system


void Print_components(FILE* fp , char* head );

構成オブジェクトの情報を印刷します。

  void Print_components(FILE* fp = stderr, char* head = "    ");

Back to the top of Sub_system


Boolean Initial_output(void) ;

  Boolean Initial_output(void)                
;

Function is currently defined inline.


Back to the top of Sub_system


Boolean Initial_work(void) ;

  Boolean Initial_work(void)                
;

Function is currently defined inline.


Back to the top of Sub_system


time_t Necessary_time_from(void* rp);

  virtual time_t Necessary_time_from(void* rp);

Back to the top of Sub_system


time_t Necessary_time_to(void* rp);

  virtual time_t Necessary_time_to(void* rp);

Back to the top of Sub_system


Boolean Can_you_calculate(void) ;

計算前の確認

  Boolean Can_you_calculate(void)                
;

Function is currently defined inline.


Back to the top of Sub_system


time_t Calculate_time_step(void) ;

タイムステップの計算

  time_t Calculate_time_step(void)              
;

Function is currently defined inline.


Back to the top of Sub_system


Boolean Calculate(void) ;

1ステップ分の計算

  Boolean Calculate(void)                
;

Function is currently defined inline.


Back to the top of Sub_system


Boolean Do_you_reach_target_time(int num);

反復計算する要素群が反復計算目標時刻に到達したかどうかをチェックす る. sub.cc では、『管理者』としての Sub_system の立場から定義されて います。すなわち、自分の内部に反復計算を行なう要素群がいるというこ とを前提としており、自分自身が反復計算を行なう場合に対応して定義さ れているわけではありません。したがって、自分自身が反復計算を行なう 場合は、それが可能であるように再定義して下さい。

  Boolean Do_you_reach_target_time(int num);

Back to the top of Sub_system


Boolean Do_you_converge(int num);

反復計算する要素群が収束したかをチェックする. sub.cc では、『管理者』 としての Sub_system の立場から定義されています。すなわち、自分の内 部に反復計算を行なう要素群がいるということを前提としており、自分自 身が反復計算を行なう場合に対応して定義されているわけではありません。 したがって、自分自身が反復計算を行なう場合は、それが可能であるよう に再定義して下さい。

  Boolean Do_you_converge(int num);

Back to the top of Sub_system


Boolean Renew_current_time(void);

現在時刻の更新

component_array に登録されている要素のcurrent_time および iterator_array に登録されている要素の fixed_time のうち、最も遅れて いるものを自分の current_time とする。

  Boolean Renew_current_time(void);

Back to the top of Sub_system


void Rewind_current_time(int num);

反復計算が収束しなかった要素群(iterator_array[num])に対して Rewind_current_time を実行するよう命令する.

  void Rewind_current_time(int num);

Back to the top of Sub_system


void Flush_data(int num);

  void Flush_data(int num);

Back to the top of Sub_system


void Renew_fixed_time(int num);

  void Renew_fixed_time(int num);

Back to the top of Sub_system


void Renew_target_time(int num, time_t itrs);

  void Renew_target_time(int num, time_t itrs);

Back to the top of Sub_system


void Initialize_target_time(void);

  void Initialize_target_time(void);

Back to the top of Sub_system


time_t Calculate_iteration_step(int num);

Calculate_iteration_step は iterator_array[num] の Calculate_iteration_step の戻り値のうち、最小の値を返す。

  time_t Calculate_iteration_step(int num);

Back to the top of Sub_system


Boolean Work(void);

演算機能

  Boolean Work(void);

Back to the top of Sub_system


Boolean Init(char* o_name, int o_num, int num_of_objs , int num_of_itr , char* p_line );

初期化関数

  Boolean Init(char* o_name, int o_num,
        int num_of_objs = 0, int num_of_itr = 0, char* p_line = NULL);

Back to the top of Sub_system


Boolean Init(char* o_name, int o_num, int num_of_objs , char* p_line );

初期化関数

  Boolean Init(char* o_name, int o_num,
                 int num_of_objs = 0, char* p_line = NULL);

Back to the top of Sub_system


Sub_system(char* o_name, int o_num, int num_of_objs , int num_of_itr , char* p_line );

  Sub_system(char* o_name, int o_num,
        int num_of_objs = 0, int num_of_itr = 0, char* p_line = NULL);

Back to the top of Sub_system


Sub_system(char* o_name, int o_num, int num_of_objs , char* p_line );

Sub_system(char*,int,int,char*) は, 基底クラス Element のデフォル トコンストラクタを用い, Sub_system::Init を実行し, メンバを以下の 通り初期化します.

            ・class_name                : "Sub_system"
            ・object_name               : o_name
            ・object_number             : o_num
            ・owner                     : NULL
            ・object_list               : NULL
            ・receive_port_array        : NULL
            ・number_of_receive_ports   : -1
            ・send_port_array           : NULL
            ・number_of_send_ports      : -1
            ・element_array             : NULL
            ・number_of_elements        : -1
            ・data_string               : NULL
            ・current_time              : 0
            ・time_step                 : -1
            ・componemt_array           : NULL
            ・number_of_components      : -1
     

  Sub_system(char* o_name, int o_num,
        int num_of_objs = 0, char* p_line = NULL);

Back to the top of Sub_system


Sub_system(char* o_name, int o_num, char* p_line);

  Sub_system(char* o_name, int o_num, char* p_line);

Back to the top of Sub_system


Sub_system(void);

デフォルトコンストラクタは Sub_system::Init を実行しません. その結果以下の設定となります.

            ・object_name               : NULL
            ・object_number             : -1
     

その他のメンバに対する処理は, 引数つきコンストラクタと同じです. この場合, Sub_system::Init を用いてメンバを初期化して下さい.

  Sub_system(void);

Back to the top of Sub_system


~Sub_system(void);

デストラクタは component_array を delete します. デストラクタは, 間 接基底クラス Object で virtual 宣言されています.

  ~Sub_system(void);

Back to the top of Sub_system


All Members

public:
char* Class_name(void) ;
char* Object_name(void) ;
int Object_number(void) ;
void* Owner(void) ;
Boolean Compare(char* c_name, char* o_name, int o_num);
Boolean Compare(char* o_name, int o_num);
Boolean Compare(Object* obj);
Boolean Set_owner(void* o);
void Cprint(FILE* fp_out, char* head);
void Cprint(FILE* fp_out) ;
void Cprint(char* head ) ;
void Oprint(FILE* fp_out, char* head);
void Oprint(FILE* fp_out) ;
void Oprint(char* head ) ;
void Absname( char* absname );
Boolean Init(char* o_name, int o_num);
enum OperationFlag ;
Boolean Register(void* obj, int num);
Boolean Construct(void);
void* Get_receive_port(char* c_name, char* o_name, int o_num );
void* Get_send_port(char* c_name, char* o_name, int o_num );
void* Get_receive_port(char* o_name, int o_num );
void* Get_send_port(char* o_name, int o_num );
void* Get_object(char* c_name, char* o_name, int o_num );
void* Get_component(char* c_name, char* o_name, int o_num ) ;
void* Get_component(char* o_name, int o_num ) ;
Boolean Switch(void);
Boolean Are_you_ready(void);
Boolean Set_data_string(char* d_str, int d_strlen );
void Clear_data_string(void);
Boolean Get_data_string(char* d_str);
void Set_parameter(FILE* fp) ;
void Parameter(FILE* fp, char*& buffer, int buflen, Boolean& stock_p);
void Set_initial_state(FILE* fp) ;
void Initial_state(FILE* fp, char*& buffer, int buflen, Boolean& stock_p);
Boolean Share_info(void) ;
void Save_send_port_stock(FILE* fp);
void Restore_send_port_stock(void);
time_t Current_time(void) ;
time_t Time_step(void) ;
time_t Next_time(void) ;
time_t Terminal_time(void) ;
time_t MediumTermTargetTime(void) ;
time_t Fixed_time(void) ;
time_t Target_time(void) ;
void Rewind_current_time(void);
void Renew_fixed_time(void);
void Initialize_target_time(void) ;
void Renew_target_time(time_t itrs);
time_t Calculate_iteration_step(void);
time_t Necessary_time_from(Receive_port* rp);
time_t Necessary_time_to(Receive_port* rp);
Boolean Initial_time(time_t i_time);
Boolean Initial_work(void);
Boolean Can_you_calculate(void) ;
Boolean Record_status(void);
Boolean Work(void) ;
Boolean Do_you_reach_target_time(void);
void Flush_data(void);
void Creq(void) ;
void Print_receive_ports(FILE* fp , char* head ) ;
void Print_send_ports(FILE* fp , char* head ) ;
void Print_connection(FILE* fp , char* head );
void Save_terminal_state(FILE* fp) ;
void Terminal_state(FILE* fp);
Element* NewElement() ;
Boolean Init(char*, int, FILE*) ;
Boolean Init(char* o_name, int o_num, int num_of_objs , char* p_str ) ;
Boolean Init(char* o_name, int o_num, char* p_str) ;
Boolean Register(void* p, int obj) ;
void* Get_component(char* c_name, char* o_name, int o_num);
void* Get_component(char* o_name, int o_num);
void Set_parameter(FILE*) ;
void Print_components(FILE* fp , char* head );
time_t Necessary_time_from(void* rp);
time_t Necessary_time_to(void* rp);
time_t Calculate_time_step(void) ;
Boolean Calculate(void) ;
Boolean Do_you_reach_target_time(int num);
Boolean Do_you_converge(int num);
Boolean Init(char* o_name, int o_num, int num_of_objs , int num_of_itr , char* p_line );
Boolean Init(char* o_name, int o_num, int num_of_objs , char* p_line );
protected:
char* class_name;
char* object_name;
int object_number;
void* owner;
Boolean initialworkdone_p;
Boolean shareinfodone_p;
List* object_list;
void** receive_port_array;
int number_of_receive_ports;
void** send_port_array;
int number_of_send_ports;
void** object_array;
int number_of_objects;
char* data_string;
time_t current_time;
time_t time_step;
time_t fixed_time;
time_t target_time;
Boolean mCreqp;
void* Get_from_list(char* c_name, char* o_name, int o_num);
void* Get_from_list(char* o_name, int o_num);
Boolean Register(void* obj);
void Register_receive_ports(void) ;
void Register_send_ports(void) ;
Boolean Make_object_array(void**& obj_array, int& num_of_objs);
Boolean Set_object_array(int num_of_objs);
void* Get_from_array(char* c_name, char* o_name, int o_num, void** obj_array, int num_of_objs);
void* Get_from_array(char* o_name, int o_num, void** obj_array, int num_of_objs);
Boolean Look_data_string(char*& buffer);
char* Get_line(FILE* fp, char* buffer, int buflen, Boolean& stock_p, int& iflag);
void Get_line(FILE*fp, char* buffer, int buflen, char* fname, int line_number);
void Cur2fix2tar(void) ;
Boolean Renew_current_time(void) ;
Boolean Initial_output(void) ;
Boolean Can_you_calculate0(void);
Boolean Can_you_calculate1(void);
void Set_data_pack_array(void);
void Reduce_data_pack_stock(void);
Boolean Print_status(void) ;
Boolean Work0(void);
Boolean Work1(void);
Boolean Work2(void);
Boolean Work3(void);
void Send_stocked_data(void);
void Print_objects(FILE* fp, char* head, char* title, void** obj_array, int number_of_objs);
void** component_array;
int number_of_components;
void*** iterator_array;
int number_of_iterator_sets;
int* number_of_iterators;
void Register_components(void) ;
void Initialize_iterator_array(void);
void Register_iterators(void) ;
Boolean Register(int num, ...);
Boolean Register(void* p) ;
Boolean Connect(void* my_p, void* r, char* rp_c_name, char* rp_name, int rp_num);
Boolean Connect(void* s, char* sp_c_name, char* sp_name, int sp_num, void* r, char* rp_c_name, char* rp_name, int rp_num);
Boolean Connect(void* s, char* sp_c_name, char* sp_name, int sp_num, void* my_p);
Boolean Connect(void* my_p, void* r, char* rp_name, int rp_num);
Boolean Connect(void* s, char* sp_name, int sp_num, void* r, char* rp_name, int rp_num);
Boolean Connect(void* s, char* sp_name, int sp_num, void* my_p);
Boolean Connect(void* my_sp, void* my_rp);
void Connect_ports(void) ;
void Connect_components(void) ;
void Rewind_current_time(int num);
void Flush_data(int num);
void Renew_fixed_time(int num);
void Renew_target_time(int num, time_t itrs);
time_t Calculate_iteration_step(int num);

Back to the top of Sub_system


Ancestors

Inheritance chain for Sub_system:

Back to the top of Sub_system


Descendants

Back to the top of Sub_system


Generated from source by the Cocoon utilities on Sun Sep 3 22:52:08 2000 .

Report problems to jkotula@stratasys.com