Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Developing U++ » U++ Developers corner » Question: Simple plugin implementation
Re: Question: Simple plugin implementation [message #31131 is a reply to message #30945] Mon, 07 February 2011 11:16 Go to previous messageGo to previous message
koldo is currently offline  koldo
Messages: 3437
Registered: August 2008
Senior Veteran
He he Smile

Following with it here it is something perhaps better than StreamRaster plugin system.

In StreamRaster it is done a "new" any time a function is called. But is is possible to do it only once:

class StaticPlugin {
public:
	StaticPlugin();
	~StaticPlugin();
	bool Init(const char *name);

	template <class T>
	static void Register(const char *name) {
		PluginData& x = Plugins().Add();
		x.name = name;
		x.New = New<T>;
		x.Delete = Delete<T>;
	}

protected:
	void *data;
	
private:	
	String name;
	
	template <class T> static void *New() 		{return new T;};
	template <class T> static void Delete(void *p) 	{delete static_cast<T *>(p);};
	
	struct PluginData {
		String name;
		void *(*New)();
		void (*Delete)(void *);
	};
	
	static Array<PluginData>& Plugins();
};

The plugin class is stored in a void *data, with its "new" and "delete", in Register() (thanks to templates Smile).

This way, if a plugin is used, StaticPlugin uses the right "new". And in ~StaticPlugin it is used the right "delete" Smile Smile.




Best regards
IƱaki
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Q: howto incorporate a native console window in GUI
Next Topic: BackgroundTask
Goto Forum:
  


Current Time: Tue Jul 08 10:25:44 CEST 2025

Total time taken to generate the page: 0.03022 seconds