Commit 4d7e99df authored by Daniel Remenak's avatar Daniel Remenak Committed by Alexandre Julliard

Implemented VarIdiv.

parent 794dbaa3
...@@ -148,7 +148,7 @@ ...@@ -148,7 +148,7 @@
149 stdcall SysStringByteLen(ptr) 149 stdcall SysStringByteLen(ptr)
150 stdcall SysAllocStringByteLen(ptr long) 150 stdcall SysAllocStringByteLen(ptr long)
152 stdcall VarEqv(ptr ptr ptr) 152 stdcall VarEqv(ptr ptr ptr)
153 stub VarIdiv # stdcall (ptr ptr ptr) 153 stdcall VarIdiv(ptr ptr ptr)
154 stub VarImp # stdcall (ptr ptr ptr) 154 stub VarImp # stdcall (ptr ptr ptr)
155 stdcall VarMod(ptr ptr ptr) 155 stdcall VarMod(ptr ptr ptr)
156 stdcall VarMul(ptr ptr ptr) 156 stdcall VarMul(ptr ptr ptr)
......
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
* *
* Copyright 1998 Jean-Claude Cote * Copyright 1998 Jean-Claude Cote
* Copyright 2003 Jon Griffiths * Copyright 2003 Jon Griffiths
* Copyright 2005 Daniel Remenak
*
* The alorithm for conversion from Julian days to day/month/year is based on * The alorithm for conversion from Julian days to day/month/year is based on
* that devised by Henry Fliegel, as implemented in PostgreSQL, which is * that devised by Henry Fliegel, as implemented in PostgreSQL, which is
* Copyright 1994-7 Regents of the University of California * Copyright 1994-7 Regents of the University of California
...@@ -4157,9 +4159,57 @@ HRESULT WINAPI VarRound(LPVARIANT pVarIn, int deci, LPVARIANT pVarOut) ...@@ -4157,9 +4159,57 @@ HRESULT WINAPI VarRound(LPVARIANT pVarIn, int deci, LPVARIANT pVarOut)
return hRet; return hRet;
} }
/**********************************************************************
* VarIdiv [OLEAUT32.153]
*
* Converts input variants to integers and divides them.
*
* PARAMS
* left [I] Left hand variant
* right [I] Right hand variant
* result [O] Destination for quotient
*
* RETURNS
* Success: S_OK. result contains the quotient.
* Failure: An HRESULT error code indicating the error.
*
* NOTES
* If either expression is null, null is returned, as per MSDN
*/
HRESULT WINAPI VarIdiv(LPVARIANT left, LPVARIANT right, LPVARIANT result)
{
VARIANT lv, rv;
HRESULT hr;
VariantInit(&lv);
VariantInit(&rv);
if ((V_VT(left) == VT_NULL) || (V_VT(right) == VT_NULL)) {
hr = VariantChangeType(result, result, 0, VT_NULL);
if (FAILED(hr)) {
/* This should never happen */
FIXME("Failed to convert return value to VT_NULL.\n");
return hr;
}
return S_OK;
}
hr = VariantChangeType(&lv, left, 0, VT_I4);
if (FAILED(hr)) {
return hr;
}
hr = VariantChangeType(&rv, right, 0, VT_I4);
if (FAILED(hr)) {
return hr;
}
hr = VarDiv(&lv, &rv, result);
return hr;
}
/********************************************************************** /**********************************************************************
* VarMod [OLEAUT32.154] * VarMod [OLEAUT32.155]
* *
* Perform the modulus operation of the right hand variant on the left * Perform the modulus operation of the right hand variant on the left
* *
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment