Exemplo n.º 1
0
int main()
{
    BinarySearch binarySearch;
    int ret = -1;
    {
        std::vector<int> datas;
        int dest = 3;
        ret = binarySearch.search(datas, dest);
        LOG_IF(INFO, ret == -1) << "Case 1 Pass";
        CHECK(ret == -1) << "Case 1 Failed, Dest Not Found:" << dest << " ret:" << ret;
    }
    {
        int dataArr[] = {1};
        std::vector<int> datas(dataArr, dataArr + 1);
        int dest = 3;
        ret = binarySearch.search(datas, dest);
        LOG_IF(INFO, ret == -1) << "Case 2 Pass";
        CHECK(ret == -1) << "Case 2 Failed, Dest Not Found:" << dest;
    }
    {
        int dataArr[] = {1,2,3,4,5,6,7};
        std::vector<int> datas(dataArr, dataArr + 7);
        int dest = 5;
        ret = binarySearch.search(datas, dest);
        LOG_IF(INFO, ret == 4) << "Case 3 Pass";
        CHECK(ret == 4) << "Case 3 Failed, Dest Not Found:" << dest;
    }
    return 0;
}
Exemplo n.º 2
0
void HttpRequest::upload(const QString& aUrl, const QString& aContent, const QString& aFilePath)
{
    qDebug() << "HttpRequest::upload(const QString& aUrl, const QString& aFileName)";
    qDebug() << aUrl << "  body is   " + aFilePath.toUtf8();
    if(aUrl.isEmpty())
    {
        return;
    }

    QByteArray ba;
    ba.append(aUrl);
    qDebug() << QUrl::fromEncoded(ba);
    mRequest->setUrl(QUrl::fromEncoded(ba));

    QString fileName = aFilePath.section('\\', -1);
    qsrand(QDateTime::currentDateTime().toTime_t());
    QString b = QVariant(qrand()).toString()+QVariant(qrand()).toString()+QVariant(qrand()).toString();
    QString boundary="---------------------------" + b;

    QByteArray datas(QString("--" + boundary + "\r\n").toAscii());
    datas += "Content-Disposition: form-data; name=\"status\"\r\n";
    datas += "Content-Transfer-Encoding: binary\r\n";
    datas += "Content-Type: text/plain; charset=utf-8\r\n\r\n";

    datas += aContent;
    datas += "\r\n";
    datas += QString("--" + boundary + "\r\n").toAscii();

    datas += "Content-Disposition: form-data; name=\"media[]\"; ";
    datas += "filename=\"" + fileName + "\"\r\n";
    datas += "Content-Transfer-Encoding: binary\r\n";
    datas += "Content-Type: image/jpeg\r\n\r\n";
    qDebug() << datas;
    QFile file(TwtImageScaler::scaled(aFilePath));
    if (!file.open(QIODevice::ReadOnly))
    {
        qDebug() << "HttpRequest::upload open file failed";
        return;
    }
    qDebug() << "HttpRequest::file name" << file.fileName();
    qDebug() << "HttpRequest::file size" << file.size();
    datas += file.readAll();
    datas += "\r\n";
    datas += QString("--" + boundary + "--\r\n").toAscii();
    qDebug() << QString::number(datas.length());
    file.close();

    mRequest->setHeader(QNetworkRequest::ContentLengthHeader, QString::number(datas.length()));
    mRequest->setHeader(QNetworkRequest::ContentTypeHeader, "multipart/form-data; boundary=" + boundary);

    if(NULL != gUniqueNetwrkManager)
    {
        // upload file need more time
        mRequestTimeoutTimer->setInterval(KRequestTimeOut*2);
        mRequestTimeoutTimer->start();
        mReply = gUniqueNetwrkManager->post(*mRequest, datas);
        connect(mReply, SIGNAL(finished()), this, SLOT(onReplyFinished()));
    }
}
Exemplo n.º 3
0
highscores::highscores()
{
    QFile fl("test.dat");
    fl.open(QIODevice::ReadWrite);
    QDataStream datas(&fl);
    qltext = new QLabel("<b>Name</b><br>",this);
    qlscore = new QLabel("<b>Score</b><br>",this);
    qhb = new QHBoxLayout;
    datas>>qvscores;
    for(int i=0;i<qvscores.size();i++){
        qltext->setText(qltext->text()+"<br>"+qvscores[i][0]);
        qlscore->setText(qlscore->text()+"<br>"+qvscores[i][1]);
    }
    qhb->addWidget(qltext);
    qhb->addWidget(qlscore);
    this->setLayout(qhb);
    fl.close();
}
Exemplo n.º 4
0
void SohuMiniBlog::upload(const QString& aUrl, const QString& aFilePath)
{
    qDebug() << "SohuMiniBlog::upload(const QString& aUrl, const QString& aFileName)";
    qDebug() << aUrl << "  body is   " + aFilePath.toUtf8();
    if(aUrl.isEmpty())
    {
        return;
    }

    mRequest->setUrl(QUrl(aUrl));

    QString fileName = aFilePath.section('\\', -1).section('.', 0, 0);
    qsrand(QDateTime::currentDateTime().toTime_t());
    QString b = QVariant(qrand()).toString()+QVariant(qrand()).toString()+QVariant(qrand()).toString();
    QString boundary="---------------------------" + b;

    QByteArray datas(QString("--" + boundary + "\r\n").toAscii());
    datas += "Content-Disposition: form-data; name=\"pic\"\r\n";
    datas += "filename=\"0" + fileName.toUtf8() + ".jpeg\" Content-Type: image/jpeg\r\n\r\n";
    QFile file(aFilePath);
    if ( !file.open(QIODevice::ReadOnly) )
    {
        qDebug() << "SohuMiniBlog::upload open file failed";
        return;
    }

    datas += file.readAll();
    datas += "\r\n";
    datas += QString("--" + boundary + "--\r\n").toAscii();
    qDebug() << QString::number(datas.length());

    mRequest->setHeader(QNetworkRequest::ContentLengthHeader, QString::number(datas.length()));
    mRequest->setHeader(QNetworkRequest::ContentTypeHeader, "multipart/form-data; boundary=" + boundary);

    if(NULL != gUniqueNetwrkManager)
    {
        mRequestTimeoutTimer->setInterval(KRequestTimeOut);
        mRequestTimeoutTimer->start();
        mReply = gUniqueNetwrkManager->post(*mRequest, datas);
        qDebug() << "Start upload:"<<QDateTime::currentDateTime().toString();
        connect(mReply, SIGNAL(finished()), this, SLOT(onReplyFinished()));
    }
}
Exemplo n.º 5
0
void Data<Annotation>::set_union(
  std::set<Data<Annotation> *> & result_,
  const std::set<Data<Annotation> *> & datas_
) {
  // FIXME currently: same symbol => same data

  std::vector<Data<Annotation> *> datas(datas_.begin(), datas_.end());
  std::vector<Data<Annotation> *> result_in (result_.begin(), result_.end());
  std::vector<Data<Annotation> *> result_out(result_.size() + datas.size());

  std::sort(result_in.begin(), result_in.end(), less);
  std::sort(datas.begin(), datas.end(), less);

  typename std::vector<Data<Annotation> *>::iterator it_result_begin = result_out.begin();
  typename std::vector<Data<Annotation> *>::iterator it_result_end = std::set_union(result_in.begin(), result_in.end(), datas.begin(), datas.end(), it_result_begin, less);

  result_.clear();
  result_.insert(it_result_begin, it_result_end);
}
Exemplo n.º 6
0
void DataManager::generateXmlFile(){
    XmlTree dataTree;
    dataTree.setTag("QLT_Genome_Data");

    dataTree.push_back(XmlTree("datapath","./data/exons/"));
    
    XmlTree datas("datasets","");
    for(int i=0;i<23;i++){
        XmlTree dataset("dataset","");
        dataset.setAttribute("id", i);
        dataset.push_back( XmlTree("title","Chromosome "+toString(i+1)) );
        dataset.push_back( XmlTree("map","exons."+toString(i+1)+".locations") );
        dataset.push_back( XmlTree("bases","exons."+toString(i+1)+".bases") );
        datas.push_back( dataset );
    }
    dataTree.push_back( datas );

    DataTargetPathRef f = writeFile( getAssetPath( "QLT_Genome_Data.xml" ), true );
    dataTree.write( f );
    
}
Exemplo n.º 7
0
pass2()
{
exnull();
if(comments) putcomment();
if(verbose)
	fprintf(diagfile, "    Pass 2\n");

dclsect = 0;
indent = 0;

namegen();
dclgen();
body(iefile);
datas();
body(icfile);

p2stmt(0);
p2key(FEND);
p2flush();
if(verbose)
	fprintf(diagfile, "    Pass 2 done\n");
}
Exemplo n.º 8
0
int main() {
	{
		TimeCheck time;

		constexpr int WIDTH = 175;
		constexpr int HEIGHT = 175;
		constexpr int STRIDE = WIDTH * 4;

		std::vector<unsigned char> datas(HEIGHT*STRIDE);
		auto surface = create_surface(datas, CAIRO_FORMAT_ARGB32, SURFACE_SIZE{ WIDTH, HEIGHT }, STRIDE);
		auto cr = create(surface);

		rectangle(cr, POINT{ 0,0 }, SIZE{ WIDTH, HEIGHT });
		source(cr, RGB{ 0,0,0 });
		fill(cr);

		draw(cr, WIDTH, HEIGHT);

		write_to_png(surface, "image.png"); 
	}
	return 0;
}
Exemplo n.º 9
0
TreeList * FunctionListModel::insertFunction (const QString &name,const QString &prototype,const QString &filename,long start_line_org,long end_line_org,long start_line_pre,long start_column_pre,long end_line_pre, long end_column_pre,bool reference)
{
  TreeList *item_p=NULL;
  QStringList name_list = name.split("::");
  int count=name_list.size();
  int name_list_id=1;
  TreeList *parent_p=rootItem;
  for ( QStringList::const_iterator it = name_list.begin(); it != name_list.end(); ++it )
  {
    if (name_list_id==count)
    { /* Last Element */
      if ( ! (item_p=findFunction(parent_p,*it,prototype) ) )
      { /* create new entry */
        QVector <QVariant> datas(ITEM_MAX);
        datas[ITEM_FILE_NAME_REF] = QString();
        datas[ITEM_START_LINE_REF] = -1;
        datas[ITEM_START_COLUMN_REF] = -1;
        datas[ITEM_END_LINE_REF] = -1;
        datas[ITEM_END_COLUMN_REF] = -1;
        datas[ITEM_FILE_NAME] = QString();
        datas[ITEM_START_LINE] = -1;
        datas[ITEM_START_COLUMN] = -1;
        datas[ITEM_END_LINE] = -1;
        datas[ITEM_END_COLUMN] = -1;
        datas[ITEM_FUNCTION] = false;
        datas[ITEM_DESCRIPTION] = QString();
        datas[ITEM_NB_TESTED]= QVariant();
        datas[ITEM_NB_UNTESTED]= QVariant();
        datas[ITEM_NAME]=*it;
        item_p=new TreeList(datas,parent_p);

        /* insert the row in the model */
        QModelIndex parent_index;
        if (item_p->parent()!=rootItem)
          parent_index=createIndex(item_p->parent()->row(),0,item_p->parent());
      }

      item_p->setData(ITEM_FUNCTION, true);
      item_p->setData(ITEM_DESCRIPTION, prototype);
      item_p->setData(ITEM_NB_TESTED,QVariant());
      item_p->setData(ITEM_NB_UNTESTED,QVariant());
      if (reference)
      {
        item_p->setData(ITEM_FILE_NAME_REF, filename);
        item_p->setData(ITEM_START_LINE_REF_ORIG, static_cast<int>(start_line_org));
        item_p->setData(ITEM_END_LINE_REF_ORIG, static_cast<int>(end_line_org));
        item_p->setData(ITEM_START_LINE_REF, static_cast<int>(start_line_pre));
        item_p->setData(ITEM_START_COLUMN_REF, static_cast<int>(start_column_pre));
        item_p->setData(ITEM_END_LINE_REF, static_cast<int>(end_line_pre));
        item_p->setData(ITEM_END_COLUMN_REF, static_cast<int>(end_column_pre));
      }
      else
      {
        item_p->setData(ITEM_FILE_NAME, filename);
        item_p->setData(ITEM_START_LINE_ORIG, static_cast<int>(start_line_org));
        item_p->setData(ITEM_END_LINE_ORIG, static_cast<int>(end_line_org));
        item_p->setData(ITEM_START_LINE, static_cast<int>(start_line_pre));
        item_p->setData(ITEM_START_COLUMN, static_cast<int>(start_column_pre));
        item_p->setData(ITEM_END_LINE, static_cast<int>(end_line_pre));
        item_p->setData(ITEM_END_COLUMN, static_cast<int>(end_column_pre));
      }
    }
    else
    {
      if ( ! (item_p=findFunction(parent_p,*it,QString()) ) )
      { /* create new entry */
        QVector <QVariant> datas(ITEM_MAX);
        datas[ITEM_FILE_NAME_REF] = QString();
        datas[ITEM_START_LINE_REF] = -1;
        datas[ITEM_START_LINE_REF_ORIG] = -1;
        datas[ITEM_END_LINE_REF_ORIG] = -1;
        datas[ITEM_START_LINE_ORIG] = -1;
        datas[ITEM_END_LINE_ORIG] = -1;
        datas[ITEM_START_COLUMN_REF] = -1;
        datas[ITEM_END_LINE_REF] = -1;
        datas[ITEM_END_COLUMN_REF] = -1;
        datas[ITEM_FILE_NAME] = QString();
        datas[ITEM_START_LINE] = -1;
        datas[ITEM_START_COLUMN] = -1;
        datas[ITEM_END_LINE] = -1;
        datas[ITEM_END_COLUMN] = -1;
        datas[ITEM_FUNCTION] = false;
        datas[ITEM_DESCRIPTION] = QString();
        datas[ITEM_NB_TESTED]= QVariant();
        datas[ITEM_NB_UNTESTED]= QVariant();
        datas[ITEM_NAME]=*it;
        item_p=new TreeList(datas,parent_p);

        /* insert the row in the model */
        QModelIndex parent_index;
        if (item_p->parent()!=rootItem)
          parent_index=createIndex(item_p->parent()->row(),0,item_p->parent());
      }

    }
    parent_p=item_p;
    name_list_id++;
  }
  return item_p;
}
Exemplo n.º 10
0
int main() {
	{
		TimeCheck time;
		constexpr int WIDTH = 450;
		constexpr int HEIGHT = 900;
		constexpr int STRIDE = WIDTH * 4;

		std::vector<unsigned char> datas(HEIGHT*STRIDE);
		auto surface = create_surface(datas, CAIRO_FORMAT_ARGB32, SURFACE_SIZE{ WIDTH, HEIGHT }, STRIDE);
		auto cr = create(surface);

		rectangle(cr, POINT{ 0,0 }, SIZE{ WIDTH ,HEIGHT });
		source(cr, RGB{ 1,1,1 });
		fill(cr);
		
		source(cr, RGB{ 0,0,0 });
		font_face(cr, u8"serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
		font_size(cr, 40);
		translate(cr, POINT{ 40, 40 });

		
		font_face(cr, u8"mono", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
		font_size(cr, 12);
		show_text(cr, u8"+CTM rotation");

		constexpr auto NUM_STRINGS = 3;
		save(cr); 
		{
			font_face(cr, u8"serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
			font_size(cr, 40);
			for (int i = 0; i < NUM_STRINGS; ++i) {
				RADIAN angle{ i * 0.5*pi<double> / double(NUM_STRINGS - 1) };
				save(cr);
				rotate(cr, angle);
				move_to(cr, POINT{ 100, 0 });
				show_text(cr, u8"Text");
				restore(cr);
			}
		}
		restore(cr);

		translate(cr, POINT{ 0, HEIGHT / 3 });
		move_to(cr, POINT{ 0, 0 });
		show_text(cr, u8"+CTM rotation");
		rel_move_to(cr, POINT{ 0, 12 });
		show_text(cr, u8"-font rotation");

		save(cr);
		font_face(cr, u8"serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
		font_size(cr, 40);
		{
			cairo_matrix_t mat{};
			for (int i = 0; i < NUM_STRINGS; ++i) {
				RADIAN angle{ i * 0.5*pi<double> / double(NUM_STRINGS - 1) };
				save(cr);
				rotate(cr, angle);
				identity(mat);
				scale(mat, SCALE{ 40,40 });
				rotate(mat, -angle);
				font_matrix(cr, mat);
				move_to(cr, POINT{ 100, 0 });
				show_text(cr, u8"Text");
				restore(cr);
			}
		}
		restore(cr);

		translate(cr, POINT{ 0, HEIGHT / 3 });
		move_to(cr, POINT{ 0, 0 });
		show_text(cr, u8"+CTM rotation");
		rel_move_to(cr, POINT{ 0, 12 });
		show_text(cr, u8"-CTM rotation");

		save(cr);
		font_face(cr, u8"serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
		font_size(cr, 40);
		{
			for (int i = 0; i < NUM_STRINGS; ++i) {
				RADIAN angle{ i * 0.5*pi<double> / double(NUM_STRINGS - 1) };
				save(cr);
				rotate(cr, angle);
				move_to(cr, POINT{ 100, 0 });
				rotate(cr, -angle);
				show_text(cr, u8"Text");
				restore(cr);
			}
		}
		restore(cr);
		
		write_to_png(surface, "image.png"); 
	}
	return 0;
}
/**
 * Gets the response from the STUN server, checks it for its validity and
 * then parses the answer into address and port
 * \return "" if the address could be parsed or an error message
*/
std::string GetPublicAddress::parseStunResponse()
{
    TransportAddress sender;
    const int LEN = 2048;
    char buffer[LEN];
    int len = m_transaction_host->receiveRawPacket(buffer, LEN, &sender, 2000);

    if(sender.getIP()!=m_stun_server_ip)
    {
        TransportAddress stun(m_stun_server_ip, m_stun_server_port);
        Log::warn("GetPublicAddress", 
                  "Received stun response from %s instead of %s.",
                  sender.toString().c_str(), stun.toString().c_str());
    }

    if (len<0)
        return "STUN response contains no data at all";

    // Convert to network string.
    NetworkString datas((uint8_t*)buffer, len);

    // check that the stun response is a response, contains the magic cookie
    // and the transaction ID
    if (datas.getUInt16() != 0x0101)
        return "STUN response doesn't contain the magic cookie";
    int message_size = datas.getUInt16();
    if (datas.getUInt32() != m_stun_magic_cookie)
    {
        return "STUN response doesn't contain the magic cookie";
    }

    for (int i = 0; i < 12; i++)
    {
        if (datas.getUInt8() != m_stun_tansaction_id[i])
            return "STUN response doesn't contain the transaction ID";
    }

    Log::debug("GetPublicAddress",
               "The STUN server responded with a valid answer");

    // The stun message is valid, so we parse it now:
    if (message_size == 0)
        return "STUN response does not contain any information.";
    if (message_size < 4) // cannot even read the size
        return "STUN response is too short.";

    // Those are the port and the address to be detected
    
    int pos = 20;
    while (true)
    {
        int type = datas.getUInt16();
        int size = datas.getUInt16();
        if (type == 0 || type == 1)
        {
            assert(size == 8);
            datas.getUInt8();    // skip 1 byte
            assert(datas.getUInt8() == 0x01); // Family IPv4 only
            uint16_t port = datas.getUInt16();
            uint32_t ip   = datas.getUInt32();
            TransportAddress address(ip, port);
            // finished parsing, we know our public transport address
            Log::debug("GetPublicAddress", 
                       "The public address has been found: %s",
                        address.toString().c_str());
            NetworkConfig::get()->setMyAddress(address);
            break;
        }   // type = 0 or 1
        datas.skip(4 + size);
        message_size -= 4 + size;
        if (message_size == 0)
            return "STUN response is invalid.";
        if (message_size < 4) // cannot even read the size
            return "STUN response is invalid.";
    }   // while true

    return "";
}   // parseStunResponse
Exemplo n.º 12
0
  void run()
  {
    while(!this->pollfds.empty())
    {
      int r = 0;
      std::vector<pollfd> pollfds(this->pollfds.begin(), this->pollfds.end());
      std::vector<filter_data> datas(this->datas.begin(), this->datas.end());
      do
      {
        r = poll(&pollfds[0], pollfds.size(), 1000);
      } while (r == -1 && errno == EINTR);
      if(r == -1)
      {
        std::cout << "Failed reading poll with errno: " << errno << std::endl;
        throw std::runtime_error ("Failed poll'ing");
      }

      boost::posix_time::ptime now = boost::posix_time::second_clock::local_time();
      for(std::vector<pollfd>::iterator first = pollfds.begin()
            , last = pollfds.end(); first != last; ++first)
      {
        if(first->revents & POLLIN)
        {
          datas[std::distance(pollfds.begin(), first)].idle_time = now;
          std::cout << "Can read from " << std::distance(pollfds.begin(), first) << std::endl;
          unsigned char buffer[188*1000];
          
          int size = 0;
          do
          {
            size = read(first->fd, buffer, sizeof(buffer));
          } while(size == -1 && errno == EINTR);
          if(size == -1 && errno == EOVERFLOW)
          {
            std::cout << "Data overflow" << std::endl;
          }
          else if(size == -1)
          {
            std::cout << "Error reading data" << std::endl;
            throw std::runtime_error("Error reading data");
          }

          datas[std::distance(pollfds.begin(), first)].callback(buffer, size, first->fd);
        }
        else if(now - datas[std::distance(pollfds.begin(), first)].idle_time >= boost::posix_time::minutes(1))
        {
          std::cout << "Marking Timeout after " << (now - datas[std::distance(pollfds.begin(), first)].idle_time) << " time elapsed" << std::endl;
          datas[std::distance(pollfds.begin(), first)].timeout = true;
        }
      }

      std::vector<filter_data>::const_iterator data_first = datas.begin()
        , data_last = datas.end();
      std::vector<pollfd>::const_iterator poll_first = pollfds.begin();
      while(data_first != data_last)
      {
        std::size_t i = 0;
        for(std::list<pollfd>::iterator mutable_it = this->pollfds.begin()
              , mutable_end_it = this->pollfds.end(); mutable_it != mutable_end_it
              ;++mutable_it, ++i)
        {
          if(poll_first->fd == mutable_it->fd)
          {
            if(data_first->timeout)
            {
              this->datas.erase(boost::next(this->datas.begin(), i));
              this->pollfds.erase(mutable_it);
              break;
            }
            else
              boost::next(this->datas.begin(), i)->idle_time = data_first->idle_time;
          }
        }
        ++data_first;
        ++poll_first;
      }
      assert(this->pollfds.size() == this->datas.size());
    }
  }