メインページ   モジュール   データ構造   ファイル一覧   データフィールド   グローバル  

動的メモリー
[多倍長整数]


マクロ定義

#define YMP_ALLOCATE(result, type, count)
 動的メモリーを新規に確保. より詳しく...

#define YMP_REALLOCATE(ptr, type, count)
 動的メモリーを再確保. より詳しく...

#define YMP_FREE(ptr)   ymp_free(ptr)
 動的メモリーを解放. より詳しく...

#define YMP_TEMP_ALLOCATE(result, type, count)
 関数ローカルな動的メモリーを新規に確保. より詳しく...

#define YMP_ALLOC_DIGITS(self, new_len)
 new_len要素のdigit_tの列を確保して、先頭ポインタを self->digitsに設定. より詳しく...

#define YMP_REALLOC_DIGITS(self, new_len)
 new_len要素のdigit_tの列を再確保して、先頭ポインタを self->digitsに設定. より詳しく...

#define YMP_FREE_DIGITS(self)
 self->digitsを解放. より詳しく...


変数

void *(* ymp_malloc )(size_t size)=malloc
 動的メモリー確保. より詳しく...

void *(* ymp_realloc )(void *pv_mem, size_t size)=realloc
 動的メモリー再配置. より詳しく...

void(* ymp_free )(void *pv_mem)=free
 メモリー解放. より詳しく...


マクロ定義の解説

#define YMP_ALLOCATE result,
type,
count   
 

値:

do {                                                                    \
  register type *ptr_tmp = (type*)ymp_malloc(sizeof(type)*(count));     \
  if (!ptr_tmp)                                                         \
    {                                                                   \
      ymp_alloc_error("確保失敗", sizeof(type)*(count));                \
      break;                                                            \
    }                                                                   \
  (result) = ptr_tmp;                                                   \
} while(0)
動的メモリーを新規に確保.

sizeof(type)バイトの要素をcount個確保する。 確保された領域は不用になったらYMP_FREEにより解放する必要がある

引数:
result  確保された領域の先頭へのポインタが、resultに代入される。
type  確保する領域の各要素の型
count  確保する要素数
事後条件:
確保に失敗した場合はresultの値は変更されない
覚え書き:
type, countは複数回評価される
確保に失敗した場合はymp_alloc_errorを呼ぶ。

multiprec.h130 行で定義されています。

#define YMP_REALLOCATE ptr,
type,
count   
 

値:

do {                                                                        \
  register type *ptr_tmp = (type*)ymp_realloc((ptr), sizeof(type)*(count)); \
  if (!ptr_tmp)                                                             \
   {                                                                        \
     ymp_alloc_error("再確保失敗", sizeof(type)*(count));                   \
     break;                                                                 \
   }                                                                        \
  (ptr) = ptr_tmp;                                                          \
} while(0)
動的メモリーを再確保.

sizeof(type)バイトの要素をcount個確保する。 確保された領域は不用になったらYMP_FREEにより解放する必要がある。

引数:
ptr  現在確保している領域の先頭へのポインタ
type  確保する領域の各要素の型
count  確保する要素数
事後条件:
確保に成功した場合、ptrが元もと指していた領域は自動的に解放される
確保に失敗した場合はresultの値は変更されない
覚え書き:
type, countは複数回評価される
確保に失敗した場合はymp_alloc_errorを呼ぶ。

multiprec.h156 行で定義されています。

#define YMP_FREE ptr       ymp_free(ptr)
 

動的メモリーを解放.

YMP_ALLOCATE, YMP_REALLOCATEで確保した領域を解放

引数:
ptr  現在確保している領域の先頭へのポインタ

multiprec.h174 行で定義されています。

#define YMP_TEMP_ALLOCATE result,
type,
count   
 

値:

do {                                                            \
  register type *ptr_tmp = (type*)alloca(sizeof(type)*(count)); \
  if (!ptr_tmp)                                                 \
    {                                                           \
      ymp_alloc_error("確保失敗", sizeof(type)*(count));        \
      break;                                                    \
    }                                                           \
  (result) = ptr_tmp;                                           \
} while(0)
関数ローカルな動的メモリーを新規に確保.

sizeof(type)バイトの要素をcount個確保する。 ただし、YMP_ALLOCATEとは異なり、この領域は呼び出し元の関数の終了時に自動的に解放される。

引数:
result  確保された領域の先頭へのポインタが、resultに代入される。
type  確保する領域の各要素の型
count  確保する要素数
事後条件:
確保に失敗した場合はresultの値は変更されない
覚え書き:
type, countは複数回評価される
このマクロにより確保された領域をYMP_FREEしようとした場合の動作は不定
確保に失敗した場合はymp_alloc_errorを呼ぶ。

multiprec.h192 行で定義されています。

呼出 do_snprint, ymp_div_if_divisible, ymp_div_if_divisible_digit, ymp_divmodabs, ymp_euclid, ymp_fprint, ymp_modmul, ymp_modmulabs, ymp_modmulabs_2exp, ymp_modpowabs, ymp_modpowabs_2exp_z, ymp_modpowabs_z, ymp_mul, ymp_powabs, と ymp_snprint.

#define YMP_ALLOC_DIGITS self,
new_len   
 

値:

do {                                                    \
  YMP_ALLOCATE((self)->digits, digit_t, new_len);       \
  (self)->len = new_len;                                \
} while(0)
new_len要素のdigit_tの列を確保して、先頭ポインタを self->digitsに設定.

確保に失敗した場合はymp_alloc_errorを呼ぶ

引数:
self  digit列を設定するstruct multiprecへのポインタ
new_len  確保するdigit列の要素数
覚え書き:
各引数は複数回評価される

multiprec.h213 行で定義されています。

呼出 ymp_initialize_by_array, ymp_initialize_by_double, ymp_initialize_by_mp, と ymp_reserve_and_initialize_by_digit.

#define YMP_REALLOC_DIGITS self,
new_len   
 

値:

do {                                                    \
  YMP_REALLOCATE((self)->digits, digit_t, new_len);     \
  (self)->len = new_len;                                \
} while(0)
new_len要素のdigit_tの列を再確保して、先頭ポインタを self->digitsに設定.

確保に失敗した場合はymp_alloc_errorを呼ぶ

引数:
self  digit列を再確保する、struct multiprecへのポインタ
new_len  確保するdigit列の要素数
覚え書き:
各引数は複数回評価される

multiprec.h227 行で定義されています。

呼出 ymp_cut_down, と ymp_reserve.

#define YMP_FREE_DIGITS self   
 

値:

do {                                            \
  YMP_FREE((self)->digits);                     \
  (self)->digits = NULL;                        \
} while(0)
self->digitsを解放.

引数:
self  digit列を解放するstruct multiprecへのポインタ
覚え書き:
引数は複数回評価される

multiprec.h239 行で定義されています。

呼出 ymp_destroy.


変数の解説

void*(* ymp_malloc)(size_t size) = malloc
 

動的メモリー確保.

引数:
size  確保するbyte数

multiprec.c15 行で定義されています。

void*(* ymp_realloc)(void *pv_mem, size_t size) = realloc
 

動的メモリー再配置.

引数:
pv_mem  現在確保されている領域へのポインタ
size  確保するbyte数

multiprec.c22 行で定義されています。

void(* ymp_free)(void *pv_mem) = free
 

メモリー解放.

引数:
pv_mem  解放すべき領域へのポインタ

multiprec.c28 行で定義されています。


YMPに対してTue Mar 16 19:23:52 2004に生成されました。 doxygen1.2.14 作者 Dimitri van Heesch, © 1997-2002