Notes C API探訪: DBID取得
DBIDというと聞きなじみがないかもしれませんが、型はTIMEDATE型で、正体はデータベースの作成日です。DBIDはNSFDbIDGet関数で取得できます。
// #include <nsfdata.h>
#define DBID TIMEDATE
// #include <nsfdb.h>
STATUS LNPUBLIC NSFDbIDGet (DBHANDLE hDB, DBID far *retDbID);
これをnxpp::Databaseクラスに組み込むと、次のようになります。
#ifndef NXPP_DATABASE_HPP
#define NXPP_DATABASE_HPP
#include "./nxpp_pathnet.hpp"
#include "./nxpp_dbinfo.hpp"
#include <iostream>
#ifdef NT
#pragma pack(push, 1)
#endif
#include <global.h>
#include <nsfdb.h>
#ifdef NT
#pragma pack(pop)
#endif
namespace nxpp {
class Database;
using DatabasePtr = std::shared_ptr<Database>;
using Db = Database;
using DbPtr = DatabasePtr;
/**
* @brief データベース/ディレクトリクラス
*/
class Database
{
// ...
DBID getID() const {
return Database::getID(handle_);
}
static DBID getID(DBHANDLE hDB) {
DBID dbid;
Status status = NSFDbIDGet(hDB, &dbid);
if (!status) { throw status; }
return dbid;
}
};
} // namespace nxpp
#endif // NXPP_DATABASE_HPP
ここまで来て、TIMEDATE型のラップクラスの必要性が出てきました。次回から、TIMEDATEにのラッピングに挑戦します。