Example #1
0
LiteralNode* MAKE_system_privilege(const char* privilege)
{
	thread_db* tdbb = JRD_get_thread_data();
	Attachment* att = tdbb->getAttachment();
	jrd_tra* tra = att->getSysTransaction();

	string p(privilege);
	p.upper();
	USHORT value = SCL_convert_privilege(tdbb, tra, p);

	USHORT* valuePtr = FB_NEW_POOL(*tdbb->getDefaultPool()) USHORT(value);

	LiteralNode* literal = FB_NEW_POOL(*tdbb->getDefaultPool()) LiteralNode(*tdbb->getDefaultPool());
	literal->litDesc.dsc_dtype = dtype_short;
	literal->litDesc.dsc_length = sizeof(USHORT);
	literal->litDesc.dsc_scale = 0;
	literal->litDesc.dsc_sub_type = 0;
	literal->litDesc.dsc_address = reinterpret_cast<UCHAR*>(valuePtr);

	return literal;
}