1. define_c_func/proc question
- Posted by CChris <christian.cuvier at agriculture.gouv.fr> Dec 25, 2005
- 620 views
If define_c_func() is called several times for the same {dll,name} or {{},address} pair, will the same routine_id be returned? RC: could you include this precision in the docs? It's useful to know when you want a custom message to call an user-supplied callback to pass the results back. Also, could you consider extending allocate() and free() to sequences? The extended routines would return or free a sequence of addresses. CChris
2. Re: define_c_func/proc question
- Posted by Robert Craig <rds at RapidEuphoria.com> Dec 26, 2005
- 662 views
- Last edited Dec 27, 2005
CChris wrote: > If define_c_func() is called several times for the same {dll,name} or > {{},address} pair, will the same routine_id be returned? No, you'll get a different routine id each time. In contrast, routine_id() will give you the same id each time for the same Euphoria routine. In the case of Euphoria routines, it was easy to check if a routine already had an id assigned to it. For most programs, it doesn't matter, because the routine id is only derived once. > RC: could you include this precision in the docs? It's useful to know > when you want a custom message to call an user-supplied callback to pass the > > results back. OK. I'm always a bit leary of documenting minor details like this, since it more or less commits me to never changing how it works in the future, but I guess I can commit to this. > Also, could you consider extending allocate() and free() to sequences? The > extended routines would return or free a sequence of addresses. I really don't see much demand for this. It would be easy for you to make your own routines for this, or just write a simple for-loop. Regards, Rob Craig Rapid Deployment Software http://www.RapidEuphoria.com
3. Re: define_c_func/proc question
- Posted by CChris <christian.cuvier at agriculture.gouv.fr> Dec 29, 2005
- 584 views
- Last edited Dec 30, 2005
Robert Craig wrote: > > CChris wrote: > > If define_c_func() is called several times for the same {dll,name} or > > {{},address} pair, will the same routine_id be returned? > > No, you'll get a different routine id each time. > > In contrast, routine_id() will give you the same id > each time for the same Euphoria routine. In the case of > Euphoria routines, it was easy to check if a routine already > had an id assigned to it. > > For most programs, it doesn't matter, because the routine id > is only derived once. In the case at hand, the issue is with defining multiple ids for an user defined routine whose address is passed to an EUphoria routine through a custom Windows message. The Eu routine needs to go through this in order to call the user back and send it the required data which may be a sequence more complex than a plain string. Checking the passed pair of arguments against an ever growing list of already processsed calls doesn't appear to be very difficult or performance penalising. Or I missed something... > > > RC: could you include this precision in the docs? It's useful to know > > when you want a custom message to call an user-supplied callback to pass the > > > > results back. > > OK. > I'm always a bit leary of documenting minor details like this, > since it more or less commits me to never changing how it > works in the future, but I guess I can commit to this. > Just say that define_c_func() may return different ids. And you'll change that the day where you'll be sure to return an unique id, which may never come. Thys the coder will know s/he may have to handle different returned ids, and hence will. > > Also, could you consider extending allocate() and free() to sequences? The > > extended routines would return or free a sequence of addresses. > > I really don't see much demand for this. > It would be easy for you to make your own routines for this, > or just write a simple for-loop. > Of course. Just a convenience, and more in line with most Eu routines processing sequences transparently. CChris > Regards, > Rob Craig > Rapid Deployment Software > <a href="http://www.RapidEuphoria.com">http://www.RapidEuphoria.com</a>