libharkio3
A File I/O and Data Manipulation Library for HARK
 All Classes Files Functions Variables Enumerations Enumerator Macros Groups
Functions
libharkio3_positions.c File Reference

harkio_Positions の API 群。 複数の位置 (マイクアレイ、音源定位結果群など) を表現する。 内部に harkio_Position を持つ。 More...

#include <stdlib.h>
#include <math.h>
#include <string.h>
#include "libharkio3.h"
#include <libxml/xmlreader.h>
Include dependency graph for libharkio3_positions.c:

Functions

harkio_Positionsharkio_Positions_new (char *type, int frame, int size, harkio_Position **pos)
 コンストラクタ。空の位置セットのオブジェクト harkio_Positions を作成する。 More...
 
harkio_Positionsharkio_Positions_newFromXMLbuffer (char *buffer, int len, char *dtdpath)
 コンストラクタ。XMLが格納された文字列へのポインタから、harkio_Positions オブジェクトを生成する More...
 
void harkio_Positions_delete (harkio_Positions **pos)
 デストラクタ。メンバになっている構造体を含めて全てのメモリを開放する。 More...
 
harkio_Positionharkio_Positions_getById (harkio_Positions *poses, int id)
 Getter。harkio_Positions が持つ harkio_Position のから、与えられた id と同じものを返す。 More...
 
harkio_Positionharkio_Positions_getByCoord (harkio_Positions *poses, enum Coordinate coordinate, float *coord, float tolerance)
 Getter。harkio_Positions が持つ harkio_Position のから、与えられた位置に近いものを返す。 More...
 
char * harkio_Positions_getType (harkio_Positions *poses)
 Getter。harkio_Positions のタイプを返す。 More...
 
int harkio_Positions_getSize (harkio_Positions *poses)
 Getter。harkio_Positions の harkio_Position の数を返す。 More...
 
int harkio_Positions_getFrame (harkio_Positions *poses)
 Getter。harkio_Positions のフレーム番号を返す。 More...
 
int harkio_Positions_append (harkio_Positions *poses, harkio_Position *pos)
  harkio_Positions に新たな harkio_Position を追加する。 More...
 
int harkio_Positions_removeById (harkio_Positions *poses, int id)
  harkio_Positions から、与えられた ID の harkio_Position を削除する More...
 
int harkio_Positions_removeByCoord (harkio_Positions *poses, enum Coordinate coordinate, float *coord, float tolerance)
  harkio_Positions から、与えられた座標の harkio_Position を削除する More...
 
harkio_Positionsharkio_Positions_copy (harkio_Positions *p1)
  harkio_Positions をコピーする More...
 
void harkio_Positions_print (harkio_Positions *p)
  harkio_Positions をテキストで表示する More...
 
int harkio_Positions_addstring (char **buffer, char *str, int bufsize)
  harkio_Positions_printBuffer のヘルパ関数。文字列を追加。 More...
 
char * harkio_Positions_printBuffer (harkio_Positions *p)
 harkio_Positions の文字列表現を格納したバッファを返す。 More...
 
int harkio_Positions_isEqual (harkio_Positions *a, harkio_Positions *b)
  2つの harkio_Positions が等しいか否かを判定する More...
 

Detailed Description

harkio_Positions の API 群。 複数の位置 (マイクアレイ、音源定位結果群など) を表現する。 内部に harkio_Position を持つ。

Author
Takeshi Mizumoto
Version
0.1

Function Documentation

int harkio_Positions_addstring ( char **  buffer,
char *  str,
int  bufsize 
)

 harkio_Positions_printBuffer のヘルパ関数。文字列を追加。

Parameters
[in]buffer追記されるバッファ。メモリの確保は関数内でされるので不要。
[in]str追記する文字列。
[in]bufsizebuffer の最大サイズ。これを超えると追記されない。

Here is the caller graph for this function:

int harkio_Positions_append ( harkio_Positions poses,
harkio_Position pos 
)

 harkio_Positions に新たな harkio_Position を追加する。

Parameters
[in,out]poses位置を追加する先の harkio_Positions
[in]pos追加する harkio_Position
Returns
追加に成功すれば EXIT_SUCCESS, 失敗すれば EXIT_FAILURE を返す。

pos はメモリをコピーせずに、ポインタが poses に追加される。 pos が 正のID を持つ場合はその ID のまま append される。 pos の ID が -1 の場合は、現在の harkio_Positions の ID の最大値 + 1 を自動的に与えて append される。

Here is the caller graph for this function:

harkio_Positions* harkio_Positions_copy ( harkio_Positions p1)

 harkio_Positions をコピーする

Parameters
[in]p1コピーしたい harkio_Positions へのポインタ
Returns
コピーに成功すれば コピーした harkio_Positions へのポインタ, 失敗すれば NULL を返す。

Here is the call graph for this function:

Here is the caller graph for this function:

void harkio_Positions_delete ( harkio_Positions **  pos)

デストラクタ。メンバになっている構造体を含めて全てのメモリを開放する。

Parameters
[in]pos   開放したい伝達関数。解放後は NULL が代入される。

Here is the call graph for this function:

Here is the caller graph for this function:

harkio_Position* harkio_Positions_getByCoord ( harkio_Positions poses,
enum Coordinate  coordinate,
float *  coord,
float  tolerance 
)

Getter。harkio_Positions が持つ harkio_Position のから、与えられた位置に近いものを返す。

Parameters
[in]posesharkio_Position を取り出したい構造体へのポインタ
[in]coordinatecoord で与える座標の座標系
[in]coord取り出したい位置の座標
[in]tolerance許容誤差
Returns
与えられた位置に最も近い harkio_Position へのポインタ

Here is the call graph for this function:

Here is the caller graph for this function:

harkio_Position* harkio_Positions_getById ( harkio_Positions poses,
int  id 
)

Getter。harkio_Positions が持つ harkio_Position のから、与えられた id と同じものを返す。

Parameters
[in]posesharkio_Position を取り出したい構造体へのポインタ
[in]id取り出したい ID
Returns
与えられた ID を持つ harkio_Position へのポインタ

Here is the caller graph for this function:

int harkio_Positions_getFrame ( harkio_Positions poses)

Getter。harkio_Positions のフレーム番号を返す。

Parameters
[in]posesharkio_Position を取り出したい構造体へのポインタ
Returns
harkio_Positions のフレーム番号。失敗すれば-1を返す。
int harkio_Positions_getSize ( harkio_Positions poses)

Getter。harkio_Positions の harkio_Position の数を返す。

Parameters
[in]posesharkio_Position を取り出したい構造体へのポインタ
Returns
harkio_Positions が保持する位置の数。失敗すれば-1を返す。
char* harkio_Positions_getType ( harkio_Positions poses)

Getter。harkio_Positions のタイプを返す。

Parameters
[in]posesharkio_Position を取り出したい構造体へのポインタ
Returns
タイプを表す文字列へのポインタ
int harkio_Positions_isEqual ( harkio_Positions a,
harkio_Positions b 
)

 2つの harkio_Positions が等しいか否かを判定する

Parameters
[in]a比較したい harkio_Positions へのポインタ
[in]b比較したい harkio_Positions へのポインタ
Returns
等しければ 1, 等しくなければ 0 を返す

サイズ、フレーム番号、タイプが等しく、かつ、保持する harkio_Position が順番を含めて すべて等しいことが条件。 harkio_Position が等しいか否かは harkio_Position_isEqual で判定する。

Here is the call graph for this function:

Here is the caller graph for this function:

harkio_Positions* harkio_Positions_new ( char *  type,
int  frame,
int  size,
harkio_Position **  pos 
)

コンストラクタ。空の位置セットのオブジェクト harkio_Positions を作成する。

Returns
harkio_Positions 型のポインタ。失敗すると NULL を返す。
Parameters
[in]typeharkio_Positions のタイプ。 tsp, impulse, noise, microphone, soundsource のいずれか、あるいは NULL
[in]frameharkio_Positions に対応するフレーム番号。
[in]sizeharkio_Positions が保持する harkio_Position の数 (= pos の長さ)
[in]posharkio_Positions に保持した harkio_Position 配列へのポインタ。 NULLが渡された場合、内部で空の配列を持ち、harkio_Positions_appendによって追加可能。 NULL以外が渡された場合、harkio_Positions_appendによる追加は不可。

使用が終わったら、 harkio_Positions_delete でメモリ解放を行う。 type の説明は下記の通り。 tsp: TSP測定 の音源位置を表すときに使用 impulse: インパルス応答の音源位置を表すときに使用 noise: ノイズの位置を表すときに使用 micorphone: マイク位置を表すときに使用 soundsource: 音源定位結果の位置を表すときに使用 NULL の場合は保存時に出力されない。

Here is the caller graph for this function:

harkio_Positions* harkio_Positions_newFromXMLbuffer ( char *  buffer,
int  len,
char *  dtdpath 
)

コンストラクタ。XMLが格納された文字列へのポインタから、harkio_Positions オブジェクトを生成する

Parameters
[in]bufferXML が格納された文字列へのポインタ。
[in]lenbuffer の長さ。
Returns
harkio_Positions へのポインタ。失敗すると NULL ポインタを返す。

harkio_Positions_delete でメモリ解放を行う必要がある。メンバは NULL でもよい。

Here is the call graph for this function:

void harkio_Positions_print ( harkio_Positions p)

 harkio_Positions をテキストで表示する

Parameters
[in]pテキストで表示したい harkio_Positions へのポインタ

Here is the call graph for this function:

char* harkio_Positions_printBuffer ( harkio_Positions p)

harkio_Positions の文字列表現を格納したバッファを返す。

Parameters
[in]pharkio_Positions オブジェクト
Returns
char* (利用者による free が必要)

Here is the call graph for this function:

Here is the caller graph for this function:

int harkio_Positions_removeByCoord ( harkio_Positions poses,
enum Coordinate  coordinate,
float *  coord,
float  tolerance 
)

 harkio_Positions から、与えられた座標の harkio_Position を削除する

Parameters
[in,out]poses削除したい harkio_Positions
[in]posesharkio_Position を取り出したい構造体へのポインタ
[in]coordinatecoord で与える座標の座標系
[in]coord取り出したい位置の座標
[in]tolerance許容誤差
Returns
削除に成功すれば EXIT_SUCCESS, 失敗すれば EXIT_FAILURE を返す。

削除された pos はメモリ解放も自動で行われる。

Here is the call graph for this function:

int harkio_Positions_removeById ( harkio_Positions poses,
int  id 
)

 harkio_Positions から、与えられた ID の harkio_Position を削除する

Parameters
[in,out]poses削除したい harkio_Positions
[out]id削除したい harkio_Position の ID.
Returns
削除に成功すれば EXIT_SUCCESS, 失敗すれば EXIT_FAILURE を返す。

削除された pos はメモリ解放も自動で行われる。 メモリはまるごとfreeされるので注意。

Here is the call graph for this function:

Here is the caller graph for this function: