You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(80) |
Jun
(71) |
Jul
(34) |
Aug
(58) |
Sep
|
Oct
(220) |
Nov
(146) |
Dec
(36) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(28) |
Feb
(152) |
Mar
(293) |
Apr
(213) |
May
(158) |
Jun
(96) |
Jul
(78) |
Aug
(39) |
Sep
(169) |
Oct
(128) |
Nov
(83) |
Dec
(149) |
2003 |
Jan
(155) |
Feb
(14) |
Mar
(60) |
Apr
(86) |
May
(92) |
Jun
(109) |
Jul
(25) |
Aug
(44) |
Sep
(10) |
Oct
(39) |
Nov
(37) |
Dec
(128) |
2004 |
Jan
(71) |
Feb
(199) |
Mar
(192) |
Apr
(360) |
May
(93) |
Jun
(75) |
Jul
(51) |
Aug
(195) |
Sep
(390) |
Oct
(186) |
Nov
(173) |
Dec
(331) |
2005 |
Jan
(102) |
Feb
(154) |
Mar
(160) |
Apr
(88) |
May
(79) |
Jun
(78) |
Jul
(126) |
Aug
(94) |
Sep
(110) |
Oct
(187) |
Nov
(188) |
Dec
(31) |
2006 |
Jan
(12) |
Feb
(40) |
Mar
(123) |
Apr
(102) |
May
(62) |
Jun
(36) |
Jul
(19) |
Aug
(31) |
Sep
(59) |
Oct
(67) |
Nov
(57) |
Dec
(35) |
2007 |
Jan
(153) |
Feb
(53) |
Mar
(27) |
Apr
(11) |
May
(49) |
Jun
(3) |
Jul
(56) |
Aug
(58) |
Sep
(30) |
Oct
(57) |
Nov
(47) |
Dec
(155) |
2008 |
Jan
(71) |
Feb
(68) |
Mar
(79) |
Apr
(72) |
May
(82) |
Jun
(10) |
Jul
(19) |
Aug
(25) |
Sep
(17) |
Oct
(10) |
Nov
(32) |
Dec
(9) |
2009 |
Jan
(26) |
Feb
(1) |
Mar
(1) |
Apr
(12) |
May
(16) |
Jun
(7) |
Jul
(12) |
Aug
(22) |
Sep
(21) |
Oct
|
Nov
(7) |
Dec
|
2010 |
Jan
(3) |
Feb
(3) |
Mar
(1) |
Apr
|
May
(5) |
Jun
(5) |
Jul
|
Aug
|
Sep
(4) |
Oct
(2) |
Nov
|
Dec
(6) |
2011 |
Jan
(3) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(8) |
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(8) |
Jun
|
Jul
(3) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2013 |
Jan
|
Feb
(11) |
Mar
(1) |
Apr
(4) |
May
|
Jun
|
Jul
(2) |
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
(5) |
Feb
|
Mar
|
Apr
(3) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(3) |
Nov
(2) |
Dec
(1) |
2015 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(6) |
2016 |
Jan
(8) |
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
|
2017 |
Jan
(3) |
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2018 |
Jan
(1) |
Feb
|
Mar
(4) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
|
Dec
|
2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(2) |
2022 |
Jan
(3) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
2023 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Colin P. A. <co...@co...> - 2007-12-01 19:15:34
|
>>>>> "Eric" == Eric Bezault <er...@go...> writes: Eric> Colin Paul Adams wrote: >> I have changed the m_small_enough precondition in the creation >> procedures from h <= 0 to h < 0, as otherwise it was impossible >> to create offsets of zero hours and a few minutes. Eric> I understand the problem, but I don't think that the fix is Eric> correct. Indeed, now it will not be possible anymore to have Eric> offsets of zero hours and minus a few minutes. In case of Eric> `make_hours_minutes' for example I think that we should Eric> rather have: Eric> h_large_enough: h > -Hours_in_day h_small_enough: h < Eric> Hours_in_day m_large_enough_positive: h > 0 implies m >= 0 Eric> m_small_enough_positive: h > 0 implies m < Minutes_in_hour Eric> m_large_enough_negative: h < 0 implies m > -Minutes_in_hour Eric> m_small_enough_negative: h < 0 implies m <= 0 Eric> m_large_enough_null: h = 0 implies m > -Minutes_in_hour Eric> m_small_enough_null: h = 0 implies m < Minutes_in_hour OK. I have made that change, and similar in others. -- Colin Adams Preston Lancashire |
From: Eric B. <er...@go...> - 2007-12-01 18:12:34
|
Colin Paul Adams wrote: > I have changed the m_small_enough precondition in the creation > procedures from h <= 0 to h < 0, as otherwise it was impossible to > create offsets of zero hours and a few minutes. I understand the problem, but I don't think that the fix is correct. Indeed, now it will not be possible anymore to have offsets of zero hours and minus a few minutes. In case of `make_hours_minutes' for example I think that we should rather have: h_large_enough: h > -Hours_in_day h_small_enough: h < Hours_in_day m_large_enough_positive: h > 0 implies m >= 0 m_small_enough_positive: h > 0 implies m < Minutes_in_hour m_large_enough_negative: h < 0 implies m > -Minutes_in_hour m_small_enough_negative: h < 0 implies m <= 0 m_large_enough_null: h = 0 implies m > -Minutes_in_hour m_small_enough_null: h = 0 implies m < Minutes_in_hour -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |
From: Colin P. A. <co...@co...> - 2007-12-01 17:35:22
|
I have changed the m_small_enough precondition in the creation procedures from h <= 0 to h < 0, as otherwise it was impossible to create offsets of zero hours and a few minutes. -- Colin Adams Preston Lancashire |
From: Colin P. A. <co...@co...> - 2007-11-19 05:31:29
|
>>>>> "Eric" == Eric Bezault <er...@go...> writes: Eric> Bru...@ao... wrote: >> Eric: >> >> I am looking to read and XML file with Eiffel and it seems that >> your Gobo classes can do this. I looked at the examples for >> Gobo and I don't see any example that actually read AND USE an >> XML file. >> >> Can you point me to any example that show how to use Gobo to >> read the attributes of an XML file? Ideally, it would include >> the input XML file as well. Hello Bruce, Some of the examples in the $GOBO/example/xml tree do actually read the attributes of an XML file. What they don't do is to specifically process the attributes within the example class itself - this is done in the tree building class XM_CALLBACKS_TO_TREE_FILTER. The general approach to processing attributes is as Neal has described. If you want a more detailed answer, I would suggest describing your scenario in more detail. -- Colin Adams Preston Lancashire |
From: Neal L. <ne...@3d...> - 2007-11-18 22:47:50
|
At 02:13 PM 11/18/2007, Eric Bezault wrote: >Bru...@ao... wrote: > > Eric: > > > > I am looking to read and XML file with Eiffel and it seems that your > > Gobo classes can do this. I looked at the examples for Gobo and I don't > > see any example that actually read AND USE an XML file. > > > > Can you point me to any example that show how to use Gobo to read the > > attributes of an XML file? Ideally, it would include the input XML file > > as well. Hi Bruce, The two approaches I've used are: 1) Create a descendent of XM_CALLBACKS and process the attributes as the parser sends them to your class. An example of this approach may be found at http://swete.svn.sourceforge.net/viewvc/swete/trunk/swete/test/swete_script_callbacks.e?view=markup 2) Use XM_TREE_CALLBACKS_PIPE to create the xml tree in memory and then obtain the information you are looking for from that tree. For example: update_virtual_domain_hosts: BOOLEAN is -- Update table containing all virtual domain hosts from file -- Returns true if table was updated -- false if there was a problem reading the file and the hash table was not updated local temp_virtual_domain_hosts: DS_HASH_TABLE [VIRTUAL_DOMAIN_HOST, STRING] file: KL_TEXT_INPUT_FILE hosts: DS_LIST [XM_ELEMENT] aliases: DS_LIST [XM_ELEMENT] new_host: VIRTUAL_DOMAIN_HOST host_element: XM_ELEMENT read_exception: BOOLEAN do if not read_exception then create temp_virtual_domain_hosts.make (15) create host_parser.make create callbacks.make host_parser.set_callbacks (callbacks.start) create file.make (configuration.virtual_hosts_file_name) file.open_read host_parser.parse_from_stream (file) hosts := callbacks.tree.document.root_element.elements from hosts.start until hosts.after loop host_element := hosts.item (hosts.index) create new_host new_host.set_host_name (host_element.attribute_by_name ("virtual_host_name").value) new_host.set_company (host_element.attribute_by_name ("company").value) new_host.set_company_abbreviation (host_element.attribute_by_name ("company_abbreviation").value) new_host.set_banner_text (host_element.attribute_by_name ("banner_text").value) new_host.set_url (host_element.attribute_by_name ("url").value) new_host.set_style_sheet (host_element.attribute_by_name ("style_sheet").value) new_host.set_logo (host_element.attribute_by_name ("logo").value) new_host.set_logo_width (host_element.attribute_by_name ("logo_width").value.to_integer) new_host.set_logo_height (host_element.attribute_by_name ("logo_height").value.to_integer) new_host.set_default_state (host_element.attribute_by_name ("default_state").value) new_host.set_required_fields_color (host_element.attribute_by_name ("required_fields_color").value) -- new_host.set_program_ready_message (host_element.attribute_by_name ("program_ready_message").value) new_host.set_faq_price_answer (host_element.attribute_by_name ("faq_price_answer").value) new_host.set_price (host_element.attribute_by_name ("price").value.to_integer) if equal (host_element.attribute_by_name ("use_ssl").value.as_upper, "YES") then new_host.set_use_ssl end -- if equal (host_element.attribute_by_name ("show_requirement_at_greeting").value.as_upper, "YES") then -- new_host.set_show_requirement_at_greeting -- end aliases := host_element.element_by_name ("aliases").elements from aliases.start until aliases.after loop temp_virtual_domain_hosts.force_last (new_host, aliases.item (aliases.index).text) aliases.forth end hosts.forth end virtual_domain_hosts.copy (temp_virtual_domain_hosts) file.close end Result := not read_exception rescue read_exception := True retry end host_parser: XM_EIFFEL_PARSER callbacks: XM_TREE_CALLBACKS_PIPE Here is the associated XML: <?xml version="1.0" encoding="UTF-8" ?> - <host_list xmlns="http://www.freesafetyprogram.com/hosts"> - <!-- Virtual Domain Host Content Author: Neal L Lester [nea...@3d...] date: $Date: 2005/03/07 14:45:35 $ revision: $Revision: 1.3.2.3 $ copyright: (c) Neal L Lester --> - <host virtual_host_name="www.mysafetyprogram.com" company="mysafetyprogram.com" company_abbreviation="MSP" banner_text="Click here for Bay Area safety consulting services" url="http://www.mysafetyprogram.com/resume.htm" style_sheet="fsp.css" logo="ff_hepa.gif" logo_width="56" logo_height="80" default_state="CA" required_fields_color="Green" faq_price_answer="Viewing the final created program costs $249. You may view, print, and modify the program (without limitation) for up to one year at no additional cost." price="249" use_ssl="yes"> - <aliases> <alias>www.mysafetyprogram.com</alias> <alias>mysafetyprogram.com</alias> <alias>www.freesafetyprogram.com</alias> <alias>freesafetyprogram.com</alias> <alias>default</alias> </aliases> </host> </host_list> Neal |
From: Eric B. <er...@go...> - 2007-11-18 22:14:15
|
Bru...@ao... wrote: > Eric: > > I am looking to read and XML file with Eiffel and it seems that your > Gobo classes can do this. I looked at the examples for Gobo and I don't > see any example that actually read AND USE an XML file. > > Can you point me to any example that show how to use Gobo to read the > attributes of an XML file? Ideally, it would include the input XML file > as well. > > Thanks, > > --Bruce Mount > Cambridge, MA, USA Colin or Franck, can you help Bruce? I'm sure you have some examples like that in the Gobo package. -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |
From: Colin P. A. <co...@co...> - 2007-11-17 10:27:52
|
>>>>> "Eric" == Eric Bezault <er...@go...> writes: Eric> Colin Paul Adams wrote: >> Is there a way to get the information provided from this class >> within Gobo? I want to be able to use the functionality in the >> XPath library. >> >> Initial searching suggests the answer is no. >> >> But SE has FILE_INFORMATION - I should think it will be easy to >> add a class in Gobo unifying the two. I can do this if it is >> needed. Eric> Perhaps we should decide first what to do with SE. I Eric> suggest that we wait until the end of the month to see if Eric> Daniel resumes his work on SE 1.2 or not. Or we could ask Eric> him now what his current plans are. I'm copying this message to the SE 1.2 list: Hello Daniel, We need to know what your plans are for SE 1.2. Ultimately, we will have to drop support for SE at some time if it doesn't conform to ECMA. We understand that this conflicts with the goals of the SE transitional project. Perhaps you might consider changing the goals (if so, we would like to know) to support ECMA (or at least use free elks). If not, then we have to make a decision as to how long we continue to support SE 1.2. Right now, the question of support for STRING_GENERAL has become urgent. Already at work, I have had to duplicate a Gobo routine with one minor edit (that it accepted a STRING_GENERAL instead of a STRING_8). As it was just one routine, such a bodge is acceptable for the short term, but we will be faced with doing this a lot. This will not be acceptable, so Gobo must very soon support STRING_GENERAL. Last time I asked you, you said you had not decided on whether you would support this or not. You also said you might well be making another release in November 2007. -- Colin Adams Preston Lancashire |
From: Eric B. <er...@go...> - 2007-11-17 09:38:04
|
Colin Paul Adams wrote: > Is there a way to get the information provided from this class within > Gobo? I want to be able to use the functionality in the XPath library. > > Initial searching suggests the answer is no. > > But SE has FILE_INFORMATION - I should think it will be easy to add a > class in Gobo unifying the two. I can do this if it is needed. Perhaps we should decide first what to do with SE. I suggest that we wait until the end of the month to see if Daniel resumes his work on SE 1.2 or not. Or we could ask him now what his current plans are. -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |
From: Colin P. A. <co...@co...> - 2007-11-17 07:29:35
|
Is there a way to get the information provided from this class within Gobo? I want to be able to use the functionality in the XPath library. Initial searching suggests the answer is no. But SE has FILE_INFORMATION - I should think it will be easy to add a class in Gobo unifying the two. I can do this if it is needed. -- Colin Adams Preston Lancashire |
From: Eric B. <er...@go...> - 2007-11-16 14:44:42
|
I tend to agree with Manu. First, when calling Eiffel from C, I think that we should make the difference between a C program which calls some Eiffel code, and an Eiffel program which calls some C code which then calls some Eiffel code. I think that the CECIL mechanism has been designed for the first case. In the second case, Manu's example works fine without using CECIL. I think that there is a typo though in Manu's example: > c_set_address (your_eiffel_routine_callback) should probably be: c_set_address ($your_eiffel_routine_callback) Anyway, I prefer this technique better because the other one with `eif_type_id' and `eif_procedure' has the drawback that we don't get a compilation error when we rename the class or the feature. And if I remember correctly, this technique of passing $feature_name to the C side is what has already been used to implement Expat callbacks in the XML library. As for external features, you should note that gec also has a limitation when passing $feature_name to the C side. If the feature has non-expanded argument types then you may experience some weird behavior. But with expanded arguments, it seems to work. At least the example below works with gec under Windows: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class FOO create make feature make is do c_set_address ($f) c_set_object ($Current) foo_c end c_set_address (p: POINTER) is external "C inline use <foo_c.h>" alias "signal_callback = $p;" end c_set_object (a: POINTER) is external "C inline use <foo_c.h>" alias "signal_object = eif_protect($a);" end f (i: INTEGER) is do print (i) end foo_c is external "C" end end ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #include "ge_eiffel.h" #include "ge_gc.h" extern EIF_REFERENCE signal_object; extern void (*signal_callback)(EIF_REFERENCE, EIF_INTEGER_32); extern void foo_c(Void); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #include "foo_c.h" EIF_REFERENCE signal_object; void (*signal_callback)(EIF_REFERENCE, EIF_INTEGER_32); void foo_c() { (signal_callback) (eif_adopt(signal_object), 1); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Eric Bezault mailto:er...@go... http://www.gobosoft.com Emmanuel Stapf [ES] wrote: > The easiest way for doing this kind of callback is to store the eiffel > routine address by doing: > > c_set_address (p: POINTER) is > external > "C inline use <your.h>" > alias > "signal_callback = $p" > end > > where you do: > > c_set_address (your_eiffel_routine_callback) > > > To store the object needed for the call: > > c_set_object (a: POINTER) is > external > "C inline use <your.h>" > alias > "signal_object = eif_protect($a);" > end > > where you do: > > c_set_object ($Current) -- Current or any other entity > > Then the C code should simply look like: > > (signal_callback) (eif_adopt(signal_object), sig) > > That way there is no need to worry about freezing objects. > > Manu > >> -----Original Message----- >> From: gob...@li... >> [mailto:gob...@li...] On >> Behalf Of Berend de Boer >> Sent: Thursday, November 15, 2007 3:01 PM >> To: Gobo Developers Mailing List >> Subject: [gobo-eiffel-develop] Callback from C to Eiffel >> >> Hi Eric, >> >> Can I callback from C to Eiffel? Need this at a few places in >> eposix, for example to support signals. >> >> For example this the code used for ISE: >> >> EIF_TYPE_ID tid; >> EIF_OBJECT temp; >> if ( signal_switch != NULL ) { >> temp = signal_switch; >> signal_switch = NULL; >> eif_unfreeze (frozen_signal_switch); >> frozen_signal_switch = NULL; >> eif_wean (temp); >> } >> if ( a_switch != NULL ) { >> tid = eif_type_id ("STDC_SIGNAL_SWITCH"); >> signal_callback = eif_procedure ("switcher", tid); >> if (signal_callback == 0) >> { eif_panic ("switcher feature not found."); } >> frozen_signal_switch = eif_freeze (a_switch); >> signal_switch = eif_adopt (a_switch); >> } >> >> I.e. the callback pointer is "calculated" at set time and >> stored in signal_switch. When a signal occurs, this call is made: >> >> (signal_callback) (frozen_signal_switch, sig); >> >> >> SmartEiffel has a different strategy. When a feature is >> exported, SE simply generates a prototype for it in the cecil.h file: >> >> /* Available Eiffel routines via -cecil: >> */ >> void stdc_exit_switch_at_exit(void* C); >> void stdc_signal_switch_switcher(void* C,T2 a1); >> >> And within C I can simply call stdc_signal_switch_switcher to >> make the callback to Eiffel. >> >> -- >> Cheers, >> >> Berend de Boer >> |
From: Emmanuel S. [ES] <ma...@ei...> - 2007-11-15 23:36:01
|
The easiest way for doing this kind of callback is to store the eiffel routine address by doing: c_set_address (p: POINTER) is external "C inline use <your.h>" alias "signal_callback = $p" end where you do: c_set_address (your_eiffel_routine_callback) To store the object needed for the call: c_set_object (a: POINTER) is external "C inline use <your.h>" alias "signal_object = eif_protect($a);" end where you do: c_set_object ($Current) -- Current or any other entity Then the C code should simply look like: (signal_callback) (eif_adopt(signal_object), sig) That way there is no need to worry about freezing objects. Manu > -----Original Message----- > From: gob...@li... > [mailto:gob...@li...] On > Behalf Of Berend de Boer > Sent: Thursday, November 15, 2007 3:01 PM > To: Gobo Developers Mailing List > Subject: [gobo-eiffel-develop] Callback from C to Eiffel > > Hi Eric, > > Can I callback from C to Eiffel? Need this at a few places in > eposix, for example to support signals. > > For example this the code used for ISE: > > EIF_TYPE_ID tid; > EIF_OBJECT temp; > if ( signal_switch != NULL ) { > temp = signal_switch; > signal_switch = NULL; > eif_unfreeze (frozen_signal_switch); > frozen_signal_switch = NULL; > eif_wean (temp); > } > if ( a_switch != NULL ) { > tid = eif_type_id ("STDC_SIGNAL_SWITCH"); > signal_callback = eif_procedure ("switcher", tid); > if (signal_callback == 0) > { eif_panic ("switcher feature not found."); } > frozen_signal_switch = eif_freeze (a_switch); > signal_switch = eif_adopt (a_switch); > } > > I.e. the callback pointer is "calculated" at set time and > stored in signal_switch. When a signal occurs, this call is made: > > (signal_callback) (frozen_signal_switch, sig); > > > SmartEiffel has a different strategy. When a feature is > exported, SE simply generates a prototype for it in the cecil.h file: > > /* Available Eiffel routines via -cecil: > */ > void stdc_exit_switch_at_exit(void* C); > void stdc_signal_switch_switcher(void* C,T2 a1); > > And within C I can simply call stdc_signal_switch_switcher to > make the callback to Eiffel. > > -- > Cheers, > > Berend de Boer > |
From: Berend de B. <be...@po...> - 2007-11-15 23:01:24
|
Hi Eric, Can I callback from C to Eiffel? Need this at a few places in eposix, for example to support signals. For example this the code used for ISE: EIF_TYPE_ID tid; EIF_OBJECT temp; if ( signal_switch !=3D NULL ) { temp =3D signal_switch; signal_switch =3D NULL; eif_unfreeze (frozen_signal_switch); frozen_signal_switch =3D NULL; eif_wean (temp); } if ( a_switch !=3D NULL ) { tid =3D eif_type_id ("STDC_SIGNAL_SWITCH"); signal_callback =3D eif_procedure ("switcher", tid); if (signal_callback =3D=3D 0) { eif_panic ("switcher feature not found."); } frozen_signal_switch =3D eif_freeze (a_switch); signal_switch =3D eif_adopt (a_switch); } I.e. the callback pointer is "calculated" at set time and stored in signal_switch. When a signal occurs, this call is made: (signal_callback) (frozen_signal_switch, sig); SmartEiffel has a different strategy. When a feature is exported, SE simply generates a prototype for it in the cecil.h file: /* Available Eiffel routines via -cecil: */ void stdc_exit_switch_at_exit(void* C); void stdc_signal_switch_switcher(void* C,T2 a1); And within C I can simply call stdc_signal_switch_switcher to make the callback to Eiffel. =2D-=20 Cheers, Berend de Boer |
From: Eric B. <er...@go...> - 2007-11-11 16:50:55
|
Colin Paul Adams wrote: > The re @.@ matches two @ characters separated by a single character. > > If that character is a non-ascii Unicode character, then the trick > Franck suggested of replacing both the data and the re with their > utf-8 byte sequences doesn't work, as the . will match only one byte. You'll have to replace '.' by it's uft-8 equivalent. Something like that: ([\0-\9]|[\11-\x7F]|([\x80-\xFF][\0-\x7F])|......) I guess you see what I mean. -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |
From: Colin P. A. <co...@co...> - 2007-11-11 16:29:45
|
The re @.@ matches two @ characters separated by a single character. If that character is a non-ascii Unicode character, then the trick Franck suggested of replacing both the data and the re with their utf-8 byte sequences doesn't work, as the . will match only one byte. -- Colin Adams Preston Lancashire |
From: Colin P. A. <co...@co...> - 2007-11-10 14:39:41
|
>>>>> "Eric" == Eric Bezault <er...@be...> writes: Eric> Colin Paul Adams wrote: >>>>>>> "Colin" == Colin Paul Adams <co...@co...> >>>>>>> writes: >> Eric> What about: <snip> Eric> I think that we really need to allocate a string with a Eric> capacity of 'subject_end - subject_start + 1' (and not just Eric> 'subject_end - subject_start'). I implemented something that was working, but this looks better. I'll check it in later this weekend if all the tests pass. -- Colin Adams Preston Lancashire |
From: Eric B. <er...@be...> - 2007-11-10 14:15:49
|
Colin Paul Adams wrote: >>>>>> "Colin" == Colin Paul Adams <co...@co...> writes: > > Colin> I don't know if that is the correct result to return, but I > Colin> can't think of any other at the moment. > > Colin> That wasn't sufficient, as the postcondition all_matched > Colin> doesn't hold. I will have to dig deeper. What about: replace_all (a_replacement: STRING): STRING is -- Substring of `subject' between `subject_start' and `subject_end' -- where the whole matched string has been repeatedly replaced by -- `a_replacement'; All occurrences of \n\ in `a_replacement' will -- have been replaced by the corresponding n-th captured substrings -- if any require is_matching: is_matching a_replacement_not_void: a_replacement /= Void same_type: ANY_.same_types (a_replacement, subject) do Result := STRING_.new_empty_string (subject, subject_end - subject_start + 1) append_replace_all_to_string (Result, a_replacement) ensure all_matched: not has_matched replace_not_void: Result /= Void same_type: ANY_.same_types (Result, subject) end I think that we really need to allocate a string with a capacity of 'subject_end - subject_start + 1' (and not just 'subject_end - subject_start'). -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |
From: Colin P. A. <co...@co...> - 2007-11-10 11:56:28
|
>>>>> "Colin" == Colin Paul Adams <co...@co...> writes: Colin> I don't know if that is the correct result to return, but I Colin> can't think of any other at the moment. Colin> That wasn't sufficient, as the postcondition all_matched Colin> doesn't hold. I will have to dig deeper. This might be better - at least the contract holds: replace_all (a_replacement: STRING): STRING is -- Substring of `subject' between `subject_start' and `subject_end' -- where the whole matched string has been repeatedly replaced by -- `a_replacement'; All occurrences of \n\ in `a_replacement' will -- have been replaced by the corresponding n-th captured substrings -- if any require is_matching: is_matching a_replacement_not_void: a_replacement /= Void same_type: ANY_.same_types (a_replacement, subject) do if subject_end = subject_start then Result := STRING_.new_empty_string (subject, subject_end - subject_start) append_replace_all_to_string (Result, a_replacement) else Result := subject append_replace_all_to_string (Result, a_replacement) end ensure all_matched: not has_matched replace_not_void: Result /= Void same_type: ANY_.same_types (Result, subject) end -- Colin Adams Preston Lancashire |
From: Colin P. A. <co...@co...> - 2007-11-10 11:50:12
|
Colin> I don't know if that is the correct result to return, but I Colin> can't think of any other at the moment. That wasn't sufficient, as the postcondition all_matched doesn't hold. I will have to dig deeper. -- Colin Adams Preston Lancashire |
From: Colin P. A. <co...@co...> - 2007-11-10 11:41:58
|
In this routine, if_subject_end is zero, and subject_start is 1, then the pre-condition of {KL_STRING_ROUTINES}.new_empty_string is violated. Accordingly, I have re-coded it to read: replace_all (a_replacement: STRING): STRING is -- Substring of `subject' between `subject_start' and `subject_end' -- where the whole matched string has been repeatedly replaced by -- `a_replacement'; All occurrences of \n\ in `a_replacement' will -- have been replaced by the corresponding n-th captured substrings -- if any require is_matching: is_matching a_replacement_not_void: a_replacement /= Void same_type: ANY_.same_types (a_replacement, subject) do if subject_end = subject_start then Result := STRING_.new_empty_string (subject, subject_end - subject_start) append_replace_all_to_string (Result, a_replacement) else Result := subject end ensure all_matched: not has_matched replace_not_void: Result /= Void same_type: ANY_.same_types (Result, subject) end I don't know if that is the correct result to return, but I can't think of any other at the moment. -- Colin Adams Preston Lancashire |
From: Eric B. <er...@go...> - 2007-11-09 21:33:21
|
pahihu wrote: > Hi, > > You could find the Windows 64bit binaries at > > http://web.t-online.hu/edesignweb/gobo37-bin-win-64bit.7z > > Hope this helps, > Andras Pahi > > --- In eif...@ya..., Eric Bezault <ericb@...> wrote: >> Vitaliy Filin wrote: >>> What about 64 bit version? >> The Eiffel library classes should work fine in 64 bit. >> If you want to have the Gobo Eiffel tools compiled in 64 bit, >> you'll have to do that yourself (using the install procedure >> below). You're then welcome to send me the binary files generated >> in your bin directory so that I can make them available >> in: >> >> https://sourceforge.net/project/showfiles.php?group_id=24591 Thank you. It's now available from the Gobo project download page on SourceForge. If other people want to share their binary files generated on other platforms, they are welcome. I'll make them available as well. -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |
From: Eric B. <er...@go...> - 2007-11-09 19:45:04
|
Vitaliy Filin wrote: > What about 64 bit version? The Eiffel library classes should work fine in 64 bit. If you want to have the Gobo Eiffel tools compiled in 64 bit, you'll have to do that yourself (using the install procedure below). You're then welcome to send me the binary files generated in your bin directory so that I can make them available in: https://sourceforge.net/project/showfiles.php?group_id=24591 -- Eric Bezault mailto:er...@go... http://www.gobosoft.com >> In order to avoid binary file incompatibilities between >> operating systems, the Gobo package does not contain executables >> anymore. Instead of that, the directory $GOBO/bin contains the >> C files of the Gobo Eiffel compiler which will be used by a script >> to populate this directory with the binary files for your platform. >> When installing the Gobo package, you will now have to run either: >> >> %GOBO%\install.bat msc >> >> under Windows, or: >> >> $GOBO/install.sh gcc >> >> under Unix/Linux in order to generate the binary files >> of the Gobo tools in the directory $GOBO/bin. |
From: Eric B. <er...@go...> - 2007-11-09 19:42:40
|
Colin Paul Adams wrote: >>>>>> "Eric" == Eric Bezault <er...@go...> writes: > > Eric> Hello, A new release of Gobo is available from the usual > Eric> location: > > Hooray! > > But looking at the list of known defects, it is a litttle short. > > There are four known defects in the XML parser, for starters. One of > which even has an entry on the bug tracker (1727015). In fact there are other bugs that I didn't report yet. My plan is to report them in the bug tracker and take more often advantage of the bug tracker in the future. I should therefore remove the html page about known bugs, or modify this page so that it points to the bug tracker. -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |
From: Eric B. <er...@go...> - 2007-11-09 19:15:25
|
Hello, A new release of Gobo is available from the usual location: https://sourceforge.net/projects/gobo-eiffel/ This version should work with the forthcoming release of ISE's EiffelStudio 6.1. In order to avoid binary file incompatibilities between operating systems, the Gobo package does not contain executables anymore. Instead of that, the directory $GOBO/bin contains the C files of the Gobo Eiffel compiler which will be used by a script to populate this directory with the binary files for your platform. When installing the Gobo package, you will now have to run either: %GOBO%\install.bat msc under Windows, or: $GOBO/install.sh gcc under Unix/Linux in order to generate the binary files of the Gobo tools in the directory $GOBO/bin. For more details about this new release of Gobo, please read the Readme file and the online documentation: http://gobo-eiffel.sf.net/gobo/Readme.txt http://gobo-eiffel.sf.net/gobo/index.html -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |
From: Colin P. A. <co...@co...> - 2007-11-02 16:39:53
|
>>>>> "Colin" =3D=3D Colin Paul Adams <co...@co...> writes: >>>>> "Colin" =3D=3D Colin Paul Adams <co...@co...> writes: Colin> But on the XSLT tests, I'm getting: Colin> Compiling C code in C9 In file included from Colin> big_file_C9_c.c:30: in273.c:2865:1: warning: integer Colin> constant is so large that it is unsigned In file included Colin> from big_file_C9_c.c:30: in273.c: In function =81eFbyq6jo=81f: Colin> in273.c:2865: warning: this decimal constant is unsigned Colin> only in ISO C90 {standard input}: Assembler messages: Colin> {standard input}:820975: Warning: end of file not at end of Colin> a line; newline inserted gcc: Internal error: Killed Colin> (program cc1) Please submit a full bug report. See Colin> <URL:http://bugzilla.redhat.com/bugzilla> for instructions. Colin> Internal error: Killed (program cc1) Please submit a full Colin> bug report. See <URL:http://bugzilla.redhat.com/bugzilla> Colin> for instructions. make[1]: *** [big_file_C12_c.o] Error 1 Colin> make: *** [C12/Cobj12.o] Error 2 make: *** Waiting for Colin> unfinished jobs.... make: *** [C11/Cobj11.o] Error 2 Colin> which isn't good (that's with ISE 6.0 - I'm going to try Colin> with gec now). Colin> The gec tests work. Colin> So this is the ISE problem with gcc 4.0 I presume. I think Colin> that's fixed in 6.1, but that's no good to use if Gobo 3.7 Colin> is supporting 5.7 and 6.0. I was seeing the machine hanging (presumably with kernel errors). After rebooting, the xslt tests compile and run fine (with ISE 6.1) --=20 Colin Adams Preston Lancashire |
From: Colin P. A. <co...@co...> - 2007-11-02 15:16:21
|
>>>>> "Eric" == Eric Bezault <er...@go...> writes: >> >> Eric> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [VDRS-1] class Eric> XM_XPATH_LAST_POSITION_FINDER (19,29): Eric> `as_last_position_finder' is not the final name of a feature I deleted this class. Eric> And what about the other two? I've fixed the errors. In the case of the XM_XPATH_ARRAY_ITERATOR errors, my "fix" was to comment out the assertion, replacing it by True. I'm assuming gec was complaining because of the possibility of an expanded generic, and I don't know a better fix (I understand that the reference keyword is deprecated). Perhaps you can do better. -- Colin Adams Preston Lancashire |