BufferBase.py

説明を見る。
00001 #!/usr/bin/env python
00002 # -*- coding: euc-jp -*-
00003 
00004 ##
00005 # @file BufferBase.py
00006 # @brief Buffer abstract class
00007 # @date $Date: 2007/09/12 $
00008 # @author Noriaki Ando <n-ando@aist.go.jp> and Shinji Kurihara
00009 #
00010 # Copyright (C) 2006-2008
00011 #     Noriaki Ando
00012 #     Task-intelligence Research Group,
00013 #     Intelligent Systems Research Institute,
00014 #     National Institute of
00015 #         Advanced Industrial Science and Technology (AIST), Japan
00016 #     All rights reserved.
00017 
00018 
00019 
00020 ##
00021 # @if jp
00022 # @class BufferBase
00023 # @brief BufferBase 抽象クラス
00024 # 
00025 # 種々のバッファのための抽象インターフェースクラス。
00026 # 具象バッファクラスは、以下の関数の実装を提供しなければならない。
00027 # 
00028 # publicインターフェースとして以下のものを提供する。
00029 #  - write(): バッファに書き込む
00030 #  - read(): バッファから読み出す
00031 #  - length(): バッファ長を返す
00032 #  - isFull(): バッファが満杯である
00033 #  - isEmpty(): バッファが空である
00034 # 
00035 # protectedインターフェースとして以下のものを提供する。
00036 #  - put(): バッファにデータを書き込む
00037 #  - get(): バッファからデータを読み出す
00038 # 
00039 # @since 0.4.0
00040 # 
00041 # @else
00042 # 
00043 # @class BufferBase
00044 # @brief BufferBase abstract class
00045 # 
00046 # This is the abstract interface class for various Buffer.
00047 # 
00048 # @since 0.4.0
00049 # 
00050 # @endif
00051 class BufferBase:
00052   """
00053   """
00054 
00055 
00056   ##
00057   # @if jp
00058   # 
00059   # @brief バッファの長さを取得する(サブクラス実装用)
00060   # 
00061   # バッファ長を取得する<BR>
00062   # ※サブクラスでの実装参照用
00063   # 
00064   # @param self 
00065   # 
00066   # @return バッファ長
00067   # 
00068   # @else
00069   # 
00070   # @brief Get the buffer length
00071   # 
00072   # @return buffer length
00073   # 
00074   # @endif
00075   def length(self):
00076     pass
00077 
00078 
00079   ##
00080   # @if jp
00081   # 
00082   # @brief バッファにデータを書き込む(サブクラス実装用)
00083   # 
00084   # バッファにデータを書き込む<BR>
00085   # ※サブクラスでの実装参照用
00086   # 
00087   # @param self 
00088   # @param value 書き込み対象データ
00089   # 
00090   # @return データ書き込み結果(true:書き込み成功,false:書き込み失敗)
00091   # 
00092   # @else
00093   # 
00094   # @brief Write data into the buffer
00095   # 
00096   # @endif
00097   def write(self, value):
00098     pass
00099 
00100 
00101   ##
00102   # @if jp
00103   # 
00104   # @brief バッファからデータを読み出す(サブクラス実装用)
00105   # 
00106   # バッファからデータを読み出す<BR>
00107   # ※サブクラスでの実装参照用
00108   # 
00109   # @param self 
00110   # @param value 読み出しデータ
00111   # 
00112   # @return データ読み出し結果(true:読み出し成功,false:読み出し失敗)
00113   # 
00114   # @else
00115   # 
00116   # @brief Read data from the buffer
00117   # 
00118   # @endif
00119   def read(self, value):
00120     pass
00121 
00122 
00123   ##
00124   # @if jp
00125   # 
00126   # @brief バッファfullチェック(サブクラス実装用)
00127   # 
00128   # バッファfullチェック用関数<BR>
00129   # ※サブクラスでの実装参照用
00130   # 
00131   # @param self 
00132   # 
00133   # @return fullチェック結果(true:バッファfull,false:バッファ空きあり)
00134   # 
00135   # @else
00136   # 
00137   # @brief True if the buffer is full, else false.
00138   # 
00139   # @endif
00140   def isFull(self):
00141     pass
00142 
00143 
00144   ##
00145   # @if jp
00146   # 
00147   # @brief バッファemptyチェック(サブクラス実装用)
00148   # 
00149   # バッファemptyチェック用関数<BR>
00150   # ※サブクラスでの実装参照用
00151   # 
00152   # @param self 
00153   # 
00154   # @return emptyチェック結果(true:バッファempty,false:バッファデータあり)
00155   # 
00156   # @else
00157   # 
00158   # @brief True if the buffer is empty, else false.
00159   # 
00160   # @endif
00161   def isEmpty(self):
00162     pass
00163 
00164 
00165   ##
00166   # @if jp
00167   # 
00168   # @brief バッファにデータを格納する(サブクラス実装用)
00169   # 
00170   # バッファへのデータ格納用関数<BR>
00171   # ※サブクラスでの実装参照用
00172   # 
00173   # @param self 
00174   # @param data 対象データ
00175   # 
00176   # @else
00177   # 
00178   # @brief Write data into the buffer
00179   # 
00180   # @endif
00181   def put(self, data):
00182     pass
00183 
00184 
00185   ##
00186   # @if jp
00187   # 
00188   # @brief バッファからデータを取得する(サブクラス実装用)
00189   # 
00190   # バッファに格納されたデータ取得用関数<BR>
00191   # ※サブクラスでの実装参照用
00192   # 
00193   # @param self 
00194   # 
00195   # @return 取得データ
00196   # 
00197   # @else
00198   # 
00199   # @brief Get data from the buffer
00200   # 
00201   # @endif
00202   def get(self):
00203     pass
00204 
00205 
00206   ##
00207   # @if jp
00208   # 
00209   # @brief 次に書き込むバッファへの参照を取得する(サブクラス実装用)
00210   # 
00211   # 書き込みバッファへの参照取得用関数<BR>
00212   # ※サブクラスでの実装参照用
00213   # 
00214   # @param self 
00215   # 
00216   # @return 次の書き込み対象バッファへの参照
00217   # 
00218   # @else
00219   # 
00220   # @brief Get the buffer's reference to be written the next
00221   # 
00222   # @endif
00223   def getRef(self):
00224     pass
00225 
00226 
00227 ##
00228 # @if jp
00229 # @class NullBuffer
00230 # @brief ダミーバッファ実装クラス
00231 # 
00232 # バッファ長が1固定のダミーバッファ実装クラス。
00233 # 
00234 # @param DataType バッファに格納するデータ型
00235 # 
00236 # @since 0.4.0
00237 # 
00238 # @else
00239 # 
00240 # @endif
00241 class NullBuffer(BufferBase):
00242   """
00243   """
00244 
00245 
00246 
00247   ##
00248   # @if jp
00249   # 
00250   # @brief コンストラクタ
00251   # 
00252   # コンストラクタ
00253   # バッファ長を1(固定)で初期化する。
00254   # 
00255   # @param self 
00256   # @param size バッファ長(デフォルト値:None,ただし無効)
00257   # 
00258   # @else
00259   # 
00260   # @endif
00261   def __init__(self, size=None):
00262     if size is None:
00263       size=1
00264     self._length = 1
00265     self._data = None
00266     self._is_new = False
00267     self._inited = False
00268 
00269 
00270   ##
00271   # @if jp
00272   # 
00273   # @brief コンストラクタ
00274   # 
00275   # コンストラクタ
00276   # 
00277   # @param self 
00278   # @param data 格納データ
00279   # 
00280   # @else
00281   # 
00282   # @endif
00283   def init(self, data):
00284     self.put(data)
00285 
00286 
00287   ##
00288   # @if jp
00289   # 
00290   # @brief バッファの初期化
00291   # 
00292   # バッファの初期化を実行する。
00293   # 
00294   # @param self 
00295   # 
00296   # @else
00297   # 
00298   # @endif
00299   def clear(self):
00300     self._inited = False
00301 
00302 
00303   ##
00304   # @if jp
00305   # 
00306   # @brief バッファ長(1固定)を取得する
00307   # 
00308   # バッファ長を取得する。(常に1を返す。)
00309   # 
00310   # @param self 
00311   # 
00312   # @return バッファ長(1固定)
00313   # 
00314   # @else
00315   # 
00316   # @brief Get the buffer length
00317   # 
00318   # @return buffer length(always 1)
00319   # 
00320   # @endif
00321   def length(self):
00322     return 1
00323 
00324 
00325   ##
00326   # @if jp
00327   # 
00328   # @brief バッファにデータを書き込む
00329   # 
00330   # 引数で与えられたデータをバッファに書き込む。
00331   # 
00332   # @param self 
00333   # @param value 書き込み対象データ
00334   # 
00335   # @return データ書き込み結果(true:書き込み成功,false:書き込み失敗)
00336   # 
00337   # @else
00338   # 
00339   # @brief Write data into the buffer
00340   # 
00341   # @endif
00342   def write(self, value):
00343     self.put(value)
00344     return True
00345 
00346 
00347   ##
00348   # @if jp
00349   # 
00350   # @brief バッファからデータを読み出す
00351   # 
00352   # バッファに格納されたデータを読み出す。
00353   # 
00354   # @param self 
00355   # @param value 読み出したデータ
00356   # 
00357   # @return データ読み出し結果(true:読み出し成功,false:読み出し失敗)
00358   # 
00359   # @else
00360   # 
00361   # @brief Read data from the buffer
00362   # 
00363   # @endif
00364   def read(self, value):
00365     if not self._inited:
00366       return False
00367     value[0] = self.get()
00368     return True
00369 
00370 
00371   ##
00372   # @if jp
00373   # 
00374   # @brief バッファfullチェック
00375   # 
00376   # バッファfullをチェックする。(常にfalseを返す。)
00377   # 
00378   # @param self 
00379   # 
00380   # @return fullチェック結果(常にfalse)
00381   # 
00382   # @else
00383   # 
00384   # @brief Always false.
00385   # 
00386   # @endif
00387   def isFull(self):
00388     return False
00389 
00390 
00391   ##
00392   # @if jp
00393   # 
00394   # @brief バッファemptyチェック
00395   # 
00396   # バッファemptyをチェックする。(常にfalseを返す。)
00397   # ※要確認
00398   # 
00399   # @param self 
00400   # 
00401   # @return emptyチェック結果(常にfalse)
00402   # 
00403   # @else
00404   # 
00405   # @brief Always false.
00406   # 
00407   # @endif
00408   def isEmpty(self):
00409     return not self._inited
00410 
00411 
00412   ##
00413   # @if jp
00414   # 
00415   # @brief 最新データか確認する
00416   # 
00417   # 現在のバッファ位置に格納されているデータが最新データか確認する。
00418   # 
00419   # @param self 
00420   # 
00421   # @return 最新データ確認結果
00422   #            ( true:最新データ.データはまだ読み出されていない
00423   #             false:過去のデータ.データは既に読み出されている)
00424   # 
00425   # @else
00426   # 
00427   # @endif
00428   def isNew(self):
00429     return self._is_new
00430 
00431 
00432   ##
00433   # @if jp
00434   # 
00435   # @brief バッファにデータを格納
00436   # 
00437   # 引数で与えられたデータをバッファに格納する。
00438   # 
00439   # @param self 
00440   # @param data 対象データ
00441   # 
00442   # @else
00443   # 
00444   # @brief Write data into the buffer
00445   # 
00446   # @endif
00447   def put(self, data):
00448     self._data = data
00449     self._is_new = True
00450     self._inited = True
00451 
00452 
00453   ##
00454   # @if jp
00455   # 
00456   # @brief バッファからデータを取得する
00457   # 
00458   # バッファに格納されたデータを取得する。
00459   # 
00460   # @param self 
00461   # 
00462   # @return 取得データ
00463   # 
00464   # @else
00465   # 
00466   # @brief Get data from the buffer
00467   # 
00468   # @endif
00469   def get(self):
00470     self._is_new = False
00471     return self._data
00472 
00473 
00474   ##
00475   # @if jp
00476   # 
00477   # @brief 次に書き込むバッファへの参照を取得する
00478   # 
00479   # 書き込みバッファへの参照を取得する。
00480   # 本バッファ実装ではバッファ長は固定で1であるため,
00481   # 常に同じ位置への参照を返す。
00482   # 
00483   # @param self 
00484   # 
00485   # @return 次の書き込み対象バッファへの参照(固定)
00486   # 
00487   # @else
00488   # 
00489   # @brief Get the buffer's reference to be written the next
00490   # 
00491   # @endif
00492   def getRef(self):
00493     return self._data

OpenRTMに対してMon Mar 17 15:11:05 2008に生成されました。  doxygen 1.5.4