From: Jerry <lan...@qw...> - 2006-07-08 00:05:34
|
This is a continuation of an earlier thread about identifying which C subroutines in plplot.h return scalars, since the C syntax is ambiguous with respect to whether the intention is to return e.g. a float scalar or to pass an array of floats. I downloaded the documentation in HTML format and made a list of files that begin with "pl" and which contain the word "output." (The Spotlight function in OS X rocks for this kind of thing.) Some of the hits were spurious in their use of "output" which files I ignored. I took the API reference literally if it said that a parameter is an output, and made the corresponding Ada parameter say "out", rather than "in out" which would be allowed by a C pointer or a Pascal or Modula-3 "var". The following subprograms in the Common API had output scalars which required special attention to make sure that Ada understands that some arguments are output scalars and not pointers to arrays. I've included a few notes that may be of interest to the documentation writers and to the Modula-3 binding writer. Please note that I have used 5.5.3 for plplot.h and 5.6.1 for the API documentation. Also, note that not all routines which return results begin with "plg". plcalc_world plgchr plgcol0 API reference says this is 8 bits but plplot.h says integer plgcolbg API reference says this is 8 bits but plplot.h says integer plgcompression plgdev Missing from Modula-3 plgdidev plgdiori plgdiplt plgfam plgfci Missing from Modula-3 plglevel plgpage plgriddata API description of parameter "type" is incomplete. Missing from Modula-3 plgspa plgstrm plgver Missing from Modula-3 plgvpd plgvpw plgxax plgyax plgzax plhlsrgb Missing from Modula-3 plmkstrm plrgbhls API description reverses "input" and "output". Missing from Modula-3 plstripc plxormod Other Notes: plexit is listed in the API reference but does not appear in plplot.h. Note that I am using version 5.5.3 and the API appears to be for 5.6.1. plsdev In API description, the parameter is marked as output but is input. plsetopt Ditto both args (Note: not part of common API) Jerry |
From: Henning T. <pl...@he...> - 2006-07-12 16:01:45
|
On Fri, 7 Jul 2006, Jerry wrote: > I took the API reference literally if it said that a parameter is an > output, and made the corresponding Ada parameter say "out", rather > than "in out" which would be allowed by a C pointer or a Pascal or > Modula-3 "var". Since Modula-3 does not know OUT parameters, I turn such parameters into return values, possibly bundled in RECORDs, when there are multiple ones. Because of Modula-3's garbage collector, I can nicely work with references, without destruction of input parameters. This allows a very functional style of programming. But, as far as I know, Ada does not have a garbage collector and thus treating output parameters as OUT is certainly the best way. > The following subprograms in the Common API had output scalars which > required special attention to make sure that Ada understands that > some arguments are output scalars and not pointers to arrays. I've > included a few notes that may be of interest to the documentation > writers and to the Modula-3 binding writer. Please note that I have > used 5.5.3 for plplot.h and 5.6.1 for the API documentation. Also, > note that not all routines which return results begin with "plg". I started on some specialised interface file (was it Java or Python?), and I have probably missed additions to the main header file. Originally I hoped that SWIG allows me to keep to the main development path. However since the main plplotcapi.i has not enough type information, this has failed so far. Either we come to an agreement to replace plplotcapi.i by a file with more specific types (which wouldn't bother C compilers, because they keep on seeing 'int's) or I'm happy if you add missing functions to the interface prepared for Modula-3, such that we can share our work. |