I have to admit that #3 would be very useful, and would help plug-in developers. +1 for that.
On Dec 9, 2010, at 11:14 AM, Igor Galić wrote: > > ----- "Leif Hedstrom" <zw...@apache.org> wrote: > >> Hi all, >> >> there's been some discussions about cleaning up how our APIs (SDK) >> deals >> with return values. Right now, it's sort of a mess, with different >> APIs >> using different standards (e.g. return a POD data type, return a >> TSReturnCode, return an int etc.). There are a few suggestions on the >> >> table, each which has pros and cons. I'd like to start the discussion >> on >> this, so we can come to a consensus and make any changes sooner rather >> >> than later. >> >> Here are the ideas that I've heard so far: >> >> 1) Do nothing (or as little as possible). >> >> 2) Do nothing, other than making sure any outright wrong returns are >> fixed (i.e. use of "int" when it should be TSReturnCode). Things >> return >> POD values or pointers stays the same. See TS-271 for example. >> >> 3) Change all APIs to always return TSReturnCode. The prototype for >> many >> functions would then change, to be like >> >> TSReturnCode TSFooApi(type1 in_param1, type2 in _param2, type3 >> *out_param1, type4 *outparam2); >> >> >> >> #3 is obviously the thing with the most work (and changes), and also >> is >> slightly more cumbersome to use in some cases (i.e. where before >> something could return a char*, where NULL means failure, we'd now >> pass >> in a char** pointer, and return TSError on failure). Also, some APIs >> that can never fail would always return TS_Success, which makes it >> slightly more confusing to know when I need to check for a return >> value > > I've been thinking about leaving those functions which don't have > a return value to be void > > But that would eliminate the biggest + with this option. > >> or not (although, a plugin author can of course always check every >> APIs return value). >> >> On the positive side of #3 is that the APIs become very standardized, >> and easier to remember. And there is no guess work as to what return >> value means success or failure, or checking for the wrong return >> values. >> >> Thoughts? > > Complete Consistency. > +1 > >> -- leif >> >> P.s >> If we go with option #1 or #2, there are a few new APIs that should >> most >> likely change, since they currently use the #3 prototype. Not a big >> deal, since there were added in the v2.1.x timeline, so there is no >> compatibility that breaks. > > i > > -- > Igor Galić > > Tel: +43 (0) 664 886 22 883 > Mail: i.ga...@brainsware.org > URL: http://brainsware.org/