From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13474 invoked by alias); 22 Nov 2002 18:32:49 -0000 Mailing-List: contact gcc-help-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-help-owner@gcc.gnu.org Received: (qmail 13467 invoked from network); 22 Nov 2002 18:32:48 -0000 Received: from unknown (HELO smtp-relay-3.sea.adobe.com) (192.150.22.10) by sources.redhat.com with SMTP; 22 Nov 2002 18:32:48 -0000 Received: from inner-relay-3.corp.adobe.com (inner-relay-3 [153.32.251.51]) by smtp-relay-3.sea.adobe.com (8.12.3/8.12.3) with ESMTP id gAMIVWg1013752 for ; Fri, 22 Nov 2002 10:31:33 -0800 (PST) Received: from iplan-mn.corp.adobe.com (iplan-mn.corp.adobe.com [130.248.25.5]) by inner-relay-3.corp.adobe.com (8.12.3/8.12.3) with ESMTP id gAMIWjZ9022091 for ; Fri, 22 Nov 2002 10:32:45 -0800 (PST) Received: from mn-eljaypc.adobe.com ([130.248.188.158]) by iplan-mn.corp.adobe.com (Netscape Messaging Server 4.15 mn Jul 11 2001 16:32:57) with ESMTP id H5ZQ6K00.U88; Fri, 22 Nov 2002 12:32:44 -0600 Message-Id: <4.3.2.7.2.20021122122636.00b60e00@iplan-mn.corp.adobe.com> X-Sender: eljay@iplan-mn.corp.adobe.com Date: Fri, 22 Nov 2002 10:32:00 -0000 To: "Buddy Lott" From: Eljay Love-Jensen Subject: RE: CPP (preprocessor) quandry Cc: gcc-help@gcc.gnu.org In-Reply-To: <583E84A77A2FCB4F967E6CD9B0CA4AF74E4906@nt-server.kreuter> References: <4.3.2.7.2.20021122114945.00b5eb00@iplan-mn.corp.adobe.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed X-SW-Source: 2002-11/txt/msg00167.txt.bz2 Hi Buddy, Thanks for the idea! This "two-part macro" trick will work: #define $MkEnum(name$) \ struct name$ {\ typedef enum { #define $EndEnum(name$) \ } Type;\ Type m;\ name$(Type in) : m(in) { }\ operator Type () const { return m; }\ } In use: $MkEnum(Marx) Groucho, Chico, Harpo, Gummo, Zeppo, Karl = 86 $EndEnum(Marx); Voila! Slightly awkward, but acceptable. It could all be put on one line, but I'm not sure if that'd be better or worse. Note: C++ only, no C. Thanks, --Eljay