operationsi.h

来自「机器人开源项目orocos的源代码」· C头文件 代码 · 共 1,102 行 · 第 1/2 页

H
1,102
字号
  }  virtual  CORBA::Boolean fromString (      const char* value    )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {            if ( !mset->getTypeInfo()->fromString( value, mset ) ) {          RTT::log(RTT::Error) << "Corba::AssignableExpression: Could not assign string to "<<mset->getType() <<"." <<RTT::endlog()							   <<" Tried to assign as "<< RTT::DataSource<ResultType>::GetType() << " to native type "<< RTT::DataSource<SourceType>::GetType()<< RTT::endlog();          return false;      }      return true;  }      };// Boolean Specialisations, like in RTT::DataSource<bool>:template<>class  Orocos_Expression_i<bool>  : public virtual POA_RTT::Corba::Expression,    public virtual PortableServer::RefCountServantBase{protected:    RTT::DataSource<bool>::shared_ptr morig;    RTT::DataSource<bool>::value_t last_value;    PortableServer::POA_var mpoa;public:    typedef bool SourceType;    typedef bool ResultType;  // Constructor   Orocos_Expression_i (RTT::DataSource<bool>::shared_ptr orig, PortableServer::POA_ptr the_poa)      : morig( orig ), last_value(), mpoa( PortableServer::POA::_duplicate(the_poa) )    {}    PortableServer::POA_ptr _default_POA()    {        return PortableServer::POA::_duplicate(mpoa);    }  // Destructor     virtual ~Orocos_Expression_i (void) {}    virtual  CORBA::Any* value (          )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {      return RTT::AnyConversion<bool>::createAny( last_value );  }    virtual  CORBA::Boolean evaluate (          )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {      last_value = morig->get();      return last_value;  }    virtual  CORBA::Any * get (          )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {      last_value = morig->get();      return RTT::AnyConversion<bool>::createAny( last_value );  }    virtual  char * getType (          )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {      return CORBA::string_dup( morig->getType().c_str() );  }  virtual  char * toString (          )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {      std::string result = morig->toString();      return CORBA::string_dup( result.c_str() );  }  virtual  char * getTypeName (          )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {      return CORBA::string_dup( morig->getTypeName().c_str() );  }  virtual void destroyExpression()    ACE_THROW_SPEC ((      CORBA::SystemException    )) {  }};template<>class  Orocos_AssignableExpression_i<bool>  : public virtual POA_RTT::Corba::AssignableExpression,    public virtual PortableServer::RefCountServantBase{    RTT::AssignableDataSource<bool>::shared_ptr massign;    bool last_value;    PortableServer::POA_var mpoa;public:    typedef bool SourceType;    typedef bool ResultType;  // Constructor   Orocos_AssignableExpression_i (RTT::AssignableDataSource<bool>::shared_ptr assign , PortableServer::POA_ptr the_poa)      : massign( assign ), last_value(), mpoa( PortableServer::POA::_duplicate(the_poa) )    {}    PortableServer::POA_ptr _default_POA()    {        return PortableServer::POA::_duplicate(mpoa);    }    // Destructor     virtual ~Orocos_AssignableExpression_i (void) {}    virtual  CORBA::Boolean set (      const ::CORBA::Any & value    )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {      return RTT::AnyConversion<bool>::update( value, massign->set() );  }\        virtual  CORBA::Any* value (          )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {      return RTT::AnyConversion<bool>::createAny( last_value );  }    virtual  CORBA::Boolean evaluate (          )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {      last_value = massign->evaluate();      return last_value;  }    virtual  CORBA::Any * get (          )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {      last_value =massign->get();      return RTT::AnyConversion<bool>::createAny( last_value );  }    virtual  char * getType (          )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {      return CORBA::string_dup( massign->getType().c_str() );  }  virtual  char * toString (          )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {      std::string result = massign->toString();      return CORBA::string_dup( result.c_str() );  }  virtual  CORBA::Boolean fromString (      const char* value    )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {            if ( !massign->getTypeInfo()->fromString( value, massign ) ) {          RTT::log(RTT::Error) << "Corba::AssignableExpression: Could not assign string to "<<massign->getType() <<"." <<RTT::endlog()							   <<" Tried to assign as "<< RTT::DataSource<ResultType>::GetType() << " to native type "<< RTT::DataSource<SourceType>::GetType()<< RTT::endlog();          return false;      }      return true;  }        virtual  char * getTypeName (          )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {      return CORBA::string_dup( massign->getTypeName().c_str() );  }  virtual void destroyExpression()    ACE_THROW_SPEC ((      CORBA::SystemException    )) {  }};class  Orocos_Action_i    : public virtual POA_RTT::Corba::Action,      public virtual PortableServer::RefCountServantBase{	RTT::MethodC morig;    RTT::CommandInterface* mcom;    PortableServer::POA_var mpoa;public:  //Constructor   Orocos_Action_i ( RTT::MethodC* orig, RTT::CommandInterface* com, PortableServer::POA_ptr the_poa );    PortableServer::POA_ptr _default_POA()    {        return PortableServer::POA::_duplicate(mpoa);    }    //Destructor     virtual ~Orocos_Action_i (void);    virtual  CORBA::Boolean execute (          )    ACE_THROW_SPEC ((      CORBA::SystemException      ));  virtual  CORBA::Boolean executeAny (      const ::RTT::Corba::AnyArguments& args    )    ACE_THROW_SPEC ((      CORBA::SystemException    ,::RTT::Corba::WrongNumbArgException    ,::RTT::Corba::WrongTypeArgException    ));  virtual  void reset (          )    ACE_THROW_SPEC ((      CORBA::SystemException      ));  virtual void destroyAction()    ACE_THROW_SPEC ((      CORBA::SystemException    )) {  }};/** * This class is nowhere used in Orocos (0.25.0) * The Orocos_AnyMethod_i is used instead to have a template-less * servant. */template<class T>class  Orocos_Method_i    : public virtual Orocos_Expression_i<T>,      public virtual POA_RTT::Corba::Method{ protected:    typedef T SourceType;    typedef typename RTT::DataSource<T>::value_t ResultType;	RTT::MethodC methodc; public:  //Constructor   Orocos_Method_i (RTT::MethodC orig, typename RTT::DataSource<SourceType>::shared_ptr datas, PortableServer::POA_ptr the_poa )      : Orocos_Expression_i<SourceType>( datas, the_poa ), methodc(orig)    {}    //Destructor     virtual ~Orocos_Method_i (void) {}    virtual  CORBA::Boolean execute (          )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {      return this->evaluate();  }  virtual  CORBA::Boolean executeAny (      const ::RTT::Corba::AnyArguments& args    )    ACE_THROW_SPEC ((      CORBA::SystemException    ,::RTT::Corba::WrongNumbArgException    ,::RTT::Corba::WrongTypeArgException	  )) {      RTT::MethodC mgen = methodc;    try {        for (size_t i =0; i != args.length(); ++i)            mgen.arg( RTT::DataSourceBase::shared_ptr( new RTT::ValueDataSource<CORBA::Any_var>( new CORBA::Any( args[i] ) )));        // if not ready, not enough args were given, *guess* a one off error in the exception :-(        if ( !mgen.ready() )            throw ::RTT::Corba::WrongNumbArgException( args.length()+1, args.length() );        this->morig = mgen.getDataSource();        return this->execute();    } catch ( RTT::wrong_number_of_args_exception& wna ) {        throw ::RTT::Corba::WrongNumbArgException( wna.wanted, wna.received );    } catch ( RTT::wrong_types_of_args_exception& wta ) {        throw ::RTT::Corba::WrongTypeArgException( wta.whicharg, wta.expected_.c_str(), wta.received_.c_str() );    }    return 0;  }  virtual  void reset(          )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {      this->morig->reset();  }};class  Orocos_AnyMethod_i    : public virtual Orocos_AnyExpression_i,      public virtual POA_RTT::Corba::Method{protected:	RTT::MethodC mmethodc;public:    virtual void copy( RTT::DataSourceBase::shared_ptr new_ds ) {        morig = new_ds;    }  //Constructor   Orocos_AnyMethod_i (RTT::MethodC orig, RTT::DataSourceBase::shared_ptr datas, PortableServer::POA_ptr the_poa )      : Orocos_AnyExpression_i( datas, the_poa ), mmethodc(orig)    {}    //Destructor     virtual ~Orocos_AnyMethod_i (void) {}    virtual  CORBA::Boolean execute (          )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {      return this->evaluate();  }  CORBA::Boolean executeAny (      const ::RTT::Corba::AnyArguments& args    )    ACE_THROW_SPEC ((      CORBA::SystemException    ,::RTT::Corba::WrongNumbArgException    ,::RTT::Corba::WrongTypeArgException	  )) {      RTT::MethodC mgen = mmethodc;    try {        for (size_t i =0; i != args.length(); ++i)            mgen.arg( RTT::DataSourceBase::shared_ptr( new RTT::ValueDataSource<CORBA::Any_var>( new CORBA::Any( args[i] ) )));        // if not ready, not enough args were given, *guess* a one off error in the exception :-(        if ( !mgen.ready() )            throw ::RTT::Corba::WrongNumbArgException( args.length()+1, args.length() );        morig = mgen.getDataSource();        return this->evaluate();    } catch ( RTT::wrong_number_of_args_exception& wna ) {        throw ::RTT::Corba::WrongNumbArgException( wna.wanted, wna.received );    } catch ( RTT::wrong_types_of_args_exception& wta ) {        throw ::RTT::Corba::WrongTypeArgException( wta.whicharg, wta.expected_.c_str(), wta.received_.c_str() );    }    return 0;  }  virtual  void reset(          )    ACE_THROW_SPEC ((      CORBA::SystemException      )) {      this->morig->reset();  }  virtual void destroyAction()    ACE_THROW_SPEC ((      CORBA::SystemException    )) {  }};class  Orocos_Command_i    : public virtual POA_RTT::Corba::Command,      public virtual PortableServer::RefCountServantBase{protected:    RTT::CommandC* morig;    RTT::CommandC* mcomm;    PortableServer::POA_var mpoa;public:  //Constructor     /**     * Create a CORBA servant for a CommandC object.     * @param orig A CommandC object being ready for receiving arg() calls. This is required     * for executeAny(), such that new arguments can be provided.     * @param c A CommandC object being ready for execute(). This is required for execute().     */  Orocos_Command_i (RTT::CommandC& orig,RTT::CommandC& c, PortableServer::POA_ptr the_poa);  /**   * Create a CORBA servant for a CommandC object without executeAny() support.   */  Orocos_Command_i (RTT::DispatchInterface::shared_ptr orig, PortableServer::POA_ptr the_poa);    PortableServer::POA_ptr _default_POA()    {        return PortableServer::POA::_duplicate(mpoa);    }    //Destructor   virtual ~Orocos_Command_i (void);    virtual  CORBA::Boolean execute (          )    ACE_THROW_SPEC ((      CORBA::SystemException    ));    virtual  CORBA::Boolean executeAny (      const ::RTT::Corba::AnyArguments& args    )    ACE_THROW_SPEC ((      CORBA::SystemException    ,::RTT::Corba::WrongNumbArgException    ,::RTT::Corba::WrongTypeArgException    ));  virtual  CORBA::Boolean sent (          )    ACE_THROW_SPEC ((      CORBA::SystemException    ));    virtual  CORBA::Boolean accepted (          )    ACE_THROW_SPEC ((      CORBA::SystemException    ));    virtual  CORBA::Boolean executed (          )    ACE_THROW_SPEC ((      CORBA::SystemException    ));    virtual  CORBA::Boolean valid (          )    ACE_THROW_SPEC ((      CORBA::SystemException    ));    virtual  CORBA::Boolean done (          )    ACE_THROW_SPEC ((      CORBA::SystemException    ));    virtual  void reset (          )    ACE_THROW_SPEC ((      CORBA::SystemException    ));    virtual void destroyCommand()    ACE_THROW_SPEC ((      CORBA::SystemException    ));};#endif /* INCLUDE_EXPRESSIONI_H_  */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?