Example #1
0
/**
    Analizza la stringa pattern per la verifica che sia uno schema valido per
    musicmeshfsc.
    Come effetto collaterale, riempie due vettori di dynamic_str_t (non ha
    effetti collaterali se si passa NULL ad entrambi i valori)

    SCHEMA = NOME ("/" NOME)*
    NOME = NOME1 | NOME2
    NOME1 = FISSO NOME2?
    NOME2 = KEYWORD NOME1?
    FISSO = ([^/%] | "%%")+
    KEYWORD = %artist | %year | %album | ...

    Nota che KEYWORD e dipende dal contenuto di KEYWORDS, definito in
            constants.c

    Al momento gli unici vincoli sono che
# non deve né iniziare né terminare per '/'
# il carattere '%' non è usato liberamente: esso infatti è usato per
        delimitare i segnaposto da usare; gli unici segnaposto supportati sono:
        - %artist -> Artista
        - %year -> Anno
        - %album -> Album
        - %track -> Traccia
        - %title -> Titolo
        - %genre -> Genere
        - %host -> Host
        - %path -> Path originale
        - %type -> Tipo del file originale
# gli elementi di tipo FISSO non possono essere stringhe vuote, né essere il
        solo carattere '_' (poiché è usato per altri scopi)


    es:
        %artist/%year - %album/%track + %title.%type
    diventa:
        NOME   "/"       NOME          "/"       NOME
        NOME2  "/"       NOME2         "/"       NOME2
        KEYWORD"/"KEYWORD     NOME1    "/"KEYWORD    NOME1
        KEYWORD"/"KEYWORD FISSO  NOME2 "/"KEYWORD FISSO     NOME2
        KEYWORD"/"KEYWORD FISSO KEYWORD"/"KEYWORD FISSO KEYWORD NOME1
        KEYWORD"/"KEYWORD FISSO KEYWORD"/"KEYWORD FISSO KEYWORD FISSO NOME2
        KEYWORD"/"KEYWORD FISSO KEYWORD"/"KEYWORD FISSO KEYWORD FISSO KEYWORD

        %artist"/" %year  " - " %album "/" %track " + " %title   "."   %type

    \param schema schema da verificare
    \param fissi vettore contenente gli elementi fissi riconosciuti
    \param keywords vettore contenente le keywords riconosciute
    \return 0 in caso di successo, -1 altrimenti
    \note fissi e keywords non sono riempiti se viene passato NULL
*/
int parse_schema(const char* schema, dynamic_obj_t* fissi, dynamic_obj_t*
        keywords) {
    dynamic_str_t *el_fisso = NULL, *el_keyword = NULL;
    if (fissi) {
        el_fisso = malloc(sizeof(dynamic_str_t));
        init_str(el_fisso);
    }
    if (keywords) {
        el_keyword = malloc(sizeof(dynamic_str_t));
        init_str(el_keyword);
    }
    int ret = nome(schema, 0, el_fisso, el_keyword);
    if (ret == -1)
        return -1;  // non c'è neanche un frammento
    while (ret != -1) {
        if (fissi)
            append_obj(fissi, el_fisso);
        if (keywords)
            append_obj(keywords, el_keyword);
        if (!schema[ret])
            return 0;   // fine stringa
        if (schema[ret++] != '/')
            return -1;
        if (fissi) {
            el_fisso = malloc(sizeof(dynamic_str_t));
            init_str(el_fisso);
        }
        if (keywords) {
            el_keyword = malloc(sizeof(dynamic_str_t));
            init_str(el_keyword);
        }
        ret = nome(schema, ret, el_fisso, el_keyword);
    }
    return -1;
}
void *raj(){

	int achei = 0;
	int r = 0;
	int pos = 0;

	while (acabou > 0){ /* enquanto as threads não terminaram (acabou == 0 indica que terminaram) */
		sleep (5); /* faz o raj passar de 5 em 5 segundos checando */
		achei = usou_forno[1];

		if ((forno == 0) && (fila > 0)) { /* se o forno estiver aberto e se estiver pessoas esperando na fila */
			puts ("Raj detectou um DeadLock");
			for (r = 0; r < 6;r++){ /*raj quando há deadlock libera o personagem que menos usou o forno, trata a inanição*/
				if (usou_forno[r] <= achei){
					achei = usou_forno[r];
					pos = r;
				}
			}

			printf ("Liberando %s \n", nome(pos));
			pthread_cond_signal(&(cond[pos]));
			vetor_fila[pos] = 0;
			fila--; /* decrementa o contador de pessoas da fila */
		}
	}

	pthread_exit(NULL);
}
Example #3
0
int main(void) {

  grafo g = le_grafo(stdin);

  long int d = diametro(g);

  printf("%s\n", nome(g));

  printf("%sdirecionado\n", direcionado(g) ? "" : "não ");

  if ( direcionado(g) )
    
    printf("%sfortemente conexo\n", fortemente_conexo(g) ? "" : "não ");
  
  else
    
    printf("%sconexo\n", conexo(g) ? "" : "des");
  
  if ( d == infinito )

    printf("diâmetro: oo\n");

  else

    printf("diâmetro: %ld\n", d);

  destroi_grafo(escreve_grafo(stdout, distancias(g)));

  printf("\n");

    return ! destroi_grafo(g);
}
Example #4
0
AutoChamada::AutoChamada(Wt::Dbo::Session& dbSession, std::vector<std::pair<Wt::WCheckBox*, Wt::Dbo::ptr<SiconfModel::Aluno>>> list) :
																								Wt::WDialog(),
																								_dbSession(dbSession),
																								_list(list),
																								index(0){

	Wt::Dbo::Transaction transaction(_dbSession);

	_presente = new Wt::WPushButton("Presente", footer());
	_ausente = new Wt::WPushButton("Ausente", footer());
	_anterior = new Wt::WPushButton("Anterior", footer());
	_cancelar = new Wt::WPushButton("Cancelar", footer());

	new Wt::WText("<h3>Chamada Automatica</h3>", titleBar());
	titleBar()->setContentAlignment(Wt::AlignCenter);
	contents()->setContentAlignment(Wt::AlignCenter);
	footer()->setContentAlignment(Wt::AlignCenter);

	_presente->clicked().connect(this, &AutoChamada::_presenteClicked);
	_ausente->clicked().connect(this, &AutoChamada::_ausenteClicked);
	_anterior->clicked().connect(this, &AutoChamada::_anteriorClicked);
	_cancelar->clicked().connect(this, &AutoChamada::_cancelClicked);

	_presente->setStyleClass("btn-success");
	_ausente->setStyleClass("btn-warning");
	_anterior->setStyleClass("btn-primary");
	_cancelar->setStyleClass("btn-danger");

	rejectWhenEscapePressed();

	auto aluno = _list.begin()->second->usuario();
	_name = new Wt::WText("<h4>" + aluno->nome() + " " + aluno->sobrenome() + "</h4>", contents());
	setWidth(Wt::WLength("30%"));
	show();
}
Example #5
0
/* ����������������������������ͻ
   � Construtores e Destrutores �
   ����������������������������ͼ */
template<class TpElem> ListaLigada<TpElem>::ListaLigada():pri(NULL)
{
    versao(1, 0, 0);
    grau(VERSAO_LIVRE);
    data(4, 9, 1999);
    numero_de_serie(0);
    nome("Lista Ligada");
    autor("Felipe Micaroni Lalli");
}
Example #6
0
void AutoChamada::_anteriorClicked(){
	Wt::Dbo::Transaction transaction(_dbSession);

	if(index > 0){
		index--;
		auto aluno = _list.at(index).second->usuario();
		_name->setText("<h4>" + aluno->nome() + " " + aluno->sobrenome() + "</h4>");
	}
}
Example #7
0
ProgramaPrincipal::ProgramaPrincipal()
{
  // Mouse:
  mouse.area(0, 0, getmaxx(), getmaxy());

  // Cabecalho:
  versao(1, 0, 0);
  grau(VERSAO_TESTE);
  data(30, 9, 1999);
  numero_de_serie(0);
  nome("Projeto GiraFun - COTUCA 1999");
  autor("Caceffo, Lalli e Magalhaes");

  // Criacao dos Objetos
  desktop = new DesktopCalhau(0, 0, getmaxx(), getmaxy());
  ferramentas = new FormularioCalhau(565, 50, 635, QUANTAS_FERRAMENTAS * 32 + 86, "Obj.");
  frmdesenho  = new FormularioCalhau(0, 0, 585, 473, "Desenho");
  cmdsair = new BotaoSimplesCalhau(getmaxx() - 10, 0, 10, 10, &sair, &desenho_sair);
  area = new PintaFun(5, 20, 570, 465);
  frmnomearq = new FormularioCalhau(500, 10, 660, 60, "Nome do Arquivo");
  nome_do_arquivo = new CaixaTextoCalhau(510, 32, 122, "novo.frn");

  // A f¢rmula para calcular o y ‚ (i * 32 + 80)
  botao[0] = new BotaoSimplesCalhau(572, 80, 45, 30, &ferramenta_livre, &desenho_livre);
  botao[1] = new BotaoSimplesCalhau(572, 112, 45, 30, &ferramenta_ponto, &desenho_ponto);
  botao[2] = new BotaoSimplesCalhau(572, 144, 45, 30, &ferramenta_reta, &desenho_linha);
  botao[3] = new BotaoSimplesCalhau(572, 176, 45, 30, &ferramenta_circulo, &desenho_circulo);
  botao[4] = new BotaoSimplesCalhau(572, 208, 45, 30, &arquivo_abre, &desenho_abre);
  botao[5] = new BotaoSimplesCalhau(572, 240, 45, 30, &arquivo_salvar, &desenho_salvar);
  botao[6] = new BotaoSimplesCalhau(572, 272, 45, 30, &sobre, &desenho_sobre);
  botao[7] = new BotaoSimplesCalhau(572, 304, 45, 30, &muda_cor, &desenho_cor);
  botao[8] = new BotaoSimplesCalhau(572, 336, 45, 30, &muda_grossura, &desenho_grossura);
  botao[9] = new BotaoSimplesCalhau(572, 368, 45, 30, &arquivo_novo, &desenho_novo);

  // Modificando Propriedades Padräes
  desktop->c.cor_de_fundo = 1;
  frmdesenho->c_foco = VERDADEIRO;

  // Pondo Cada Macaco no Seu Galho
  desktop->insere(frmdesenho);
  desktop->insere(ferramentas);
  desktop->insere(frmnomearq);
  frmdesenho->insere(area);
  desktop->insere(cmdsair);
  frmnomearq->insere(nome_do_arquivo);

  for (int i = 0; i < QUANTAS_FERRAMENTAS; i++)
    ferramentas->insere(botao[i]);

  // Botando Para Funcionar
  ++mouse; ++mouse;
  desktop->exibe(mouse);
  desktop->loop(mouse, &evento);
}
Example #8
0
void main() 
{
  while (1) 
  {
    printf("\nDigite um texto com espacos, (FIM) para encerrar:\n");
    fflush(stdin);
    gets(msg);
    if ((strcmp(msg, "FIM")==0) || (strcmp(msg, "fim")==0))
       break;
    nome();
  }
}
void quer_usar_forno(ArgumentoT *personagem) { 
    pthread_mutex_lock(&monitor);
    	printf("%s quer usar o forno\n", nome((*personagem).id)); 

        if ((forno == 1) || (fila > 0)){ /* se o forno está fechado ou tem alguem na fila */
			vetor_fila[(*personagem).id] = 1; 
           	fila++; /* contador de pessoas na fila */      
           	pthread_cond_wait(&cond[(*personagem).id], &monitor); /* da um wait no id do personagem */            
        }

       	forno = 1; /* forno em uso */
    pthread_mutex_unlock(&monitor);
}
Example #10
0
/*** Função que confere a parte de declarações ***/
int declaracoes() {
    if(nome()) {
        if(uses()) {
            if(constantes()) {
                if(variaveis()) {
                    if(procedimentos()) {
                        return 1;
                    } else return 0;
                } else return 0;
            } else return 0;
        } else return 0;
    } else return 0;
}
Example #11
0
void AutoChamada::_ausenteClicked(){
	Wt::Dbo::Transaction transaction(_dbSession);

	_list.at(index).first->setUnChecked();
	index++;
	if(index >= _list.size()){
		accept();
		return;
	}
	auto aluno = _list.at(index).second->usuario();
	_name->setText("<h4>" + aluno->nome() + " " + aluno->sobrenome() + "</h4>");

}
Example #12
0
void main()
{
    while (1)
    {
        printf("\nDigite um texto com 50 caracteres maximo, (FIM) para encerrar:\n");
        fflush(stdin);
        gets(msg1);
        if ((strcmp(msg1, "FIM")==0) || (strcmp(msg1, "fim")==0))
            break;
        nome();
        printf("\nTexto alterado com ASCII+1 : %s \n",msg2);
    }
}
Example #13
0
void foi_comer(ArgumentoT *personagem){
    pthread_mutex_lock(&monitor);
        printf("%s foi comer\n", nome((*personagem).id));
        
        forno = 0; /* abre o forno */ 

        prioridade(personagem);        

        if (flag == 0){       
        	pthread_cond_signal(&(cond[per]));
        	vetor_fila[per] = 0;  
        	fila--; /* decrementa o contador de pessoas na fila */
    	}

    pthread_mutex_unlock(&monitor);
}
Example #14
0
void usando_forno(int id) {			
	usou_forno[id]++; /*incrementa no numero de vezes que tal personagem usou o forno*/    		 
    printf("%s está usando o forno\n", nome(id));
    sleep(1);
}
Example #15
0
void WPUtils::uploadFile(QString furl)
{
	QFile* file = new QFile(furl);



	if ( file->exists() )
		qDebug() << "file founded.";
	else qDebug() << "file not found.";

	if ( file->isReadable() )
		qDebug() << "readable";
	else qDebug() << "unreadable";

	file->open(QIODevice::ReadOnly);

	QFileInfo fileInfo(file->fileName());
	QString nome(fileInfo.fileName());

	_xml.clear();
	QXmlStreamWriter sw(&_xml);

	sw.setAutoFormatting(true);
	sw.writeStartDocument();

	sw.writeStartElement("methodCall");
	sw.writeTextElement("methodName", "wp.uploadFile");
	sw.writeStartElement("params");
	sw.writeStartElement("param");
	sw.writeCharacters("blog_id");
	sw.writeTextElement("value", _blogid);
	sw.writeEndElement();
	sw.writeStartElement("param");
	sw.writeCharacters("username");
	sw.writeTextElement("value", _username);
	sw.writeEndElement();
	sw.writeStartElement("param");
	sw.writeCharacters("password");
	sw.writeTextElement("value", _password);
	sw.writeEndElement();
	sw.writeStartElement("struct");
	sw.writeStartElement("member");
	sw.writeTextElement("name", "name");
	sw.writeTextElement("value", nome);
	sw.writeEndElement();
	sw.writeStartElement("member");
	sw.writeTextElement("name", "type");
	QImageReader reader(furl);

	sw.writeTextElement("value", "image/"+reader.format());
	sw.writeEndElement();
	sw.writeStartElement("member");
	sw.writeTextElement("name", "bits");
	sw.writeStartElement("value");
	sw.writeStartElement("base64");
	sw.writeCharacters(file->readAll().toBase64());
	sw.writeEndElement();
	sw.writeEndElement();
	sw.writeEndElement();
	sw.writeStartElement("member");
	sw.writeTextElement("name", "overwrite");
	sw.writeTextElement("value", "true");
	sw.writeEndElement();
	sw.writeEndElement();
	sw.writeEndElement();
	sw.writeEndDocument();

	QNetworkAccessManager *manager = new QNetworkAccessManager();

	QObject::connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));

	QUrl url;

	url.setUrl(_endpoint);
	QNetworkRequest request(url);
	int cmd = 0;
	request.setAttribute(QNetworkRequest::Attribute(QNetworkRequest::User + 1), QVariant((int) cmd)); /* not sure */
	request.setRawHeader("User-Agent", "wp-bb10/0.0.1");
	request.setHeader(QNetworkRequest::ContentTypeHeader, "text/xml");


	manager->post(request,_xml);
}