[clam-devel] ipyclam: trouble with ProcessingConfigs
Xavier Serra Román
xvr.serra at gmail.com
Thu May 26 14:50:24 PDT 2011
No sé que se'm deu haver colat. Ara n'hi ha 3 més dels que diu al log i són tots en verd.
M'esperaré a que faci el següent testeig a veure si continua fallant
Sorry
On May 26, 2011, at 11:46 PM, Pau Arumi wrote:
> Ei Xavi, tenim testfarm en vermell per culpa de pyclam. Li faras una ullada please?
> --
> Sent on the road
>
> ----- Mensaje original -----
> >
> > On May 26, 2011, at 10:52 PM, David García Garzón wrote:
> >
> > Xavi, note that attributeValue is a const getter so you cannot use the
> > returned reference to assign it. I suggest you add a new method:
> > void setAttributeValue(unsigned i, const value_type & value)
> > value_type & attribute =
> > *(value_type *)_processingConfig->GetAttributeAsVoidPtr( i )
> > attribute = value;
> > so you can call:
> > config.setAttributeValue<std::string>(unsigned i, value)
> >
> > Worked like a charm. I didn't realize that attributeValue was a const
> > method. Thanks!
> >
> >
> >
> > A Dijous 26 Maig 2011 20:36:41, Xavier Serra Román va escriure:
> > Hi guys..
> > I have another issue. How do you set new values to a dynamictype
> > attribute? I've seen clam code such as:
> > ConcreteString & value = *(ConcreteString
> > *)object.GetAttributeAsVoidPtr(attribute); value =
> > input->toPlainText().toLocal8Bit().constData();
> >
> > but in my code I do:
> > std::string old = config.attributeValue<std::string>(i);
> > old = value;
> > with value being passed as const std::string& and attributeValue<type>
> > being: *(type *)_processingConfig->GetAttributeAsVoidPtr( i )
> > and nothing changes. What am I doing wrong?
> >
> > Thanks!
> >
> > PS: I hate pointers
> >
> > On May 25, 2011, at 8:39 PM, Pau Arumi wrote:
> > Check the Component interface. Maybe it is called Clone() or DeepCopy().
> > P
> >
> > On May 25, 2011, at 7:48 PM, David García Garzón wrote:
> > On Wednesday 25 May 2011 19:09:23 Xavier Serra Román wrote:
> > Hi guys,
> > I'm now at the part of ipyclam dealing with configurations and I've
> > run into some trouble, I defined a c++ class to wrap into python
> > with boost.python that holds a processingconfig.
> >
> > I need to create the processingconfig in the class from a copy of
> > another one so I've defined: ConfigurationProxy(const
> > CLAM::ProcessingConfig & prototype)
> >
> > {
> >
> > _processingConfig = new CLAM::ProcessingConfig(prototype);
> >
> > }
> >
> > this, obviously. doesn't work because abstract classes cannot be
> > allocated but I don't know what else to do.
> >
> > Use the Component::Species() virtual method. It is redefined in
> > subclasses (including ProcessinConfig's derivatives) in a way that
> > it returns an object of the same class than the receiver. Not a
> > copy, just the default constructed one.
> >
> > How do you call it? I don't seem to be able to make it work, I've tried
> > from prototype.Species() to
> > CLAM::ProcessingConfig::Species(prototype)..
> >
> > Be carefull on the code below, if you ned the default constructor (do
> > you need it?) initialize all the members.
> >
> > Be also carefull with the copy constructor (generated by default).
> > The default copy constructor copies all members, in this case will
> > copy the pointer and you will double delete it on the destructor.
> > This might happen not just in assignments but also when passing it
> > as parameter or returning not as reference, and it may not be you
> > but maybe boost::python. So my suggestiong is to implement it
> > private and assert false inside, so, at least if boost::python uses
> > it you will be notified at compilation or runtime.
> >
> > The complete code of the class is:
> > class ConfigurationProxy
> > {
> >
> > public:
> > CLAM::ProcessingConfig * _processingConfig;
> > ConfigurationProxy() {}
> > ConfigurationProxy(const CLAM::ProcessingConfig & prototype)
> > {
> >
> > _processingConfig = new CLAM::ProcessingConfig(prototype);
> >
> > }
> > ~ConfigurationProxy()
> > {
> >
> > delete _processingConfig;
> >
> > }
> >
> > };
> >
> > Thanks!
> > _______________________________________________
> > clam-devel mailing list
> > clam-devel at lists.clam-project.org<mailto:clam-devel at lists.clam-project.org>
> > http://lists.clam-project.org/listinfo.cgi/clam-devel-clam-project.
> > org
> >
> > _______________________________________________
> > clam-devel mailing list
> > clam-devel at lists.clam-project.org<mailto:clam-devel at lists.clam-project.org>
> > http://lists.clam-project.org/listinfo.cgi/clam-devel-clam-project.org
> >
> > --
> > David García Garzón
> > (Work) david dot garcia at upf anotherdot edu
> > http://www.iua.upf.edu/~dgarcia
> >
>
> <Archivo adjunto> ATT00001.txt
>
>
> _______________________________________________
> clam-devel mailing list
> clam-devel at lists.clam-project.org
> http://lists.clam-project.org/listinfo.cgi/clam-devel-clam-project.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.clam-project.org/pipermail/clam-devel-clam-project.org/attachments/20110526/b21a5745/attachment-0004.htm>
More information about the clam-devel
mailing list