Hi Alex, "bad [in]" means that an input parameter is bad, e.g. in
IAccessible2::relation when the relationIndex is negative or larger than
nRelations-1. 

An example of "nothing to return" is when there are no extended roles
when IAccessible2::extendedRole is called.

Pete
===
Alexander Surkov wrote:
> Hi. Looks fine with me however I have a question.
>
>   
>> 3) IAccessibleText::selection
>>         Change:
>>         To:
>>                 S_FALSE         if there is nothing to return, [out] values
>> are -1s
>>                 E_INVALIDARG         if bad [in] passed, [out] values are
>>     
>
>   
>> 5) IAccessibleHyperlink::anchor and IAccessibleHyperlink::anchorTarget
>>         Change:
>>                 S_FALSE         if there is nothing to return, [out] value
>> is NULL
>>                 E_INVALIDARG         if bad [in] passed, [out] value is NULL
>>         To:
>>                 S_FALSE         if there is nothing to return, [out] value
>> is a VARIANT with vt = VT_EMPTY
>>                 E_INVALIDARG         if bad [in] passed, [out] value is a
>> VARIANT with vt = VT_EMPTY
>>     
>
> I confused by the difference between "nothing to return" and "bad [in]
> passed". It sounds like "bad [in]" means "nothing to return" and vise
> versa.
>
> Thank you.
> Alex.
>
>
> On Wed, Apr 14, 2010 at 5:54 AM, Pete Brunet <[email protected]> wrote:
>   
>> Please review the following...
>>
>> Thanks to Carolyn who is implementing IA2 in Eclipse I believe the following
>> changes need to be made in next update to the spec.
>>
>> 1) IAccessibleHypertext::hyperlinkIndex
>>         Change:
>>                 E_INVALIDARG  if bad [in] passed, [out] value is NULL
>>         To:
>>                 E_INVALIDARG  if bad [in] passed, [out] value is -1
>>         Because:
>>                 Setting the pointer to NULL does not make sense in
>> pass-by-reference world.
>>
>> 2) IAccessibleText::offsetAtPoint
>>         Change:
>>                 E_INVALIDARG  if bad [in] passed, [out] value is 0
>>         To:
>>                 E_INVALIDARG  if bad [in] passed, [out] value is -1
>>         Because:
>>                 0 is a valid value for the offset, and AT that cannot get
>> the HRESULT will not be able to distinguish between S_OK and E_INVALIDARG.
>>         Add:
>>                 S_FALSE  if nothing to return, [out] value is -1
>>         Because:
>>                 The [in] values could all be valid, but x and y could
>> specify a valid screen position but not one associated with a caret offset.
>>
>> 3) IAccessibleText::selection
>>         Change:
>>                 S_FALSE         if there is nothing to return, [out] values
>> are 0s
>>                 E_INVALIDARG         if bad [in] passed, [out] values are 0s
>>         To:
>>                 S_FALSE         if there is nothing to return, [out] values
>> are -1s
>>                 E_INVALIDARG         if bad [in] passed, [out] values are
>> -1s
>>         Because:
>>                 0,0 is a valid value for the selection (i.e. the caret is
>> before the first character), and AT that cannot get the HRESULT will not be
>> able to distinguish between S_OK and S_FALSE/E_INVALIDARG.
>>
>> 4) IAccessible2::groupPosition
>>         Change:
>>                 S_FALSE         if no values are valid
>>         To:
>>                 S_FALSE         if no values are valid, [out] values are 0s
>>         Because:
>>                 Although it can be determined from reading the parameter
>> specs, this should probably be stated with the return value as well, for
>> consistency and completeness.
>>
>> 5) IAccessibleHyperlink::anchor and IAccessibleHyperlink::anchorTarget
>>         Change:
>>                 S_FALSE         if there is nothing to return, [out] value
>> is NULL
>>                 E_INVALIDARG         if bad [in] passed, [out] value is NULL
>>         To:
>>                 S_FALSE         if there is nothing to return, [out] value
>> is a VARIANT with vt = VT_EMPTY
>>                 E_INVALIDARG         if bad [in] passed, [out] value is a
>> VARIANT with vt = VT_EMPTY
>>         Because:
>>                 The AT's will expect to see an "empty variant", not NULL.
>> http://msdn.microsoft.com/en-us/library/dd373687(VS.85).aspx
>>
>> 6) IAccessibleValue::currentValue
>>         Change:
>>                 S_FALSE         if there is nothing to return, [out] value
>> is NULL
>>         To:
>>                 S_FALSE         if there is nothing to return, [out] value
>> is a VARIANT with vt = VT_EMPTY
>>         Because:
>>                 The AT's will expect to see an "empty variant", not NULL.
>>
>> 7) IAccessibleValue::maximumValue and IAccessibleValue::minimumValue
>>         Add:
>>                 S_FALSE         if there is nothing to return, [out] value
>> is a VARIANT with vt = VT_EMPTY
>>         Because:
>>                 This should be consistent with
>> IAccessibleValue::currentValue.
>>
>> Also modify the general note about variants slightly to mention VT_EMPTY:
>> http://accessibility.linuxfoundation.org/a11yspecs/ia2/docs/html/_generalinfo.html#_variants
>>
>> 8) IAccessibleText::oldText and newText
>>        Change:
>>                S_FALSE      if there is nothing to return, [out] value is
>> NULL
>>        To:
>>                S_FALSE      if there is nothing to return, the values of
>> IA2TextSegment struct are set as follows:  text = NULL, start = 0, end = 0.
>>        Because:
>>                Setting the [out] pointer to NULL does not make sense in
>> pass-by-reference world.
>>
>> _______________________________________________
>> Accessibility-ia2 mailing list
>> [email protected]
>> https://lists.linux-foundation.org/mailman/listinfo/accessibility-ia2
>>
>>     
_______________________________________________
Accessibility-ia2 mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/accessibility-ia2

Reply via email to