Changeset a1294db in tol


Ignore:
Timestamp:
May 31, 2011, 9:44:36 AM (15 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
04637383
Parents:
3130ef1
Message:

Fixed #1225

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@3594 be4846ae-f051-483a-831f-b64e7d08527f

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tol/btol/text_type/txtgra.cpp

    r3130ef1 ra1294db  
    975975    contens_=Arg(1)->Identify();
    976976}
    977 /*
     977
     978static BText Description_second_arg_error =
     979  I2("If optional second argument <member> is specified, then must be "
     980     "the name of a member of the class specified as an string in first one.",
     981     "Si se especifica el segundo argumento opcional <member>, debe ser el "
     982     "nombre de un miembro de la clase especificada como un texto en el primer "
     983     "argumento");
     984
    978985//--------------------------------------------------------------------
    979986DeclareContensClass(BText, BTxtTemporary, BTxtDescription);
    980 DefExtOpr(1, BTxtDescription, "Description",     1, 2, "Anything Real",
    981           "(Anything var [, Real userType=False])",
    982           I2("Returns the description of a variable. "
    983        "If first parameter <var> is a text and optional parameter "
    984        "<userType> is true then searches the Class or Struct which "
    985        "name is the contens of <var> and returns its description.",
    986              "Devuelve la descripción de una variable. Si el argumento "
    987        "<var> es un texto y el arguemnto opcional <userType> es "
    988        "cierto, entonces busca el tipo de usuario, Struct o Class, "
    989        "cuyo nombre es el contenido de <var>"),
    990           BOperClassify::General_);
    991 */
    992 DeclareContensClass(BText, BTxtTemporary, BTxtDescription);
    993 DefExtOpr(1, BTxtDescription, "Description",     1, 1, "Anything",
    994           "(Anything var)",
     987DefExtOpr(1, BTxtDescription, "Description",     1, 2, "Anything Text",
     988          "(Anything var [,Text member])",
    995989          I2("Returns the description of a variable. "
    996990       "If first parameter <var> is a constant string true then "
    … …  
    1000994       "<var> es una cadena constante, entonces busca el tipo de "
    1001995       "usuario, Struct o Class, cuyo nombre es el contenido de "
    1002        "<var>"),
     996       "<var>")+"\n"+Description_second_arg_error,
    1003997          BOperClassify::General_);
    1004998//--------------------------------------------------------------------
    … …  
    10061000//--------------------------------------------------------------------
    10071001{
     1002
    10081003  BSyntaxObject* arg1 = Arg(1);
    10091004  contens_=arg1->Description();
    1010 
    1011   if(!contens_.HasName() &&
    1012       (arg1->Grammar()==GraText()) &&
    1013       (!arg1->HasName()))
    1014   {
    1015     BText& txt = Text(arg1);
    1016     BClass* cls = FindClass(txt,-1);
    1017     if(cls) { contens_ = cls->Description(); }
    1018     else
     1005  BText memberName = "";
     1006  if(Arg(2))
     1007  {
     1008    BText err="";
     1009    memberName = Text(Arg(2));
     1010    bool ok = arg1->Grammar()==GraText();
     1011    if(ok)
    10191012    {
    1020       BStruct* str = FindStruct(txt);
    1021       if(str) { contens_ = str->Description(); }
    1022     } 
    1023   }
    1024   if(!contens_.HasName() &&
    1025       (arg1->Grammar()==GraCode()) &&
    1026       (arg1->Mode()==BOBJECTMODE))
    1027   {
    1028     BUserCode* uCode = UCode(arg1);
    1029     const BSpecialFunction* spf = uCode->Contens().SpecialFunction();
    1030     if(spf)
    1031     {
    1032       contens_=spf->Description();
     1013      BText className = Text(arg1);
     1014      BClass* cls = FindClass(className,1);
     1015      if(ok = (cls!=NULL))
     1016      {
     1017        BMember* mbr = cls->FindMember(memberName);
     1018        if(ok = (mbr!=NULL))
     1019        {
     1020          contens_ = mbr->description_;
     1021        } 
     1022        else
     1023        {
     1024          err = memberName+I2(" is not a member of Class ",
     1025                              " no es un mimebro de Class ")+className;
     1026        }
     1027      } 
     1028      else
     1029      {
     1030        err = className+I2(" is not a Class",
     1031                           " no es un Class");
     1032      }
    10331033    }
    10341034    else
    10351035    {
    1036       BOperator* opr = uCode->Contens().Operator();
    1037       if(opr)
     1036      err = I2("First argument is not a Text",
     1037               "El primer argumento no es un Text");
     1038    }
     1039    if(!ok)
     1040    {
     1041      Error(BText("[Description] ")+Description_second_arg_error+"\n"+err);
     1042    }
     1043  }
     1044  else
     1045  {
     1046    if(!contens_.HasName() &&
     1047        (arg1->Grammar()==GraText()) &&
     1048        (!arg1->HasName()))
     1049    {
     1050      BText& txt = Text(arg1);
     1051      BClass* cls = FindClass(txt,-1);
     1052      if(cls) { contens_ = cls->Description(); }
     1053      else
    10381054      {
    1039         contens_=opr->Description();
    1040         if(!contens_.HasName()) { contens_ = opr->Expression(); }
     1055        BStruct* str = FindStruct(txt);
     1056        if(str) { contens_ = str->Description(); }
     1057      } 
     1058    }
     1059    if(!contens_.HasName() &&
     1060        (arg1->Grammar()==GraCode()) &&
     1061        (arg1->Mode()==BOBJECTMODE))
     1062    {
     1063      BUserCode* uCode = UCode(arg1);
     1064      const BSpecialFunction* spf = uCode->Contens().SpecialFunction();
     1065      if(spf)
     1066      {
     1067        contens_=spf->Description();
    10411068      }
    10421069      else
    10431070      {
    1044         contens_="NOT FOUND";
     1071        BOperator* opr = uCode->Contens().Operator();
     1072        if(opr)
     1073        {
     1074          contens_=opr->Description();
     1075          if(!contens_.HasName()) { contens_ = opr->Expression(); }
     1076        }
     1077        else
     1078        {
     1079          contens_="NOT FOUND";
     1080        }
    10451081      }
    10461082    }
     1083    if(!contens_.HasName()) { contens_ = arg1->Expression(); }
    10471084  }
    1048   if(!contens_.HasName()) { contens_ = arg1->Expression(); }
    10491085}
    10501086
Note: See TracChangeset for help on using the changeset viewer.