On 06/17/2014 08:17 AM, Jaime E Oliver via Pd-list wrote:
> Hi all, 
> 
> I am writing a long and complex external. 
> 
> There are several conditions in which a particular function could fail and in 
> any of those cases I'd like to report the error and stop the execution of the 
> function.
> 
> I tried using the exit() function, but that quits pd, and what I really need 
> is for the function to simply stop.
> 
> Does pd have a function for doing this?

no. you would have to do this yourself.

afaik, the easiest way to do it is:
  if(bad_condition) {
      pd_error(x, "bad condition met!");
      return;
  }

if you need to cleanup you could use:
  if(bad_condition) {
      pd_error(x, "bad condition met!");
      goto fail;
  }
  // ...
 fail:
  free_ressources(x);

in general, you might want to split your complex function into small
functions that returns their success, then do:

int do_A(ressource*X) {
  if(is_bad(X)){
     error("X is bad!");
     return 0;
  }
  return 1;
}
//...
int processing() {
  X=make_ressource();
  if(do_A(X) && do_B(X) && do_C(X)) {
     // success
  }
  free_ressource(X);
}


when using C++, you can use exceptions...which you have to catch() in
order to not-quit-Pd

fgmards
IOhannes

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
[email protected] mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list

Reply via email to