From 420a758195fea188311fdcd24bff4be2c2afebfb Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Thu, 5 Dec 2002 11:12:17 +0000 Subject: "" svn path=/trunk/; revision=279 --- externals/grill/namedobjs/main.cpp | 112 +++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100755 externals/grill/namedobjs/main.cpp (limited to 'externals/grill/namedobjs/main.cpp') diff --git a/externals/grill/namedobjs/main.cpp b/externals/grill/namedobjs/main.cpp new file mode 100755 index 00000000..7a7811f4 --- /dev/null +++ b/externals/grill/namedobjs/main.cpp @@ -0,0 +1,112 @@ +/* + +namedobjs - retrieve list of named objects in patcher (MaxMSP only!) + +Copyright (c) 2002 Thomas Grill (xovo@gmx.net) +For information on usage and redistribution, and for a DISCLAIMER OF ALL +WARRANTIES, see the file, "license.txt," in this distribution. + +*/ + +#include + +#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 203) +#error You need at least flext version 0.2.3 +#endif + +#ifndef MAXMSP +#error "This object is for MaxMSP only!" +#endif + +#include + + +#define I int +#define L long +#define V void +#define C char + +class namedobjs: + public flext_base +{ + FLEXT_HEADER(namedobjs,flext_base) + +public: + namedobjs(I argc,t_atom *argv); + +protected: + V m_bang(); + virtual V m_assist(L msg,L arg,C *s); + +private: + FLEXT_CALLBACK(m_bang); +}; + +FLEXT_NEW_G("namedobjs",namedobjs) + + +namedobjs::namedobjs(I argc,t_atom *argv) +{ + AddInAnything(); + AddOutList(); + AddOutBang(); + SetupInOut(); + + FLEXT_ADDBANG(0,m_bang); +} + +V namedobjs::m_bang() +{ + t_canvas *canv = thisCanvas(); +// t_object *self = (t_object *)&x_obj->obj; + + t_box *b; + for(b = canv->p_box; b; b = b->b_next) { + if(b->b_firstin) { +// if(NOGOOD(b->b_firstin)) post("NOGOOD!"); + + t_messlist *ms; + + ms = ((t_tinyobject *)b->b_firstin)->t_messlist; + if(ms) { + const t_class *c = (const t_class *)(ms-1); + if(c) { + t_symbol *nm; + if (patcher_boxname(canv,b,&nm)) { + t_atom lst[4]; + SetString(lst[0],*(C **)c->c_sym->s_name); + SetSymbol(lst[1],nm); + SetInt(lst[2],b->b_rect.left); + SetInt(lst[3],b->b_rect.top); + ToOutList(0,4,lst); + } + } + + } + } + } + + ToOutBang(1); +} + +V namedobjs::m_assist(L msg,L arg,C *s) +{ + switch(msg) { + case 1: //ASSIST_INLET: + switch(arg) { + case 0: + sprintf(s,"Bang to retrieve list of named objects"); break; + } + break; + case 2: //ASSIST_OUTLET: + switch(arg) { + case 0: + sprintf(s,"Consecutive object type/name pairs"); break; + case 1: + sprintf(s,"Bang signals end of list"); break; + } + break; + } +} + + -- cgit v1.2.1