IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 1, 2004, 11:48:11 AM (22 years ago)
Author:
harman
Message:

Incorporated Ifa's bugs, comments, and additions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/collections/psBitSet.c

    r1167 r1172  
    1010 *  @author Ross Harman, MHPCC
    1111 *
    12  *  @version $Revision: 1.11 $ $Name: not supported by cvs2svn $
    13  *  @date $Date: 2004-07-01 00:57:31 $
     12 *  @version $Revision: 1.12 $ $Name: not supported by cvs2svn $
     13 *  @date $Date: 2004-07-01 21:48:11 $
    1414 *
    1515 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    8686
    8787    if(n <= 0) {
    88         psError(__func__, " : Line %d - Allocation size must be > 0: size = %d\n", __LINE__, n);
     88        psError(__func__, " : Line %d - Allocation size must be > 0: size = %d", __LINE__, n);
    8989        return 0;
    9090    }
     
    113113{
    114114    if(inBitSet == NULL) {
    115         psError(__func__, " : Line %d - Null psBitSet for inBitSet argument\n", __LINE__);
     115        psError(__func__, " : Line %d - Null psBitSet for inBitSet argument", __LINE__);
    116116        return;
    117117    }
     
    124124
    125125    if(inBitSet == NULL) {
    126         psError(__func__, " : Line %d - Null psBitSet for inBitSet argument\n", __LINE__);
     126        psError(__func__, " : Line %d - Null psBitSet for inBitSet argument", __LINE__);
    127127        return inBitSet;
    128128    } else if(bit < 0) {
    129         psError(__func__, " : Line %d - Bit position too small: %d\n", __LINE__, bit);
     129        psError(__func__, " : Line %d - Bit position too small: %d", __LINE__, bit);
    130130        return inBitSet;
    131131    } else if(bit > inBitSet->n*8-1) {
    132         psError(__func__, " : Line %d - Bit position too large: %d\n", __LINE__, bit);
     132        psError(__func__, " : Line %d - Bit position too large: %d", __LINE__, bit);
    133133        return inBitSet;
    134134    }
     
    146146
    147147    if(inBitSet == NULL) {
    148         psError(__func__, " : Line %d - Null psBitSet for inBitSet argument\n", __LINE__);
     148        psError(__func__, " : Line %d - Null psBitSet for inBitSet argument", __LINE__);
    149149        return 0;
    150150    } else if(bit < 0) {
    151         psError(__func__, " : Line %d - Bit position too small: %d\n", __LINE__, bit);
     151        psError(__func__, " : Line %d - Bit position too small: %d", __LINE__, bit);
    152152        return 0;
    153153    } else if(bit > inBitSet->n*8-1) {
    154         psError(__func__, " : Line %d - Bit position too large: %d\n", __LINE__, bit);
     154        psError(__func__, " : Line %d - Bit position too large: %d", __LINE__, bit);
    155155        return 0;
    156156    }
     
    175175    char *inBits2 = NULL;
    176176
    177     if(outBitSet == NULL) {
    178         psError(__func__, " : Line %d - Null psBitSet for outBitSet argument\n", __LINE__);
    179         return outBitSet;
    180     }
    181 
    182177    if(inBitSet1 == NULL) {
    183         psError(__func__, " : Line %d - Null psBitSet for inBitSet1 argument\n", __LINE__);
     178        psError(__func__, " : Line %d - Null psBitSet for inBitSet1 argument", __LINE__);
    184179        return outBitSet;
    185180    }
     
    191186
    192187    if(inBitSet2 == NULL) {
    193         psError(__func__, " : Line %d - Null psBitSet for inBitSet2 argument\n", __LINE__);
    194         return outBitSet;
     188        psError(__func__, " : Line %d - Null psBitSet for inBitSet2 argument", __LINE__);
     189        return outBitSet;
     190    }
     191
     192    if(outBitSet == NULL) {
     193        outBitSet = psBitSetAlloc(inBitSet1->n*8);
    195194    }
    196195
    197196    if(inBitSet1->n != inBitSet2->n || outBitSet->n != inBitSet1->n) {
    198         psError(__func__, " : Line %d - psBitSet sizes not the same\n", __LINE__);
     197        psError(__func__, " : Line %d - psBitSet sizes not the same", __LINE__);
    199198        return outBitSet;
    200199    }
     
    223222        break;
    224223    default:
    225         psError(__func__, " : Line %d - Invalid psBitMask binary operation: %s\n", __LINE__, operator);
     224        psError(__func__, " : Line %d - Invalid psBitMask binary operation: %s", __LINE__, operator);
     225    }
     226
     227    return outBitSet;
     228}
     229
     230psBitSet* psBitSetNot(psBitSet *outBitSet, const psBitSet *restrict inBitSet)
     231{
     232    int i = 0;
     233    int n = 0;
     234    char *outBits = NULL;
     235    char *inBits = NULL;
     236
     237    if(inBitSet == NULL) {
     238        psError(__func__, " : Line %d - Null psBitSet for inBitSet argument", __LINE__);
     239        return outBitSet;
     240    }
     241
     242    n = inBitSet->n;
     243    if(n == 0) {
     244        psError(__func__, " : Line %d - No elements in inBitSet", __LINE__);
     245        return outBitSet;
     246    }
     247
     248    if(outBitSet == NULL) {
     249        outBitSet = psBitSetAlloc(n*8);
     250    }
     251
     252    if(inBitSet->n != outBitSet->n) {
     253        psError(__func__, " : Line %d - psBitSet sizes not the same", __LINE__);
     254        return outBitSet;
     255    }
     256
     257    outBits = outBitSet->bits;
     258    inBits = inBitSet->bits;
     259
     260    for(i=0; i<n; i++) {
     261        outBits[i] = ~inBits[i];
    226262    }
    227263
Note: See TracChangeset for help on using the changeset viewer.