コード例 #1
0
ファイル: Parameter.cpp プロジェクト: fdb/nodebox-cpp
Parameter::Parameter(Node *node, const ParameterName& name, const ParameterType& type, Channel channels, ParameterDirection direction)
     : m_node(node),
       m_name(name),
       m_verboseName(""),
       m_type(type),
       m_direction(direction),
       m_connection(0),
       m_channelCount(channels),
       m_channels(new Value[channels])
{
    if (validName(name)) {
        m_name = name;
    } else {
        throw InvalidName();
    }
    
    if (channels <= 0) {
        throw InvalidName();
    }
    
    for (Channel i=0; i<m_channelCount;++i) {        
        if (m_type == kInt) {
            m_channels[i].i = 0;
        } else if (m_type == kFloat) {
            m_channels[i].f = 0;
        } else if (m_type == kString) {
            m_channels[i].s = new std::string;
        } else {
            m_channels[i].d = 0;
        }
    }
}
コード例 #2
0
ファイル: NamedVector.hpp プロジェクト: D-Alex/base-types
 /** Returns the index that corresponds to the given name
  *
  * @throws InvalidName if the given name does not exist on this array
  */
 size_t mapNameToIndex(std::string const& name) const
 {
     std::vector<std::string>::const_iterator it = find(names.begin(), names.end(), name);
     if (it == names.end())
         throw InvalidName(name);
     return it - names.begin();
 }
コード例 #3
0
  /*!
   * @if jp
   * @brief 与えられた文字列表現を NameComponent に分解する
   * @else
   * @brief Resolve given string representation to NameComponent
   * @endif
   */
  CosNaming::Name CorbaNaming::toName(const char* sname)
    throw (SystemException, InvalidName)
  {
    if (!sname)         throw InvalidName();
    if (*sname == '\0') throw InvalidName();
    
    std::string string_name(sname);
    std::vector<std::string> name_comps;
    
    // String name should include 1 or more names
    CORBA::ULong nc_length = 0;
    nc_length = split(string_name, std::string("/"), name_comps);
    if (!(nc_length > 0)) throw InvalidName();
    
    // Name components are allocated
    CosNaming::Name_var    name = new CosNaming::Name();
    name->length(nc_length);
    
    // Insert id and kind to name components
    for (CORBA::ULong i = 0; i < nc_length; ++i)
      {
	std::string::size_type pos;
	pos = name_comps[i].find_last_of(".");
	if (pos != name_comps[i].npos)
	  {
	    name[i].id   = 
	      CORBA::string_dup(name_comps[i].substr(0, pos).c_str());
	    name[i].kind = 
	      CORBA::string_dup(name_comps[i].substr(pos + 1).c_str());
	  }
	else
	  {
	    name[i].id   = CORBA::string_dup(name_comps[i].c_str());
#ifndef ORB_IS_RTORB
	    name[i].kind = "";
#else // ORB_IS_RTORB
	    name[i].kind = (char*)"";
#endif // ORB_IS_RTORB
	  }
      }
    return name;
  }
コード例 #4
0
 /*!
  * @if jp
  * @brief 与えられた NameComponent の文字列表現を返す
  * @else
  * @brief Get string representation of given NameComponent
  * @endif
  */
 char* CorbaNaming::toString(const CosNaming::Name& name)
   throw (SystemException, InvalidName)
 {
   if (name.length() == 0)
     throw InvalidName();
   
   CORBA::ULong slen = 0;
   slen = getNameLength(name);
   
   CORBA::String_var string_name = CORBA::string_alloc(slen);
   nameToString(name, (char*)string_name, slen);
   
   return string_name._retn();
 }