Changeset 495c0e2 in tol
- Timestamp:
- Feb 12, 2013, 2:53:29 PM (14 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- ec868ac
- Parents:
- 81f2698
- File:
-
- 1 edited
-
tol/btol/bdb/filehandle.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tol/btol/bdb/filehandle.cpp
r81f2698 r495c0e2 29 29 #include <tol/tol_btxtgra.h> 30 30 #include <tol/tol_bdatgra.h> 31 #include <tol/tol_bmatgra.h> 31 32 32 33 #include <errno.h> … … 236 237 } 237 238 238 239 239 ///////////////////////////////////////////////////////////////////////////// 240 240 DeclareContensClass(BTxt, BTxtTemporary, BTxtFGetText); … … 283 283 { 284 284 contens_ = fputs(txt.String(),file); 285 } 286 } 287 288 ///////////////////////////////////////////////////////////////////////////// 289 DeclareContensClass(BDat, BDatTemporary, BDatFTell); 290 DefExtOpr(1, BDatFTell, "FTell", 1, 1, "Real", 291 "(Real handle)", 292 I2("Returns the current position of a file open with FOpen.", 293 "Devuelve la posición actual de un fichero abierto con FOpen"), 294 BOperClassify::BayesDataBase_); 295 void BDatFTell::CalcContens() 296 ///////////////////////////////////////////////////////////////////////////// 297 { 298 int handle = (int)Real(Arg(1)); 299 FILE* file = BFileDesc::CheckFileHandle(handle,true, 300 I2("Fail in ","Fallo en ")+"FTell"); 301 if(file) 302 { 303 contens_ = (double)ftello(file); 304 } 305 } 306 307 ///////////////////////////////////////////////////////////////////////////// 308 DeclareContensClass(BDat, BDatTemporary, BDatFSeek); 309 DefExtOpr(1, BDatFSeek, "FSeek", 2, 2, "Real Real", 310 "(Real handle, Real offset)", 311 I2("Sets the current position of a file open with FOpen.", 312 "Mueve la posición actual de un fichero abierto con FOpen"), 313 BOperClassify::BayesDataBase_); 314 void BDatFSeek::CalcContens() 315 ///////////////////////////////////////////////////////////////////////////// 316 { 317 int handle = (int)Real(Arg(1)); 318 off_t offset = (off_t)Real(Arg(2)); 319 FILE* file = BFileDesc::CheckFileHandle(handle,true, 320 I2("Fail in ","Fallo en ")+"FSeek"); 321 if(file) 322 { 323 contens_ = fseeko(file,offset,SEEK_SET); 324 } 325 } 326 327 ///////////////////////////////////////////////////////////////////////////// 328 DeclareContensClass(BMat, BMatTemporary, BMatFGetNumbers); 329 DefExtOpr(1, BMatFGetNumbers, "FGetNumbers", 3, 3, "Real Real Text", 330 "(Real handle, Real numItems, Text numberType)", 331 I2("Reads an array of numbers from a binary file.", 332 "Lee un array de números desde un fichero binario."), 333 BOperClassify::BayesDataBase_); 334 void BMatFGetNumbers::CalcContens() 335 ///////////////////////////////////////////////////////////////////////////// 336 { 337 if(CheckNonDeclarativeAction("FGetNumbers")) { return; } 338 int handle = (int)Real(Arg(1)); 339 int numItems = (int)Real(Arg(2)); 340 BText& numberType = Text(Arg(3)); 341 contens_.Alloc(1,numItems); 342 int result, i; 343 FILE* file = BFileDesc::CheckFileHandle(handle,true, 344 I2("Fail in ","Fallo en ")+"FGetNumbers"); 345 if(file) 346 { 347 if(numberType=="double") 348 { 349 BArray<double> arr(numItems); 350 result = fread(arr.GetBuffer(),8,numItems,file); 351 if(result==numItems) for(i=0; i<numItems; i++) 352 { 353 contens_(0,i) = (double)arr(i); 354 } 355 } 356 else if(numberType=="float") 357 { 358 BArray<float> arr(numItems); 359 result = fread(arr.GetBuffer(),4,numItems,file); 360 if(result==numItems) for(i=0; i<numItems; i++) 361 { 362 contens_(0,i) = (double)arr(i); 363 } 364 } 365 else if(numberType=="int") 366 { 367 BArray<int> arr(numItems); 368 result = fread(arr.GetBuffer(),4,numItems,file); 369 if(result==numItems) for(i=0; i<numItems; i++) 370 { 371 contens_(0,i) = (double)arr(i); 372 } 373 } 374 else if(numberType=="unsigned int") 375 { 376 BArray<unsigned int> arr(numItems); 377 result = fread(arr.GetBuffer(),4,numItems,file); 378 if(result==numItems) for(i=0; i<numItems; i++) 379 { 380 contens_(0,i) = (double)arr(i); 381 } 382 } 383 else if(numberType=="short int") 384 { 385 BArray<short int> arr(numItems); 386 result = fread(arr.GetBuffer(),2,numItems,file); 387 if(result==numItems) for(i=0; i<numItems; i++) 388 { 389 contens_(0,i) = (double)arr(i); 390 } 391 } 392 else if(numberType=="unsigned short int") 393 { 394 BArray<unsigned short int> arr(numItems); 395 result = fread(arr.GetBuffer(),2,numItems,file); 396 if(result==numItems) for(i=0; i<numItems; i++) 397 { 398 contens_(0,i) = (double)arr(i); 399 } 400 } 401 if(result!=numItems) 402 { 403 Error(BText("[FGetNumbers] ")+ 404 I2("The total number of elements successfully read is ", 405 "El número total de elementos leídos con éxito es ")+result+ 406 I2(" when it was expected ", 407 " cuando se esperaban ")+numItems); 408 }; 285 409 } 286 410 }
Note: See TracChangeset
for help on using the changeset viewer.
