[CLAM] Writing Control Data to a File in Network Editor
David García Garzón
dgarcia at iua.upf.edu
Mon Jul 28 05:51:32 PDT 2008
On Monday 28 July 2008 13:06:40 Uğur Güney wrote:
> > Yes you are right. The example uses dummy datatypes. In your case you
> > should just get a CLAM::Fundamental input port which requires #include
> > <CLAM/Fundamental.hxx>. You can remove the output port and the code that
> > uses it.
> >
> > If you use directly the fundamental, you can just forget about controls
> > (and the related wiki too).
> > In the Do method:
> > TData fundamentalFreq = _inPort.GetData().GetFreq(0);
> > Then, write fundamentalFreq wherever you want.
>
> # Sorry for bothering you so much.
> # When I compile the code below, according your suggestions, I'm
> getting this errors:
>
> MyProcessing.hxx:34: error: passing 'const
> CLAM::InPort<CLAM::Fundamental>' as 'this' argument of 'Token&
> CLAM::InPort<Token>::GetData(int) [with Token = CLAM::Fundamental]'
> discards qualifiers
> scons: *** [MyProcessing.os] Error 1
>
> # I looked at the documentation here:
> http://clam.iua.upf.edu/doc/CLAM-devel-doxygen/classCLAM_1_1Fundamental.htm
>l # It says that fundamental has the member function of GetFreq(). If I try
> "in.GetFreq(0)", instead of "in.GetData().GetFreq(0)", I get an error which
> says that Fundamental does not has got a member named
> GetFreq(). Is the documentation old? Where is the best reference
> source for the CLAM API (I can look, so I do not annoy you much)?
> -ugur-
>
>
> MyProcessing.hxx:
> ===========
>
> #ifndef MyProcessing_hxx
> #define MyProcessing_hxx
>
> #include <CLAM/InPort.hxx>
> #include <CLAM/OutPort.hxx>
> #include <CLAM/Processing.hxx>
>
> #include <CLAM/Fundamental.hxx>
>
> class MyProcessing : public CLAM::Processing
> {
> CLAM::InPort<CLAM::Fundamental> mIn;
> public:
> const char* GetClassName() const { return "MyProcessing"; }
> MyProcessing(const Config& config = Config())
>
> : mIn("My Input", this)
>
> {
> Configure( config );
> }
>
> bool Do()
> {
> bool result = Do( mIn );
> // Tell the ports this is done
> mIn.Consume();
> return result;
> }
>
> bool Do(const CLAM::InPort<CLAM::Fundamental>& in)
> {
> // Your implementation
> in.GetData().GetFreq(0);
> return true;
> }
> };
>
> #endif // MyProcessing_hxx
Try instead this:
> bool Do()
> {
> bool result = Do( mIn.GetData() );
> // Tell the ports this is done
> mIn.Consume();
> return result;
> }
>
> bool Do(const CLAM::Fundamental & in)
> {
> // Printing out on the standard output just for testing
> // Use a file instead
> std::cout << in.GetFreq(0) << std::endl;
> return true;
> }
More information about the clam-users
mailing list