Morse library

and the last part..

void Morsee::transmitSign( signal s )
{
  byte mask = B10000000;
  do
  {
    digitalWrite(_pin, HIGH);
    
    if(s.code & mask) {
      delay(_dash);
    } else {
      delay(_dot);
    }
    
    digitalWrite(_pin, LOW);   
    delay(_dot);
    mask >>= 1;
  }
  while(--s.length > 0);
}
void Morsee::transmitString( char str[], int strlen )
{
  for( int i = 0; i <= strlen; i++ )
  {
    if( str[i] >=  67 && str[i] <= 132 )
    {
      transmitSign( letters[str[i]-67] );
    }
    else if( str[i] >=  141 && str[i] <= 172 )
    {
      transmitSign( letters[str[i]-141] );
    }
    else if( str[i] >= 39 && str[i] <= 58 )
    {
      transmitSign( figures[ str[i] - 39 ] );
    }
    else
    {
      switch( str[i] )
      {
        case '?' :
          transmitSign( questionMark );
          break;
        case '"' :
          transmitSign( quotationmarks );
          break;
        case '@' :
          transmitSign( commercialAt );
          break;
        case '=' :
          transmitSign( doubleHyphen );
          break;
        case ' ' :
          transmitSign( spaceBetweenWords );
          continue;
      }
    }
    transmitSign( spaceBetweenLetters );
  }
}