ネームスペース coil

Common Object Interface Layer [詳細]


構成

class  Allocator
class  Async
class  Async_t
class  Async_ref_t
class  Condition
class  DynamicLib
class  Factory
class  GlobalFactory
class  Guard
class  log_streambuf
class  log_stream
class  default_deleter
class  refcounter_base
class  refcounter
class  shared_ptr
class  Mutex
class  NonCopyable
 コピー禁止ミックスイン [詳細]
class  NonCopyableCRTP
 コピー禁止ミックスイン(CRTP版) [詳細]
class  GetOpt
class  PeriodicTask
class  TaskFuncBase
class  TaskFunc
class  PeriodicTaskBase
class  Properties
 プロパティセットを表現するクラス [詳細]
class  SignalAction
class  Singleton
class  Task
class  TimeMeasure
class  Timer
 Timerクラス [詳細]
class  TimeValue

型定義

typedef log_streambuf< char > LogStreamBuffer
typedef log_stream< char > LogStream
typedef ::utsname utsname
typedef ::pid_t pid_t
typedef void(* SignalHandler )(int)
typedef std::vector< std::string > vstring

関数

template<typename Object, typename Func>
Async_t< Object, Func > * AsyncInvoker (Object *obj, Func func, bool auto_delete=false)
 非同期メンバー関数呼び出しヘルパー関数
template<typename Object, typename Func>
Async_ref_t< Object, Func > * AsyncInvoker (Object *obj, Func *func, bool auto_delete=false)
template<class AbstractClass, class ConcreteClass>
AbstractClass * Creator ()
template<class AbstractClass, class ConcreteClass>
void Destructor (AbstractClass *&obj)
std::string dirname (char *path)
std::string basename (const char *path)
coil::vstring filelist (const char *path, const char *glob_str="")
template<class T, class U>
bool operator== (shared_ptr< T > const &a, shared_ptr< U > const &b)
template<class T, class U>
bool operator!= (shared_ptr< T > const &a, shared_ptr< U > const &b)
template<class T, class U>
bool operator< (shared_ptr< T > const &a, shared_ptr< U > const &b)
template<class E, class T, class Y>
basic_ostream< E, T > & operator<< (basic_ostream< E, T > &os, shared_ptr< Y > const &p)
template<class T>
void swap (shared_ptr< T > &a, shared_ptr< T > &b)
template<class T, class U>
shared_ptr< T > static_pointer_cast (shared_ptr< U > const &r)
template<class T, class U>
shared_ptr< T > dynamic_pointer_cast (shared_ptr< U > const &r)
template<class T, class U>
shared_ptr< T > const_pointer_cast (shared_ptr< U > const &r)
template<class D, class T>
D * get_deleter (shared_ptr< T > const &p)
int uname (utsname *name)
pid_t getpid ()
pid_t getppid ()
char * getenv (const char *name)
int launch_shell (std::string command)
 プロセスを起動する
int daemon (int nochdir, int noclose)
bool dest_to_endpoint (std::string dest_addr, std::string &endpoint)
 宛先アドレスから利用されるエンドポイントアドレスを得る
bool find_dest_ifname (std::string dest_addr, std::string &dest_if)
 宛先アドレスから利用されるネットワークインターフェース名を得る
bool ifname_to_ipaddr (std::string ifname, std::string &ipaddr)
 ネットワークインターフェース名からIPアドレスを得る
std::wstring string2wstring (std::string str)
 string から wstring への変換
std::string wstring2string (std::wstring wstr)
 wstring から string への変換
void toUpper (std::string &str)
 大文字への変換
void toLower (std::string &str)
 小文字への変換
int getlinePortable (std::istream &istr, std::string &line)
 入力ストリームから1行読み込む
bool isEscaped (const std::string &str, std::string::size_type pos)
 文字列がエスケープされているか判断する
std::string escape (const std::string str)
 文字列をエスケープする
std::string unescape (const std::string str)
 文字列のエスケープを戻す
void eraseBlank (std::string &str)
 文字列の空白文字を削除する
void eraseHeadBlank (std::string &str)
 文字列の先頭の空白文字を削除する
void eraseTailBlank (std::string &str)
 文字列の末尾の空白文字を削除する
void eraseBothEndsBlank (std::string &str)
 文字列の先頭・末尾の空白文字を削除する
std::string normalize (std::string &str)
 文字列のを正規化する
void replaceString (std::string &str, const std::string from, const std::string to)
 文字列を置き換える
vstring split (const std::string &input, const std::string &delimiter, bool ignore_empty=false)
 文字列を分割文字で分割する
bool toBool (std::string str, std::string yes, std::string no, bool default_value=true)
 与えられた文字列をbool値に変換する
bool includes (const vstring &list, std::string value, bool ignore_case=true)
 文字列リスト中にある文字列が含まれるかどうか
bool includes (const std::string &list, std::string value, bool ignore_case=true)
bool isAbsolutePath (const std::string &str)
 与えられた文字列が絶対パスかどうかを判断する
bool isURL (const std::string &str)
 与えられた文字列がURLかどうかを判断する
template<class Printable>
std::string otos (Printable n)
 与えられたオブジェクトをstdstringに変換
template<typename To>
bool stringTo (To &val, const char *str)
 与えられたstdstringをオブジェクトに変換
template<>
bool stringTo< std::string > (std::string &val, const char *str)
vstring unique_sv (vstring sv)
 与えられた文字列リストから重複を削除
std::string flatten (vstring sv)
 与えられた文字列リストからCSVを生成
char ** toArgv (const vstring &args)
 与えられた文字列リストを引数リストに変換
std::string sprintf (char const *__restrict fmt,...)
unsigned int sleep (unsigned int seconds)
int sleep (TimeValue interval)
int usleep (useconds_t usec)
int gettimeofday (struct timeval *tv, struct timezone *tz)
TimeValue gettimeofday ()
int settimeofday (const struct timeval *tv, const struct timezone *tz)


説明

Common Object Interface Layer

型定義

typedef log_stream<char> coil::LogStream

typedef ::pid_t coil::pid_t

typedef void(* coil::SignalHandler)(int)

typedef std::vector<std::string> coil::vstring


関数

template<typename Object, typename Func>
Async_ref_t<Object, Func>* coil::AsyncInvoker ( Object *  obj,
Func *  func,
bool  auto_delete = false 
) [inline]

template<typename Object, typename Func>
Async_t<Object, Func>* coil::AsyncInvoker ( Object *  obj,
Func  func,
bool  auto_delete = false 
) [inline]

非同期メンバー関数呼び出しヘルパー関数

メンバー関数を非同期に呼ぶためのヘルパー関数 例

class A { public: // 時間のかかる関数 void hoge() { for (int i(0); i < 5; ++i) { std::cout << "hoge" << std::endl; sleep(1); } } // 時間のかかる関数 void munya(const char* msg) { for (int i(0); i < 10; ++i) { std::cout << "message is: " << msg << std::endl; sleep(1); } } int add_one(int val) { return val + 1; } }; この様なクラスのオブジェクトに対して、

A a; Async* invoker0(AsyncInvoker(&a, std::mem_fun(&A::hoge))); Async* invoker1(AsyncInvoker(&a, std::bind2nd(std::mem_fun(&A::munya), "ほげ"))); invoker0->invoke(); // すぐに戻る invoker1->invoke(); // すぐに戻る

delete invoker0; // 必ず削除すること delete invoker1; // 必ず削除すること

のように非同期の呼び出しができる。 呼び出しの戻り値を取得したい場合は、自前の関数オブジェクトを用意する。

class add_one_functor { int m_val, m_ret; public: add_one_functor(int val) : m_val(val), m_ret(0) {} void operaotr(A* obj) { m_ret = obj->add_one(m_val); } int get_ret() { return m_ret; } };

上記の関数オブジェクトのインスタンスを作成し、そのポインタを渡す。

add_one_functor aof(100); Async* invoker2(AsyncInvoker(&a, &aof)); invoker2->invoke(); invoker2->wait(); std::cout << "result: " << aof.get_ret() << std::endl; delete invoker2;

通常、AsyncInvoker が返すオブジェクトは明示的に削除しなければ ならないが、第三引数に true を渡すことで、非同期実行が終了すると同時に 自動的にインスタンスが削除される。

// invoker3 は削除 (delete invoker3) してはいけない Async* invoker3(AsyncInvoker(&a, std::mem_fun(&A::hoge), true));

// インスタンス生成と同時に実行することもできる。 AsyncInvoker(&a, std::mem_fun(&A::hoge))->invoke();

std::string coil::basename ( const char *  path  )  [inline]

template<class T, class U>
shared_ptr<T> coil::const_pointer_cast ( shared_ptr< U > const &  r  )  [inline]

template<class AbstractClass, class ConcreteClass>
AbstractClass* coil::Creator (  )  [inline]

int coil::daemon ( int  nochdir,
int  noclose 
)

bool coil::dest_to_endpoint ( std::string  dest_addr,
std::string &  endpoint 
)

宛先アドレスから利用されるエンドポイントアドレスを得る

宛先アドレスを与えると、その際に利用されるエンドポイントのアドレス が返される。宛先アドレス dest_addr には、IPアドレスまたはFQDNホス ト名を与えることができる。宛先アドレスが到 達可能であり、利用するエンドポイントが得られた場合 true、宛先アド レスに到達できない場合は false が返される。

引数:
dest_addr 宛先アドレスまたはホスト名
dest_if 宛先と通信を行う際に使用されるインターフェース名
戻り値:
成功 true, 失敗 false

template<class AbstractClass, class ConcreteClass>
void coil::Destructor ( AbstractClass *&  obj  )  [inline]

std::string coil::dirname ( char *  path  )  [inline]

template<class T, class U>
shared_ptr<T> coil::dynamic_pointer_cast ( shared_ptr< U > const &  r  )  [inline]

void coil::eraseBlank ( std::string &  str  ) 

文字列の空白文字を削除する

与えられた文字列の空白文字を削除する。 空白文字として扱うのは' '(スペース)と'\t'(タブ)。

引数:
str 空白文字削除処理文字列

void coil::eraseBothEndsBlank ( std::string &  str  ) 

文字列の先頭・末尾の空白文字を削除する

与えられた文字列の先頭および末尾に存在する空白文字を削除する。 空白文字として扱うのは' '(スペース)と'\t'(タブ)。

引数:
str 先頭末尾空白文字削除処理文字列

void coil::eraseHeadBlank ( std::string &  str  ) 

文字列の先頭の空白文字を削除する

与えられた文字列の先頭に存在する空白文字を削除する。 空白文字として扱うのは' '(スペース)と'\t'(タブ)。

引数:
str 先頭空白文字削除処理文字列

void coil::eraseTailBlank ( std::string &  str  ) 

文字列の末尾の空白文字を削除する

与えられた文字列の末尾に存在する空白文字を削除する。 空白文字として扱うのは' '(スペース)と'\t'(タブ)。

引数:
str 末尾空白文字削除処理文字列

std::string coil::escape ( const std::string  str  ) 

文字列をエスケープする

次の文字をエスケープシーケンスに変換する。
HT -> "\t"
LF -> "\n"
CR -> "\r"
FF -> "\f"
シングルクオート、ダブルクオートについてはとくに処理はしない。

引数:
str エスケープ処理対象文字列
戻り値:
エスケープ処理結果文字列

coil::vstring coil::filelist ( const char *  path,
const char *  glob_str = "" 
) [inline]

bool coil::find_dest_ifname ( std::string  dest_addr,
std::string &  dest_if 
)

宛先アドレスから利用されるネットワークインターフェース名を得る

宛先アドレスを与えると、その際に利用されるネットワークインターフェー ス名をルーティングテーブルから取得する。宛先アドレス dest_addr に は、IPアドレスまたはFQDNホスト名を与えることができる。返される dest_if はネットワークインターフェース名である。宛先アドレスが到達 可能であり、利用するネットワークインターフェース名が得られた場合 true、宛先アドレスに到達できない場合は false が返される。

引数:
dest_addr 宛先アドレスまたはホスト名
dest_if 宛先と通信を行う際に使用されるインターフェース名
戻り値:
成功 true, 失敗 false

std::string coil::flatten ( vstring  sv  ) 

与えられた文字列リストからCSVを生成

引数で与えられた文字列リストの各要素を並べたCSVを生成する。 文字列リストが空の場合には空白文字を返す。

引数:
sv CSV変換対象文字列リスト
戻り値:
CSV変換結果文字列

template<class D, class T>
D* coil::get_deleter ( shared_ptr< T > const &  p  )  [inline]

char* coil::getenv ( const char *  name  )  [inline]

int coil::getlinePortable ( std::istream &  istr,
std::string &  line 
)

入力ストリームから1行読み込む

入力ストリームから1行読み込む。 入力ストリームはの改行コードはUNIX, Windowsの改行コードのいずれか、 もしくは混在していてもよい。

引数:
istr 入力ストリーム
line 読み込んだ文字列を格納する変数
戻り値:
改行文字を除く読み込んだ文字列の長さ

pid_t coil::getpid (  )  [inline]

pid_t coil::getppid (  )  [inline]

TimeValue coil::gettimeofday (  )  [inline]

参照先 gettimeofday().

参照元 gettimeofday().

int coil::gettimeofday ( struct timeval *  tv,
struct timezone *  tz 
) [inline]

参照先 gettimeofday().

参照元 gettimeofday(), と setTimestamp().

bool coil::ifname_to_ipaddr ( std::string  ifname,
std::string &  ipaddr 
)

ネットワークインターフェース名からIPアドレスを得る

ネットワークインターフェース名を与えると、当該インターフェースに割 り当てられたIPアドレスを返す。IPアドレスが割り当てられていない場合 は、falseが返される。

引数:
ifname ネットワークインターフェース名
ipaddr ネットワークインターフェースに割り当てられたIPアドレス
戻り値:
成功 true, 失敗 false

bool coil::includes ( const std::string &  list,
std::string  value,
bool  ignore_case = true 
)

bool coil::includes ( const vstring &  list,
std::string  value,
bool  ignore_case = true 
)

文字列リスト中にある文字列が含まれるかどうか

第1引数にカンマ区切りのリストを、第2引数に探索対象文字列を指定し、 その文字列が第1引数の中に含まれるかを判断する。

引数:
list 対象リスト
value 探索文字列
戻り値:
true: 含まれる、false: 含まれない

bool coil::isAbsolutePath ( const std::string &  str  ) 

与えられた文字列が絶対パスかどうかを判断する

与えられた文字列が絶対パス表現であるかどうかを判断する。 文字列が以下の場合には絶対パスとして判断する。

  • 先頭文字が'/' (UNIXの場合)
  • 先頭3文字がアルファベット+'/'+'\' (Windowsの場合)
  • 先頭2文字が'\\' (Windowsネットワークパスの場合)

引数:
str 判定対象文字列
戻り値:
絶対パス判定結果

bool coil::isEscaped ( const std::string &  str,
std::string::size_type  pos 
)

文字列がエスケープされているか判断する

指定された文字がエスケープされているかどうかを判断する。

引数:
str エスケープされているかどうか判断する文字を含む文字列
pos エスケープされているかどうか判断する文字の位置
戻り値:
指定した文字がエスケープされていれば true, それ以外は false

bool coil::isURL ( const std::string &  str  ) 

与えられた文字列がURLかどうかを判断する

与えられた文字列がURL表現かどうかを判断する。 与えられた文字列中に、'://'という文字列が含まれている場合には URL表現として判断する。

引数:
str 判定対象文字列
戻り値:
URL判定結果

int coil::launch_shell ( std::string  command  ) 

プロセスを起動する

プロセスを起動する。引数には起動するファイル名を与える。実行ファイ ルは環境変数 PATH に設定されたコマンドサーチパス内から検索され、見 つかればコマンドが起動される。プロセスの起動が成功すれば 0、失敗す れば -1 を返す。

引数:
command 起動する実行ファイルのフルパス
戻り値:
0: 成功, -1: 失敗

std::string coil::normalize ( std::string &  str  ) 

文字列のを正規化する

与えられた文字列の先頭および末尾に存在する空白文字を削除し、 英字をすべて小文字に変換する。

引数:
str 処理対象文字列

参照元 RTC::ConnectorDataListenerT< DataType >::operator()().

template<class T, class U>
bool coil::operator!= ( shared_ptr< T > const &  a,
shared_ptr< U > const &  b 
) [inline]

template<class T, class U>
bool coil::operator< ( shared_ptr< T > const &  a,
shared_ptr< U > const &  b 
) [inline]

template<class E, class T, class Y>
basic_ostream<E, T>& coil::operator<< ( basic_ostream< E, T > &  os,
shared_ptr< Y > const &  p 
) [inline]

template<class T, class U>
bool coil::operator== ( shared_ptr< T > const &  a,
shared_ptr< U > const &  b 
) [inline]

template<class Printable>
std::string coil::otos ( Printable  n  )  [inline]

与えられたオブジェクトをstdstringに変換

引数で指定されたオブジェクトを文字列に変換する。

引数:
n 変換対象オブジェクト
戻り値:
文字列変換結果

void coil::replaceString ( std::string &  str,
const std::string  from,
const std::string  to 
)

文字列を置き換える

与えられた文字列に対して、指定した文字の置き換えを行う。

引数:
str 置き換え処理対象文字列
from 置換元文字
to 置換先文字

int coil::settimeofday ( const struct timeval *  tv,
const struct timezone *  tz 
) [inline]

int coil::sleep ( TimeValue  interval  )  [inline]

unsigned int coil::sleep ( unsigned int  seconds  )  [inline]

参照先 sleep().

vstring coil::split ( const std::string &  input,
const std::string &  delimiter,
bool  ignore_empty = false 
)

文字列を分割文字で分割する

設定された文字列を与えられたデリミタで分割する。

引数:
input 分割対象文字列
delimiter 分割文字列(デリミタ)
戻り値:
文字列分割結果リスト

参照元 RTC::ConnectorDataListenerT< DataType >::operator()().

std::string coil::sprintf ( char const *__restrict  fmt,
  ... 
)

template<class T, class U>
shared_ptr<T> coil::static_pointer_cast ( shared_ptr< U > const &  r  )  [inline]

std::wstring coil::string2wstring ( std::string  str  ) 

string から wstring への変換

与えられた string 文字列を wstring 文字列に変換

引数:
str std::string 型の入力文字列
戻り値:
std::wstring 型の出力文字列

template<typename To>
bool coil::stringTo ( To &  val,
const char *  str 
) [inline]

与えられたstdstringをオブジェクトに変換

引数で与えられた文字列を指定されたオブジェクトに変換する。

引数:
val 変換先オブジェクト
str 変換元文字列
戻り値:
変換処理実行結果

template<>
bool coil::stringTo< std::string > ( std::string &  val,
const char *  str 
) [inline]

template<class T>
void coil::swap ( shared_ptr< T > &  a,
shared_ptr< T > &  b 
) [inline]

char** coil::toArgv ( const vstring &  args  ) 

与えられた文字列リストを引数リストに変換

引数で与えられた文字列リストの各要素末尾に'\0'を加え、引数リスト に変換する。

引数:
args 変換対象文字列リスト
戻り値:
引数変換結果文字列

bool coil::toBool ( std::string  str,
std::string  yes,
std::string  no,
bool  default_value = true 
)

与えられた文字列をbool値に変換する

指定された文字列を、true表現文字列、false表現文字列と比較し、その結果を bool値として返す。 比較の結果、true表現文字列、false表現文字列のどちらとも一致しない場合は、 与えられたデフォルト値を返す。

引数:
str 判断対象文字列
yes true表現文字列
no false表現文字列
default_value デフォルト値(デフォルト値:true)

void coil::toLower ( std::string &  str  ) 

小文字への変換

与えられた文字列を小文字に変換

引数:
str 入力文字列

void coil::toUpper ( std::string &  str  ) 

大文字への変換

与えられた文字列を大文字に変換

引数:
str 入力文字列

int coil::uname ( utsname *  name  )  [inline]

std::string coil::unescape ( const std::string  str  ) 

文字列のエスケープを戻す

次のエスケープシーケンスを文字に変換する。
"\t" -> HT
"\n" -> LF
"\r" -> CR
"\f" -> FF
"\"" -> "
"\'" -> '
※エスケープ処理の完全な逆変換にはなっていないため、注意が必要。

引数:
str アンエスケープ処理対象文字列
戻り値:
アンエスケープ処理結果文字列

vstring coil::unique_sv ( vstring  sv  ) 

与えられた文字列リストから重複を削除

引数で与えられた文字列リストから重複を削除したリストを作成する。

引数:
sv 確認元文字列リスト
戻り値:
重複削除処理結果リスト

int coil::usleep ( useconds_t  usec  )  [inline]

std::string coil::wstring2string ( std::wstring  wstr  ) 

wstring から string への変換

与えられた wstring 文字列を string 文字列に変換

引数:
str std::wstring 型の入力文字列
戻り値:
std::string 型の出力文字列


OpenRTMに対してThu Jan 28 13:25:27 2010に生成されました。  doxygen 1.5.5