1 //  This may look like C code, but it is really -*- C++ -*-
2 
3 //  ------------------------------------------------------------------
4 //  The Goldware Library
5 //  Copyright (C) 1990-1999 Odinn Sorensen
6 //  Copyright (C) 1999-2000 Alexander S. Aganichev
7 //  ------------------------------------------------------------------
8 //  This library is free software; you can redistribute it and/or
9 //  modify it under the terms of the GNU Library General Public
10 //  License as published by the Free Software Foundation; either
11 //  version 2 of the License, or (at your option) any later version.
12 //
13 //  This library is distributed in the hope that it will be useful,
14 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
15 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16 //  Library General Public License for more details.
17 //
18 //  You should have received a copy of the GNU Library General Public
19 //  License along with this program; if not, write to the Free
20 //  Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21 //  MA 02111-1307, USA
22 //  ------------------------------------------------------------------
23 //  $Id: gmsgattr.h,v 1.6 2006/04/21 19:57:29 ssianky Exp $
24 //  ------------------------------------------------------------------
25 //  Message attributes.
26 //  ------------------------------------------------------------------
27 
28 #ifndef __gmsgattr_h
29 #define __gmsgattr_h
30 
31 
32 //  ------------------------------------------------------------------
33 
34 #include <string>
35 #include <gdefs.h>
36 #include <gstrall.h>
37 
38 
39 //  ------------------------------------------------------------------
40 //  Internal GoldED message attributes
41 
42 const uint32_t GATTR_PVT = 0x00000001UL;  // private
43 const uint32_t GATTR_CRA = 0x00000002UL;  // crash
44 const uint32_t GATTR_RCV = 0x00000004UL;  // received
45 const uint32_t GATTR_SNT = 0x00000008UL;  // sent
46 
47 const uint32_t GATTR_ATT = 0x00000010UL;  // file attach
48 const uint32_t GATTR_TRS = 0x00000020UL;  // transit
49 const uint32_t GATTR_ORP = 0x00000040UL;  // orphaned
50 const uint32_t GATTR_K_S = 0x00000080UL;  // kill msg when sent
51 
52 const uint32_t GATTR_LOC = 0x00000100UL;  // local
53 const uint32_t GATTR_HLD = 0x00000200UL;  // hold
54 const uint32_t GATTR_RSV = 0x00000400UL;  // FTS-1 reserved
55 const uint32_t GATTR_FRQ = 0x00000800UL;  // file request
56 
57 const uint32_t GATTR_RRQ = 0x00001000UL;  // return receipt request
58 const uint32_t GATTR_RRC = 0x00002000UL;  // return receipt
59 const uint32_t GATTR_ARQ = 0x00004000UL;  // audit request
60 const uint32_t GATTR_URQ = 0x00008000UL;  // file update request
61 
62 const uint32_t GATTR_GRP = 0x00010000UL;  // group msg (hudson)
63 const uint32_t GATTR_IMM = 0x00020000UL;  // immediate
64 const uint32_t GATTR_DIR = 0x00040000UL;  // direct
65 const uint32_t GATTR_TFS = 0x00080000UL;  // truncate file when sent
66 
67 const uint32_t GATTR_KFS = 0x00100000UL;  // kill file when sent
68 const uint32_t GATTR_LOK = 0x00200000UL;  // locked
69 const uint32_t GATTR_A_S = 0x00400000UL;  // archive msg when sent
70 const uint32_t GATTR_ZON = 0x00800000UL;  // send through zone gate
71 
72 const uint32_t GATTR_HUB = 0x01000000UL;  // host- or hub route
73 const uint32_t GATTR_XMA = 0x02000000UL;  // xmail: alternate form of compressed mail attached
74 const uint32_t GATTR_CFM = 0x04000000UL;  // confirmation receipt requested
75 const uint32_t GATTR_HIR = 0x08000000UL;  // fax: hi-resolution image
76 
77 const uint32_t GATTR_COV = 0x10000000UL;  // fax: cover sheet
78 const uint32_t GATTR_SIG = 0x20000000UL;  // fax: signature
79 const uint32_t GATTR_LET = 0x40000000UL;  // fax: letterhead
80 const uint32_t GATTR_UNS = 0x80000000UL;  // unsent - not scanned (internal)
81 
82 const uint32_t GATTR_DEL = 0x00000001UL;  // deleted
83 const uint32_t GATTR_NWM = 0x00000002UL;  // new message (internal)
84 const uint32_t GATTR_ROT = 0x00000004UL;  // rot-13 encoded (internal)
85 const uint32_t GATTR_HEX = 0x00000008UL;  // hexdump (internal)
86 
87 const uint32_t GATTR_UPD = 0x00000010UL;  // update *.msg time stamp (internal)
88 const uint32_t GATTR_TOU = 0x00000020UL;  // to-you (internal)
89 const uint32_t GATTR_FMU = 0x00000040UL;  // from-you (internal)
90 const uint32_t GATTR_SCN = 0x00000080UL;  // scanned (squish)
91 
92 const uint32_t GATTR_POS = 0x00000100UL;  // set line position (internal)
93 const uint32_t GATTR_R_O = 0x00000200UL;  // area read-only
94 const uint32_t GATTR_NOK = 0x00000400UL;  // (not used)
95 const uint32_t GATTR_FAX = 0x00000800UL;  // file attached is a fax image
96 
97 const uint32_t GATTR_PRN = 0x00001000UL;  // message is printed (squish)
98 const uint32_t GATTR_ANO = 0x00002000UL;  // anonymous
99 const uint32_t GATTR_UME = 0x00004000UL;  // unmoved echo message (adeptxbbs)
100 const uint32_t GATTR_UMN = 0x00008000UL;  // unmoved net message (adeptxbbs)
101 
102 const uint32_t GATTR_FSC = 0x00010000UL;  // fidonet scanned (adeptxbbs)
103 const uint32_t GATTR_GSC = 0x00020000UL;  // groupmail scanned (adeptxbbs)
104 const uint32_t GATTR_RSC = 0x00040000UL;  // rfc822 scanned (adeptxbbs)
105 const uint32_t GATTR_TRT = 0x00080000UL;  // treated: soft cr's & lf's removed (adeptxbbs)
106 
107 const uint32_t GATTR_LZS = 0x00100000UL;  // msg is lzss compressed (adeptxbbs)
108 const uint32_t GATTR_ARC = 0x00200000UL;  // message is stored (adeptxbbs)
109 const uint32_t GATTR_TAG = 0x00400000UL;  // tagged: used by offline readers (adeptxbbs & wildcat)
110 const uint32_t GATTR_RAB = 0x00800000UL;  // receivable (wildcat)
111 
112 const uint32_t GATTR_CAR = 0x01000000UL;  // carboned (wildcat)
113 const uint32_t GATTR_FWD = 0x02000000UL;  // forwarded (wildcat)
114 const uint32_t GATTR_EFL = 0x04000000UL;  // echoflag (wildcat)
115 const uint32_t GATTR_HRP = 0x08000000UL;  // has replies (wildcat)
116 
117 const uint32_t GATTR_PKD = 0x10000000UL;  // Archived
118 
119 class ftn_attr {
120 
121 protected:
122 
123   uint32_t attr1, attr2;
124 
125 public:
126 
ftn_attr()127   ftn_attr() { reset(); }
ftn_attr(const char * s)128   ftn_attr(const char* s) { get(s); }
ftn_attr(const std::string & s)129   ftn_attr(const std::string& s) { get(s); }
ftn_attr(const ftn_attr & o)130   ftn_attr(const ftn_attr& o) { operator=(o); }
131 
reset()132   void reset() { attr1 = attr2 = 0; }
133 
134   void add(const ftn_attr& b);
135   void get(const std::string& s);
136   std::string& make_string(std::string& s) const;
137 
138   bool equals(const ftn_attr& b) const;
139 
140   ftn_attr& operator=(const char* s)      { get(s); return *this; }
141   ftn_attr& operator=(const std::string& s)   { get(s); return *this; }
142   ftn_attr& operator=(const ftn_attr& o)  { attr1=o.attr1; attr2=o.attr2; return *this; }
143 
144   bool operator==(const ftn_attr& b) const  { return equals(b); }
145   bool operator!=(const ftn_attr& b) const  { return !equals(b); }
146 
147   //  ----------------------------------------------------------------
148 
pvt()149   int pvt() const  { return (attr1 & GATTR_PVT) != 0; }
cra()150   int cra() const  { return (attr1 & GATTR_CRA) != 0; }
rcv()151   int rcv() const  { return (attr1 & GATTR_RCV) != 0; }
snt()152   int snt() const  { return (attr1 & GATTR_SNT) != 0; }
153 
att()154   int att() const  { return (attr1 & GATTR_ATT) != 0; }
trs()155   int trs() const  { return (attr1 & GATTR_TRS) != 0; }
orp()156   int orp() const  { return (attr1 & GATTR_ORP) != 0; }
k_s()157   int k_s() const  { return (attr1 & GATTR_K_S) != 0; }
158 
loc()159   int loc() const  { return (attr1 & GATTR_LOC) != 0; }
hld()160   int hld() const  { return (attr1 & GATTR_HLD) != 0; }
rsv()161   int rsv() const  { return (attr1 & GATTR_RSV) != 0; }
frq()162   int frq() const  { return (attr1 & GATTR_FRQ) != 0; }
163 
rrq()164   int rrq() const  { return (attr1 & GATTR_RRQ) != 0; }
rrc()165   int rrc() const  { return (attr1 & GATTR_RRC) != 0; }
arq()166   int arq() const  { return (attr1 & GATTR_ARQ) != 0; }
urq()167   int urq() const  { return (attr1 & GATTR_URQ) != 0; }
168 
grp()169   int grp() const  { return (attr1 & GATTR_GRP) != 0; }
imm()170   int imm() const  { return (attr1 & GATTR_IMM) != 0; }
dir()171   int dir() const  { return (attr1 & GATTR_DIR) != 0; }
tfs()172   int tfs() const  { return (attr1 & GATTR_TFS) != 0; }
173 
kfs()174   int kfs() const  { return (attr1 & GATTR_KFS) != 0; }
lok()175   int lok() const  { return (attr1 & GATTR_LOK) != 0; }
a_s()176   int a_s() const  { return (attr1 & GATTR_A_S) != 0; }
zon()177   int zon() const  { return (attr1 & GATTR_ZON) != 0; }
178 
hub()179   int hub() const  { return (attr1 & GATTR_HUB) != 0; }
xma()180   int xma() const  { return (attr1 & GATTR_XMA) != 0; }
cfm()181   int cfm() const  { return (attr1 & GATTR_CFM) != 0; }
hir()182   int hir() const  { return (attr1 & GATTR_HIR) != 0; }
183 
cov()184   int cov() const  { return (attr1 & GATTR_COV) != 0; }
sig()185   int sig() const  { return (attr1 & GATTR_SIG) != 0; }
let()186   int let() const  { return (attr1 & GATTR_LET) != 0; }
uns()187   int uns() const  { return (attr1 & GATTR_UNS) != 0; }
188 
del()189   int del() const  { return (attr2 & GATTR_DEL) != 0; }
nwm()190   int nwm() const  { return (attr2 & GATTR_NWM) != 0; }
rot()191   int rot() const  { return (attr2 & GATTR_ROT) != 0; }
hex()192   int hex() const  { return (attr2 & GATTR_HEX) != 0; }
193 
upd()194   int upd() const  { return (attr2 & GATTR_UPD) != 0; }
tou()195   int tou() const  { return (attr2 & GATTR_TOU) != 0; }
fmu()196   int fmu() const  { return (attr2 & GATTR_FMU) != 0; }
scn()197   int scn() const  { return (attr2 & GATTR_SCN) != 0; }
198 
pos()199   int pos() const  { return (attr2 & GATTR_POS) != 0; }
r_o()200   int r_o() const  { return (attr2 & GATTR_R_O) != 0; }
nok()201   int nok() const  { return (attr2 & GATTR_NOK) != 0; }
fax()202   int fax() const  { return (attr2 & GATTR_FAX) != 0; }
203 
prn()204   int prn() const  { return (attr2 & GATTR_PRN) != 0; }
ano()205   int ano() const  { return (attr2 & GATTR_ANO) != 0; }
ume()206   int ume() const  { return (attr2 & GATTR_UME) != 0; }
umn()207   int umn() const  { return (attr2 & GATTR_UMN) != 0; }
208 
fsc()209   int fsc() const  { return (attr2 & GATTR_FSC) != 0; }
gsc()210   int gsc() const  { return (attr2 & GATTR_GSC) != 0; }
rsc()211   int rsc() const  { return (attr2 & GATTR_RSC) != 0; }
trt()212   int trt() const  { return (attr2 & GATTR_TRT) != 0; }
213 
lzs()214   int lzs() const  { return (attr2 & GATTR_LZS) != 0; }
arc()215   int arc() const  { return (attr2 & GATTR_ARC) != 0; }
tag()216   int tag() const  { return (attr2 & GATTR_TAG) != 0; }
rab()217   int rab() const  { return (attr2 & GATTR_RAB) != 0; }
218 
car()219   int car() const  { return (attr2 & GATTR_CAR) != 0; }
fwd()220   int fwd() const  { return (attr2 & GATTR_FWD) != 0; }
efl()221   int efl() const  { return (attr2 & GATTR_EFL) != 0; }
hrp()222   int hrp() const  { return (attr2 & GATTR_HRP) != 0; }
223 
pkd()224   int pkd() const  { return (attr2 & GATTR_PKD) != 0; }
225 
226   //  ----------------------------------------------------------------
227 
pvt(uint32_t x)228   void pvt(uint32_t x)  { if(x) attr1 |= GATTR_PVT; else attr1 &= ~GATTR_PVT; }
cra(uint32_t x)229   void cra(uint32_t x)  { if(x) attr1 |= GATTR_CRA; else attr1 &= ~GATTR_CRA; }
rcv(uint32_t x)230   void rcv(uint32_t x)  { if(x) attr1 |= GATTR_RCV; else attr1 &= ~GATTR_RCV; }
snt(uint32_t x)231   void snt(uint32_t x)  { if(x) attr1 |= GATTR_SNT; else attr1 &= ~GATTR_SNT; }
232 
att(uint32_t x)233   void att(uint32_t x)  { if(x) attr1 |= GATTR_ATT; else attr1 &= ~GATTR_ATT; }
trs(uint32_t x)234   void trs(uint32_t x)  { if(x) attr1 |= GATTR_TRS; else attr1 &= ~GATTR_TRS; }
orp(uint32_t x)235   void orp(uint32_t x)  { if(x) attr1 |= GATTR_ORP; else attr1 &= ~GATTR_ORP; }
k_s(uint32_t x)236   void k_s(uint32_t x)  { if(x) attr1 |= GATTR_K_S; else attr1 &= ~GATTR_K_S; }
237 
loc(uint32_t x)238   void loc(uint32_t x)  { if(x) attr1 |= GATTR_LOC; else attr1 &= ~GATTR_LOC; }
hld(uint32_t x)239   void hld(uint32_t x)  { if(x) attr1 |= GATTR_HLD; else attr1 &= ~GATTR_HLD; }
rsv(uint32_t x)240   void rsv(uint32_t x)  { if(x) attr1 |= GATTR_RSV; else attr1 &= ~GATTR_RSV; }
frq(uint32_t x)241   void frq(uint32_t x)  { if(x) attr1 |= GATTR_FRQ; else attr1 &= ~GATTR_FRQ; }
242 
rrq(uint32_t x)243   void rrq(uint32_t x)  { if(x) attr1 |= GATTR_RRQ; else attr1 &= ~GATTR_RRQ; }
rrc(uint32_t x)244   void rrc(uint32_t x)  { if(x) attr1 |= GATTR_RRC; else attr1 &= ~GATTR_RRC; }
arq(uint32_t x)245   void arq(uint32_t x)  { if(x) attr1 |= GATTR_ARQ; else attr1 &= ~GATTR_ARQ; }
urq(uint32_t x)246   void urq(uint32_t x)  { if(x) attr1 |= GATTR_URQ; else attr1 &= ~GATTR_URQ; }
247 
grp(uint32_t x)248   void grp(uint32_t x)  { if(x) attr1 |= GATTR_GRP; else attr1 &= ~GATTR_GRP; }
imm(uint32_t x)249   void imm(uint32_t x)  { if(x) attr1 |= GATTR_IMM; else attr1 &= ~GATTR_IMM; }
dir(uint32_t x)250   void dir(uint32_t x)  { if(x) attr1 |= GATTR_DIR; else attr1 &= ~GATTR_DIR; }
tfs(uint32_t x)251   void tfs(uint32_t x)  { if(x) attr1 |= GATTR_TFS; else attr1 &= ~GATTR_TFS; }
252 
kfs(uint32_t x)253   void kfs(uint32_t x)  { if(x) attr1 |= GATTR_KFS; else attr1 &= ~GATTR_KFS; }
lok(uint32_t x)254   void lok(uint32_t x)  { if(x) attr1 |= GATTR_LOK; else attr1 &= ~GATTR_LOK; }
a_s(uint32_t x)255   void a_s(uint32_t x)  { if(x) attr1 |= GATTR_A_S; else attr1 &= ~GATTR_A_S; }
zon(uint32_t x)256   void zon(uint32_t x)  { if(x) attr1 |= GATTR_ZON; else attr1 &= ~GATTR_ZON; }
257 
hub(uint32_t x)258   void hub(uint32_t x)  { if(x) attr1 |= GATTR_HUB; else attr1 &= ~GATTR_HUB; }
xma(uint32_t x)259   void xma(uint32_t x)  { if(x) attr1 |= GATTR_XMA; else attr1 &= ~GATTR_XMA; }
cfm(uint32_t x)260   void cfm(uint32_t x)  { if(x) attr1 |= GATTR_CFM; else attr1 &= ~GATTR_CFM; }
hir(uint32_t x)261   void hir(uint32_t x)  { if(x) attr1 |= GATTR_HIR; else attr1 &= ~GATTR_HIR; }
262 
cov(uint32_t x)263   void cov(uint32_t x)  { if(x) attr1 |= GATTR_COV; else attr1 &= ~GATTR_COV; }
sig(uint32_t x)264   void sig(uint32_t x)  { if(x) attr1 |= GATTR_SIG; else attr1 &= ~GATTR_SIG; }
let(uint32_t x)265   void let(uint32_t x)  { if(x) attr1 |= GATTR_LET; else attr1 &= ~GATTR_LET; }
uns(uint32_t x)266   void uns(uint32_t x)  { if(x) attr1 |= GATTR_UNS; else attr1 &= ~GATTR_UNS; }
267 
del(uint32_t x)268   void del(uint32_t x)  { if(x) attr2 |= GATTR_DEL; else attr2 &= ~GATTR_DEL; }
nwm(uint32_t x)269   void nwm(uint32_t x)  { if(x) attr2 |= GATTR_NWM; else attr2 &= ~GATTR_NWM; }
rot(uint32_t x)270   void rot(uint32_t x)  { if(x) attr2 |= GATTR_ROT; else attr2 &= ~GATTR_ROT; }
hex(uint32_t x)271   void hex(uint32_t x)  { if(x) attr2 |= GATTR_HEX; else attr2 &= ~GATTR_HEX; }
272 
upd(uint32_t x)273   void upd(uint32_t x)  { if(x) attr2 |= GATTR_UPD; else attr2 &= ~GATTR_UPD; }
tou(uint32_t x)274   void tou(uint32_t x)  { if(x) attr2 |= GATTR_TOU; else attr2 &= ~GATTR_TOU; }
fmu(uint32_t x)275   void fmu(uint32_t x)  { if(x) attr2 |= GATTR_FMU; else attr2 &= ~GATTR_FMU; }
scn(uint32_t x)276   void scn(uint32_t x)  { if(x) attr2 |= GATTR_SCN; else attr2 &= ~GATTR_SCN; }
277 
pos(uint32_t x)278   void pos(uint32_t x)  { if(x) attr2 |= GATTR_POS; else attr2 &= ~GATTR_POS; }
r_o(uint32_t x)279   void r_o(uint32_t x)  { if(x) attr2 |= GATTR_R_O; else attr2 &= ~GATTR_R_O; }
nok(uint32_t x)280   void nok(uint32_t x)  { if(x) attr2 |= GATTR_NOK; else attr2 &= ~GATTR_NOK; }
fax(uint32_t x)281   void fax(uint32_t x)  { if(x) attr2 |= GATTR_FAX; else attr2 &= ~GATTR_FAX; }
282 
prn(uint32_t x)283   void prn(uint32_t x)  { if(x) attr2 |= GATTR_PRN; else attr2 &= ~GATTR_PRN; }
ano(uint32_t x)284   void ano(uint32_t x)  { if(x) attr2 |= GATTR_ANO; else attr2 &= ~GATTR_ANO; }
ume(uint32_t x)285   void ume(uint32_t x)  { if(x) attr2 |= GATTR_UME; else attr2 &= ~GATTR_UME; }
umn(uint32_t x)286   void umn(uint32_t x)  { if(x) attr2 |= GATTR_UMN; else attr2 &= ~GATTR_UMN; }
287 
fsc(uint32_t x)288   void fsc(uint32_t x)  { if(x) attr2 |= GATTR_FSC; else attr2 &= ~GATTR_FSC; }
gsc(uint32_t x)289   void gsc(uint32_t x)  { if(x) attr2 |= GATTR_GSC; else attr2 &= ~GATTR_GSC; }
rsc(uint32_t x)290   void rsc(uint32_t x)  { if(x) attr2 |= GATTR_RSC; else attr2 &= ~GATTR_RSC; }
trt(uint32_t x)291   void trt(uint32_t x)  { if(x) attr2 |= GATTR_TRT; else attr2 &= ~GATTR_TRT; }
292 
lzs(uint32_t x)293   void lzs(uint32_t x)  { if(x) attr2 |= GATTR_LZS; else attr2 &= ~GATTR_LZS; }
arc(uint32_t x)294   void arc(uint32_t x)  { if(x) attr2 |= GATTR_ARC; else attr2 &= ~GATTR_ARC; }
tag(uint32_t x)295   void tag(uint32_t x)  { if(x) attr2 |= GATTR_TAG; else attr2 &= ~GATTR_TAG; }
rab(uint32_t x)296   void rab(uint32_t x)  { if(x) attr2 |= GATTR_RAB; else attr2 &= ~GATTR_RAB; }
297 
car(uint32_t x)298   void car(uint32_t x)  { if(x) attr2 |= GATTR_CAR; else attr2 &= ~GATTR_CAR; }
fwd(uint32_t x)299   void fwd(uint32_t x)  { if(x) attr2 |= GATTR_FWD; else attr2 &= ~GATTR_FWD; }
efl(uint32_t x)300   void efl(uint32_t x)  { if(x) attr2 |= GATTR_EFL; else attr2 &= ~GATTR_EFL; }
hrp(uint32_t x)301   void hrp(uint32_t x)  { if(x) attr2 |= GATTR_HRP; else attr2 &= ~GATTR_HRP; }
302 
pkd(uint32_t x)303   void pkd(uint32_t x)  { if(x) attr2 |= GATTR_PKD; else attr2 &= ~GATTR_PKD; }
304 
305   //  -------------------------------------------------------------
306 
pvt0()307   void pvt0()  { attr1 &= ~GATTR_PVT; }
cra0()308   void cra0()  { attr1 &= ~GATTR_CRA; }
rcv0()309   void rcv0()  { attr1 &= ~GATTR_RCV; }
snt0()310   void snt0()  { attr1 &= ~GATTR_SNT; }
311 
att0()312   void att0()  { attr1 &= ~GATTR_ATT; }
trs0()313   void trs0()  { attr1 &= ~GATTR_TRS; }
orp0()314   void orp0()  { attr1 &= ~GATTR_ORP; }
k_s0()315   void k_s0()  { attr1 &= ~GATTR_K_S; }
316 
loc0()317   void loc0()  { attr1 &= ~GATTR_LOC; }
hld0()318   void hld0()  { attr1 &= ~GATTR_HLD; }
rsv0()319   void rsv0()  { attr1 &= ~GATTR_RSV; }
frq0()320   void frq0()  { attr1 &= ~GATTR_FRQ; }
321 
rrq0()322   void rrq0()  { attr1 &= ~GATTR_RRQ; }
rrc0()323   void rrc0()  { attr1 &= ~GATTR_RRC; }
arq0()324   void arq0()  { attr1 &= ~GATTR_ARQ; }
urq0()325   void urq0()  { attr1 &= ~GATTR_URQ; }
326 
grp0()327   void grp0()  { attr1 &= ~GATTR_GRP; }
imm0()328   void imm0()  { attr1 &= ~GATTR_IMM; }
dir0()329   void dir0()  { attr1 &= ~GATTR_DIR; }
tfs0()330   void tfs0()  { attr1 &= ~GATTR_TFS; }
331 
kfs0()332   void kfs0()  { attr1 &= ~GATTR_KFS; }
lok0()333   void lok0()  { attr1 &= ~GATTR_LOK; }
a_s0()334   void a_s0()  { attr1 &= ~GATTR_A_S; }
zon0()335   void zon0()  { attr1 &= ~GATTR_ZON; }
336 
hub0()337   void hub0()  { attr1 &= ~GATTR_HUB; }
xma0()338   void xma0()  { attr1 &= ~GATTR_XMA; }
cfm0()339   void cfm0()  { attr1 &= ~GATTR_CFM; }
hir0()340   void hir0()  { attr1 &= ~GATTR_HIR; }
341 
cov0()342   void cov0()  { attr1 &= ~GATTR_COV; }
sig0()343   void sig0()  { attr1 &= ~GATTR_SIG; }
let0()344   void let0()  { attr1 &= ~GATTR_LET; }
uns0()345   void uns0()  { attr1 &= ~GATTR_UNS; }
346 
del0()347   void del0()  { attr2 &= ~GATTR_DEL; }
nwm0()348   void nwm0()  { attr2 &= ~GATTR_NWM; }
rot0()349   void rot0()  { attr2 &= ~GATTR_ROT; }
hex0()350   void hex0()  { attr2 &= ~GATTR_HEX; }
351 
upd0()352   void upd0()  { attr2 &= ~GATTR_UPD; }
tou0()353   void tou0()  { attr2 &= ~GATTR_TOU; }
fmu0()354   void fmu0()  { attr2 &= ~GATTR_FMU; }
scn0()355   void scn0()  { attr2 &= ~GATTR_SCN; }
356 
pos0()357   void pos0()  { attr2 &= ~GATTR_POS; }
r_o0()358   void r_o0()  { attr2 &= ~GATTR_R_O; }
nok0()359   void nok0()  { attr2 &= ~GATTR_NOK; }
fax0()360   void fax0()  { attr2 &= ~GATTR_FAX; }
361 
prn0()362   void prn0()  { attr2 &= ~GATTR_PRN; }
363 
364   //  ----------------------------------------------------------------
365 
pvt1()366   void pvt1()  { attr1 |= GATTR_PVT; }
cra1()367   void cra1()  { attr1 |= GATTR_CRA; }
rcv1()368   void rcv1()  { attr1 |= GATTR_RCV; }
snt1()369   void snt1()  { attr1 |= GATTR_SNT; }
370 
att1()371   void att1()  { attr1 |= GATTR_ATT; }
trs1()372   void trs1()  { attr1 |= GATTR_TRS; }
orp1()373   void orp1()  { attr1 |= GATTR_ORP; }
k_s1()374   void k_s1()  { attr1 |= GATTR_K_S; }
375 
loc1()376   void loc1()  { attr1 |= GATTR_LOC; }
hld1()377   void hld1()  { attr1 |= GATTR_HLD; }
rsv1()378   void rsv1()  { attr1 |= GATTR_RSV; }
frq1()379   void frq1()  { attr1 |= GATTR_FRQ; }
380 
rrq1()381   void rrq1()  { attr1 |= GATTR_RRQ; }
rrc1()382   void rrc1()  { attr1 |= GATTR_RRC; }
arq1()383   void arq1()  { attr1 |= GATTR_ARQ; }
urq1()384   void urq1()  { attr1 |= GATTR_URQ; }
385 
grp1_()386   void grp1_()  { attr1 |= GATTR_GRP; }
imm1()387   void imm1()  { attr1 |= GATTR_IMM; }
dir1()388   void dir1()  { attr1 |= GATTR_DIR; }
tfs1()389   void tfs1()  { attr1 |= GATTR_TFS; }
390 
kfs1()391   void kfs1()  { attr1 |= GATTR_KFS; }
lok1()392   void lok1()  { attr1 |= GATTR_LOK; }
a_s1()393   void a_s1()  { attr1 |= GATTR_A_S; }
zon1()394   void zon1()  { attr1 |= GATTR_ZON; }
395 
hub1()396   void hub1()  { attr1 |= GATTR_HUB; }
xma1()397   void xma1()  { attr1 |= GATTR_XMA; }
cfm1()398   void cfm1()  { attr1 |= GATTR_CFM; }
hir1()399   void hir1()  { attr1 |= GATTR_HIR; }
400 
cov1()401   void cov1()  { attr1 |= GATTR_COV; }
sig1()402   void sig1()  { attr1 |= GATTR_SIG; }
let1()403   void let1()  { attr1 |= GATTR_LET; }
uns1()404   void uns1()  { attr1 |= GATTR_UNS; }
405 
del1()406   void del1()  { attr2 |= GATTR_DEL; }
nwm1()407   void nwm1()  { attr2 |= GATTR_NWM; }
rot1()408   void rot1()  { attr2 |= GATTR_ROT; }
hex1()409   void hex1()  { attr2 |= GATTR_HEX; }
410 
upd1()411   void upd1()  { attr2 |= GATTR_UPD; }
tou1()412   void tou1()  { attr2 |= GATTR_TOU; }
fmu1()413   void fmu1()  { attr2 |= GATTR_FMU; }
scn1()414   void scn1()  { attr2 |= GATTR_SCN; }
415 
pos1()416   void pos1()  { attr2 |= GATTR_POS; }
r_o1()417   void r_o1()  { attr2 |= GATTR_R_O; }
nok1()418   void nok1()  { attr2 |= GATTR_NOK; }
fax1()419   void fax1()  { attr2 |= GATTR_FAX; }
420 
prn1()421   void prn1()  { attr2 |= GATTR_PRN; }
422 
pkd1()423   void pkd1()  { attr2 |= GATTR_PKD; }
424 
425   //  ----------------------------------------------------------------
426 
pvtX()427   void pvtX()  { attr1 ^= GATTR_PVT; }
craX()428   void craX()  { attr1 ^= GATTR_CRA; }
rcvX()429   void rcvX()  { attr1 ^= GATTR_RCV; }
sntX()430   void sntX()  { attr1 ^= GATTR_SNT; }
431 
attX()432   void attX()  { attr1 ^= GATTR_ATT; }
trsX()433   void trsX()  { attr1 ^= GATTR_TRS; }
orpX()434   void orpX()  { attr1 ^= GATTR_ORP; }
k_sX()435   void k_sX()  { attr1 ^= GATTR_K_S; }
436 
locX()437   void locX()  { attr1 ^= GATTR_LOC; }
hldX()438   void hldX()  { attr1 ^= GATTR_HLD; }
rsvX()439   void rsvX()  { attr1 ^= GATTR_RSV; }
frqX()440   void frqX()  { attr1 ^= GATTR_FRQ; }
441 
rrqX()442   void rrqX()  { attr1 ^= GATTR_RRQ; }
rrcX()443   void rrcX()  { attr1 ^= GATTR_RRC; }
arqX()444   void arqX()  { attr1 ^= GATTR_ARQ; }
urqX()445   void urqX()  { attr1 ^= GATTR_URQ; }
446 
grpX()447   void grpX()  { attr1 ^= GATTR_GRP; }
immX()448   void immX()  { attr1 ^= GATTR_IMM; }
dirX()449   void dirX()  { attr1 ^= GATTR_DIR; }
tfsX()450   void tfsX()  { attr1 ^= GATTR_TFS; }
451 
kfsX()452   void kfsX()  { attr1 ^= GATTR_KFS; }
lokX()453   void lokX()  { attr1 ^= GATTR_LOK; }
a_sX()454   void a_sX()  { attr1 ^= GATTR_A_S; }
zonX()455   void zonX()  { attr1 ^= GATTR_ZON; }
456 
hubX()457   void hubX()  { attr1 ^= GATTR_HUB; }
xmaX()458   void xmaX()  { attr1 ^= GATTR_XMA; }
cfmX()459   void cfmX()  { attr1 ^= GATTR_CFM; }
hirX()460   void hirX()  { attr1 ^= GATTR_HIR; }
461 
covX()462   void covX()  { attr1 ^= GATTR_COV; }
sigX()463   void sigX()  { attr1 ^= GATTR_SIG; }
letX()464   void letX()  { attr1 ^= GATTR_LET; }
unsX()465   void unsX()  { attr1 ^= GATTR_UNS; }
466 
delX()467   void delX()  { attr2 ^= GATTR_DEL; }
nwmX()468   void nwmX()  { attr2 ^= GATTR_NWM; }
rotX()469   void rotX()  { attr2 ^= GATTR_ROT; }
hexX()470   void hexX()  { attr2 ^= GATTR_HEX; }
471 
updX()472   void updX()  { attr2 ^= GATTR_UPD; }
touX()473   void touX()  { attr2 ^= GATTR_TOU; }
fmuX()474   void fmuX()  { attr2 ^= GATTR_FMU; }
scnX()475   void scnX()  { attr2 ^= GATTR_SCN; }
476 
posX()477   void posX()  { attr2 ^= GATTR_POS; }
r_oX()478   void r_oX()  { attr2 ^= GATTR_R_O; }
nokX()479   void nokX()  { attr2 ^= GATTR_NOK; }
faxX()480   void faxX()  { attr2 ^= GATTR_FAX; }
481 
prnX()482   void prnX()  { attr2 ^= GATTR_PRN; }
483 
484 };
485 
486 
487 //  ------------------------------------------------------------------
488 
489 typedef ftn_attr Attr;
490 
491 
492 //  ------------------------------------------------------------------
493 
AttrAdd(Attr * a,Attr * b)494 inline void AttrAdd(Attr* a, Attr* b) { a->add(*b); }
GetAttribstr(Attr * attr,const TCHAR * attrs)495 inline void GetAttribstr(Attr* attr, const TCHAR *attrs) { attr->get(attrs); }
MakeAttrStr(TCHAR * str,size_t maxlen,const Attr * attr)496 inline TCHAR *MakeAttrStr(TCHAR *str, size_t maxlen, const Attr *attr) { std::string tmp; attr->make_string(tmp); strxcpy(str, tmp.c_str(), maxlen); return str; }
497 
498 
499 //  ------------------------------------------------------------------
500 
501 #endif
502 
503 //  ------------------------------------------------------------------
504