Hi Mike, Attached is my feedback on the proposal for 1447. I hope that others start reviewing this writeup since it takes a fair amount of time to work through all of it. There is no way that we will be able to go through it in a conference call, it would take way too much time for that. Neil Michael Burns wrote On 11/28/07 05:49 PM,: > Hi folks, > > I've uploaded the latest revision of the proposal for 1447: > > http://www.eda-stds.org/mantis/file_download.php?file_id=2866&type=bug > > In addition to Shalom's issues, it also contains updates about queues > related to 1702. Hopefully the two are now de-entangled. > > --Mike > > -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. 1. Page 1, 7.4 There is a problem with the wording in the following sentence. The issue is that an array has to have at least one dimension. I think that most people will understand what you currently have here, but we may want to re-word it to be more precise. From: "An array may have any number of unpacked dimensions." To: An array may have one or more unpacked dimensions. 2. Page 2, example at the top of the page The following line seems to have a typo in it. Shouldn't the first ";" be a ","? From: int A[2][3][4], B[2][3][4]; C[5][4]; To: int A[2][3][4], B[2][3][4], C[5][4]; 3. Page 2, 7.5 Typo: There is an extra period after [] in the next to last sentence. 4. Page 2, 7.5 The new text has the following: "The syntax to declare a dynamic array is as follows: data_type array_name index_list; where data_type is the data type of the array elements and index_list contains one or more dynamic dimensions, each indicated by []." Unfortunately this is now a bit inconsistent with the previous paragraph which defines a dynamic array as the following. We only have a dynamic array if the slowest varying dimension is dynamic. "If a dynamic dimension is the most slowly varying dimension, the entire array is a dynamic array. A dynamic dimension in any other position defines a dynamic subarray" One possible way to correct this would be to use the following: "The syntax to declare a dynamic array is as follows: data_type array_name [] [index_list]; where data_type is the data type of the array elements and index_list contains one or more additional dimensions. A dynamic dimension is specified using []." 5. Dynamic dimension versus dynamic array dimension The proposal uses both of the following terms in many places. dynamic dimension dynamic array dimension Shouldn't one term be used consistently throughout? 6. Page 4, Syntax 5-1 I assume that you intend to retain the "box" showing the grammar productions. There should be at least a one-liner shown here, so that the Editor will know where to place it with respect to the new text. 7. Page 4, redundant sentence can be removed, see Mantis 2176 The Champions flagged an issue with the text in the next to the last paragraph. See mantis 2176. The first sentence of this paragraph can be removed. 8. Question Can part of a multidimensional array be assigned to before all dimensions have been constructed? The example in the middle of page 5 shows this. 9. Page 5, initialization expressions that contain dynamic dimensions "When an initialization expression contains dynamic dimensions that vary more rapidly than the dimension the new constructor is sizing, the corresponding dimensions in the left-hand side array or subarray adopt those sizes." This appears to be an enhancement. As written, this behavior is underspecified. The most obvious problem case occurs when the array on the LHS has dynamic dimensions in different places than those which occur in the expression on the RHS. It was my understanding that this initialization process was only meant to occur on the most rapidly varying dimension. I suspect that this new enhancement will be more of a problem than a help at this point. 10. Resizing dynamic dimensions - page 5, paragraph below the first example "Resizing a dimension is destructive, so no data from a dimension's previous sizing operations is saved for user access." As I understand it, the data is lost for the resized dimension and any corresponding more rapidly varying dimensions. For multidimensional arrays it is possible to resize portions of the array while retaining the current data for other portions. I'm not sure that this is clear in the proposal. More examples might help in this regard. 11. Page 5, paragraph below the 2nd set of examples "Dynamic array element values are set when a legal initialization expression contains them or when they receive default values." This sentence isn't too clear about the non-default case. The portion that is unclear is "when a legal initialization expression contains them". 12. 7.5.2 Size() There isn't anything in the proposal about 7.5.2 but now that I read through the proposal it makes we wonder about the built-in methods for arrays that have dynamic dimensions but have a fixed sized slowest varying dimension. The proposal refers to these as dynamic sub-arrays. This creates the need for some changes to the descriptions of the built-in methods. From: "The size() method returns the current size of a dynamic array or returns zero if the array has not been created." To: "The size() method returns the current size of a dynamic dimension or returns zero if the dynamic dimension has not been created." 13. 7.5.3 Delete() From: "The delete() method empties the array, resulting in a zero-sized array." To: "The delete() method empties the dynamic dimension, resulting in a zero-sized dynamic subarray." 14. Page 6, last paragraph, 2nd bullet From: "If a fixed dimension in the source array..." To: "If a fixed-size dimension in the source array..." 15. Page 7, examples int D [3][][]; // multiple dynamic dimensions D[3] = new [2]; // initialize slowest varying dynamic dimension (see 7.5.1); D[3][0] = new [100]; A = D[3]; // A[0:1][100:1] and subarray D[3][0:1][0:99] both ... 1) Array D ranges from 0:2, "D[3] = " is not valid. 2) "D[3][0] =" is not valid. 3) "A = D[3];" is not valid. 16. Page 7, range specification for dynamic dimension sized by new() It appears that the only place where the range specification created by new() is described is within the examples on page 7. There should be a description of this in 7.5.1 17. Page 9, A.10, item 40. The example in the middle of page 5 violates the restriction of this footnote. int isrc[][][], idest[][][]; isrc = new [2]; isrc[0] = new [3]; isrc[1] = new [5]; idest = new [2] (isrc); // set size for idest[0] = 3 and for idest[1] = 5 18. Page 9, A.10, item 41. I have no idea what this is trying to say.Received on Fri Nov 30 17:06:08 2007
This archive was generated by hypermail 2.1.8 : Fri Nov 30 2007 - 17:06:45 PST