content: ;
  ;	HSP help manager用 HELPソースファイル
  ;	(先頭が;の行はコメントとして処理されます)
  ;
  
  %type
  内蔵関数
  %ver
  3.6
  %note
  ver3.6標準関数
  %date
  2019/12/19
  %author
  onitama
  %url
  http://hsp.tv/
  %port
  Win
  Cli
  Let
  
  
  
  
  %index
  int
  整数値に変換
  %group
  基本入出力関数
  %prm
  (p1)
  p1 : 変換元の値または変数
  
  %inst
  p1で指定された値を整数にしたものを返します。
  値が実数の場合は、小数点以下が切り捨てられます。
  値が文字列の場合は、数値文字列の場合はその数値に、 それ以外は0になります。
  
  %href
  str
  double
  
  
  
  %index
  rnd
  乱数を発生
  %group
  基本入出力関数
  %prm
  (p1)
  p1=1〜32768 : 乱数の範囲
  
  %inst
  0から(p1-1)の範囲で整数の乱数値を発生させます。
  p1の値は範囲に含まれません。たとえば、
  ^p
  例 ：
      a=rnd(10)
  ^p
  は、変数aに、0〜9までの乱数を代入します。
  rnd関数は、プログラム起動してからは一定のパターンで乱数を発生させます。
  乱数のパターンを一定でないものにする場合は、 randomize命令を使用してください。
  
  %href
  randomize
  
  
  
  %index
  strlen
  文字列の長さを調べる
  %group
  基本入出力関数
  %prm
  (p1)
  p1 : 文字列の長さを調べたい文字列かまたは文字列型の変数名
  
  %inst
  p1で指定された文字列または、文字列型変数が持っている文字列の長さ(メモリサイズ)を返します。
  文字列に全角文字(日本語)が含まれる場合は、1文字でも2文字分に計算されます。
  (ただしHSP64,UTF-8ランタイムの場合は文字の長さが異なる場合があります)
  %href
  
  
  
  
  %index
  length
  配列の1次元要素数を返す
  %group
  基本入出力関数
  %prm
  (p1)
  p1 : 配列を調べる変数
  
  %inst
  p1で指定された変数が持つ配列要素数(1次元)を返します。
  配列要素数が５だった場合は、p1(0)〜p1(4)が存在することになります。
  
  %href
  length2
  length3
  length4
  
  
  
  %index
  length2
  配列の2次元要素数を返す
  %group
  基本入出力関数
  %prm
  (p1)
  p1 : 配列を調べる変数
  
  %inst
  p1で指定された変数が持つ配列要素数(2次元)を返します。
  配列要素数が５だった場合は、p1(0,0)〜p1(?,4)が存在することになります。
  配列の次元が存在しない場合は、0が返ります。
  
  %href
  length
  length3
  length4
  
  
  
  %index
  length3
  配列の3次元要素数を返す
  %group
  基本入出力関数
  %prm
  (p1)
  p1 : 配列を調べる変数
  
  %inst
  p1で指定された変数が持つ配列要素数(3次元)を返します。
  配列要素数が５だった場合は、p1(0,0,0)〜p1(?,?,4)が存在することになります。配列の次元が存在しない場合は、0が返ります。
  
  %href
  length
  length2
  length4
  
  
  
  %index
  length4
  配列の4次元要素数を返す
  %group
  基本入出力関数
  %prm
  (p1)
  p1 : 配列を調べる変数
  
  %inst
  p1で指定された変数が持つ配列要素数(4次元)を返します。
  配列要素数が５だった場合は、p1(0,0,0,0)〜p1(?,?,?,4)が存在することになります。配列の次元が存在しない場合は、0が返ります。
  
  %href
  length
  length2
  length3
  
  
  
  %index
  vartype
  変数の型を返す
  %group
  基本入出力関数
  %prm
  (p1)
  p1 : 型を調べる変数、または文字列
  
  %inst
  p1で指定された変数が格納している値の型を調べて返します。
  返される値は、型を示す整数値となります。型の値は、以下の通りです。
  ^p
   1 : ラベル型
   2 : 文字列型
   3 : 実数型
   4 : 整数型
   5 : モジュール型
   6 : COMオブジェクト型
  ^p
  プラグイン等で型が拡張されている場合は、これ以外の値が返されます。
  また、p1に文字列を指定した場合には、型を示す型名として扱われます。
  型名は、登録されているものと大文字小文字を含めて完全に一致させる必要があります。
  ^p
  "int"    : 整数型
  "str"    : 文字列型
  "double" : 実数型
  "struct" : モジュール型
  ^p
  標準的な型名として、使用できるも文字列は上の通りです。ただし、これ以外にもプラグイン等で型が拡張されている場合は、指定できる型名も追加されます。
  
  
  %href
  varptr
  varsize
  
  
  
  %index
  varptr
  変数データのポインタを返す
  %group
  基本入出力関数
  %prm
  (p1)
  p1 : ポインタを調べる変数、または命令
  
  %inst
  p1で指定された変数が格納しているデータがあるメモリアドレスを返します。
  p1に外部拡張命令(#funcで定義されているDLL呼び出し用の命令)を指定した場合には、実際に実行される外部関数のアドレスを返します。
  この関数は、 外部DLLにポインタを渡したい時など特殊な場合に使用するもので、通常は覚えておく必要のないものです。
  varptrによって取得したポインタは、配列の拡張や内容の更新などにより変化する可能性があるため、値を参照する直前で使用するようにしてください。
  
  %href
  varsize
  vartype
  libptr
  %port-
  Let
  
  
  %index
  varsize
  変数データのバッファサイズを返す
  %group
  基本入出力関数
  %prm
  (p1)
  p1 : バッファサイズを調べる変数
  
  %inst
  p1で指定された変数が格納しているデータのバッファサイズ(確保されているメモリサイズ)を返します。
  varsizeによって取得したサイズは、内容の更新などにより変化する可能性があるため、値を参照する直前で使用するようにしてください。
  
  %href
  varptr
  vartype
  libptr
  %port-
  Let
  
  
  
  
  %index
  gettime
  時間・日付を取得する
  %group
  基本入出力関数
  %prm
  (p1)
  p1=0〜7(0) : 取得するタイプ
  
  %inst
  p1で指定したタイプの日付・時刻情報を返します。
  取得するタイプは以下の通りです。
  
  ^p
      0 : 年(Year)
      1 : 月(Month)
      2 : 曜日(DayOfWeek)
      3 : 日(Day)
      4 : 時(Hour)
      5 : 分(Minute)
      6 : 秒(Second)
      7 : ミリ秒(Milliseconds)
  ^p
  たとえば、
  
  ^p
  例 ：
      a=gettime(4)   ; いま何時?
  ^p
  は、変数aに現在時刻が何時かを代入します。
  
  %href
  
  
  
  
  %index
  str
  文字列に変換
  %group
  基本入出力関数
  %prm
  (p1)
  p1 : 変換元の値または変数
  
  %inst
  p1で指定された値を文字列にしたものを返します。
  
  %href
  int
  double
  
  
  
  %index
  dirinfo
  ディレクトリ情報の取得
  %group
  基本入出力関数
  %prm
  (p1)
  p1=0〜5 : 取得するタイプ
  
  %inst
  p1で指定したタイプのディレクトリ名を返します。
  取得するタイプは以下の通りです。
  ^p
      0 : カレント(現在の)ディレクトリ(dir_cur)
      1 : HSPの実行ファイルがあるディレクトリ(dir_exe)
      2 : Windowsディレクトリ(dir_win)
      3 : Windowsのシステムディレクトリ(dir_sys)
      4 : コマンドライン文字列(dir_cmdline)
      5 : HSPTVディレクトリ(dir_tv)
  ^p
  p1を省略することはできません。
  また、p1に0x10000以上の値を指定した場合は、ビット0〜15までをCSIDL値として特殊フォルダの取得を行ないます。
  これにより、デスクトップ(0x10000)やマイドキュメント(0x10005)等のシステムが管理しているほとんどのフォルダを取得することができます。
  通常は、hspdef.as内で定義されてる「dir_*」マクロを通してご使用ください。
  
  %href
  dir_cur
  dir_exe
  dir_win
  dir_sys
  dir_cmdline
  dir_tv
  
  
  
  %index
  double
  実数値に変換
  %group
  基本入出力関数
  %prm
  (p1)
  p1 : 変換元の値または変数
  
  %inst
  p1で指定された値を実数にしたものを返します。
  値が文字列の場合は、数値文字列の場合はその数値に、 それ以外は0になります。
  
  %href
  int
  str
  
  
  
  %index
  sin
  サイン値を返す
  %group
  基本入出力関数
  %prm
  (p1)
  p1=(0.0) : 角度値(ラジアン)
  
  %inst
  p1のサイン(正弦)値を実数で返します。
  p1で指定する単位はラジアン(2πが360度)になります。
  %href
  cos
  tan
  atan
  
  
  %index
  cos
  コサイン値を返す
  %group
  基本入出力関数
  %prm
  (p1)
  p1=(0.0) : 角度値(ラジアン)
  
  %inst
  p1のコサイン(余弦)値を実数で返します。
  p1で指定する単位はラジアン(2πが360度)になります。
  %href
  sin
  tan
  atan
  
  
  %index
  tan
  タンジェント値を返す
  %group
  基本入出力関数
  %prm
  (p1)
  p1=(0.0) : 角度値(ラジアン)
  
  %inst
  p1のタンジェント(正接)値を実数で返します。
  p1で指定する単位はラジアン(2πが360度)になります。
  %href
  sin
  cos
  atan
  
  
  %index
  atan
  アークタンジェント値を返す
  %group
  基本入出力関数
  %prm
  (p1,p2)
  p1      : Y値
  p2(1.0) : X値
  
  %inst
  p1をY、p2をXの値として、 Y/Xの角度(アークタンジェント値)を実数のラジアン単位(2πが360度)で返します。
  p2を省略した場合は1.0が使用されます。
  
  %href
  sin
  cos
  tan
  
  
  %index
  sqrt
  ルート値を返す
  %group
  基本入出力関数
  %prm
  (p1)
  p1=0.0〜(0.0) : ルートを求める値
  
  %inst
  p1のルート(平方根)値を、実数で返します。
  p1にマイナス値を指定することはできません。
  %href
  
  
  
  %index
  sysinfo
  システム情報の取得
  %group
  基本入出力関数
  %prm
  (p1)
  p1=0〜 : 取得するタイプ
  
  %inst
  p1で指定したタイプのシステム情報値を返します。
  取得できるタイプは以下の通りです。
  ^p
    0 : 文字列 OS名とバージョン番号
    1 : 文字列 ログイン中のユーザー名
    2 : 文字列 ネットワーク上のコンピュータ名
    3 : 数値 HSPが使用する言語(0=英語/1=日本語)
   16 : 数値 使用しているCPUの種類(コード)
   17 : 数値 使用しているCPUの数
   33 : 数値 物理メモリサイズの使用量(単位%)
   34 : 数値 全体の物理メモリサイズ
   35 : 数値 空き物理メモリサイズ
   36 : 数値 スワップファイルのトータルサイズ
   37 : 数値 スワップファイルの空きサイズ
   38 : 数値 仮想メモリを含めた全メモリサイズ
   39 : 数値 仮想メモリを含めた空きメモリサイズ
  ^p
  
  %href
  
  
  
  %index
  peek
  バッファから1byte読み出し
  %group
  メモリ管理関数
  %prm
  (p1,p2)
  p1=変数 : 内容を読み出す元の変数名
  p2=0〜  : バッファのインデックス(Byte単位)
  
  %inst
  変数に保存されたデータメモリ上の任意の場所にある1バイト(8bit)の内容を数値として返します。
  関数の戻り値は、0〜255までの整数値になります。
  
  %href
  wpeek
  lpeek
  
  
  
  %index
  wpeek
  バッファから2byte読み出し
  %group
  メモリ管理関数
  %prm
  (p1,p2)
  p1=変数 : 内容を読み出す元の変数名
  p2=0〜  : バッファのインデックス(Byte単位)
  
  %inst
  変数に保存されたデータメモリ上の任意の場所にある2バイト(16bit)の内容を数値として返します。
  関数の戻り値は、0〜65535までの整数値になります。
  
  %href
  peek
  lpeek
  
  
  
  %index
  lpeek
  バッファから4byte読み出し
  %group
  メモリ管理関数
  %prm
  (p1,p2)
  p1=変数 : 内容を読み出す元の変数名
  p2=0〜  : バッファのインデックス(Byte単位)
  
  %inst
  変数に保存されたデータメモリ上の任意の場所にある4バイト(32bit)の内容を数値として返します。
  関数の戻り値は、0〜$ffffffffまでの整数値になります。
  
  %href
  peek
  wpeek
  
  
  
  %index
  callfunc
  外部関数の呼び出し
  %group
  基本入出力関数
  %prm
  (p1,p2,p3)
  p1 : パラメーターが格納されている配列変数
  p2 : 関数アドレス
  p3 : パラメーター数
  
  %inst
  p2で指定されているアドレスをネイティブな関数として呼び出します。
  呼び出しの引数として、p1で指定された数値型配列変数に格納されている値を使用します。p3でパラメーター数を指定することができます。
  ^p
  例 :
  	a.0=1
  	a.1=2
  	a.2=3
  	res = callfunc( a, proc, 3 )
  ^p
  上の例では、procが示すアドレスの関数を(1,2,3)という引数で呼び出します。
  呼び出した関数の戻り値が、そのままcallfuncの戻り値となります。
  この関数は、自前で関数アドレスを用意して呼び出す特殊な状況に使用するものです。
  通常は使用する必要がありません。また、外部関数呼び出しに失敗した場合には、フリーズや予期しない結果が起こる場合があるので、十分に注意して使用するようにしてください。
  
  %href
  #uselib
  #func
  
  
  
  %index
  absf
  実数の絶対値を返す
  %group
  基本入出力関数
  %prm
  (p1)
  p1 : 絶対値に変換する実数値
  
  %inst
  p1の絶対値を実数で返します。
  整数の絶対値が必要な場合は、abs関数を使用してください。
  %href
  abs
  
  %index
  abs
  整数の絶対値を返す
  %group
  基本入出力関数
  %prm
  (p1)
  p1 : 絶対値に変換する整数値
  
  %inst
  p1の絶対値を整数で返します。
  実数の絶対値が必要な場合は、absf関数を使用してください。
  %href
  absf
  
  
  %index
  logf
  対数を返す
  %group
  基本入出力関数
  %prm
  (p1)
  p1=0.0〜(0.0) : 対数を求める値
  
  %inst
  p1の対数(log)値を、実数で返します。
  p1に0を指定した場合は無限大(INF)を返します。
  %href
  expf
  
  
  
  %index
  expf
  指数を返す
  %group
  基本入出力関数
  %prm
  (p1)
  p1=0.0〜(0.0) : 指数を求める値
  
  %inst
  p1の指数(exp)値を、実数で返します。
  オーバーフローした場合は無限(INF)を返し、アンダーフローした場合は0を返します。
  %href
  logf
  
  
  
  %index
  limit
  一定範囲内の整数を返す
  %group
  基本入出力関数
  %prm
  (p1,p2,p3)
  p1 : 対象となる値
  p2 : 最小値
  p3 : 最大値
  
  %inst
  p1に指定した値を、p2〜p3の範囲内に収まる整数に変換したものを返します。
  p1の値がp2よりも小さい場合は、p2の値が返され、p1の値がp3よりも大きい場合にはp3の値が返されます。
  これにより、limit関数が返す値は、必ずp2〜p3の範囲内となります。
  p2パラメーターを省略した場合は、最小値の制限を行ないません。
  p3パラメーターを省略した場合は、最大値の制限を行ないません。
  実数の範囲を求める場合には、limitf関数を使用してください。
  
  %href
  limitf
  
  
  
  %index
  limitf
  一定範囲内の実数を返す
  %group
  基本入出力関数
  %prm
  (p1,p2,p3)
  p1 : 対象となる値
  p2 : 最小値
  p3 : 最大値
  
  %inst
  p1に指定した値を、p2〜p3の範囲内に収まる実数に変換したものを返します。
  p1の値がp2よりも小さい場合は、p2の値が返され、p1の値がp3よりも大きい場合にはp3の値が返されます。
  これにより、limitf関数が返す値は、必ずp2〜p3の範囲内となります。
  p2パラメーターを省略した場合は、最小値の制限を行ないません。
  p3パラメーターを省略した場合は、最大値の制限を行ないません。
  整数の範囲を求める場合には、limit関数を使用してください。
  
  %href
  limit
  
  
  
  %index
  varuse
  変数の使用状況を返す
  %group
  基本入出力関数
  %prm
  (p1)
  p1 : 使用状況を調べる変数
  
  %inst
  p1に指定した変数の使用状況を返します。
  varuseは、モジュール型やCOMオブジェクト型の変数など、 実態を持たない状況が発生する場合にのみ有効です。
  指定された変数が有効であれば1を、そうでなければ0を返します。
  モジュール型変数であれば、未使用(0)か、初期化済み(1)、または他の変数のクローン(2)かどうかを調べることができます。
  COMオブジェクト型であれば、有効なCOMオブジェクトを保持しているかを調べられます。
  
  %href
  newmod
  delmod
  %port-
  Let
  
  
  
  
  %index
  libptr
  外部呼出しコマンドの情報アドレスを得る
  %group
  基本入出力関数
  %prm
  (p1)
  p1 : アドレスを調べるコマンド
  
  %inst
  p1に指定したコマンドの情報アドレスを取得して整数値として返します。
  外部DLL呼び出しコマンドや関数をパラメーターとして指定することで、コマンドに関する情報が格納されているSTRUCTDAT構造体のアドレスを取得することができます。
  STRUCTDAT構造体は、HSPSDK内で以下のように定義されています。
  ^p
  	typedef struct STRUCTDAT {
  	short	index;           // base LIBDAT index
  	short	subid;           // struct index
  	int	prmindex;            // STRUCTPRM index(MINFO)
  	int	prmmax;              // number of STRUCTPRM
  	int	nameidx;             // name index (DS)
  	int	size;                // struct size (stack)
  	int	otindex;             // OT index(Module)  / cleanup flag(Dll)
  	union {
  		void	*proc;       // proc address
  		int	funcflag;        // function flags(Module)
  	};
  	} STRUCTDAT;
  ^p
  p1にCOM呼び出しコマンドやユーザー定義命令、 ユーザー定義関数を指定した場合も同様にSTRUCTDAT構造体のアドレスが取得されます。
  libptr関数は、HSPが使用している内部データへのアクセスを補助するもので、ここで扱う情報の内容について十分な知識を持った上で使用するようにしてください。
  通常の使用範囲では、この関数を利用したり覚えておく必要はありません。
  ^
  STRUCTDAT構造体を参照することで、 外部呼出しDLLのアドレスや、DLLハンドルなどの情報を得ることが可能です。
  
  %href
  varptr
  %sample
  	#uselib "user32.dll"
  	#func MessageBoxA "MessageBoxA" int,sptr,sptr,int
  
  	ladr=libptr( MessageBoxA )
  	dupptr lptr,ladr,28	; STRUCTDAT構造体を取得
  	lib_id=wpeek(lptr,0)
  	mes "LIB#"+lib_id
  	mref hspctx,68
  	linf_adr=lpeek( hspctx, 832 )
  	dupptr linf,linf_adr + lib_id*16,16	; LIBDAT構造体を取得
  	dll_flag = linf(0)
  	dll_name = linf(1)
  	dll_handle = linf(2)
  	mes "FLAG("+dll_flag+") NAME_ID#"+dll_name
  	mes "HANDLE="+strf("%x",dll_handle)
  	stop
  %port-
  Let
  
  
  
  %index
  comevdisp
  COMイベントの内容を確認
  %group
  COMオブジェクト操作関数
  %prm
  (p1)
  p1      : 変数名
  
  %inst
  p1で指定された変数(COMオブジェクト型)のイベントサブルーチン内で、イベントのディスパッチID(DISPID)を取得します。
  p1で指定された変数は、comevent命令により初期化されている必要があります。
  また、取得は必ずイベントサブルーチン内で行なう必要があります。
  
  %href
  comevent
  comevarg
  %port-
  Let
  
  
  %index
  powf
  累乗（べき乗）を求める
  %group
  基本入出力関数
  %prm
  (p1, p2)
  p1 : 底（0以上）
  p2 : 指数
  
  %inst
  p1をp2乗した値を求めます。結果は実数で与えられます。
  p1は必ず正でなければなりません。負の場合はエラーにはなりませんが、非数（-1.#IND00）が返ります。
  p2は正負どちらでも構いません。また、実数を指定することも可能です。
  
  %sample
  	repeat 5, -2
  		mes "10の" + cnt + "乗は" + powf(10, cnt) + "です。"
  	loop
  	stop
  %port-
  Let
  
  
  
  %index
  getease
  イージング値を整数で取得
  %group
  基本入出力関数
  %prm
  (p1,p2)
  p1(0) : 時間経過値(整数値)
  p2(4096) : 時間経過値の最大(整数値)
  %inst
  決められた範囲の数値を任意の計算式で補間するイージング関数の計算結果値を整数で取得します。
  イージング関数を使用する際には、必ず先にsetease命令により出力される最小値、最大値および計算式を設定しておく必要があります。
  p1で指定する時間経過値は、0から始まる整数値で、時間経過値の最大(p2パラメーター)までを指定することで、イージング関数の計算結果を返します。
  最大値(p2パラメーター)を省略した場合は、4096が使用されます。
  通常は、時間経過値がマイナスの値だった場合は、0とみなされます。また、時間経過値が最大値(p2パラメーター)を超えた場合も、最大値として扱われます。
  (ただし、setease命令による計算式のタイプ設定で、ease_loop(補間のループ)を加算した場合は、範囲外の値も含めて補間のループ(繰り返し)を行ないます。)
  
  %href
  setease
  geteasef
  %port-
  Let
  
  
  
  %index
  geteasef
  イージング値を実数で取得
  %group
  基本入出力関数
  %prm
  (p1,p2)
  p1(0) : 時間経過値(実数値)
  p2(1.0) : 時間経過値の最大(実数値)
  %inst
  決められた範囲の数値を任意の計算式で補間するイージング関数の計算結果値を実数で取得します。
  イージング関数を使用する際には、必ず先にsetease命令により出力される最小値、最大値および計算式を設定しておく必要があります。
  p1で指定する時間経過値は、0から始まる実数値で、時間経過値の最大(p2パラメーター)までを指定することで、イージング関数の計算結果を返します。
  最大値(p2パラメーター)を省略した場合は、1.0が使用されます。
  通常は、時間経過値がマイナスの値だった場合は、0とみなされます。また、時間経過値が最大値(p2パラメーター)を超えた場合も、最大値として扱われます。
  (ただし、setease命令による計算式のタイプ設定で、ease_loop(補間のループ)を加算した場合は、範囲外の値も含めて補間のループ(繰り返し)を行ないます。)
  geteasef命令はより細かいイージング関数の計算結果を取得します。通常の座標値など整数で渡される値を取得する場合は、getease関数を使用した方が高速になります。
  
  %href
  setease
  getease
  %port-
  Let
  
  
  
  