示例#1
0
bool TreeSocket::Stats(const std::string &prefix, std::deque<std::string> &params)
{
    /* Get the reply to a STATS query if it matches this servername,
     * and send it back as a load of PUSH queries
     */
    if (params.size() > 1)
    {
        if (InspIRCd::Match(this->ServerInstance->Config->ServerName, params[1]))
        {
            /* It's for our server */
            string_list results;
            User* source = this->ServerInstance->FindNick(prefix);
            if (source)
            {
                std::deque<std::string> par;
                par.push_back(prefix);
                par.push_back("");
                DoStats(this->ServerInstance, *(params[0].c_str()), source, results);
                for (size_t i = 0; i < results.size(); i++)
                {
                    par[1] = "::" + results[i];
                    Utils->DoOneToOne(this->ServerInstance->Config->GetSID(), "PUSH",par, source->server);
                }
            }
        }
        else
        {
            /* Pass it on */
            User* source = this->ServerInstance->FindNick(prefix);
            if (source)
                Utils->DoOneToOne(source->uuid, "STATS", params, params[1]);
        }
    }
    return true;
}
示例#2
0
CmdResult CommandStats::Handle (const std::vector<std::string>& parameters, User *user)
{
	if (parameters.size() > 1 && parameters[1] != ServerInstance->Config->ServerName)
		return CMD_SUCCESS;
	string_list values;
	char search = parameters[0][0];
	DoStats(search, user, values);
	for (size_t i = 0; i < values.size(); i++)
		user->SendText(":%s", values[i].c_str());

	return CMD_SUCCESS;
}
示例#3
0
void imCalcImageStatistics(const imImage* image, imStats* stats)
{
  for (int i = 0; i < image->depth; i++)
  {
    switch(image->data_type)
    {
    case IM_BYTE:
      DoStats((imbyte*)image->data[i], image->count, &stats[i]);
      break;                                                                                
    case IM_SHORT:                                                                           
      DoStats((short*)image->data[i], image->count, &stats[i]);
      break;                                                                                
    case IM_USHORT:                                                                           
      DoStats((imushort*)image->data[i], image->count, &stats[i]);
      break;                                                                                
    case IM_INT:                                                                           
      DoStats((int*)image->data[i], image->count, &stats[i]);
      break;                                                                                
    case IM_FLOAT:                                                                           
      DoStats((float*)image->data[i], image->count, &stats[i]);
      break;                                                                                
    case IM_DOUBLE:
      DoStats((double*)image->data[i], image->count, &stats[i]);
      break;
    }
  }
}
示例#4
0
void imCalcHistogramStatistics(const imImage* image, imStats* stats)
{
  int hcount;
  unsigned long* histo = imHistogramNew(image->data_type, &hcount);

  for (int d = 0; d < image->depth; d++)
  {
    imCalcHistogram(image, histo, d, 0);

    DoStats((unsigned long*)histo, hcount, &stats[d]);
  }

  imHistogramRelease(histo);
}