#author("2018-05-26T13:12:49+09:00","default:mat2umoto","mat2umoto")
#author("2018-05-26T21:46:47+09:00","default:mat2umoto","mat2umoto")
*はじめに [#rc5ff40b]
このページの内容は、Visual C++ によって作成されるブラウザ情報ファイル(*.bsc)から情報を取得するためにMicrosoftによって提供されているライブラリ「Browser Toolkits for Microsoft Visual C++」に関する内容をまとめたものである。~
ブラウザ情報ファイルからは、プロジェクトで使用しているシンボルの一覧や、ある関数を使用する関数の一覧などといった情報を取得することができる。~

[[ダウンロード:http://www.microsoft.com/downloads/en/details.aspx?FamilyId=621AE185-1C2A-4D6B-8146-183D66FE709D&displaylang=en]]~
-[[ダウンロード(※リンク切れ):http://www.microsoft.com/downloads/en/details.aspx?FamilyId=621AE185-1C2A-4D6B-8146-183D66FE709D&displaylang=en]]
-&ref(bsckit60.zip);

''注意''~
-ライブラリはVisual C++の各バージョンごとに用意されているが、ここに記述するのはVC++6.0用のライブラリに基づいた内容。(バージョン別で内容に大差はないはず)
-このページの内容は、ヘルプファイルを和訳した上で加筆・修正を行って作成しているため、間違っている部分があるかもしれない。

#br
----

#contents

*概要 [#t17b90ee]
ライブラリは、ブラウザデータベース(ソースブラウザ情報)にアクセスするための機能を提供します。~

"BSC"接頭辞で始まる関数は、対応するBSCクラスメンバ関数のANSI C言語版として割り当てられた関数です。~
(C言語版を使用する場合、BSCツールキットで提供されるサンクモジュールを使用してアプリケーションをリンクする必要があります。)~
&color(green){↑特に意識せずにリンクすればよい。};~

現在の実装では、マルチスレッドによるアクセスが有効になっていない(再入不可である)ことに注意してください。~

*データ型 [#r67f9367]
**IN, OUT [#bb9bc97f]
 #define IN
 #define OUT

-''概要''~
関数のプロトタイプ宣言内で、パラメータが入力用(IN)なのか出力用(OUT)なのかを明示するために設けられたキーワード。~
プログラムに影響を与えないため、無視できる。

**SZ, SZ_CONST [#ib6f50d8]
 typedef char* SZ;
 typedef const char* SZ_CONST;

-''概要''~
文字列。~
BSCデータベース内の何らかの文字列を格納した領域へのポインタ。SZ型として出力された値の指す領域は変更や破棄されてしまう可能性があるので、別の領域へ文字列をコピーして使用すること。

**LINE [#t9aedc21]
 typedef USHORT LINE;

-''概要''~
ファイル中の行番号。~
行番号は0から始まる値で格納されるため、実際の行番号に変換するために+1する必要がある。

**IINST [#xa680433]
 typedef ULONG IINST;

-''概要''~
シンボルインスタンス。~
BSCデータベースにおいて、関数や変数などのシンボルはシンボルインスタンスとして整数値で識別される。

**IDEF [#j43b8501]
 typedef ULONG IDEF;

-''概要''~
定義インデックス。~
BSCデータベースにおいて、シンボルの定義位置(関数の定義位置など)は定義インデックスとして整数値で識別される。

**IREF [#gf2f99c6]
 typedef ULONG IREF;

-''概要''~
参照インデックス。~
BSCデータベースにおいて、シンボルの参照位置(関数の使用位置など)は参照インデックスとして整数値で識別される。

**IMOD [#xe8acb6f]
 typedef USHORT IMOD;

-''概要''~
モジュールインデックス。~
BSCデータベースにおいて、ソースファイルはモジュールインデックスとして整数値で識別される。

**TYP [#yee5fd39]
 typedef BYTE TYP;
 
 #define INST_TYP_FUNCTION     0x01 // 関数名
 #define INST_TYP_LABEL        0x02 // ラベル名
 #define INST_TYP_PARAMETER    0x03 // 引数名
 #define INST_TYP_VARIABLE     0x04 // 変数名
 #define INST_TYP_CONSTANT     0x05 // 
 #define INST_TYP_MACRO        0x06 // マクロ名
 #define INST_TYP_TYPEDEF      0x07 // typedef型名
 #define INST_TYP_STRUCNAM     0x08 // 構造体型名
 #define INST_TYP_ENUMNAM      0x09 // 列挙型名
 #define INST_TYP_ENUMMEM      0x0A // 列挙型メンバ名
 #define INST_TYP_UNIONNAM     0x0B // 共用体型名
 #define INST_TYP_SEGMENT      0x0C // 
 #define INST_TYP_GROUP        0x0D // 
 #define INST_TYP_PROGRAM      0x0E // 
 #define INST_TYP_CLASSNAM     0x0F // クラス名
 #define INST_TYP_MEMFUNC      0x10 // メンバ関数名
 #define INST_TYP_MEMVAR       0x11 // メンバ変数名

-''概要''~
シンボルインスタンスのタイプ。~
シンボルインスタンスはいずれかのタイプとなる。

**ATR [#dc79772a]
 typedef USHORT ATR;
 
 #define INST_ATR_LOCAL       0x001 // 
 #define INST_ATR_STATIC      0x002 // static
 #define INST_ATR_SHARED      0x004 // 
 #define INST_ATR_NEAR        0x008 // 
 #define INST_ATR_COMMON      0x010 // 
 #define INST_ATR_DECL_ONLY   0x020 // 
 #define INST_ATR_PUBLIC      0x040 // public
 #define INST_ATR_NAMED       0x080 // 
 #define INST_ATR_MODULE      0x100 // 
 #define INST_ATR_VIRTUAL     0x200 // virtual
 #define INST_ATR_PRIVATE     0x400 // private
 #define INST_ATR_PROTECT     0x800 // protected

-''概要''~
シンボルインスタンスの属性。~
複数の属性を論理和で指定できる。

**MBF [#bf7315f3]
 typedef ULONG MBF;
 
 #define mbfNil    0    // タイプ指定なし
 #define mbfVars   1    // 変数
 #define mbfFuncs  2    // 関数
 #define mbfMacros 4    // マクロ(#define値)
 #define mbfTypes  8    // 型
 #define mbfClass  16   // クラス
 #define mbfAll    1023 // 全てのタイプ

-''概要''~
インスタンスタイプフィルタ。~
シンボルインスタンスのタイプを指定するための値。論理和によって複数のタイプを指定可能。

**BSC_STAT [#l9b03801]
 typedef struct BSC_STAT
 {
     ULONG   cDef;
     ULONG   cRef;
     ULONG   cInst;
     ULONG   cMod;
     ULONG   cUseLink;
     ULONG   cBaseLink;
 } BSC_STAT;

-''概要''~
モジュールの統計情報。~
詳細不明。

*関数 [#ja1ce563]
**操作 [#ffa6f7e2]
***::openBrowser、Bsc::open [#x806cde1]
 BOOL openBrowser (SZ_CONST szName, OUT Bsc** ppbsc);
 static BOOL open (SZ_CONST szName, OUT Bsc** ppbsc);
 BOOL BSCOpen (SZ_CONST szName, OUT Bsc** ppbsc); // ANSI C

-''概要''~
ブラウザデータベースを開きます。

-''パラメータ''~
: szName | BSCファイルのパスを示す文字列。~
: ppbsc | BSCオブジェクトのポインタを受け取るためのポインタ。~

-''備考''~
指定されたブラウザデータベースを開き、関連付けられたBSCオブジェクトを作成します。~
~
注意:~
C++に割り当てられたAPIを使用する場合は::openBrowserまたはBsc::openを使用してください。それ以外の場合(すなわち、ANSI Cに割り当てられたAPIを使用する場合)はBSCOpenを使用してください。

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

***Bsc::close [#v4bbb8fc]
 virtual BOOL close();
 BOOL BSCClose(Bsc *pbsc); // ANSI C

-''概要''~
ブラウザデータベースを閉じます。

-''パラメータ''~
: pbsc | ブラウザデータベースのポインタ~

-''備考''~
ブラウザデータベースを閉じ、BSCオブジェクトが使用しているメモリを解放します。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

**情報の取得 [#r0cc7f77]
***Bsc::idefInfo [#hea44a0e]
 virtual BOOL idefInfo(IDEF idef, OUT SZ *pszModule, OUT LINE *piline);
 BOOL BSCIdefInfo(Bsc *pbsc, IDEF idef, OUT SZ *pszModule, OUT LINE *piline); // ANSI C

-''概要''~
指定された定義インデックスに関する情報を取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: idef | [in] 定義インデックス。~
: pszModule | [out] シンボルが定義されているファイル名が格納されたアドレスを受け取るためのポインタ。~
: piline | [out] ファイル内のシンボルが定義されている位置の行番号(0~)。~

-''備考''~
シンボルが定義されているモジュールのファイル名と、定義位置の行番号(0~)を取得します。~
~
'pszModule' は非定形的な方法で処理されます。この変数には、ライブラリが実際にファイル名を見つけることができた内部バッファのいずれかへのポインタが格納されます。~
~
ライブラリに対して別の呼び出しを行った後でSZ型引数の内容を使用する場合は、別の領域へコピーしておいてください。SZ型引数の指す内部バッファの内容は、次のライブラリコールのために失われる可能性があります。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

***Bsc::iinstInfo [#g2f3960c]
 virtual BOOL iinstInfo(IINST iinst, OUT SZ *psz, OUT TYP *ptyp, OUT ATR *patr);
 BOOL BSCIinstInfo(Bsc *pbsc, IINST iinst, OUT SZ *psz, OUT TYP *ptyp, OUT ATR *patr); // ANSI C

-''概要''~
指定されたシンボルインスタンスに関する情報を取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: iinst | [in] シンボルインスタンス。~
: psz | [out] シンボルインスタンスの名前が格納されたアドレスを受け取るためのポインタ。~
: ptyp | [out] シンボルインスタンスのタイプを受け取るためのポインタ。~
: patr | [out] シンボルインスタンスの属性を受け取るためのポインタ。~

-''備考''~
iinstによって指定されたシンボルインスタンスの情報を取得します。シンボル名と、対応するタイプと属性を取得します。~
~
ライブラリに対して別の呼び出しを行った後でSZ型引数の内容を使用する場合は、別の領域へコピーしておいてください。SZ型引数の指す内部バッファの内容は、次のライブラリコールのために失われる可能性があります。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

***Bsc::imodInfo [#x6605ce5]
 virtual BOOL imodInfo(IMOD imod, OUT SZ *pszModule);
 BOOL BSCImodInfo(Bsc *pbsc, IMOD imod, OUT SZ *pszModule); // ANSI C

-''概要''~
指定されたモジュールインデックスに関する情報を取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: imod | [in] モジュールインデックス。~
: psz | [out] モジュールのファイル名が格納されたアドレスを受け取るためのポインタ。~

-''備考''~
imodによって指定されたモジュールのファイル名を取得します。~
~
ライブラリに対して別の呼び出しを行った後でSZ型引数の内容を使用する場合は、別の領域へコピーしておいてください。SZ型引数の指す内部バッファの内容は、次のライブラリコールのために失われる可能性があります。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

***Bsc::irefInfo [#d75e7eac]
 virtual BOOL irefInfo(IREF iref, OUT SZ *pszModule, OUT LINE *piline);
 BOOL BSCIrefInfo(Bsc *pbsc, IREF iref, OUT SZ *pszModule, OUT LINE *piline); // ANSI C

-''概要''~
指定された参照インデックスに関する情報を取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: iref | [in] 参照インデックス。~
: psz | [out] シンボルの参照が検出されたモジュールのファイル名が格納されたアドレスを受け取るためのポインタ。~
: piline | [out] シンボルの参照が検出された位置の行番号(0~)。~

-''備考''~
シンボルを参照しているモジュールのファイル名と、参照位置の行番号(0~)を取得します。~
~
ライブラリに対して別の呼び出しを行った後でSZ型引数の内容を使用する場合は、別の領域へコピーしておいてください。SZ型引数の指す内部バッファの内容は、次のライブラリコールのために失われる可能性があります。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

**インスタンスに対する処理 [#p1bd9bb5]
***Bsc::fInstFilter [#nc3e91e4]
 virtual BOOL fInstFilter(IINST iinst, MBF mbf);
 BOOL BSCFInstFilter(Bsc *pbsc, IINST iinst, MBF mbf); // ANSI C

-''概要''~
インスタンスのタイプチェックを行います。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: iinst | [in] シンボルインスタンス。~
: mbf | [in] インスタンスタイプフィルタ ([[MBF>#bf7315f3]])。~

-''戻り値''~
指定されたiinstが、インスタンスタイプフィルタ(MBF)に対応するタイプを持つ場合は0以外を返します。それ以外の場合は0を返します。~

***Bsc::getAllGlobalsArray [#j622846f]
 virtual BOOL getAllGlobalsArray(MBF mbf, OUT IINST **ppiinst, OUT ULONG *pciinst);
 BOOL BSCGetAllGlobalsArray(Bsc *pbsc, MBF mbf, OUT IINST **ppiinst, OUT ULONG *pciinst); // ANSI C

-''概要''~
全てのグローバルなシンボルインスタンスを取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: mbf | [in] インスタンスタイプフィルタ ([[MBF>#bf7315f3]])。~
: ppiinst | [out] シンボルインスタンスの配列を受け取るためのポインタ。~
: pciinst | [out] シンボルインスタンスの配列の要素数。~

-''備考''~
インスタンスタイプフィルタ(MBF)で指定された条件を満たすグローバルなシンボルを検索し、シンボルインスタンスの配列として返します。~
~
配列が不要になった場合は、[[Bsc::disposeArray>#zae98a46]]を呼び出す必要があります。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

***Bsc::getAllModulesArray [#h3161850]
 virtual BOOL getAllModulesArray(OUT IMOD **ppimod, OUT ULONG *pcimod);
 BOOL BSCGetAllModulesArray(Bsc *pbsc, OUT IMOD **ppimod, OUT ULONG *pcimod); // ANSI C

-''概要''~
全てのモジュールインデックスを取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: ppimod | [out] モジュールインデックスの配列を受け取るためのポインタ。~
: pcimod | [out] モジュールインデックスの配列の要素数。~

-''備考''~
ブラウザデータベースに含まれる全てのモジュールインデックスを配列として返します。~
~
配列が不要になった場合は、[[Bsc::disposeArray>#zae98a46]]を呼び出す必要があります。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

***Bsc::getBaseArray [#p2e37b7a]
 virtual BOOL getBaseArray(IINST iinst, OUT IINST **ppiinst, OUT ULONG *pciinst);
 BOOL BSCGetBaseArray(Bsc *pbsc, IINST iinst, OUT IINST **ppiinst, OUT ULONG *pciinst); // ANSI C

-''概要''~
基本クラスのシンボルインスタンスを取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: iinst | [in] シンボルインスタンス。~
: ppiinst | [out] シンボルインスタンスの配列を受け取るためのポインタ。~
: pciinst | [out] シンボルインスタンスの配列の要素数。~

-''備考''~
ブラウザデータベース内のいくつかのシンボルインスタンスは、それらの基本クラスを参照できます。この関数は、iinstの基本クラスのシンボルインスタンスを配列として返します。~
~
配列が不要になった場合は、[[Bsc::disposeArray>#zae98a46]]を呼び出す必要があります。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

***Bsc::getDefArray [#c96e77cb]
 virtual BOOL getDefArray(IINST iinst, OUT IDEF **ppidef, OUT ULONG *pcidef);
 BOOL BSCGetDefArray(Bsc *pbsc, IINST iinst, OUT IDEF **ppidef, OUT ULONG *pcidef); // ANSI C
※付属のヘッダファイルの第2引数の型がIREFになっていますが、正しくはIDEFです。~

-''概要''~
シンボルの定義インデックスを取得します。~

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: iinst | [in] シンボルインスタンス。~
: ppidef | [out] 定義インデックスの配列を受け取るためのポインタ。~
: pcidef | [out] 定義インデックスの配列の要素数。~

-''備考''~
ブラウザデータベース内のシンボルインスタンスは、定義と参照の関連セットを持っています。これは、定義/参照インデックスを用いて追跡できます。この関数は、iinstの定義インデックスを配列として返します。~~
~
配列が不要になった場合は、[[Bsc::disposeArray>#zae98a46]]を呼び出す必要があります。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

***Bsc::getDervArray [#x6055c49]
 virtual BOOL getDervArray(IINST iinst, OUT IINST **ppiinst, OUT ULONG *pciinst);
 BOOL BSCGetDervArray(Bsc *pbsc, IINST iinst, OUT IINST **ppiinst, OUT ULONG *pciinst); // ANSI C

-''概要''~
派生クラスのシンボルインスタンスを取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: iinst | [in] シンボルインスタンス。~
: ppiinst | [out] シンボルインスタンスの配列を受け取るためのポインタ。~
: pciinst | [out] シンボルインスタンスの配列の要素数。~

-''備考''~
ブラウザデータベース内のいくつかのシンボルインスタンスは、それらの派生クラスを参照できます。この関数は、iinstの派生クラスのシンボルインスタンスを配列として返します。~
~
配列が不要になった場合は、[[Bsc::disposeArray>#zae98a46]]を呼び出す必要があります。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

***Bsc::getIinstByvalue [#c70c6441]
 virtual BOOL getIinstByvalue(SZ sz, TYP typ, ATR atr, OUT IINST *piinst);
 BOOL BSCGetIinstByvalue(Bsc *pbsc, SZ sz, TYP typ, ATR atr, OUT IINST *piinst); // ANSI C

-''概要''~
シンボルインデックスを取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: sz | [in] シンボル名の文字列。マングルされた文字列を渡す。~
Cの関数であればそのままでもよいが、C++のメンバ関数は注意。(例:?Func@CClass@@QAEXH@Z)
: typ | [in] シンボルインスタンスのタイプ ([[TYP>#yee5fd39]])。~
: atr | [in] シンボルインスタンスの属性 ([[ATR>#dc79772a]])。~
: piinst | [out] 指定されたシンボル名、タイプ、属性に一致するシンボルインスタンスを受け取るためのポインタ。~

-''備考''~
それぞれで指定されたシンボル名、タイプ、属性に一致するシンボルインスタンスを返します。atrで指定された以外の追加属性は評価されません。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

***Bsc::getMembersArray [#p76aec35]
 virtual BOOL getMembersArray(IINST iinst, MBF mbf, OUT IINST **ppiinst, OUT ULONG *pciinst);
 BOOL BSCGetMembersArray(Bsc *pbsc, IINST iinst, MBF mbf, OUT IINST **ppiinst, OUT ULONG *pciinst); // ANSI C

-''概要''~
クラスのメンバを取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: iinst | [in] シンボルインスタンス。~
: mbf | [in] インスタンスタイプフィルタ ([[MBF>#bf7315f3]])。~
: ppiinst | [out] シンボルインスタンスの配列を受け取るためのポインタ。~
: pciinst | [out] シンボルインスタンスの配列の要素数。~

-''備考''~
iinstで指定されたシンボルインスタンスのメンバ関数とメンバ変数のうち、インスタンスタイプフィルタ(MBF)で指定された条件を満たすものをインスタンスシンボルの配列として返します。~
iinstがクラスのシンボルではない場合は、空の配列が返されます。~
~
配列が不要になった場合は、[[Bsc::disposeArray>#zae98a46]]を呼び出す必要があります。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

***Bsc::getModuleByName [#t911b6f7]
 virtual BOOL getModuleByName(SZ sz, OUT IMOD *pimod);
 BOOL BSCGetModuleByName(Bsc *pbsc, SZ sz, OUT IMOD *pimod); // ANSI C

-''概要''~
指定された名前からモジュールインデックスを取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: sz | [in] モジュールのファイル名~
: pimod | [out] モジュールインデックスを受け取るためのポインタ。~

-''備考''~
モジュールのファイル名を指定して、モジュールインデックスを取得します。~

-''戻り値''~
一致するモジュールインデックスが見つかった場合は0以外を返します。それ以外の場合は0を返します。

***Bsc::getModuleContents [#wad9fb9a]
 virtual BOOL getModuleContents(IMOD imod, MBF mbf, OUT IINST **ppiinst, OUT ULONG *pciinst);
 BOOL BSCGetModuleContents(Bsc *pbsc, IMOD imod, MBF mbf, OUT IINST **ppiinst, OUT ULONG *pciinst); // ANSI C

-''概要''~
モジュールに含まれているシンボルを取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: imod | [in] モジュールインデックス。~
: mbf | [in] インスタンスタイプフィルタ ([[MBF>#bf7315f3]])。~
: ppiinst | [out] シンボルインスタンスの配列を受け取るためのポインタ。~
: pciinst | [out] シンボルインスタンスの配列の要素数。~

-''備考''~
imodに含まれているシンボルのうち、インスタンスタイプフィルタ(MBF)で指定された条件を満たすものをインスタンスシンボルの配列として返します。~
~
配列が不要になった場合は、[[Bsc::disposeArray>#zae98a46]]を呼び出す必要があります。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

***Bsc::getOverloadArray [#wfadb3be]
 virtual BOOL getOverloadArray(SZ sz, MBF mbf, OUT IINST **ppiinst, OUT ULONG *pciinst);
 BOOL BSCGetOverloadArray(Bsc *pbsc, SZ sz, MBF mbf, OUT IINST **ppiinst, OUT ULONG *pciinst); // ANSI C

-''概要''~
指定された名前と一致するシンボルを取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: sz | [in] 検索パターン文字列。~
: mbf | [in] インスタンスタイプフィルタ ([[MBF>#bf7315f3]])。~
: ppiinst | [out] シンボルインスタンスの配列を受け取るためのポインタ。~
: pciinst | [out] シンボルインスタンスの配列の要素数。~

-''備考''~
指定された名前に一致する全てのシンボルインスタンス、指定された名前を持つクラスの全てのメンバ、または指定された名前に一致する全てのトップレベル項目を検索し、さらにインスタンスタイプフィルタ(MBF)で指定された条件を満たすものをインスタンスシンボルの配列として返します。~
~
下記の内容は、szに指定できる形式と対応する動作です。~
"class::"  クラスの全てのメンバのリストを生成します。~
"class::mem"  memという名前の全てのメンバのリストを生成します。'mem*'のようなワイルドカードも受け付けます。また、ネストされたクラスも対象とします。(例  classA::classB::mem)~
"mem"  任意のクラスやトップレベル項目のうちmemという名前を持つ全てのメンバのリストを生成します。~
~
メンバmemは、正規のメンバであったりoperator +やoperator newであるかもしれません。~
~
生成されたリストは、インスタンスタイプフィルタ(MBF)によってフィルタリングされ、シンボルインスタンスの配列として返されます。
~
配列が不要になった場合は、[[Bsc::disposeArray>#zae98a46]]を呼び出す必要があります。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

***Bsc::getRefArray [#k94f672f]
 virtual BOOL getRefArray(IINST iinst, OUT IREF **ppiref, OUT ULONG *pciref);
 BOOL BSCGetRefArray(Bsc *pbsc, IINST iinst, OUT IREF **ppiref, OUT ULONG *pciref); // ANSI C

-''概要''~
シンボルの参照インデックスを取得します。~

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: iinst | [in] シンボルインスタンス。~
: ppiref | [out] 参照インデックスの配列を受け取るためのポインタ。~
: pciref | [out] 参照インデックスの配列の要素数。~

-''備考''~
ブラウザデータベース内のシンボルインスタンスは、定義と参照の関連セットを持っています。これは、定義/参照インデックスを用いて追跡できます。この関数は、iinstの参照インデックスを配列として返します。~~
~
配列が不要になった場合は、[[Bsc::disposeArray>#zae98a46]]を呼び出す必要があります。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

***Bsc::getUsedByArray [#u484750f]
 virtual BOOL getUsedByArray(IINST iinst, MBF mbf, OUT IINST **ppiinst, OUT ULONG *pciinst);
 BOOL BSCGetUsedByArray(Bsc *pbsc, IINST iinst, MBF mbf, OUT IINST **ppiinst, OUT ULONG *pciinst); // ANSI C

-''概要''~
シンボルを使用しているシンボルインスタンスを取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: iinst | [in] シンボルインスタンス。~
: mbf | [in] インスタンスタイプフィルタ ([[MBF>#bf7315f3]])。~
: ppiinst | [out] シンボルインスタンスの配列を受け取るためのポインタ。~
: pciinst | [out] シンボルインスタンスの配列の要素数。~

-''備考''~
ブラウザデータベース内のシンボルインスタンスは、指定されたシンボルを使用するインスタンスと関連付けられています。この関数は、その中でインスタンスタイプフィルタ(MBF)で指定された条件を満たすものをインスタンスシンボルの配列として返します。~~
~
配列が不要になった場合は、[[Bsc::disposeArray>#zae98a46]]を呼び出す必要があります。~
~
この関数はブラウザデータベース内を広く検索するため、処理に時間がかかる場合があることに注意してください。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

***Bsc::getUsesArray [#k8df38e0]
 virtual BOOL getUsesArray(IINST iinst, MBF mbf, OUT IINST **ppiinst, OUT ULONG *pciinst);
 BOOL BSCGetUsesArray(Bsc *pbsc, IINST iinst, MBF mbf, OUT IINST **ppiinst, OUT ULONG *pciinst); // ANSI C

-''概要''~
シンボルで使用されているシンボルインスタンスを取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: iinst | [in] シンボルインスタンス。~
: mbf | [in] インスタンスタイプフィルタ ([[MBF>#bf7315f3]])。~
: ppiinst | [out] シンボルインスタンスの配列を受け取るためのポインタ。~
: pciinst | [out] シンボルインスタンスの配列の要素数。~

-''備考''~
ブラウザデータベース内のシンボルインスタンスは、指定されたシンボル内で使用しているインスタンスと関連付けられています。この関数は、その中でインスタンスタイプフィルタ(MBF)で指定された条件を満たすものをインスタンスシンボルの配列として返します。~~
~
配列が不要になった場合は、[[Bsc::disposeArray>#zae98a46]]を呼び出す必要があります。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

**変換 [#pcd30e76]
***Bsc::iinstContextIref [#qd89bd38]
 virtual IINST iinstContextIref(IREF iref);
 IINST BSCIinstContextIref(Bsc *pbsc, IREF iref); // ANSI C

-''概要''~
参照インデックスをコンテキストに基づいてシンボルインスタンスに変換します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: iref | [in] 参照インデックス。~

-''戻り値''~
irefで指定された参照のうち最も適しているシンボルインスタンスを返します。該当するシンボルが無い場合はiinstNilを返します。この関数は、100%ではないが高精度なアルゴリズムを用いて該当するシンボルを見つけます。~

***Bsc::iinstFrIdef [#t04b4535]
 virtual IINST iinstFrIdef(IDEF idef);
 IINST BSCIinstFrIdef(Bsc *pbsc, IDEF idef); // ANSI C

-''概要''~
定義インデックスをシンボルインスタンスに変換します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: idef | [in] 定義インデックス。~

-''戻り値''~
idefで指定された定義から評価されるシンボルインスタンスを返します。該当するシンボルが無い場合はiinstNilを返します。この関数は、idefが不正な値の場合は失敗します。~

***Bsc::iinstFrIref [#v89cb67a]
 virtual IINST iinstFrIref(IREF iref);
 IINST BSCIinstFrIref(Bsc *pbsc, IREF iref); // ANSI C

-''概要''~
参照インデックスをシンボルインスタンスに変換します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: iref | [in] 参照インデックス。~

-''戻り値''~
irefで指定された参照から評価されるシンボルインスタンスを返します。該当するシンボルが無い場合はiinstNilを返します。この関数は、irefが不正な値の場合は失敗します。~

**文字列操作 [#h8fd02a2]
***Bsc::formatDname [#ld78d767]
 virtual SZ formatDname(SZ szDecor);
 SZ BSCFormatDname(Bsc *pbsc, SZ szDecor); // ANSI C

-''概要''~
修飾されたシンボル名をフォーマットします。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: szDecor | [in] 修飾されたシンボル名。~

-''備考''~
修飾されたシンボル名から修飾されていないシンボル名を取得するためにこの関数を使用してください。ライブラリをシンボル名を持つ内部バッファのいずれかへのポインタが返されます。~
~
ライブラリに対して別の呼び出しを行った後で戻り値の内容を使用する場合は、別の領域へコピーしておいてください。戻り値の指す内部バッファの内容は、次のライブラリコールのために失われる可能性があります。~

-''戻り値''~
szDecorの修飾されていない文字列。

***Bsc::szFrAtr [#a2e3c48c]
 virtual SZ szFrAtr(ATR atr);
 SZ BSCSzFrAtr(Bsc *pbsc, ATR atr); // ANSI C

-''概要''~
属性の説明を取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: atr | [in] 属性値 ([[ATR>#dc79772a]])。0またはいくつかの属性を指定します。~

-''備考''~
atrで指定された値を説明する文字列を返します。返される文字列は、複数の属性の説明がコロンで区切られて連結された文字列です。~
~
ライブラリに対して別の呼び出しを行った後で戻り値の内容を使用する場合は、別の領域へコピーしておいてください。戻り値の指す内部バッファの内容は、次のライブラリコールのために失われる可能性があります。~

-''戻り値''~
atrで指定された属性を説明する文字列。

***Bsc::szFrTyp [#ud5ab223]
 virtual SZ szFrTyp(TYP typ);
 SZ BSCSzFrTyp(Bsc *pbsc, TYP typ); // ANSI C

-''概要''~
タイプの説明を取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: typ | [in] タイプ値 ([[TYP>#yee5fd39]])。~

-''備考''~
typで指定された値を説明する文字列を返します。~
~
ライブラリに対して別の呼び出しを行った後で戻り値の内容を使用する場合は、別の領域へコピーしておいてください。戻り値の指す内部バッファの内容は、次のライブラリコールのために失われる可能性があります。~


-''戻り値''~
typで指定されたタイプを説明する文字列。

**その他 [#i860cf9d]
***Bsc::disposeArray [#zae98a46]
 virtual void disposeArray(void *pAnyArray);
 void BSCDisposeArray(Bsc *pbsc, void *pAnyArray); // ANSI C

-''概要''~
他のBSC関数によって割り当てられた配列を解放します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: pAnyArray | [in] 解放したい配列を指すポインタ。~

-''備考''~
この関数は、"Bsc::get*Array"のいずれかのライブラリ呼出しによって割り当てられた配列を解放します。このような配列は、ライブラリによって動的に割り当てられたメモリを所有しています。使用者は、配列が不要になった時にBsc::disposeArrayを呼び出す必要があります。~

***Bsc::fCaseSensitive [#n0f001dc]
 virtual BOOL fCaseSensitive();
 BOOL BSCFCaseSensitive(Bsc *pbsc); // ANSI C

-''概要''~
ブラウザデータベースが大文字と小文字を区別するかをチェックします。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~

-''戻り値''~
ブラウザデータベースが大文字と小文字を区別するように構成されている場合は、0以外を返します。それ以外の場合は0を返します。

***Bsc::getModeleStatistics [#obbd6abe]
 virtual BOOL getModuleStatistics(IMOD imod, struct BSC_STAT *pstat);
 BOOL BSCGetModuleStatistics(Bsc *pbsc, IMOD imod, struct BSC_STAT *pstat); // ANSI C

-''概要''~
モジュールに関する統計情報を取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: imod | [in] モジュールインデックス。~
: pstat | [out] 統計情報を受け取る[[BSC_STAT>#l9b03801]]構造体のポインタ。~

-''備考''~
imodで指定されたモジュールに関する統計情報を出力します。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

***Bsc::getStatistics [#ge3dada6]
 virtual BOOL getStatistics(struct BSC_STAT *pstat);
 BOOL BSCGetStatistics(Bsc *pbsc, struct BSC_STAT *pstat); // ANSI C

-''概要''~
ブラウザデータベースに関する統計情報を取得します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: pstat | [out] 統計情報を受け取る[[BSC_STAT>#l9b03801]]構造体のポインタ。~

-''備考''~
ブラウザデータベース全体に関する統計情報を出力します。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

***Bsc::setCaseSensitivity [#o9da9fb8]
 virtual BOOL setCaseSensitivity(BOOL fCaseIn);
 BOOL BSCSetCaseSensitivity(Bsc *pbsc, BOOL fCaseIn); // ANSI C

-''概要''~
BSCデータベースが大文字と小文字を区別するかを設定します。

-''パラメータ''~
: pbsc | [in] ブラウザデータベースのポインタ。~
: fCaseIn | [in] 大文字と小文字を区別する必要があるかどうか。~

-''備考''~
ブラウザデータベースが大文字と小文字を区別するかどうかを設定します。TRUEを指定した場合、シンボルテーブル検索時に大文字と小文字を区別します。FALSEを指定した場合は、大文字と小文字を区別しません。~

-''戻り値''~
正常終了した場合は0以外を返します。それ以外の場合は0を返します。~

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS