Changeset 7d06d2f in tol
- Timestamp:
- Jun 12, 2009, 7:46:32 AM (17 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- 13bb6e7
- Parents:
- 510f3f8
- Location:
- tol/btol
- Files:
-
- 4 edited
-
bgrammar/spfuninst.cpp (modified) (2 diffs)
-
bgrammar/syn.cpp (modified) (1 diff)
-
bgrammar/tol_bsyntax.h (modified) (1 diff)
-
text_type/txtgra.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
tol/btol/bgrammar/spfuninst.cpp
r510f3f8 r7d06d2f 1150 1150 } 1151 1151 1152 //-------------------------------------------------------------------- 1153 static BSyntaxObject* EvGetObjectFromAddress( 1154 BGrammar* gra, const List* tre, BBool left) 1155 1156 /*! Evaluate TOLPath expressions 1157 */ 1158 //-------------------------------------------------------------------- 1159 { 1160 static BText _name_ = "GetObjectFromAddress"; 1161 BSyntaxObject* result = NIL; 1162 BInt nb = NumBranches(tre); 1163 BUserText* uTxt=NULL; 1164 if(TestNumArg(_name_, 1, nb, 1)) 1165 { 1166 uTxt = (BUserText*)GraText()->EvaluateTree(Branch(tre,1)); 1167 BGrammar::PutLast(gra); 1168 if(uTxt) 1169 { 1170 BText& address = Text(uTxt); 1171 if(address.HasName()) 1172 { 1173 result = BSyntaxObject::GetObjectFromAddress(address); 1174 } 1175 } 1176 } 1177 SAFE_DESTROY(uTxt,result); 1178 result=TestResult(_name_,result,tre,NIL,BTRUE); 1179 return(result); 1180 } 1152 1181 1153 1182 //-------------------------------------------------------------------- … … 1965 1994 EvTOLPath); 1966 1995 1996 AddLeftInstance("GetObjectFromAddress", 1997 I2("(Text path)", 1998 "(Text camino)"), 1999 I2("Returns the TOL object specified by its internal address obtained by " 2000 "mean of calling GetAddressFromObject.", 2001 "Devuelve el objeto TOL especificado por su dirección interna que se " 2002 "obtiene llamando a la función GetAddressFromObject."), 2003 EvGetObjectFromAddress); 1967 2004 1968 2005 AddLeftInstance("Dating", -
tol/btol/bgrammar/syn.cpp
r510f3f8 r7d06d2f 453 453 } 454 454 } 455 456 //-------------------------------------------------------------------- 457 union BIntPointerMask 458 //-------------------------------------------------------------------- 459 { 460 BIntPair pair_; 461 const BSyntaxObject* obj_; 462 const BGrammar* gra_; 463 const BFixedSizeMemoryBase* mhn_; 464 }; 465 466 467 //-------------------------------------------------------------------- 468 BSyntaxObject* BSyntaxObject::GetObjectFromAddress(const BText& address) 469 //-------------------------------------------------------------------- 470 { 471 const BSyntaxObject* obj = NULL; 472 BIntPointerMask objMask, graMask, mhnMask; 473 int mode; 474 int size; 475 int pageNum; 476 sscanf(address.String(), "%X:%X:%X:%X:%X:%X:%X:%X:%X", 477 &objMask.pair_.r_, 478 &objMask.pair_.c_, 479 &graMask.pair_.r_, 480 &graMask.pair_.c_, 481 &mhnMask.pair_.r_, 482 &mhnMask.pair_.c_, 483 &mode, 484 &size, 485 &pageNum); 486 if( objMask.obj_ && 487 (objMask.obj_->Grammar() == graMask.gra_) && 488 (objMask.obj_->Mode() == mode) && 489 (sizeof(objMask.obj_) == size) && 490 (objMask.obj_->GetPageNum() == pageNum)&& 491 (objMask.obj_->GetMemHandler() == mhnMask.mhn_)&& 492 (objMask.obj_->IsAssigned()!=0)) 493 { 494 obj = objMask.obj_; 495 } 496 return((BSyntaxObject*)obj); 497 } 498 499 //-------------------------------------------------------------------- 500 BText BSyntaxObject::GetAddressFromObject() const 501 //-------------------------------------------------------------------- 502 { 503 static char address[7*32]; 504 BIntPointerMask objMask, graMask, mhnMask; 505 objMask.pair_.r_ = 0; 506 objMask.pair_.c_ = 0; 507 graMask.pair_.r_ = 0; 508 graMask.pair_.c_ = 0; 509 mhnMask.pair_.r_ = 0; 510 mhnMask.pair_.c_ = 0; 511 objMask.obj_ = this; 512 graMask.gra_ = Grammar(); 513 mhnMask.mhn_ = GetMemHandler(); 514 int mode = Mode(); 515 int size = sizeof(this); 516 int pageNum = GetPageNum(); 517 sprintf(address, "%X:%X:%X:%X:%X:%X:%X:%X:%X", 518 objMask.pair_.r_, 519 objMask.pair_.c_, 520 graMask.pair_.r_, 521 graMask.pair_.c_, 522 mhnMask.pair_.r_, 523 mhnMask.pair_.c_, 524 mode, 525 size, 526 pageNum); 527 return(BText(address)); 528 } -
tol/btol/bgrammar/tol_bsyntax.h
r510f3f8 r7d06d2f 319 319 #endif 320 320 321 static BSyntaxObject* GetObjectFromAddress(const BText& address); 322 BText GetAddressFromObject() const; 321 323 322 324 #ifndef FOR_BTOLLNK -
tol/btol/text_type/txtgra.cpp
r510f3f8 r7d06d2f 1035 1035 { 1036 1036 contens_ = Arg(1)->TolPath(); 1037 } 1038 1039 //-------------------------------------------------------------------- 1040 DeclareContensClass(BText, BTxtTemporary, BTxtGetAddressFromObject); 1041 DefExtOpr(1, BTxtGetAddressFromObject, "GetAddressFromObject", 1, 1, "Anything", 1042 "(Anything var)", 1043 I2("Returns a unique string address for a TOL variable that can " 1044 "be used after to recover the object with GetObjectFromAddress " 1045 "if it is still alive.", 1046 "Devuelve una cadena de dirección única para una variable TOL " 1047 "que puede ser utilizada posterormente para recuperar el objeto " 1048 "con GetObjectFromAddress si aún existe."), 1049 BOperClassify::General_); 1050 1051 //-------------------------------------------------------------------- 1052 void BTxtGetAddressFromObject::CalcContens() 1053 //-------------------------------------------------------------------- 1054 { 1055 contens_ = Arg(1)->GetAddressFromObject(); 1037 1056 } 1038 1057
Note: See TracChangeset
for help on using the changeset viewer.
