1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
/*
* relvbr.h: Part of GNU CSSC.
*
*
* Copyright (C) 1997, Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*
* Members of the class sccs_file for doing sccs-prt.
*
*/
#ifndef INC_RELVBR_H
#define INC_RELVBR_H
class sid;
//#include "sid.h"
class relvbr
{
short rel;
short level;
short branch;
// relvbr(short r, short l, short b, sid const *): rel(r,l,b) {}
public:
relvbr(): rel(-1), level(-1), branch(-1) {}
relvbr(int r,int l,int b): rel(r), level(l), branch(b) {}
relvbr(const char *s);
relvbr(const sid& s);
int valid() const { return ((rel > 0) && (level > 0) && (branch > 0)); }
enum { LARGEST = 9999 }; // largest valid relvbr number.
friend int operator <(relvbr r1, relvbr r2)
{
return ((r1.rel < r2.rel) ||
((r1.rel == r2.rel) &&
((r1.level < r2.level) ||
((r1.level == r2.level) && (r1.branch < r2.branch)))));
}
friend int operator >(relvbr r1, relvbr r2)
{
return ((r1.rel > r2.rel) ||
((r1.rel == r2.rel) &&
((r1.level > r2.level) ||
((r1.level == r2.level) && (r1.branch > r2.branch)))));
}
friend int operator <=(relvbr r1, relvbr r2)
{
return ((r1.rel < r2.rel) ||
((r1.rel == r2.rel) &&
((r1.level < r2.level) ||
((r1.level == r2.level) && (r1.branch <= r2.branch)))));
}
friend int operator >=(relvbr r1, relvbr r2)
{
return ((r1.rel > r2.rel) ||
((r1.rel == r2.rel) &&
((r1.level > r2.level) ||
((r1.level == r2.level) && (r1.branch >= r2.branch)))));
}
friend int operator ==(relvbr r1, relvbr r2)
{
return ((r1.rel == r2.rel ) &&
(r1.level == r2.level ) &&
(r1.branch == r2.branch));
}
friend int operator !=(relvbr r1, relvbr r2)
{
return ((r1.rel != r2.rel ) ||
(r1.level != r2.level ) ||
(r1.branch != r2.branch));
}
int print(FILE *out) const { return (fprintf(out, "%d.%d.%d", rel, level, branch) < 0); }
// friend sid::operator relvbr() const;
// friend sid::sid(relvbr);
};
/* Local variables: */
/* mode: c++ */
/* End: */
#endif
|