[PD-cvs] externals/grill/flext/source flclass.h, 1.61, 1.62 flext.cpp, 1.36, 1.37 flext.h, 1.26, 1.27 flmeth.cpp, 1.19, 1.20 flmsg.cpp, 1.17, 1.18 flproxy.cpp, 1.9, 1.10

Thomas Grill xovo at users.sourceforge.net
Tue Jul 19 15:17:52 CEST 2005


Update of /cvsroot/pure-data/externals/grill/flext/source
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2622/source

Modified Files:
	flclass.h flext.cpp flext.h flmeth.cpp flmsg.cpp flproxy.cpp 
Log Message:
upped version number
optimizations for message handling and memory footprint
made flext::Forward threadsafe
digest one-element list messages as single atoms
simplified message analysis


Index: flext.h
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flext.h,v
retrieving revision 1.26
retrieving revision 1.27
diff -C2 -d -r1.26 -r1.27
*** flext.h	6 Jul 2005 16:08:19 -0000	1.26
--- flext.h	19 Jul 2005 13:17:50 -0000	1.27
***************
*** 24,31 ****
  
  //! \brief flext version number
! #define FLEXT_VERSION 500
  
  //! \brief flext version string
! #define FLEXT_VERSTR "0.5.0"
  
  //! @}
--- 24,31 ----
  
  //! \brief flext version number
! #define FLEXT_VERSION 501
  
  //! \brief flext version string
! #define FLEXT_VERSTR "0.5.1pre"
  
  //! @}

Index: flext.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flext.cpp,v
retrieving revision 1.36
retrieving revision 1.37
diff -C2 -d -r1.36 -r1.37
*** flext.cpp	23 May 2005 16:52:44 -0000	1.36
--- flext.cpp	19 Jul 2005 13:17:50 -0000	1.37
***************
*** 35,38 ****
--- 35,39 ----
      FLEXT_LOG1("%s - flext logging is on",thisName());
  
+     methhead = NULL;
      bindhead = NULL;
  
***************
*** 70,73 ****
--- 71,75 ----
      // delete message lists
      if(bindhead) delete bindhead;  // ATTENTION: the object must free all memory associated to bindings itself
+     if(methhead) delete methhead;
      if(attrhead) delete attrhead;
      if(attrdata) delete attrdata;

Index: flproxy.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flproxy.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** flproxy.cpp	13 Mar 2005 04:56:39 -0000	1.9
--- flproxy.cpp	19 Jul 2005 13:17:50 -0000	1.10
***************
*** 34,41 ****
  
  #define DEF_IN_FT(IX) \
! void flext_base::cb_px_ft ## IX(t_class *c,float v) { \
!     t_atom atom; SETFLOAT(&atom,v);  \
!     thisObject(c)->CbMethodHandler(IX,sym_float,1,&atom); \
! }
  
  #define ADD_IN_FT(IX) \
--- 34,38 ----
  
  #define DEF_IN_FT(IX) \
! void flext_base::cb_px_ft ## IX(t_class *c,float v) { t_atom atom; SetFloat(atom,v); thisObject(c)->CbMethodHandler(IX,sym_float,1,&atom); }
  
  #define ADD_IN_FT(IX) \
***************
*** 46,85 ****
  void flext_base::cb_px_anything(t_class *c,const t_symbol *s,short argc,t_atom *argv)
  {
!     // check if inlet allows anything (or list)
!     
!     flext_base *o = thisObject(c);
!     int ci = ((flext_hdr *)o->x_obj)->curinlet;
!     o->CbMethodHandler(ci,s,argc,argv);
  }
  
- #if 0 //FLEXT_OS == FLEXT_OS_WIN
- // could also work for OSX!
- 
  void flext_base::cb_px_int(t_class *c,long v)
  {
-     flext_base *o = thisObject(c);
-     int ci = proxy_getinlet((t_object *)o->x_obj);
      // check if inlet allows int type
!     t_atom atom;
!     SetInt(atom,v);  
!     o->CbMethodHandler(ci,sym_int,1,&atom);
! }
! 
! void flext_base::cb_px_float(t_class *c,double v)
! {
!     flext_base *o = thisObject(c);
!     int ci = proxy_getinlet((t_object *)o->x_obj);
!     // check if inlet allows float type
!     t_atom atom;
!     SetFloat(atom,v);  
!     o->CbMethodHandler(ci,sym_float,1,&atom);
! }
! #else
! void flext_base::cb_px_int(t_class *c,long v)
! {
!     // check if inlet allows int type
!     t_atom atom;
!     SetInt(atom,v);  
!     cb_px_anything(c,sym_int,1,&atom);
  }
  
--- 43,57 ----
  void flext_base::cb_px_anything(t_class *c,const t_symbol *s,short argc,t_atom *argv)
  {
!     // check if inlet allows anything (or list)  
!     int ci = ((flext_hdr *)c)->curinlet;
!     thisObject(c)->CbMethodHandler(ci,s,argc,argv);
  }
  
  void flext_base::cb_px_int(t_class *c,long v)
  {
      // check if inlet allows int type
!     t_atom atom; SetInt(atom,v);  
!     int ci = ((flext_hdr *)c)->curinlet;
!     thisObject(c)->CbMethodHandler(ci,sym_int,1,&atom);
  }
  
***************
*** 87,106 ****
  {
      // check if inlet allows float type
!     t_atom atom;
!     SetFloat(atom,v);  
!     cb_px_anything(c,sym_float,1,&atom);
  }
- #endif
  
  void flext_base::cb_px_bang(t_class *c)
  {
      // check if inlet allows bang
!     cb_px_anything(c,sym_bang,0,NULL);
  }
  
  
  #define DEF_IN_FT(IX) \
! void flext_base::cb_px_in ## IX(t_class *c,long v) { long &ci = ((flext_hdr *)thisObject(c)->x_obj)->curinlet; ci = IX; cb_px_int(c,v); ci = 0; } \
! void flext_base::cb_px_ft ## IX(t_class *c,double v) { long &ci = ((flext_hdr *)thisObject(c)->x_obj)->curinlet; ci = IX; cb_px_float(c,v); ci = 0; }
  
  #define ADD_IN_FT(IX) \
--- 59,78 ----
  {
      // check if inlet allows float type
!     t_atom atom; SetFloat(atom,v);  
!     int ci = ((flext_hdr *)c)->curinlet;
!     thisObject(c)->CbMethodHandler(ci,sym_float,1,&atom);
  }
  
  void flext_base::cb_px_bang(t_class *c)
  {
      // check if inlet allows bang
!     int ci = ((flext_hdr *)c)->curinlet;
!     thisObject(c)->CbMethodHandler(ci,sym_bang,0,NULL);
  }
  
  
  #define DEF_IN_FT(IX) \
! void flext_base::cb_px_in ## IX(t_class *c,long v) { t_atom atom; SetInt(atom,v); thisObject(c)->CbMethodHandler(IX,sym_int,1,&atom); } \
! void flext_base::cb_px_ft ## IX(t_class *c,double v) { t_atom atom; SetFloat(atom,v); thisObject(c)->CbMethodHandler(IX,sym_float,1,&atom); }
  
  #define ADD_IN_FT(IX) \
***************
*** 140,148 ****
  #endif  
  
- #if 0 //FLEXT_SYS == FLEXT_SYS_MAX && FLEXT_OS == FLEXT_OS_WIN
-     // could also work for OSX!
-     addint((method)cb_px_int);
-     addfloat((method)cb_px_float);
- #else
      // setup non-leftmost ints and floats
      ADD_IN_FT(1);
--- 112,115 ----
***************
*** 155,159 ****
      ADD_IN_FT(8);
      ADD_IN_FT(9);
- #endif
  }
  
--- 122,125 ----
***************
*** 161,166 ****
  void flext_base::jmax_proxy(fts_object_t *c, int winlet, fts_symbol_t s, int argc, const fts_atom_t *argv)
  {
!     flext_base *o = thisObject(c);
!     o->CbMethodHandler(winlet,s,argc,argv);
  }
  
--- 127,131 ----
  void flext_base::jmax_proxy(fts_object_t *c, int winlet, fts_symbol_t s, int argc, const fts_atom_t *argv)
  {
!     thisObject(c)->CbMethodHandler(winlet,s,argc,argv);
  }
  
***************
*** 171,174 ****
  
  #endif
- 
- 
--- 136,137 ----

Index: flmsg.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flmsg.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** flmsg.cpp	7 Jun 2005 14:13:43 -0000	1.17
--- flmsg.cpp	19 Jul 2005 13:17:50 -0000	1.18
***************
*** 104,123 ****
  }
  
- /*
- bool flext_base::TryMethSym(Item *lst,const t_symbol *s)
- {
-     for(; lst; lst = lst->nxt) {
-         MethItem *m = (MethItem *)lst;
- 
-         if(!m->IsAttr()) {
- //          FLEXT_LOG3("found symbol method for %s: inlet=%i, symbol=%s",GetString(m->tag),m->inlet,GetString(s));
- 
-             t_any sym; sym.st = const_cast<t_symbol *>(s);
-             if(((methfun_1)m->fun)(this,sym)) return true;
-         }
-     }
-     return false;
- }
- */
  
  bool flext_base::TryMethAny(Item *lst,const t_symbol *s,int argc,const t_atom *argv)
--- 104,107 ----
***************
*** 144,152 ****
  
      // search for exactly matching tag
!     if((lst = methhead.FindList(s,inlet)) != NULL && TryMethTag(lst,s,argc,argv)) return true;
      if((lst = clmethhead->FindList(s,inlet)) != NULL && TryMethTag(lst,s,argc,argv)) return true;
  
      // if nothing found try any inlet
!     if((lst = methhead.FindList(s,-1)) != NULL && TryMethTag(lst,s,argc,argv)) return true;
      if((lst = clmethhead->FindList(s,-1)) != NULL && TryMethTag(lst,s,argc,argv)) return true;
  
--- 128,136 ----
  
      // search for exactly matching tag
!     if(methhead && (lst = methhead->FindList(s,inlet)) != NULL && TryMethTag(lst,s,argc,argv)) return true;
      if((lst = clmethhead->FindList(s,inlet)) != NULL && TryMethTag(lst,s,argc,argv)) return true;
  
      // if nothing found try any inlet
!     if(methhead && (lst = methhead->FindList(s,-1)) != NULL && TryMethTag(lst,s,argc,argv)) return true;
      if((lst = clmethhead->FindList(s,-1)) != NULL && TryMethTag(lst,s,argc,argv)) return true;
  
***************
*** 159,167 ****
      ItemCont *clmethhead = ClMeths(thisClassId());
  
!     if((lst = methhead.FindList(sym_anything,inlet)) != NULL && TryMethAny(lst,s,argc,argv)) return true;
      if((lst = clmethhead->FindList(sym_anything,inlet)) != NULL && TryMethAny(lst,s,argc,argv)) return true;
  
      // if nothing found try any inlet
!     if((lst = methhead.FindList(sym_anything,-1)) != NULL && TryMethAny(lst,s,argc,argv)) return true;
      if((lst = clmethhead->FindList(sym_anything,-1)) != NULL && TryMethAny(lst,s,argc,argv)) return true;
  
--- 143,151 ----
      ItemCont *clmethhead = ClMeths(thisClassId());
  
!     if(methhead && (lst = methhead->FindList(sym_anything,inlet)) != NULL && TryMethAny(lst,s,argc,argv)) return true;
      if((lst = clmethhead->FindList(sym_anything,inlet)) != NULL && TryMethAny(lst,s,argc,argv)) return true;
  
      // if nothing found try any inlet
!     if(methhead && (lst = methhead->FindList(sym_anything,-1)) != NULL && TryMethAny(lst,s,argc,argv)) return true;
      if((lst = clmethhead->FindList(sym_anything,-1)) != NULL && TryMethAny(lst,s,argc,argv)) return true;
  
***************
*** 286,292 ****
  bool flext_base::m_method_(int inlet,const t_symbol *s,int argc,const t_atom *argv) 
  {
- //#ifdef FLEXT_DEBUG
      post("%s: message unhandled - inlet:%i args:%i symbol:%s",thisName(),inlet,argc,s?GetString(s):"");
- //#endif
      return false;
  }
--- 270,274 ----
***************
*** 294,297 ****
--- 276,280 ----
  bool flext_base::CbMethodResort(int inlet,const t_symbol *s,int argc,const t_atom *argv) 
  {
+     // call deprecated version
      return m_method_(inlet,s,argc,argv);
  }

Index: flmeth.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flmeth.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -C2 -d -r1.19 -r1.20
*** flmeth.cpp	23 May 2005 16:52:45 -0000	1.19
--- flmeth.cpp	19 Jul 2005 13:17:50 -0000	1.20
***************
*** 36,45 ****
  }
  
- 
- void flext_base::AddMethodDef(int inlet,const t_symbol *tag)
- {
-     methhead.Add(new MethItem,tag,inlet);
- }
- 
  /*! \brief Add a method to the queue
  */
--- 36,39 ----
***************
*** 96,100 ****
      int i;
      for(i = 0; i <= 1; ++i) {
!         ItemCont *a = i?&methhead:clmethhead;
          if(a && a->Contained(inlet)) {
              ItemSet &ai = a->GetInlet(inlet);
--- 90,94 ----
      int i;
      for(i = 0; i <= 1; ++i) {
!         ItemCont *a = i?methhead:clmethhead;
          if(a && a->Contained(inlet)) {
              ItemSet &ai = a->GetInlet(inlet);

Index: flclass.h
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flclass.h,v
retrieving revision 1.61
retrieving revision 1.62
diff -C2 -d -r1.61 -r1.62
*** flclass.h	6 Jul 2005 16:08:19 -0000	1.61
--- flclass.h	19 Jul 2005 13:17:50 -0000	1.62
***************
*** 334,338 ****
  	*/
  
! 	void AddMethodDef(int inlet,const t_symbol *tag = NULL); // call virtual function for tag && inlet
      void AddMethodDef(int inlet,const char *tag = NULL) { AddMethodDef(inlet,MakeSymbol(tag)); }
  
--- 334,338 ----
  	*/
  
!     void AddMethodDef(int inlet,const t_symbol *tag = NULL) { ThMeths()->Add(new MethItem,tag,inlet); }
      void AddMethodDef(int inlet,const char *tag = NULL) { AddMethodDef(inlet,MakeSymbol(tag)); }
  
***************
*** 497,501 ****
  
  	//! Start a thread for this object
! 	bool StartThread(void (*meth)(thr_params *p),thr_params *p,const char *) { p->cl = this; return flext::LaunchThread(meth,p); }
  
  	//! Terminate all threads of this object
--- 497,501 ----
  
  	//! Start a thread for this object
! 	bool StartThread(void (*meth)(thr_params *p),thr_params *p,const char * = NULL) { p->cl = this; return flext::LaunchThread(meth,p); }
  
  	//! Terminate all threads of this object
***************
*** 804,808 ****
  	};
  	
! 	ItemCont *ThMeths() { return &methhead; }
  	static ItemCont *ClMeths(t_classid c);
  
--- 804,808 ----
  	};
  	
! 	ItemCont *ThMeths() { if(!methhead) methhead = new ItemCont; return methhead; }
  	static ItemCont *ClMeths(t_classid c);
  
***************
*** 867,871 ****
  	typedef bool (*methfun_5)(flext_base *c,t_any &,t_any &,t_any &,t_any &,t_any &);
  
! 	mutable ItemCont methhead;
  	mutable ItemCont *bindhead;
  	
--- 867,871 ----
  	typedef bool (*methfun_5)(flext_base *c,t_any &,t_any &,t_any &,t_any &,t_any &);
  
! 	mutable ItemCont *methhead;
  	mutable ItemCont *bindhead;
  	
***************
*** 1020,1029 ****
  	// callback functions
  
- #if FLEXT_SYS == FLEXT_SYS_JMAX
- 	static void	cb_help(fts_object_t *o, int winlet, fts_symbol_t s, int ac, const fts_atom_t *at);
- #else
- 	static void cb_help(t_class *c);
  	static void cb_loadbang(t_class *c);
- #endif
  
  #if FLEXT_SYS == FLEXT_SYS_PD
--- 1020,1024 ----





More information about the Pd-cvs mailing list