SLLIB + SFITSIO ダイジェスト版 HTML マニュアル

使用頻度の高い API について,主要な内容を記述した, ビギナー向けのリファレンスマニュアルです.

SLLIB クラス: ストリーム / 文字列 / 文字列配列 / 文字列連想配列 / 多次元配列
SLLIB クラス用関数: 多次元配列用の統計用関数 / 多次元配列用の数学関数 / 多次元配列用の複素関数
SLLIB クラス以外: 定数・型の定義 / C99互換の複素数・複素関数
SFITSIO クラス: fitscc / fits_hdu / fits_image / fits_table / fits_table_col / fits_header / fits_header_record
SFITSIO クラス以外: 関数 / 定数・型の定義 / FITSファイルの部分読み出し機能 / FITSテンプレート / 規約外FITS拡張

SLLIB: 文字列連想配列 (asarray_tstringクラス)

asarray_tstring は文字列の連想配列を扱うためのクラスで,tstring クラスと 同様,スクリプト言語のような強力な文字列処理用 API を提供します. asarray_tstring のオブジェクト内では, tstringクラス のオブジェクト配列 が管理されており,各要素の参照を引き出す事で,tstring クラスの メンバ関数も使用可能です. 配列用バッファはほぼ完全な自動管理であり, 配列に対するアドレスを使う事がほとんど無く高い安全性を確保します. 下記のような機能を持ちます.

asarray_tstring クラスは単独のクラスです.継承関係はありません.

クラスヘッダファイルコードnamespace
asarray_tstring #include <sli/asarray_tstring.h> cc sli

型の定義:

namespace sli {
  typedef struct {
    const char *key;
    const char *value;
  } asarrdef_tstring;
}

メンバ関数一覧

基本機能のためのメンバ関数:

メンバ関数機能
大括弧 [] [] で指定されたキーに該当する要素値(tstringオブジェクト)の参照を返す
イコール記号 = オブジェクトのコピー
length() 連想配列の長さ(個数)を取得
cstrarray() 連想配列の値文字列に対するポインタ配列(NULL終端)を取得 (読取専用)
at(), at_cs(), atf(), atf_cs() 指定されたキーに該当する要素値(tstringオブジェクト)の参照を返す
index(), indexf() 指定されたキー文字列に対応する要素番号を返す
key() 指定された要素番号に該当するキー文字列を返す
keys() キー文字列の配列オブジェクトの参照を取得 (読取専用)
values() 値文字列の配列オブジェクトの参照を取得 (読取専用)
dprint() オブジェクト情報を標準エラー出力へ出力
swap() 2つのオブジェクト間での内容のスワップ
init() オブジェクトの初期化
assign() 指定された複数の連想配列要素を自身に代入
assign_keys() 複数の文字列または文字列配列をキーに設定
assign_values() 複数の文字列または文字列配列を値に設定

文字列の内容を元に,キーや値をセットするためのメンバ関数:

メンバ関数機能
split_keys() 文字列を分割して,キーに設定
split_values() 文字列を分割して,値に設定

連想配列の編集のためのメンバ関数:

メンバ関数機能
append(), appendf() 指定された1要素を,自身の連想配列に追加
append() 指定された複数の要素を,自身の連想配列に追加
insert(), insertf() 指定された1要素を,自身の連想配列に挿入
insert() 指定された連想配列を,自身の連想配列に挿入
erase() 配列要素の削除
clean() 既存の要素値すべてを指定された文字列でパディング
rename_a_key() キー文字列の変更

全配列要素に対する編集のためのメンバ関数:

メンバ関数機能
chomp() 配列の全要素についての右端の改行文字の除去
trim() 配列の全要素についての文字列両端の不要文字の除去
ltrim() 配列の全要素についての文字列左端の不要文字の除去
rtrim() 配列の全要素についての文字列右端の不要文字の除去
strreplace() 配列の全要素についての単純な文字列検索と置換
regreplace() 配列の全要素についての正規表現による置換
tolower() 配列の全要素について大文字を小文字に変換
toupper() 配列の全要素について小文字を大文字に変換

基本機能のためのメンバ関数

大括弧 []

tstring &operator[]( const char *key );
const tstring &operator[]( const char *key ) const;


イコール記号 =

asarray_tstring &operator=( const asarray_tstring &obj );


length()

size_t length() const;

自身の連想配列の長さ(個数)を返します.


cstrarray()

const char *const *cstrarray() const;


at(), at_cs(), atf(), atf_cs()

tstring &at( const char *key );
tstring &atf( const char *fmt, ... );
const tstring &at( const char *key ) const;
const tstring &atf( const char *fmt, ... ) const;
const tstring &at_cs( const char *key ) const;
const tstring &atf_cs( const char *fmt, ... ) const;


index(), indexf()

ssize_t index( const char *key ) const;
ssize_t indexf( const char *fmt, ... ) const;


key()

const char *key( size_t index ) const;


keys()

const tarray_tstring &keys() const;


values()

const tarray_tstring &values() const;


dprint()

void dprint( const char *msg = NULL ) const;


swap()

asarray_tstring &swap( asarray_tstring &sobj );


init()

asarray_tstring &init();
asarray_tstring &init( const asarray_tstring &obj );


assign()

asarray_tstring &assign( const asarrdef_tstring elements[] );
asarray_tstring &assign( const asarrdef_tstring elements[], size_t n );
asarray_tstring &assign( const char *key0, const char *val0,
                         const char *key1, ... );


assign_keys()

asarray_tstring &assign_keys( const char *key0, ... );
asarray_tstring &assign_keys( const char *const *keys );
asarray_tstring &assign_keys( const tarray_tstring &keys );


assign_values()

asarray_tstring &assign_values( const char *val0, ... );
asarray_tstring &assign_values( const char *const *values );
asarray_tstring &assign_values( const tarray_tstring &values );


文字列の内容を元に,キーや値をセットするためのメンバ関数

split_keys()

asarray_tstring &split_keys( const char *src_str, const char *delims,
                             bool zero_str = false );
asarray_tstring &split_keys( const char *src_str, const char *delims, 
                             bool zero_str,
                             const char *quotations, int escape, bool rm_escape );


split_values()

asarray_tstring &split_values( const char *src_str, const char *delims,
                               bool zero_str = false );
asarray_tstring &split_values( const char *src_str, const char *delims, 
                               bool zero_str,
                               const char *quotations, int escape, bool rm_escape );


連想配列の編集のためのメンバ関数

asarray_tstring &append( const char *key, const char *val );
asarray_tstring &appendf( const char *key, const char *fmt, ... );


asarray_tstring &append( const asarray_tstring &src );
asarray_tstring &append( const asarrdef_tstring elements[] );
asarray_tstring &append( const asarrdef_tstring elements[], size_t n );
asarray_tstring &append( const char *key0, const char *val0, 
                         const char *key1, ... );


asarray_tstring &insert( const char *key,
                         const char *newkey, const char *newval );
asarray_tstring &insertf( const char *key,
                          const char *newkey, const char *fmt, ... );


asarray_tstring &insert( const char *key, const asarray_tstring &src );
asarray_tstring &insert( const char *key, const asarrdef_tstring elements[] );
asarray_tstring &insert( const char *key,
                         const asarrdef_tstring elements[], size_t n );
asarray_tstring &insert( const char *key, 
                         const char *key0, const char *val0, 
                         const char *key1, ... );


erase()

asarray_tstring &erase();
asarray_tstring &erase( const char *key, size_t num_elements = 1 );


clean()

asarray_tstring &clean( const char *str = "" );


rename_a_key()

asarray_tstring &rename_a_key( const char *org_key, const char *new_key );


全配列要素に対する編集のためのメンバ関数

chomp()

asarray_tstring &chomp( const char *rs = "\n" );


trim()

asarray_tstring &trim( const char *side_spaces = " \t\n\r\f\v" );
asarray_tstring &trim( int side_space );


ltrim()

asarray_tstring &ltrim( const char *side_spaces = " \t\n\r\f\v" );
asarray_tstring &ltrim( int side_space );


rtrim()

asarray_tstring &rtrim( const char *side_spaces = " \t\n\r\f\v" );
asarray_tstring &rtrim( int side_space );


strreplace()

asarray_tstring &strreplace( const char *org_str, const char *new_str,
                             bool all = false );


regreplace()

asarray_tstring &regreplace( const char *pat, 
                             const char *new_str, bool all = false );
asarray_tstring &regreplace( const tregex &pat, 
                             const char *new_str, bool all = false );


tolower()

asarray_tstring &tolower();


toupper()

asarray_tstring &toupper();