はじめに Edit

このページの内容は、Visual C++ によって作成されるブラウザ情報ファイル(*.bsc)から情報を取得するためにMicrosoftによって提供されているライブラリ「Browser Toolkits for Microsoft Visual C++」に関する内容をまとめたものである。
ブラウザ情報ファイルからは、プロジェクトで使用しているシンボルの一覧や、ある関数を使用する関数の一覧などといった情報を取得することができる。

ダウンロード

注意

 

概要 Edit

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

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

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

データ型 Edit

IN, OUT Edit

#define IN
#define OUT

SZ, SZ_CONST Edit

typedef char* SZ;
typedef const char* SZ_CONST;

LINE Edit

typedef USHORT LINE;

IINST Edit

typedef ULONG IINST;

IDEF Edit

typedef ULONG IDEF;

IREF Edit

typedef ULONG IREF;

IMOD Edit

typedef USHORT IMOD;

TYP Edit

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 Edit

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 Edit

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 Edit

typedef struct BSC_STAT
{
    ULONG   cDef;
    ULONG   cRef;
    ULONG   cInst;
    ULONG   cMod;
    ULONG   cUseLink;
    ULONG   cBaseLink;
} BSC_STAT;

関数 Edit

操作 Edit

::openBrowser、Bsc::open Edit

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::close Edit

virtual BOOL close();
BOOL BSCClose(Bsc *pbsc); // ANSI C
pbsc
ブラウザデータベースのポインタ

情報の取得 Edit

Bsc::idefInfo Edit

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~)。

Bsc::iinstInfo Edit

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] シンボルインスタンスの属性を受け取るためのポインタ。

Bsc::imodInfo Edit

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] モジュールのファイル名が格納されたアドレスを受け取るためのポインタ。

Bsc::irefInfo Edit

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~)。

インスタンスに対する処理 Edit

Bsc::fInstFilter Edit

virtual BOOL fInstFilter(IINST iinst, MBF mbf);
BOOL BSCFInstFilter(Bsc *pbsc, IINST iinst, MBF mbf); // ANSI C
pbsc
[in] ブラウザデータベースのポインタ。
iinst
[in] シンボルインスタンス。
mbf
[in] インスタンスタイプフィルタ (MBF)。

Bsc::getAllGlobalsArray Edit

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)。
ppiinst
[out] シンボルインスタンスの配列を受け取るためのポインタ。
pciinst
[out] シンボルインスタンスの配列の要素数。

Bsc::getAllModulesArray Edit

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::getBaseArray Edit

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] シンボルインスタンスの配列の要素数。

Bsc::getDefArray Edit

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] 定義インデックスの配列の要素数。

Bsc::getDervArray Edit

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] シンボルインスタンスの配列の要素数。

Bsc::getIinstByvalue Edit

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)。
atr
[in] シンボルインスタンスの属性 (ATR)。
piinst
[out] 指定されたシンボル名、タイプ、属性に一致するシンボルインスタンスを受け取るためのポインタ。

Bsc::getMembersArray Edit

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)。
ppiinst
[out] シンボルインスタンスの配列を受け取るためのポインタ。
pciinst
[out] シンボルインスタンスの配列の要素数。

Bsc::getModuleByName Edit

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] モジュールインデックスを受け取るためのポインタ。

Bsc::getModuleContents Edit

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)。
ppiinst
[out] シンボルインスタンスの配列を受け取るためのポインタ。
pciinst
[out] シンボルインスタンスの配列の要素数。

Bsc::getOverloadArray Edit

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)。
ppiinst
[out] シンボルインスタンスの配列を受け取るためのポインタ。
pciinst
[out] シンボルインスタンスの配列の要素数。

Bsc::getRefArray Edit

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] 参照インデックスの配列の要素数。

Bsc::getUsedByArray Edit

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)。
ppiinst
[out] シンボルインスタンスの配列を受け取るためのポインタ。
pciinst
[out] シンボルインスタンスの配列の要素数。

Bsc::getUsesArray Edit

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)。
ppiinst
[out] シンボルインスタンスの配列を受け取るためのポインタ。
pciinst
[out] シンボルインスタンスの配列の要素数。

変換 Edit

Bsc::iinstContextIref Edit

virtual IINST iinstContextIref(IREF iref);
IINST BSCIinstContextIref(Bsc *pbsc, IREF iref); // ANSI C
pbsc
[in] ブラウザデータベースのポインタ。
iref
[in] 参照インデックス。

Bsc::iinstFrIdef Edit

virtual IINST iinstFrIdef(IDEF idef);
IINST BSCIinstFrIdef(Bsc *pbsc, IDEF idef); // ANSI C
pbsc
[in] ブラウザデータベースのポインタ。
idef
[in] 定義インデックス。

Bsc::iinstFrIref Edit

virtual IINST iinstFrIref(IREF iref);
IINST BSCIinstFrIref(Bsc *pbsc, IREF iref); // ANSI C
pbsc
[in] ブラウザデータベースのポインタ。
iref
[in] 参照インデックス。

文字列操作 Edit

Bsc::formatDname Edit

virtual SZ formatDname(SZ szDecor);
SZ BSCFormatDname(Bsc *pbsc, SZ szDecor); // ANSI C
pbsc
[in] ブラウザデータベースのポインタ。
szDecor
[in] 修飾されたシンボル名。

Bsc::szFrAtr Edit

virtual SZ szFrAtr(ATR atr);
SZ BSCSzFrAtr(Bsc *pbsc, ATR atr); // ANSI C
pbsc
[in] ブラウザデータベースのポインタ。
atr
[in] 属性値 (ATR)。0またはいくつかの属性を指定します。

Bsc::szFrTyp Edit

virtual SZ szFrTyp(TYP typ);
SZ BSCSzFrTyp(Bsc *pbsc, TYP typ); // ANSI C
pbsc
[in] ブラウザデータベースのポインタ。
typ
[in] タイプ値 (TYP)。

その他 Edit

Bsc::disposeArray Edit

virtual void disposeArray(void *pAnyArray);
void BSCDisposeArray(Bsc *pbsc, void *pAnyArray); // ANSI C
pbsc
[in] ブラウザデータベースのポインタ。
pAnyArray
[in] 解放したい配列を指すポインタ。

Bsc::fCaseSensitive Edit

virtual BOOL fCaseSensitive();
BOOL BSCFCaseSensitive(Bsc *pbsc); // ANSI C
pbsc
[in] ブラウザデータベースのポインタ。

Bsc::getModeleStatistics Edit

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構造体のポインタ。

Bsc::getStatistics Edit

virtual BOOL getStatistics(struct BSC_STAT *pstat);
BOOL BSCGetStatistics(Bsc *pbsc, struct BSC_STAT *pstat); // ANSI C
pbsc
[in] ブラウザデータベースのポインタ。
pstat
[out] 統計情報を受け取るBSC_STAT構造体のポインタ。

Bsc::setCaseSensitivity Edit

virtual BOOL setCaseSensitivity(BOOL fCaseIn);
BOOL BSCSetCaseSensitivity(Bsc *pbsc, BOOL fCaseIn); // ANSI C
pbsc
[in] ブラウザデータベースのポインタ。
fCaseIn
[in] 大文字と小文字を区別する必要があるかどうか。

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS