Max 5: Am I in a poly~, get the instance number?


    Jan 10 2009 | 9:09 am
    Given a patcher, I need to determine if that patcher is an instance in a poly~, and if so, get the instance number.
    From the docs, I thought I'd do something like this, but I'm not getting anything returned for object_attr_getobj(patcher, gensym("parentclass")):
    if(t_object *obj = object_attr_getobj(patcher, gensym("parentclass"))) { // but obj is always null if(object_classname(obj) == gensym("poly~")) { // and if I get this far, how do I get the instance number? } }

    • Jan 23 2009 | 10:46 am
      Dear Cycling '74,
      We are currently working on a Max 5 version of the oo objects, we received several requests from the community for this.
      As for the specific idea of finding the instance number that belongs to a patcher loaded in a poly~, I'd say that could typically be done with a special utility method like the others that are defined in jpatcher_api.h. Does this method already exist? If not, are you planning to add such a method in the future?
      Until then, would it be possible to directly access struct members of jpatcher or jbox to do this?
      Thanks, Mattijs
    • Jan 30 2009 | 11:33 pm
      Bump again - any chance of someone throwing us a bone on this one, then we can get the oo objects out for testing? The objects do need to work in a poly~
      The patcher-delete query/notification in my other question is less crucial, we cleanup at quit anyway so we'll just hold onto more memory than strictly necessary as the session continues and oo-patchers are deleted.
    • Jan 31 2009 | 4:53 pm
      I think I got it, this code seems to do the job:
      t_object *jp; t_max_err err; t_object *target; method m; long index = -1;
      err = object_obex_lookup(x, gensym("
      object_method(jp, gensym("getassoc"), &target); if (target) { post("found %s", object_classname(target)->s_name);
      long voices = object_attr_getlong(target, gensym("voices")); post("total amount of voices: %ld", voices);
      if(m = zgetfn(target, gensym("getindex"))) index = (long)(*m)(target, jp); post("index: %ld", index); }
      Cycling, let us know if there is something very scary about this.. ;)
      Best, Mattijs