Arturo,
Thanks for your comments - I still find it unfortunate that these are
legal:
      str.putc(i, "A");       => OK, assigns "A" to str[i]
      str.putc(i, "AB");    => OK, assigns "B" to str[i]
But this is illegal:
      string x = "A";
      str.putc(i, x);             => Not allowed. Use str.putc(i, x[0]);
I think putc should be removed, since it has no simple "semantic
equivalent".
Bill
 
> -----Original Message-----
> From: Arturo Salz [mailto:Arturo.Salz@synopsys.com] 
> Sent: Thursday, December 09, 2004 1:29 PM
> To: William Paulsen; sv-ec@eda.org
> Subject: Re: [sv-ec][URGENT] email ballot #4, on Erratum 275, 
> voting closes on 15 Dec 2004 
> 
> Bill,
> 
> Just a few comments on your vote, interspersed below.
> 
>     Arturo
> 
> ----- Original Message -----
> From: "William Paulsen" <paulsen@cadence.com>
> To: "Mehdi Mohtashemi" <Mehdi.Mohtashemi@synopsys.COM>; 
> <sv-ec@eda.org>
> Sent: Thursday, December 09, 2004 8:05 AM
> Subject: RE: [sv-ec][URGENT] email ballot #4, on Erratum 275, 
> voting closes on 15 Dec 2004 
> 
> 
> > Mehdi,
> > 
> > Three No votes with comments, and one Yes.
> > 
> > Bill
> > 
> > 
> > > 
> > > ===============Erratum 275, =========
> > >  
> > >  Please respond to the items in this erratum, place an X in 
> > > the  appropriate box and place explanation for No vote. 
> > > 
> > >   Errata 275 (proposal uploaded 12/8/2004, also attached)
> > >    item 1.  The type of a single character within a string is byte
> > > ____ Yes __X__ No
> > > 
> > 
> > A single character should be a "byte unsigned" not just 
> "byte", which is
> > signed.
> > 
> 
>     The type of a string character was already a byte 
> (certainly for reading),
>     thisproposal doesn't change that. Theonly thing this 
> proposal does is
>     generalize the type of a string character for both 
> reading and writing.
>     Whether the character should be unsigned or not is a 
> separate issue
>     that is not part of this vote.
> 
> > Also, I don't like this sentence from Section 3.7, at the end of
> > paragraph 4:
> > "A string shall not contain the special character "\0".
> > 
> > People using strings will expect similar behavior as in C, 
> for example
> > they might want to shorten a string by explicitly putting a 0 in the
> > middle of a string.
> > 
> 
>     That particluar paragraph is not part of this proposal. 
> That sentence
>     is part of the previously approved erratum 334.
> 
>     Note tat SV strings are not C strings. They are dynamic 
> objects whose
>     length exactly matches the contents of the string. 
> Truncating a string
>     by writing a 0-byte in the middle of the string would 
> requires either that 
>     the string contents be reallocated to match the new size 
> or leak memory.
>     This is very different from C strings. Bythe way, users 
> can still get the 
>     same behavior as in C by using a byte array and 
> manipulating the 0-byte
>     terminators explicitly as done in C.
> 
> > 
> > 
> > >    item 2: The putc method has only one prototype: task 
> putc(int i,
> > byte c );
> > > ____ Yes _X___ No
> > 
> > I think the blue text is confusing: It says that if the 
> second argument
> > is an "empty string" then the variable is unaffected.  
> > 
> > But "unaffected" means that the Note about being 
> semantically equivalent
> > to an assignment is confusing and incorrect - this note should be
> > removed.  But it could be replaced with equivalent code 
> that does the
> > checking for 0-length and 0-valued strings.
> > 
> 
>     Since strings cannot contain 0-valued bytes (arratum 334) 
> then attempting
>     to assign a 0-byte to a character in the middle of the 
> string should not be 
>     able to change the value of an embedded character to 0.
>     Therefore, the "Note" part can be removed and made mandatory.
> 
> > Also, this proposal should have examples that state if these common
> > usages are legal or illegal:
> > 
> > str.putc(i, "A");
> > str.putc(i, "AB");
> > 
> > string x = "A";
> > str.putc(i, x);
> > 
> > 
> 
>     These are all governed by the conversion rules to a byte.
>       str.putc(i, "A");       => OK, assigns "A" to str[i]
>       str.putc(i, "AB");    => OK, assigns "B" to str[i]
>       str.putc(i, x);             => Not allowed. Use 
> str.putc(i, x[0]);
> 
> > 
> > > 
> > >    item 5: Typo in example, example should be modified
> > > ____ Yes _X___ No
> > 
> > The example should include this:
> > 
> > string x = "A";
> > str[j] = x;  // OK or not OK?
> > 
> 
>     An example might be useful, but the answer is clear.
>     The type of a string character is byte, thus, str[j] is a byte,
>     and assigning a string to an integral type without a cast is
>     not allowed (erratum 271). Therefore, the example is an error.
> > 
> > > 
> > >    item 8: Usage of word string: Create a new erratum
> > >    for this, and close 275 if all items above
> > pass
> > > _X___ Yes ____ No
> > >  
> > > ================================================================
> > > 
> > > 
> > > 
> > 
> 
> 
> 
Received on Thu Dec  9 11:18:15 2004
This archive was generated by hypermail 2.1.8 : Thu Dec 09 2004 - 11:18:33 PST