[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| [m2t-dev] [MTL] standard library additions | 
| Hi Arjan, 
 While using MTL during the tests I perform on the current
implementation, I stumbled upon things difficult (or plain bothersome)
to do in OCL and for which we could provide convenience additional
operations in the standard library. Namely :
 
 1) Checking that a String starts with a given substring
(self.substring(1, x) = 'substring')
 2) Checking that a String ends with a given substring
(self.substring(x, self.size()) = 'substring')
 3) Fetching all ancestors (of a given type) for a given element (OCL
_expression_ is too long to fit on a human-readable mail :))
 4) Fetching all descendants (of a given type) for a given element (same
as above)
 
 Additionally, The specification provides a "substitute" operation, but
not its "substituteAll" counterpart and both "replace" and "replaceAll"
operations that operate on regular expressions. Do you think it would
be possible to add the following operations to the MTL standard library
specifications :
 
 EOperations that would be added to the "String" OCL primitive type
 1) endsWith( String substring ) : Boolean
 Returns
 trueif self ends with the substringsubstring,falseotherwise.2) startsWith( String substring ) : Boolean
 Returns
 trueif self starts with the substringsubstring,falseotherwise.3) substituteAll( String substring, String replacement ) : String
 Substitutes all substrings
 substringin self by substringreplacementand returns the resulting string. If there is
no occurrence of the substring, The original string is returned.substringandreplacementare not treated as regular expressions.4) replace( String substring, String replacement ) : String
 Substitutes the first occurence of substring
 substringin
self by substringreplacementand returns the resulting
string. If there is no occurrence of the substring, The original string
is returned.substringandreplacementare
treated as regular expressions.5) replaceAll( String substring, String replacement ) : String
 Substitutes all substrings
 substringin self by substringreplacementand returns the resulting string. If there is
no occurrence of the substring, The original string is returned.substringandreplacementare treated as regular expressions.
 EOperations that would be added to the "OCLType" OCL primitive type
 6) ancestor( ) : Sequence(T)
 Returns all super-elements of self.
 7) ancestor( OCLType type ) : Sequence(T)
 Returns all super-elements of self which type is equal to
  type.8) descendant( ) : Sequence(T)
 Returns all direct and indirect children of self.
 9) descendant( OCLType type ) : Sequence(T)
 Returns all direct and indirect children of self which type is equal to
 
type.
 For now, I have implemented the first 5 (didn't give a shot to the last
4 as yet) in a "non-standard" library but I think all are more than
convenient to provide for an m2t language.
 
 Regards,
 
 Laurent Goubet
 Obeo
 
 | 
begin:vcard
fn:Laurent Goubet
n:Goubet;Laurent
org:<a href="http://www.obeo.fr/">Obeo</a>
email;internet:laurent.goubet@xxxxxxx
url:http://www.obeo.fr
version:2.1
end:vcard