[PD-cvs] externals/grill/flext/source flattr.cpp, 1.35, 1.36 flbase.cpp, 1.26, 1.27 flbase.h, 1.37, 1.38 flclass.h, 1.68, 1.69 flext.cpp, 1.44, 1.45 fllib.cpp, 1.37, 1.38 flqueue.cpp, 1.38, 1.39 flsupport.h, 1.104, 1.105 flthr.cpp, 1.33, 1.34

Thomas Grill xovo at users.sourceforge.net
Wed May 24 14:20:59 CEST 2006


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

Modified Files:
	flattr.cpp flbase.cpp flbase.h flclass.h flext.cpp fllib.cpp 
	flqueue.cpp flsupport.h flthr.cpp 
Log Message:
enabled FLEXT_(C)ADDMETHOD as an alias of FLEXT_(C)ADDBANG
bugfixes and optimizations, especially for DSP under Max/MSP
added thisParent type
attribute generation is now determined exclusively by the object class setup (not library as before).
avoid trying to send empty message bundles
- preprocessor symbol FLEXT_COMPATIBLE - if defined don't implement specialities of either PD or Max/MSP
small changes for attribute functions
- Max: fixed reported bug (#67), where list elements are distributed over inlets


Index: flqueue.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flqueue.cpp,v
retrieving revision 1.38
retrieving revision 1.39
diff -C2 -d -r1.38 -r1.39
*** flqueue.cpp	13 Feb 2006 19:40:08 -0000	1.38
--- flqueue.cpp	24 May 2006 12:20:57 -0000	1.39
***************
*** 379,387 ****
          clock_delay(qclk,0);
      #endif
- #elif FLEXT_SYS == FLEXT_SYS_JMAX
-     #if FLEXT_QMODE == 0
-         // this is dangerous because there may be other timers on this object!
-         fts_timebase_add_call(fts_get_timebase(), (fts_object_t *)thisHdr(), QTick, NULL, 0);
-     #endif
  #else
  #error Not implemented
--- 379,382 ----
***************
*** 411,414 ****
--- 406,410 ----
  #elif FLEXT_QMODE == 2
      LaunchThread(QWorker,NULL);
+     // very unelegant... but waiting should be ok, since happens only on loading
      while(!qustarted) Sleep(0.001);
  #elif FLEXT_QMODE == 0 && (FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX)

Index: flbase.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flbase.cpp,v
retrieving revision 1.26
retrieving revision 1.27
diff -C2 -d -r1.26 -r1.27
*** flbase.cpp	26 Sep 2005 13:59:34 -0000	1.26
--- flbase.cpp	24 May 2006 12:20:57 -0000	1.27
***************
*** 45,49 ****
  int flext_obj::m_holdaargc = 0;
  const t_atom *flext_obj::m_holdaargv = NULL;
! bool flext_obj::process_attributes = false;
  
  bool flext_obj::initing = false;
--- 45,49 ----
  int flext_obj::m_holdaargc = 0;
  const t_atom *flext_obj::m_holdaargv = NULL;
! //bool flext_obj::process_attributes = false;
  
  bool flext_obj::initing = false;
***************
*** 51,55 ****
  bool flext_obj::init_ok;
  
! void flext_obj::ProcessAttributes(bool attr) { process_attributes = attr; }
  
  #if FLEXT_SYS == FLEXT_SYS_MAX
--- 51,55 ----
  bool flext_obj::init_ok;
  
! //void flext_obj::ProcessAttributes(bool attr) { process_attributes = attr; }
  
  #if FLEXT_SYS == FLEXT_SYS_MAX

Index: flsupport.h
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flsupport.h,v
retrieving revision 1.104
retrieving revision 1.105
diff -C2 -d -r1.104 -r1.105
*** flsupport.h	15 May 2006 23:03:52 -0000	1.104
--- flsupport.h	24 May 2006 12:20:57 -0000	1.105
***************
*** 1146,1152 ****
  	static void Sleep(double s);
  
- 	//! Sleep for a very short amount of time, just to let other threads wake up
- 	static void MiniSleep();
- 
  	/*! \brief Class encapsulating a timer with callback functionality.
  		This class can either be used with FLEXT_ADDTIMER or used as a base class with an overloaded virtual Work function.
--- 1146,1149 ----

Index: flext.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flext.cpp,v
retrieving revision 1.44
retrieving revision 1.45
diff -C2 -d -r1.44 -r1.45
*** flext.cpp	15 May 2006 23:03:52 -0000	1.44
--- flext.cpp	24 May 2006 12:20:57 -0000	1.45
***************
*** 181,185 ****
  	AddMessageMethods(c,IsDSP(id));
  
!     if(process_attributes) {
          AddMethod(id,0,"getattributes",cb_ListAttrib);
          AddMethod(id,0,"getmethods",cb_ListMethods);
--- 181,186 ----
  	AddMessageMethods(c,IsDSP(id));
  
!     if(HasAttributes(id)) {
! //    if(process_attributes) {
          AddMethod(id,0,"getattributes",cb_ListAttrib);
          AddMethod(id,0,"getmethods",cb_ListMethods);

Index: flbase.h
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flbase.h,v
retrieving revision 1.37
retrieving revision 1.38
diff -C2 -d -r1.37 -r1.38
*** flbase.h	15 May 2006 23:03:52 -0000	1.37
--- flbase.h	24 May 2006 12:20:57 -0000	1.38
***************
*** 115,119 ****
  			\note Use that in the static class setup function (also library setup function)
  		*/
! 		static void ProcessAttributes(bool attr); //{ process_attributes = attr; }
  
  		//! Virtual function called at creation time (but after the constructor)
--- 115,119 ----
  			\note Use that in the static class setup function (also library setup function)
  		*/
! //		static void ProcessAttributes(bool attr); //{ process_attributes = attr; }
  
  		//! Virtual function called at creation time (but after the constructor)
***************
*** 157,160 ****
--- 157,161 ----
  		static t_class *getClass(t_classid id);
  		
+         static bool HasAttributes(t_classid id);
          static bool IsDSP(t_classid id);
          static bool IsLib(t_classid id);
***************
*** 205,209 ****
          mutable flext_hdr *x_obj;        	
  
!         static bool	process_attributes;
  
      private:
--- 206,210 ----
          mutable flext_hdr *x_obj;        	
  
! //        static bool	process_attributes;
  
      private:
***************
*** 251,255 ****
  
  		// Definitions for library objects
! 		static void lib_init(const char *name,void setupfun(),bool attr);
  		static void obj_add(bool lib,bool dsp,bool attr,const char *idname,const char *names,void setupfun(t_classid),FLEXT_CLASSDEF(flext_obj) *(*newfun)(int,t_atom *),void (*freefun)(flext_hdr *),int argtp1,...);
  #if FLEXT_SYS == FLEXT_SYS_MAX
--- 252,256 ----
  
  		// Definitions for library objects
! 		static void lib_init(const char *name,void setupfun());
  		static void obj_add(bool lib,bool dsp,bool attr,const char *idname,const char *names,void setupfun(t_classid),FLEXT_CLASSDEF(flext_obj) *(*newfun)(int,t_atom *),void (*freefun)(flext_hdr *),int argtp1,...);
  #if FLEXT_SYS == FLEXT_SYS_MAX
***************
*** 308,311 ****
--- 309,313 ----
  public:     	    	    \
  typedef NEW_CLASS thisType;  \
+ typedef PARENT_CLASS thisParent;  \
  static FLEXT_CLASSDEF(flext_obj) *__init__(int argc,t_atom *argv);  \
  static void __free__(flext_hdr *hdr) {  	    	    	\
***************
*** 313,317 ****
  	hdr->flext_hdr::~flext_hdr(); \
  }   	    	\
! static void __setup__(t_classid classid) { PARENT_CLASS::__setup__(classid); }
  
  
--- 315,319 ----
  	hdr->flext_hdr::~flext_hdr(); \
  }   	    	\
! static void __setup__(t_classid classid) { thisParent::__setup__(classid); }
  
  
***************
*** 319,322 ****
--- 321,325 ----
  public:     	    	    \
  typedef NEW_CLASS thisType;  \
+ typedef PARENT_CLASS thisParent;  \
  static FLEXT_CLASSDEF(flext_obj) *__init__(int argc,t_atom *argv);  \
  static void __free__(flext_hdr *hdr) {  	    	    	\
***************
*** 325,330 ****
  }   	    	\
  static void __setup__(t_classid classid) { 	    	\
! 	PARENT_CLASS::__setup__(classid);    	    	\
! 	NEW_CLASS::SETUPFUN(classid); \
  }
  
--- 328,333 ----
  }   	    	\
  static void __setup__(t_classid classid) { 	    	\
! 	thisParent::__setup__(classid);    	    	\
! 	thisType::SETUPFUN(classid); \
  }
  
***************
*** 350,356 ****
  // specify that to define the library itself
  #if FLEXT_SYS == FLEXT_SYS_PD
! #define REAL_LIB_SETUP(NAME,SETUPFUN) extern "C" FLEXT_EXT void NAME##_setup() { flext_obj::lib_init(#NAME,SETUPFUN,FLEXT_ATTRIBUTES); }
  #elif FLEXT_SYS == FLEXT_SYS_MAX
! #define REAL_LIB_SETUP(NAME,SETUPFUN) extern "C" FLEXT_EXT int main() { flext_obj::lib_init(#NAME,SETUPFUN,FLEXT_ATTRIBUTES); return 0; }
  #else
  #error Platform not supported
--- 353,359 ----
  // specify that to define the library itself
  #if FLEXT_SYS == FLEXT_SYS_PD
! #define REAL_LIB_SETUP(NAME,SETUPFUN) extern "C" FLEXT_EXT void NAME##_setup() { flext_obj::lib_init(#NAME,SETUPFUN); }
  #elif FLEXT_SYS == FLEXT_SYS_MAX
! #define REAL_LIB_SETUP(NAME,SETUPFUN) extern "C" FLEXT_EXT int main() { flext_obj::lib_init(#NAME,SETUPFUN); return 0; }
  #else
  #error Platform not supported

Index: flattr.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flattr.cpp,v
retrieving revision 1.35
retrieving revision 1.36
diff -C2 -d -r1.35 -r1.36
*** flattr.cpp	11 Oct 2005 22:22:48 -0000	1.35
--- flattr.cpp	24 May 2006 12:20:57 -0000	1.36
***************
*** 236,243 ****
  	// search for matching attribute
  	AttrItem *a = FindAttrib(tag,false,true);
! 	if(a) 
! 		return SetAttrib(tag,a,argc,argv);
! 	else
! 		return true;
  }
  
--- 236,240 ----
  	// search for matching attribute
  	AttrItem *a = FindAttrib(tag,false,true);
! 	return a && SetAttrib(tag,a,argc,argv);
  }
  

Index: fllib.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/fllib.cpp,v
retrieving revision 1.37
retrieving revision 1.38
diff -C2 -d -r1.37 -r1.38
*** fllib.cpp	15 May 2006 23:03:52 -0000	1.37
--- fllib.cpp	24 May 2006 12:20:57 -0000	1.38
***************
*** 164,167 ****
--- 164,168 ----
  
  t_class *flext_obj::getClass(t_classid cl) { return cl->clss; }
+ bool flext_obj::HasAttributes(t_classid cl) { return cl->attr; }
  bool flext_obj::IsDSP(t_classid cl) { return cl->dsp; }
  bool flext_obj::IsLib(t_classid cl) { return cl->lib != NULL; }
***************
*** 177,181 ****
  static flext_library *curlib = NULL;
  
! void flext_obj::lib_init(const char *name,void setupfun(),bool attr)
  {
  	// make new library instance
--- 178,182 ----
  static flext_library *curlib = NULL;
  
! void flext_obj::lib_init(const char *name,void setupfun())
  {
  	// make new library instance
***************
*** 184,189 ****
      flext::Setup();
  
- 	process_attributes = attr;
- 
  	// first register all classes
      try {
--- 185,188 ----
***************
*** 237,241 ****
  	else {
  		FLEXT_ASSERT(!curlib);
! 		process_attributes = attr;
  	}
  
--- 236,240 ----
  	else {
  		FLEXT_ASSERT(!curlib);
! //		process_attributes = attr;
  	}
  
***************
*** 270,274 ****
  	lo->lib = curlib;
  	lo->dsp = dsp;
! 	lo->attr = process_attributes;
  
  //	post("ADDCLASS %s,%s = %p -> LIBOBJ %p -> %p (lib=%i,dsp=%i)",idname,names,*cl,lo,lo->clss,lib?1:0,dsp?1:0);
--- 269,273 ----
  	lo->lib = curlib;
  	lo->dsp = dsp;
! 	lo->attr = attr;
  
  //	post("ADDCLASS %s,%s = %p -> LIBOBJ %p -> %p (lib=%i,dsp=%i)",idname,names,*cl,lo,lo->clss,lib?1:0,dsp?1:0);

Index: flthr.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flthr.cpp,v
retrieving revision 1.33
retrieving revision 1.34
diff -C2 -d -r1.33 -r1.34
*** flthr.cpp	6 Dec 2005 21:52:26 -0000	1.33
--- flthr.cpp	24 May 2006 12:20:57 -0000	1.34
***************
*** 645,648 ****
  #endif
  
- 
  #endif // FLEXT_THREADS
--- 645,647 ----

Index: flclass.h
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flclass.h,v
retrieving revision 1.68
retrieving revision 1.69
diff -C2 -d -r1.68 -r1.69
*** flclass.h	15 May 2006 23:03:52 -0000	1.68
--- flclass.h	24 May 2006 12:20:57 -0000	1.69
***************
*** 395,398 ****
--- 395,399 ----
      void AddMethodDef(int inlet,const char *tag = NULL) { AddMethodDef(inlet,MakeSymbol(tag)); }
  
+ 	void AddMethod(int inlet,bool (*m)(flext_base *)) { AddMethod(ThMeths(),inlet,sym_bang,(methfun)m,a_null); }
  	void AddMethod(int inlet,bool (*m)(flext_base *,int,t_atom *)) { AddMethod(ThMeths(),inlet,sym_list,(methfun)m,a_list,a_null); }
  	void AddMethod(int inlet,bool (*m)(flext_base *,int,const t_atom *)) { AddMethod(ThMeths(),inlet,sym_list,(methfun)m,a_list,a_null); }
***************
*** 443,446 ****
--- 444,448 ----
  	*/
  
+ 	static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *)) { AddMethod(ClMeths(c),inlet,sym_bang,(methfun)m,a_null); }
  	static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,int,t_atom *)) { AddMethod(ClMeths(c),inlet,sym_list,(methfun)m,a_list,a_null); }
  	static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,int,const t_atom *)) { AddMethod(ClMeths(c),inlet,sym_list,(methfun)m,a_list,a_null); }
***************
*** 621,624 ****
--- 623,633 ----
  	bool DumpAttrib(const char *attr) const { return DumpAttrib(MakeSymbol(attr)); }
  
+     // check for attribute symbol @
+ 	static int CheckAttrib(int argc,const t_atom *argv);
+     // check for attribute symbol @
+     static int CheckAttrib(const AtomList &args,int offset = 0) { return CheckAttrib(args.Count()-offset,args.Atoms()+offset)+offset; }
+ 
+ 	//! List attributes
+ 	bool ListAttrib() const;
  	//! List attributes
  	void ListAttrib(AtomList &a) const;
***************
*** 626,629 ****
--- 635,640 ----
  	bool GetAttrib(const t_symbol *s,AtomList &a) const;
  	//! Set an attribute value
+ 	bool SetAttrib(const t_symbol *s,int argc,const t_atom *argv);
+ 	//! Set an attribute value
  	bool SetAttrib(const t_symbol *s,const AtomList &a) { return SetAttrib(s,a.Count(),a.Atoms()); }
  
***************
*** 921,931 ****
  	AttrItem *FindAttrib(const t_symbol *tag,bool get,bool msg = false) const;
  
- 	static int CheckAttrib(int argc,const t_atom *argv);
  	bool InitAttrib(int argc,const t_atom *argv);
  
- 	bool ListAttrib() const;
  	bool DumpAttrib(const t_symbol *tag,AttrItem *a) const;
  	bool GetAttrib(const t_symbol *tag,AttrItem *a,AtomList &l) const;
- 	bool SetAttrib(const t_symbol *s,int argc,const t_atom *argv);
  	bool SetAttrib(const t_symbol *tag,AttrItem *a,int argc,const t_atom *argv);
  	bool SetAttrib(const t_symbol *tag,AttrItem *a,const AtomList &l) { return SetAttrib(tag,a,l.Count(),l.Atoms()); }
--- 932,939 ----





More information about the Pd-cvs mailing list