00001 #!/usr/bin/env python 00002 # -*- coding: euc-jp -*- 00003 00004 ## 00005 # @file ECFactory.py 00006 # @brief ExecutionContext Factory class 00007 # @date $Date: 2007/04/13 16:06:22 $ 00008 # @author Noriaki Ando <n-ando@aist.go.jp> and Shinji Kurihara 00009 # 00010 # Copyright (C) 2007-2008 00011 # Task-intelligence Research Group, 00012 # Intelligent Systems Research Institute, 00013 # National Institute of 00014 # Advanced Industrial Science and Technology (AIST), Japan 00015 # All rights reserved. 00016 00017 00018 import string 00019 00020 import OpenRTM_aist 00021 00022 00023 ## 00024 # @if jp 00025 # 00026 # @brief ExecutionContext破棄用関数 00027 # 00028 # ExecutionContextのインスタンスを破棄するための関数。 00029 # 00030 # \param ec 破棄対象ExecutionContextのインスタンス 00031 # 00032 # @else 00033 # 00034 # @endif 00035 def ECDelete(ec): 00036 del ec 00037 00038 00039 ## 00040 # @if jp 00041 # @class ECFactoryBase 00042 # @brief ECFactoryBase 抽象クラス 00043 # 00044 # ExecutionContext生成用Factoryの抽象クラス。 00045 # 各ExecutionContextを生成するための具象Factoryクラスは、 00046 # 以下の関数の実装を提供しなければならない。 00047 # 00048 # publicインターフェースとして以下のものを提供する。 00049 # - name() : 生成対象ExecutionContext名称の取得 00050 # - create() : ExecutionContextインスタンスの生成 00051 # - destroy(): ExecutionContextインスタンスの破棄 00052 # 00053 # @since 0.4.0 00054 # 00055 # @else 00056 # 00057 # @endif 00058 class ECFactoryBase : 00059 """ 00060 """ 00061 00062 ## 00063 # @if jp 00064 # 00065 # @brief 生成対象ExecutionContext名称取得用関数(サブクラス実装用) 00066 # 00067 # 生成対象ExecutionContextの名称を取得するための関数。<BR> 00068 # この関数は具象サブクラスで実装する必要がある。 00069 # 00070 # @param self 00071 # 00072 # @return 生成対象ExecutionContext名称 00073 # 00074 # @else 00075 # 00076 # This method should be implemented in subclasses 00077 # 00078 # @endif 00079 def name(self): 00080 pass 00081 00082 00083 ## 00084 # @if jp 00085 # 00086 # @brief ExecutionContext生成用関数(サブクラス実装用) 00087 # 00088 # ExecutionContextのインスタンスを生成するための関数。<BR> 00089 # この関数は具象サブクラスで実装する必要がある。 00090 # 00091 # @param self 00092 # 00093 # @return 生成したExecutionContextインスタンス 00094 # 00095 # @else 00096 # 00097 # @endif 00098 def create(self): 00099 pass 00100 00101 ## 00102 # @if jp 00103 # 00104 # @brief ExecutionContext破棄用関数(サブクラス実装用) 00105 # 00106 # ExecutionContextのインスタンスを破棄するための関数。<BR> 00107 # この関数は具象サブクラスで実装する必要がある。 00108 # 00109 # @param self 00110 # @param comp 破棄対象のExecutionContextインスタンス 00111 # 00112 # @else 00113 # 00114 # @endif 00115 def destroy(self, comp): 00116 pass 00117 00118 00119 00120 ## 00121 # @if jp 00122 # @class ECFactoryPython 00123 # @brief ECFactoryPython クラス 00124 # 00125 # Python言語用ExecutionContextインスタンスを生成するFactoryクラス。 00126 # 00127 # @since 0.4.1 00128 # 00129 # @else 00130 # 00131 # @endif 00132 class ECFactoryPython(ECFactoryBase): 00133 """ 00134 """ 00135 00136 ## 00137 # @if jp 00138 # 00139 # @brief コンストラクタ 00140 # 00141 # コンストラクタ 00142 # 00143 # @param self 00144 # @param name 生成対象ExecutionContext名称 00145 # @param new_func ExecutionContext生成用関数 00146 # @param delete_func ExecutionContext破棄用関数 00147 # 00148 # @else 00149 # 00150 # @endif 00151 def __init__(self, name, new_func, delete_func): 00152 self._name = name 00153 self._New = new_func 00154 self._Delete = delete_func 00155 00156 return 00157 00158 00159 ## 00160 # @if jp 00161 # 00162 # @brief 生成対象ExecutionContext名称を取得 00163 # 00164 # 生成対象のExecutionContext名称を取得する。 00165 # 00166 # @param self 00167 # 00168 # @return 生成対象ExecutionContext名称 00169 # 00170 # @else 00171 # 00172 # @endif 00173 def name(self): 00174 return self._name 00175 00176 ## 00177 # @if jp 00178 # 00179 # @brief 生成対象ExecutionContextインスタンスを生成 00180 # 00181 # 生成対象のExecutionContextクラスのインスタンスを生成する。 00182 # 00183 # @param self 00184 # 00185 # @return 生成したExecutionContextインスタンス 00186 # 00187 # @else 00188 # 00189 # @endif 00190 def create(self): 00191 return self._New() 00192 00193 ## 00194 # @if jp 00195 # 00196 # @brief 対象ExecutionContextインスタンスを破棄 00197 # 00198 # 対象ExecutionContextクラスのインスタンスを破棄する。 00199 # 00200 # @param self 00201 # @param ec 破棄対象ExecutionContextインスタンス 00202 # 00203 # @else 00204 # 00205 # @endif 00206 def destroy(self, ec): 00207 self._Delete(ec) 00208