[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