Changeset 14267
- Timestamp:
- Jul 17, 2007, 10:32:02 AM (19 years ago)
- Location:
- trunk/psLib/src/mathtypes
- Files:
-
- 2 edited
-
psVector.c (modified) (5 diffs)
-
psVector.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/mathtypes/psVector.c
r12431 r14267 10 10 * @author Joshua Hoblitt, University of Hawaii 11 11 * 12 * @version $Revision: 1.9 6$ $Name: not supported by cvs2svn $13 * @date $Date: 2007-0 3-14 00:39:51$12 * @version $Revision: 1.97 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2007-07-17 20:32:02 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 347 347 case PS_TYPE_##NAME: { \ 348 348 ps##NAME temp; \ 349 ps##NAME *value = outVector->data.NAME; \349 ps##NAME *value = vector->data.NAME; \ 350 350 for (;;) { \ 351 351 if (l > 0) { \ … … 356 356 if (--ir == 0) { \ 357 357 value[0] = temp; \ 358 return outVector; \358 return true; \ 359 359 } \ 360 360 } \ … … 376 376 break; 377 377 378 psVector* psVectorSort(psVector* outVector, 379 const psVector* inVector) 380 { 381 if (!inVector) { 382 psError(PS_ERR_BAD_PARAMETER_NULL, true, 383 _("psVectorSort can not sort a NULL psVector.")); 384 psFree(outVector); 385 return NULL; 386 } 387 388 outVector = psVectorCopy(outVector, inVector, inVector->type.type); 389 if (outVector == NULL) { 390 psError(PS_ERR_BAD_PARAMETER_NULL, true, 391 "Error in psVectorSort: psVectorCopy returned NULL vector!\n"); 392 return NULL; 393 } 394 long N = outVector->n; // Number of elements 378 bool psVectorSortInPlace(const psVector *vector) 379 { 380 PS_ASSERT_VECTOR_NON_NULL(vector, false); 381 382 long N = vector->n; // Number of elements 395 383 if (N < 2) { 396 return outVector;384 return true; 397 385 } 398 386 long l = N >> 1; 399 387 long ir = N - 1; 400 switch ( outVector->type.type) {388 switch (vector->type.type) { 401 389 PSVECTOR_SORT_CASE(U8); 402 390 PSVECTOR_SORT_CASE(U16); … … 412 400 psError(PS_ERR_BAD_PARAMETER_TYPE, true, 413 401 _("Input psVector is an unsupported type (0x%x)."), 414 inVector->type.type); 402 vector->type.type); 403 return false; 404 } 405 return true; 406 } 407 408 psVector* psVectorSort(psVector* outVector, 409 const psVector* inVector) 410 { 411 if (!inVector) { 412 psError(PS_ERR_BAD_PARAMETER_NULL, true, 413 _("psVectorSort can not sort a NULL psVector.")); 415 414 psFree(outVector); 416 415 return NULL; 417 416 } 417 418 if (outVector != inVector) { 419 outVector = psVectorCopy(outVector, inVector, inVector->type.type); 420 if (!outVector) { 421 psError(PS_ERR_BAD_PARAMETER_NULL, true, 422 "Error in psVectorSort: psVectorCopy returned NULL vector!\n"); 423 return NULL; 424 } 425 } 426 427 if (!psVectorSortInPlace(outVector)) { 428 psFree(outVector); 429 return NULL; 430 } 431 418 432 return outVector; 419 433 } -
trunk/psLib/src/mathtypes/psVector.h
r12431 r14267 10 10 * @author Joshua Hoblitt, University of Hawaii 11 11 * 12 * @version $Revision: 1.6 7$ $Name: not supported by cvs2svn $13 * @date $Date: 2007-0 3-14 00:39:51$12 * @version $Revision: 1.68 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2007-07-17 20:32:02 $ 14 14 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii 15 15 */ … … 222 222 #endif // ifdef DOXYGEN 223 223 224 /** Sort a vector in-place 225 * 226 * Sorts in ascending order 227 * 228 * @return bool Success or failure 229 */ 230 bool psVectorSortInPlace(const psVector *vector ///< Vector to sort 231 ); 224 232 225 233 /** Sort an array of floats.
Note:
See TracChangeset
for help on using the changeset viewer.
