// (C) Copyright 1996-2006 by Autodesk, Inc. 
//
// Permission to use, copy, modify, and distribute this software in
// object code form for any purpose and without fee is hereby granted, 
// provided that the above copyright notice appears in all copies and 
// that both that copyright notice and the limited warranty and
// restricted rights notice below appear in all supporting 
// documentation.
//
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS. 
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC. 
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
// UNINTERRUPTED OR ERROR FREE.
//
// Use, duplication, or disclosure by the U.S. Government is subject to 
// restrictions set forth in FAR 52.227-19 (Commercial Computer
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
// (Rights in Technical Data and Computer Software), as applicable.
//
// acrxmac.txt 

The following are the actual expansions of the ACRX macros for
AcDbPoly (reformatted to fit into 60 column text -- the actual
expansions are one very long line each).  This information was 
generated by using the /E compiler switch.

// THE FOLLOWING APPEARS IN THE SDK DOCUMENT.

For AsdkPoly,  the line:

    ACRX_DECLARE_MEMBERS(AsdkPoly);

expands to a single long line of code which,  when reformatted
to multiple lines for clarity,  looks like this:

virtual AcRxClass* isA() const;
static AcRxClass* gpDesc;
static AcRxClass* desc();
static AsdkPoly* cast(const AcRxObject* inPtr)
{
    return ((inPtr == 0)
        || !inPtr->isKindOf(AsdkPoly::desc()))
        ? 0 : (AsdkPoly*)inPtr;
};
static void rxInit();




For AcDbPoly the line:

ACRX_DXF_DEFINE_MEMBERS(AsdkPoly, AcDbCurve, AcDb::kDHL_CURRENT,\
                        AcDb::kMReleaseCurrent, 0, POLYGON,\
/*MSG0*/"AutoCAD");

expands to a very long single line of code which,  when reformatted
to multiple lines for clarity,  looks like this:

AcRxClass* AsdkPoly::desc()
{
    if (AsdkPoly::gpDesc != 0)
        return AsdkPoly::gpDesc;
    return AsdkPoly::gpDesc =
        (AcRxClass*)((AcRxDictionary*)acrxSysRegistry()->
        at("ClassDictionary"))->at("AsdkPoly");
}

AcRxClass* AsdkPoly::isA() const
{
    return AsdkPoly::desc();
}

AcRxClass* AsdkPoly::gpDesc = 0;

static AcRxObject * makeAsdkPoly()
{
    return new AsdkPoly();
}

void AsdkPoly::rxInit()
{
    if (AsdkPoly::gpDesc != 0)
        return;
    AsdkPoly::gpDesc = newAcRxClass("AsdkPoly",
        "AsdkCurve", AcDb::kDHL_CURRENT, AcDb::kMReleaseCurrent,
         0, &makeAsdkPoly, "POLYGON", "\"AutoCAD\"");
};

Notice that, when expanded,  the semicolon (;) at the end of the
macro call line ends up just after the closing brace (}) for a function
definition.  So,  this semicolon is not needed for this macro call
line,  but it doesn't hurt.

// END TEXT APPEARING IN SDK DOCUMENT.
