ネームスペース coil

Common Object Interface Layer. [詳細]

構成

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

型定義

typedef log_streambuf< char > LogStreamBuffer
typedef log_stream< char > LogStream
typedef ::utsname utsname
 システム情報取得
typedef ::pid_t pid_t
 呼び出し元プロセスのプロセスID取得
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)
 非同期メンバー関数呼び出しヘルパー関数
unsigned short crc16 (const char *str, size_t len)
unsigned long crc32 (const char *str, size_t len)
 CRC-32 計算関数.
template<class AbstractClass , class ConcreteClass >
AbstractClass * Creator ()
 Creator テンプレート.
template<class AbstractClass , class ConcreteClass >
void Destructor (AbstractClass *&obj)
 Destructor テンプレート.
std::string dirname (char *path)
 ファイルパスよりディレクトリ部分を取得する
std::string basename (const char *path)
 ファイルパスよりファイル名部分を取得する
coil::vstring filelist (const char *path, const char *glob_str="")
 ファイルリストを取得する
int uname (utsname *name)
pid_t getpid ()
pid_t getppid ()
 呼び出し元プロセスの親プロセスのプロセスID取得
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)
 文字列を正規化する
unsigned int 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)
 与えられた文字列をstdstringに変換
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

呼び出し元プロセスのプロセスID取得

呼び出し元プロセスのプロセスIDを返す。

戻り値:
プロセスID
typedef void(* coil::SignalHandler)(int)

システム情報取得

システム情報を構造体に設定して返す。

引数:
name 構造体名称
戻り値:
0: 成功, -1: 失敗
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]

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

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

引数:
obj 登録対象オブジェクト
func 非同期実行用関数
auto_delete 非同期実行終了時に自動的にインスタンス削除を行うかどうかのフラグ
戻り値:
Async_ref_t インスタンス
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();

引数:
obj 登録対象オブジェクト
func 非同期実行用関数
auto_delete 非同期実行終了時に自動的にインスタンス削除を行うかどうかのフラグ
戻り値:
Async_t インスタンス
std::string coil::basename ( const char *  path  )  [inline]

ファイルパスよりファイル名部分を取得する

ファイルパスよりファイル名部分を取得する。

引数:
path ファイルパス
戻り値:
ファイル名称
unsigned short coil::crc16 ( const char *  str,
size_t  len 
)
unsigned long coil::crc32 ( const char *  str,
size_t  len 
)

CRC-32 計算関数.

CRC種類: RFC2083 Appendix 15 CRC多項式: 0xedb88320L 初期値: 0xFFFFFFFF 出力XOR: 0xFFFFFFFF 入力ビット反転: なし 出力ビット反転: なし ビットシフト: 右

引数:
str データストリーム
len データ長
戻り値:
計算結果
template<class AbstractClass , class ConcreteClass >
AbstractClass* coil::Creator (  )  [inline]

Creator テンプレート.

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]

Destructor テンプレート.

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

ファイルパスよりディレクトリ部分を取得する

ファイルパスよりディレクトリ部分を取得する。

引数:
path ファイルパス
戻り値:
ディレクトリ名称
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]

ファイルリストを取得する

ディレクトリパスの中で指定ファイルにマッチするリストを取得する。

引数:
path ディレクトリパス
glob_str ファイル名
戻り値:
ファイルリスト
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変換結果文字列
char* coil::getenv ( const char *  name  )  [inline]

環境変数取得

環境変数を返す。

引数:
name 環境変数名称
戻り値:
環境変数の値(NULL: 該当なし)
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]

呼び出し元プロセスの親プロセスのプロセスID取得

呼び出し元プロセスの親プロセスのプロセスIDを返す。

戻り値:
プロセスID
TimeValue coil::gettimeofday (  )  [inline]

時刻を取得する

時刻を取得する。

戻り値:
TimeValueオブジェクト

参照先 gettimeofday().

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

時刻とタイムゾーンを取得する

時刻とタイムゾーンを取得する。

引数:
tv 時刻構造体
tz タイムゾーン構造体
戻り値:
0: 成功, -1: 失敗

参照元 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 
)

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

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

引数:
list 対象文字列
value 探索文字列
戻り値:
true: 含まれる、false: 含まれない
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 Printable >
std::string coil::otos ( Printable  n  )  [inline]

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

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

引数:
n 変換対象オブジェクト
戻り値:
文字列変換結果
unsigned int 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]

時刻とタイムゾーンを設定する

時刻とタイムゾーンを設定する。

引数:
tv 時刻構造体
tz タイムゾーン構造体
戻り値:
0: 成功, -1: 失敗
int coil::sleep ( TimeValue  interval  )  [inline]

指定された秒間は処理を休止する

指定された秒間は処理を休止する。

引数:
interval TimeValueオブジェクト
戻り値:
0: 成功, >0: 失敗

参照先 coil::TimeValue::sec(), と coil::TimeValue::usec().

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

指定された秒間は処理を休止する

指定された秒間は処理を休止する。

引数:
seconds 秒数
戻り値:
0: 成功, >0: 失敗
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,
  ... 
)

指定された書式に変換

引数で与えられた書式に変換して返す。

引数:
fmt 書式
戻り値:
変換結果文字列
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 変換元文字列
戻り値:
true: 成功, false: 失敗
template<>
bool coil::stringTo< std::string > ( std::string &  val,
const char *  str 
) [inline]

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

引数で与えられた文字列をstdstringに変換する。

引数:
val 変換先文字列
str 変換元文字列
戻り値:
true: 成功, false: 失敗
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]

指定されたマイクロ秒間は処理を休止する

指定されたマイクロ秒間は処理を休止する。

引数:
usec マイクロ秒数
戻り値:
0: 成功, -1: 失敗
std::string coil::wstring2string ( std::wstring  wstr  ) 

wstring から string への変換

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

引数:
str std::wstring 型の入力文字列
戻り値:
std::string 型の出力文字列
OpenRTMに対してThu May 24 23:25:19 2012に生成されました。  doxygen 1.6.3