OSDN Git Service

* gjavah.c (print_class_decls): Fix thinko in arglist
[pf3gnuchains/gcc-fork.git] / libchill / notps.c
1 /* Implement POWERSET runtime actions for CHILL.
2    Copyright (C) 1992,1993 Free Software Foundation, Inc.
3    Author: Wilfried Moser, et al
4
5 This file is part of GNU CC.
6
7 GNU CC is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2, or (at your option)
10 any later version.
11
12 GNU CC is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with GNU CC; see the file COPYING.  If not, write to
19 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
20
21 #define __CHILL_LIB__
22
23 #include <stdio.h>
24 #include "powerset.h"
25
26 /*
27  * function __notpowerset
28  *
29  * parameters:
30  *      out             output powerset
31  *      left            input powerset
32  *      bitlength       length of powerset in bits
33  *
34  * returns:
35  *      void
36  *
37  * exceptions:
38  *  none
39  *
40  * abstract:
41  *
42  */
43
44 void
45 __notpowerset (out, left, bitlength)
46      SET_WORD      *out;
47      SET_WORD      *left;
48      unsigned long  bitlength;
49 {
50   if (bitlength <= SET_CHAR_SIZE)
51     {
52       *((SET_CHAR *)out) = ~ (*((SET_CHAR *)left));
53 #if 0
54       SET_CHAR tmp;
55       tmp = *((SET_CHAR *)left);
56       tmp = ~ tmp;
57       *((SET_CHAR *)out) = tmp;
58
59       MASK_UNUSED_CHAR_BITS((SET_CHAR *)out, bitlength);
60       *((SET_CHAR *)out) = ~ *((SET_CHAR *)left);
61       MASK_UNUSED_CHAR_BITS((SET_CHAR *)out, bitlength);
62       *((SET_CHAR *)out) = (~(0)) ^  (*((SET_CHAR *)left));
63       MASK_UNUSED_CHAR_BITS((SET_CHAR *)out, bitlength);
64 #endif
65     }
66   else if (bitlength <= SET_SHORT_SIZE)
67     {
68       *((SET_SHORT *)out) = ~  (*((SET_SHORT *)left));
69       MASK_UNUSED_SHORT_BITS((SET_SHORT *)out, bitlength);
70     }
71   else
72     {
73       unsigned long len = BITS_TO_WORDS(bitlength);
74       register unsigned long i;
75     
76       for (i = 0; i < len; i++)
77         out[i] = ~ left[i];
78       MASK_UNUSED_WORD_BITS((out + len - 1), bitlength % SET_WORD_SIZE);
79     }
80 }