Step 4: Implement native classes and global functions
From PowerBuilder Native Interface
Step 4: Implement native classes and global functions
PBXRESULT MyClass::Invoke(IPB_Session *session, pbobject obj, pbmethodID mid, PBCallInfo *ci)
{
PBXRESULT result = PBX_OK;
switch (mid)
{
case mFunca:
result = funcA(session, obj, ci);
break;
case mFuncb:
result = funcB(session, obj, ci);
break;
default:
result = PBX_E_INVOKE_FAILURE;
break;
}
return result;
}
// Implementation of funcA and funcB not shown
void Destroy()
{
delete this;
}
PBXEXPORT PBXRESULT PBXCALL PBX_InvokeGlobalFunction
(
IPB_Session* pbsession,
LPCTSTR functionName,
PBCallInfo* ci
)
{
PBXRESULT pbrResult = PBX_OK;
int arg1 = ci->pArgs->GetAt(0)->GetInt();
int arg2 = ci->pArgs->GetAt(1)->GetInt();
if (stricmp(functionName, "bitand") == 0)
{
ci->returnValue->SetInt(arg1 & arg2);
}else if (strcmp(functionName, "bitor") == 0)
{
ci->returnValue->SetInt(arg1 | arg2);
}else if (strcmp(functionName, "bitxor") == 0)
{
ci->returnValue->SetInt(arg1 ^ arg2);
}else
{
return PBX_FAIL;
}
return pbrResult;
}