dcodeur/nsgenFr.cpp
bool
NSGenerateurFr::traitePostposition(NSPhraseMot* pMot, NSPhraseMotArray* pSpecifique)
{
    NSSuper* pSuper = pContexte->getSuperviseur();
    iterPhraseMot  iterMots;
    NSPathologData Data;
    bool trouve;
    string sLexique = pMot->getLexique();
    string sPostposition = "";

    trouve = pContexte->getDico()->trouvePathologData(sLang, &sLexique, &Data);
    if (!trouve)
        return false;

    string sPostpositionBrute = Data.chercheGrammaire(POSTPOSITION);
    if (sPostpositionBrute == "")
        return false;

    // La postposition est la string sPostpositionBrute privee du "O" initial.

    sPostposition = string(sPostpositionBrute, 1, strlen(sPostposition.c_str()) - 1);

    // Si pMot est un nom, il peut imposer une preposition a son complement du nom.

    if (pMot->getComplementPhr())
    {
        NSPhraseur* pComp = pMot->getComplementPhr();

        if (!(pComp->compNom.empty()))
        {
            for (iterMots = pComp->compNom.begin(); iterMots != pComp->compNom.end(); iterMots++)
            {
                if (!((*iterMots)->estTexteLibre()))
                    (*iterMots)->setPreposition(sPostposition);
                else
                {
                    // On rajoute la preposition dans le libelle du texte libre.
                    (*iterMots)->setPreposition(sPostposition);
                    (*iterMots)->setTexteLibre(sPostposition + string(" ")
                                                + (*iterMots)->getTexteLibre());
                }
            }
        }
    }

    // Si pMot est un verbe, il peut imposer une preposition au COI ou au COS.

    if (Data.estVerbe())
    {
        if (!(pPh->COI.empty()))
        {
            for (iterMots = pPh->COI.begin(); iterMots != pPh->COI.end(); iterMots++)
            {
                if (!((*iterMots)->estTexteLibre()))
                    (*iterMots)->setPreposition(sPostposition);

                else
                {
                    // On rajoute la preposition dans le libelle du texte libre.
                    (*iterMots)->setPreposition(sPostposition);
                    (*iterMots)->setTexteLibre(sPostposition + string(" ")
                                                + (*iterMots)->getTexteLibre());
                }
            }
        }

        if (false == pPh->COS.empty())
        {
            for (iterMots = pPh->COS.begin(); iterMots != pPh->COS.end(); iterMots++)
            {
                if (!((*iterMots)->estTexteLibre()))
                    (*iterMots)->setPreposition(sPostposition);

                else
                {
                    // On rajoute la preposition dans le libelle du texte libre.
                    (*iterMots)->setPreposition(sPostposition);
                    (*iterMots)->setTexteLibre(sPostposition + string(" ")
                                                + (*iterMots)->getTexteLibre());
                }
            }
        }
    }

    if (pSpecifique)
    {
        if (!(pSpecifique->empty()))
        {
            for (iterMots = pSpecifique->begin(); iterMots != pSpecifique->end(); iterMots++)
            {
                if (!((*iterMots)->estTexteLibre()))
                    (*iterMots)->setPreposition(sPostposition);

                else
                {
                    // On rajoute la preposition dans le libelle du texte libre.
                    (*iterMots)->setPreposition(sPostposition);
                    (*iterMots)->setTexteLibre(sPostposition + string(" ")
                                                + (*iterMots)->getTexteLibre());
                }
            }
        }
    }

    return true;
}
// traitePostpositon sert a remplir la string sPreposition des noms qui completent
// un nom qui impose une preposition a ses suivants.
//
// Antecedents de pericardite et d'endocardite.
//
// pSpecifique sert dans le cas ou l'on veut mettre des prepositions liees au mot
// pMot dans une array donnee, mais qui ne figure pas dans pComplement.
traitePostpositon sert a remplir la string sPreposition des noms qui completent
un nom qui impose une preposition a ses suivants.

Antecedents de pericardite et d'endocardite.

pSpecifique sert dans le cas ou l'on veut mettre des prepositions liees au mot
pMot dans une array donnee, mais qui ne figure pas dans pComplement.
traitePostpositon sert a remplir la string sPreposition des noms qui completent un nom qui impose une preposition a ses suivants . Antecedents de pericardite et d ' endocardite . pSpecifique sert dans le cas ou l ' on veut mettre des prepositions liees au mot pMot dans une array donnee mais qui ne figure pas dans pComplement .
bool
NSGenerateurFr::traitePostposition(NSPhraseMot* pMot, NSPhraseMotArray* pSpecifique)
{
    NSSuper* pSuper = pContexte->getSuperviseur();
    iterPhraseMot  iterMots;
    NSPathologData Data;
    bool trouve;
    string sLexique = pMot->getLexique();
    string sPostposition = "";
    trouve = pContexte->getDico()->trouvePathologData(sLang, &sLexique, &Data);
    if (!trouve)
        return false;
    string sPostpositionBrute = Data.chercheGrammaire(POSTPOSITION);
    if (sPostpositionBrute == "")
        return false;
    sPostposition = string(sPostpositionBrute, 1, strlen(sPostposition.c_str()) - 1);
    if (pMot->getComplementPhr())
    {
        NSPhraseur* pComp = pMot->getComplementPhr();
        if (!(pComp->compNom.empty()))
        {
            for (iterMots = pComp->compNom.begin(); iterMots != pComp->compNom.end(); iterMots++)
            {
                if (!((*iterMots)->estTexteLibre()))
                    (*iterMots)->setPreposition(sPostposition);
                else
                {
                    (*iterMots)->setPreposition(sPostposition);
                    (*iterMots)->setTexteLibre(sPostposition + string(" ")
                                                + (*iterMots)->getTexteLibre());
                }
            }
        }
    }
    if (Data.estVerbe())
    {
        if (!(pPh->COI.empty()))
        {
            for (iterMots = pPh->COI.begin(); iterMots != pPh->COI.end(); iterMots++)
            {
                if (!((*iterMots)->estTexteLibre()))
                    (*iterMots)->setPreposition(sPostposition);
                else
                {
                    (*iterMots)->setPreposition(sPostposition);
                    (*iterMots)->setTexteLibre(sPostposition + string(" ")
                                                + (*iterMots)->getTexteLibre());
                }
            }
        }
        if (false == pPh->COS.empty())
        {
            for (iterMots = pPh->COS.begin(); iterMots != pPh->COS.end(); iterMots++)
            {
                if (!((*iterMots)->estTexteLibre()))
                    (*iterMots)->setPreposition(sPostposition);
                else
                {
                    (*iterMots)->setPreposition(sPostposition);
                    (*iterMots)->setTexteLibre(sPostposition + string(" ")
                                                + (*iterMots)->getTexteLibre());
                }
            }
        }
    }
    if (pSpecifique)
    {
        if (!(pSpecifique->empty()))
        {
            for (iterMots = pSpecifique->begin(); iterMots != pSpecifique->end(); iterMots++)
            {
                if (!((*iterMots)->estTexteLibre()))
                    (*iterMots)->setPreposition(sPostposition);
                else
                {
                    (*iterMots)->setPreposition(sPostposition);
                    (*iterMots)->setTexteLibre(sPostposition + string(" ")
                                                + (*iterMots)->getTexteLibre());
                }
            }
        }
    }
    return true;
}
bool NSGenerateurFr :: traitePostposition ( NSPhraseMot * pMot , NSPhraseMotArray * pSpecifique ) { NSSuper * pSuper = pContexte -> getSuperviseur ( ) ; iterPhraseMot iterMots ; NSPathologData Data ; bool trouve ; string sLexique = pMot -> getLexique ( ) ; string sPostposition = " " ; trouve = pContexte -> getDico ( ) -> trouvePathologData ( sLang , & sLexique , & Data ) ; if ( ! trouve ) return false ; string sPostpositionBrute = Data . chercheGrammaire ( POSTPOSITION ) ; if ( sPostpositionBrute == " " ) return false ; sPostposition = string ( sPostpositionBrute , 1 , strlen ( sPostposition . c_str ( ) ) - 1 ) ; if ( pMot -> getComplementPhr ( ) ) { NSPhraseur * pComp = pMot -> getComplementPhr ( ) ; if ( ! ( pComp -> compNom . empty ( ) ) ) { for ( iterMots = pComp -> compNom . begin ( ) ; iterMots != pComp -> compNom . end ( ) ; iterMots ++ ) { if ( ! ( ( * iterMots ) -> estTexteLibre ( ) ) ) ( * iterMots ) -> setPreposition ( sPostposition ) ; else { ( * iterMots ) -> setPreposition ( sPostposition ) ; ( * iterMots ) -> setTexteLibre ( sPostposition + string ( " " ) + ( * iterMots ) -> getTexteLibre ( ) ) ; } } } } if ( Data . estVerbe ( ) ) { if ( ! ( pPh -> COI . empty ( ) ) ) { for ( iterMots = pPh -> COI . begin ( ) ; iterMots != pPh -> COI . end ( ) ; iterMots ++ ) { if ( ! ( ( * iterMots ) -> estTexteLibre ( ) ) ) ( * iterMots ) -> setPreposition ( sPostposition ) ; else { ( * iterMots ) -> setPreposition ( sPostposition ) ; ( * iterMots ) -> setTexteLibre ( sPostposition + string ( " " ) + ( * iterMots ) -> getTexteLibre ( ) ) ; } } } if ( false == pPh -> COS . empty ( ) ) { for ( iterMots = pPh -> COS . begin ( ) ; iterMots != pPh -> COS . end ( ) ; iterMots ++ ) { if ( ! ( ( * iterMots ) -> estTexteLibre ( ) ) ) ( * iterMots ) -> setPreposition ( sPostposition ) ; else { ( * iterMots ) -> setPreposition ( sPostposition ) ; ( * iterMots ) -> setTexteLibre ( sPostposition + string ( " " ) + ( * iterMots ) -> getTexteLibre ( ) ) ; } } } } if ( pSpecifique ) { if ( ! ( pSpecifique -> empty ( ) ) ) { for ( iterMots = pSpecifique -> begin ( ) ; iterMots != pSpecifique -> end ( ) ; iterMots ++ ) { if ( ! ( ( * iterMots ) -> estTexteLibre ( ) ) ) ( * iterMots ) -> setPreposition ( sPostposition ) ; else { ( * iterMots ) -> setPreposition ( sPostposition ) ; ( * iterMots ) -> setTexteLibre ( sPostposition + string ( " " ) + ( * iterMots ) -> getTexteLibre ( ) ) ; } } } } return true ; }
traitePostpositon sert a remplir la string sPreposition des noms qui completent
un nom qui impose une preposition a ses suivants.
traitePostpositon sert a remplir la string sPreposition des noms qui completent un nom qui impose une preposition a ses suivants .
// La postposition est la string sPostpositionBrute privee du "O" initial. // Si pMot est un nom, il peut imposer une preposition a son complement du nom. // On rajoute la preposition dans le libelle du texte libre. // Si pMot est un verbe, il peut imposer une preposition au COI ou au COS. // On rajoute la preposition dans le libelle du texte libre. // On rajoute la preposition dans le libelle du texte libre. // On rajoute la preposition dans le libelle du texte libre.