// { dg-do run }
|
// { dg-do run }
|
// GROUPS passed constructors
|
// GROUPS passed constructors
|
// Message-Id:
|
// Message-Id:
|
// Date: Fri, 10 Dec 93 11:33 EST
|
// Date: Fri, 10 Dec 93 11:33 EST
|
// From: neal@ctd.comsat.com (Neal Becker)
|
// From: neal@ctd.comsat.com (Neal Becker)
|
// Subject: serious problems with static constructors
|
// Subject: serious problems with static constructors
|
|
|
#include
|
#include
|
#include
|
#include
|
#include
|
#include
|
|
|
#define CONST const
|
#define CONST const
|
|
|
class Sig {
|
class Sig {
|
|
|
public:
|
public:
|
|
|
enum Type { Byte_t, Word_t, Long_t, Float_t, Double_t, Complex_t, ComplexLong_t, Bad_t };
|
enum Type { Byte_t, Word_t, Long_t, Float_t, Double_t, Complex_t, ComplexLong_t, Bad_t };
|
|
|
private:
|
private:
|
|
|
Type T;
|
Type T;
|
|
|
public:
|
public:
|
|
|
static CONST char *ByteMagic, *WordMagic, *LongMagic,
|
static CONST char *ByteMagic, *WordMagic, *LongMagic,
|
*FloatMagic, *DoubleMagic, *ComplexMagic, *ComplexLongMagic, *BadMagic;
|
*FloatMagic, *DoubleMagic, *ComplexMagic, *ComplexLongMagic, *BadMagic;
|
|
|
struct SigTable {
|
struct SigTable {
|
Type T;
|
Type T;
|
CONST char* Magic;
|
CONST char* Magic;
|
};
|
};
|
|
|
static CONST SigTable sigTable[];
|
static CONST SigTable sigTable[];
|
|
|
};
|
};
|
|
|
CONST char
|
CONST char
|
*Sig::ByteMagic = "BYTE",
|
*Sig::ByteMagic = "BYTE",
|
*Sig::WordMagic = "WORD",
|
*Sig::WordMagic = "WORD",
|
*Sig::LongMagic = "LONG",
|
*Sig::LongMagic = "LONG",
|
*Sig::FloatMagic = "FLOA",
|
*Sig::FloatMagic = "FLOA",
|
*Sig::DoubleMagic = "DOUB",
|
*Sig::DoubleMagic = "DOUB",
|
*Sig::ComplexMagic = "COMP",
|
*Sig::ComplexMagic = "COMP",
|
*Sig::ComplexLongMagic = "CMPL",
|
*Sig::ComplexLongMagic = "CMPL",
|
*Sig::BadMagic = NULL;
|
*Sig::BadMagic = NULL;
|
|
|
|
|
CONST Sig::SigTable Sig::sigTable[] = {
|
CONST Sig::SigTable Sig::sigTable[] = {
|
{ Byte_t, ByteMagic },
|
{ Byte_t, ByteMagic },
|
{ Word_t, WordMagic },
|
{ Word_t, WordMagic },
|
{ Long_t, LongMagic },
|
{ Long_t, LongMagic },
|
{ Float_t, FloatMagic },
|
{ Float_t, FloatMagic },
|
{ Double_t, DoubleMagic },
|
{ Double_t, DoubleMagic },
|
{ Complex_t, ComplexMagic },
|
{ Complex_t, ComplexMagic },
|
{ ComplexLong_t, ComplexLongMagic },
|
{ ComplexLong_t, ComplexLongMagic },
|
{ Bad_t, BadMagic }
|
{ Bad_t, BadMagic }
|
};
|
};
|
|
|
int main() {
|
int main() {
|
if (strcmp (Sig::sigTable[0].Magic, "BYTE")
|
if (strcmp (Sig::sigTable[0].Magic, "BYTE")
|
|| strcmp (Sig::sigTable[1].Magic, "WORD")
|
|| strcmp (Sig::sigTable[1].Magic, "WORD")
|
|| strcmp (Sig::sigTable[2].Magic, "LONG")
|
|| strcmp (Sig::sigTable[2].Magic, "LONG")
|
|| strcmp (Sig::sigTable[3].Magic, "FLOA")
|
|| strcmp (Sig::sigTable[3].Magic, "FLOA")
|
|| strcmp (Sig::sigTable[4].Magic, "DOUB")
|
|| strcmp (Sig::sigTable[4].Magic, "DOUB")
|
|| strcmp (Sig::sigTable[5].Magic, "COMP"))
|
|| strcmp (Sig::sigTable[5].Magic, "COMP"))
|
{ printf ("FAIL\n"); return 1; }
|
{ printf ("FAIL\n"); return 1; }
|
else
|
else
|
printf ("PASS\n");
|
printf ("PASS\n");
|
}
|
}
|
|
|