// Geometric Tools, Inc.
// http://www.geometrictools.com
// Copyright (c) 1998-2005.  All Rights Reserved
//
// The Wild Magic Library (WM3) source code is supplied under the terms of
// the license agreement
//     http://www.geometrictools.com/License/WildMagic3License.pdf
// and may not be copied or disclosed except in accordance with the terms
// of that agreement.

#ifndef EXPORTER_H
#define EXPORTER_H

#include <maya/MFn.h>
#include <maya/MFnDagNode.h>
#include <maya/MStatus.h>
#include <maya/MFnMesh.h>
#include <maya/MGlobal.h>
#include <maya/MFnSkinCluster.h>
class MFnAnimCurve;
class MItKeyframe;

#include "Wm3Camera.h"
#include "Wm3Node.h"
#include "Wm3TArray.h"
#include "Wm3THashTable.h"
#include "Wm3KeyframeController.h"
using namespace Wm3;

#include "BumpMapData.h"
#include "SkinControllerData.h"
#include "MeshData.h"
#include "InstanceData.h"


class Exporter
{
public:
    Exporter ();
    ~Exporter ();

    void DoExport (const char* acFilename);

    bool Successful () const;

    enum
    {
        FLAG_OBJFILE,
        FLAG_TEXTFILE,
        FLAG_QUIET,
        FLAG_COLLAPSE,
        FLAG_CAMERAS,
        FLAG_INVISIBLE,
        FLAG_LIGHTS,
        FLAG_TEXTURES,
        FLAG_BUMP,
        FLAG_KEYS,
        FLAG_SKIN,
        FLAG_BIND,
        FLAG_CALC_NORM,
        NUM_FLAGS
    };

    // Flag array.  Set before calling export
    bool Flags[NUM_FLAGS];

private:
    bool m_bSuccess;
    MStatus m_kStatus;

    // exporting subfunctions
    void ExportObjectFile (const char* acFilename);
    void ExportTextFile (const char* acFilename);

    // debugging output variable/functions
    bool m_bQuiet;
    void DisplayInfo (MString kStr);
    void DisplayWarning (MString kStr);
    void DisplayError (MString kStr);

    // string representation of Mfn::Type enumerations
    static const char* TYPE_STRING[MFn::kLast];

    // array of all converters
    typedef void (Exporter::*Converter)(const MFnDagNode&);
    static Converter CONVERT[MFn::kLast];

    // converted components
    NodePtr m_spkWMScene;

    // These arrays are just handles to the cameras and lights in the scene
    // scene graph.  They do not need to be deleted.
    TArray<Camera*> m_kWMCamera;

    // for deferred bumpmap effect creation
    TArray<Light*> m_kWMLight;
    TArray<BumpMapData> m_kWMBumpMap;

    // for deferred skin controller creation
    THashTable<String,Node*> m_kJointHash;

    // for extra mesh information
    THashTable<TriMesh*,MeshData> m_kMeshDataMap;

    // Inside an invisible subtree?
    bool m_bObjectInvisible;

    // Helpers for building WM scene.  Map Maya objects to objects in the
    // scene tree.
    THashTable<int,InstanceData> m_kMap;
    TArray<Spatial*> m_kParentStack;

    int GetKey (const MObject& rkObject) const;
    void AttachToParent (const MFnDagNode& rkDagNode, Spatial* pkChild,
        bool bAttachToWorld = false);
    void AttachChainToParent (const MFnDagNode& rkDagNode, Spatial* pkFirst,
        Spatial* pkLast, bool bAttachToWorld = false);

    // Helper functions that need access to Exporter flags/functions.
    TriMesh* ConvertMesh (const MFnMesh& rkMesh);
    TriMesh* GetTriMesh (const MFnMesh& rkMesh, Vector2fArray*& rpkUV0, 
        Vector2fArray*& rpkUV1, Vector2fArray*& rpkUV2,
        Vector2fArray*& rpkUV3);
    MaterialState* ConvertMaterial (const MObject& rkMatObj, 
        bool& rbIsTransparent, bool& rbHasSpecular);
    void LoadMultiTexture (MPlug& rkElement, Effect* pkEffect,
        Vector2fArray* pkUVs);
    Image* LoadImage (MFnDependencyNode& rkFileTexture);
    Image* LoadHeightMap (MFnDependencyNode& rkFileTexture, float fScale);
    Light* CreateLight (const MFnDagNode& rkDagNode);

    // SkinController helper functions
    void CSkinClusterFilter (const MObject& rkObject);
    void ConvertSkinController (const MFnSkinCluster& rkCluster,
        const MFnMesh& rkOutputMesh, int iOutputGeomKey,
        MDagPath& rkMeshDagPath, MDagPathArray& rkJoints);

    // Helper function for CLight.cpp.
    static void SetAttenuation (Light* pkLight, const MFnDagNode& rkDagNode);

    // Helper functions for CMesh.cpp.
    static bool IsValidShader (const MObject& rkMatObj);
    static void BakeColor (Image*& rpkImage, float fScale, float fTrans);
    static void MultiplyAlpha (Image*& rpkImage, float fAlpha);
    static TriMesh* CloneMesh (TriMesh* pkMesh);

    // Helper functions for CTransform.cpp.
    static Matrix3f CreateRotate (int iRotateOrder, float fRotX, float fRotY,
        float fRotZ);
    static KeyframeController* GetBareController ();
    static void GetCurveAndIter (const MPlug& rkPlug,
        MFnAnimCurve*& rpkCurve, MItKeyframe*& rpkIt);
    static void GetCurvesAndIters (MItKeyframe*& rpkXIt,
        MItKeyframe*& rpkYIt, MItKeyframe*& rpkZIt, MFnAnimCurve*& rpkXCurve,
        MFnAnimCurve*& rpkYCurve, MFnAnimCurve*& rpkZCurve,
        const MPlug& rkPlug);
    static MTime GetTimeAndIncrement (MItKeyframe* pkKey1,
        MItKeyframe* pkKey2, MItKeyframe* pkKey3, MTime& rkMaxTime);
    static bool SetRotateAnim (const MFnDagNode& rkDagNode,
        KeyframeController* pkKFCtrl, int iRotateOrder, float fStaticX,
        float fStaticY, float fStaticZ, Matrix3f& rkLeftMultiply,
        Matrix3f& rkRightMultiply);
    static bool SetScaleAnim (const MFnDagNode& rkDagNode, 
        KeyframeController* pkKFCtrl, float fStaticScale);
    static bool SetTranslateAnim (const MFnDagNode& rkDagNode, 
        KeyframeController* pkKFCtrl, const Vector3f& rkStatic);
    static KeyframeController* GetInvScaleController (
        const KeyframeController* pkSource);

    // for not-yet-implemented dag node types
    void Placeholder (const MFnDagNode&);

    // converters (this list from <maya/MFn.h>)
    void CInvalid (const MFnDagNode&);
    void CBase (const MFnDagNode&);
    void CNamedObject (const MFnDagNode&);
    void CModel (const MFnDagNode&);
    void CDependencyNode (const MFnDagNode&);
    void CAddDoubleLinear (const MFnDagNode&);
    void CAffect (const MFnDagNode&);
    void CAnimCurve (const MFnDagNode&);
    void CAnimCurveTimeToAngular (const MFnDagNode&);
    void CAnimCurveTimeToDistance (const MFnDagNode&);
    void CAnimCurveTimeToTime (const MFnDagNode&);
    void CAnimCurveTimeToUnitless (const MFnDagNode&);
    void CAnimCurveUnitlessToAngular (const MFnDagNode&);
    void CAnimCurveUnitlessToDistance (const MFnDagNode&);
    void CAnimCurveUnitlessToTime (const MFnDagNode&);
    void CAnimCurveUnitlessToUnitless (const MFnDagNode&);
    void CResultCurve (const MFnDagNode&);
    void CResultCurveTimeToAngular (const MFnDagNode&);
    void CResultCurveTimeToDistance (const MFnDagNode&);
    void CResultCurveTimeToTime (const MFnDagNode&);
    void CResultCurveTimeToUnitless (const MFnDagNode&);
    void CAngleBetween (const MFnDagNode&);
    void CAudio (const MFnDagNode&); 
    void CBackground (const MFnDagNode&);
    void CColorBackground (const MFnDagNode&);
    void CFileBackground (const MFnDagNode&);
    void CRampBackground (const MFnDagNode&);
    void CBlend (const MFnDagNode&);
    void CBlendTwoAttr (const MFnDagNode&);
    void CBlendWeighted (const MFnDagNode&);
    void CBlendDevice (const MFnDagNode&);
    void CBlendColors (const MFnDagNode&);
    void CBump (const MFnDagNode&);
    void CBump3d (const MFnDagNode&);
    void CCameraView (const MFnDagNode&);
    void CChainToSpline (const MFnDagNode&);
    void CChoice (const MFnDagNode&); 
    void CCondition (const MFnDagNode&);
    void CContrast (const MFnDagNode&);
    void CClampColor (const MFnDagNode&);
    void CCreate (const MFnDagNode&);
    void CAlignCurve (const MFnDagNode&);
    void CAlignSurface (const MFnDagNode&);
    void CAttachCurve (const MFnDagNode&);
    void CAttachSurface (const MFnDagNode&);
    void CAvgCurves (const MFnDagNode&);
    void CAvgSurfacePoints (const MFnDagNode&);
    void CAvgNurbsSurfacePoints (const MFnDagNode&);
    void CBevel (const MFnDagNode&);
    void CBirailSrf (const MFnDagNode&);
    void CDPbirailSrf (const MFnDagNode&);
    void CMPbirailSrf (const MFnDagNode&);
    void CSPbirailSrf (const MFnDagNode&);
    void CBoundary (const MFnDagNode&);
    void CCircle (const MFnDagNode&);
    void CCloseCurve (const MFnDagNode&);
    void CClosestPointOnSurface (const MFnDagNode&);
    void CCloseSurface (const MFnDagNode&);
    void CCurveFromSurface (const MFnDagNode&);
    void CCurveFromSurfaceBnd (const MFnDagNode&);
    void CCurveFromSurfaceCoS (const MFnDagNode&);
    void CCurveFromSurfaceIso (const MFnDagNode&);
    void CCurveInfo (const MFnDagNode&);
    void CDetachCurve (const MFnDagNode&);
    void CDetachSurface (const MFnDagNode&);
    void CExtendCurve (const MFnDagNode&);
    void CExtendSurface (const MFnDagNode&);
    void CExtrude (const MFnDagNode&);
    void CFFblendSrf (const MFnDagNode&);
    void CFFfilletSrf (const MFnDagNode&);
    void CFilletCurve (const MFnDagNode&);
    void CFitBspline (const MFnDagNode&);
    void CFlow (const MFnDagNode&);
    void CHardenPointCurve (const MFnDagNode&);
    void CInsertKnotCrv (const MFnDagNode&);
    void CInsertKnotSrf (const MFnDagNode&);
    void CIntersectSurface (const MFnDagNode&);
    void CNurbsTesselate (const MFnDagNode&);
    void CNurbsPlane (const MFnDagNode&);
    void CNurbsCube (const MFnDagNode&);
    void COffsetCos (const MFnDagNode&);
    void COffsetCurve (const MFnDagNode&);
    void CPlanarTrimSrf (const MFnDagNode&);
    void CPointOnCurveInfo (const MFnDagNode&);
    void CPointOnSurfaceInfo (const MFnDagNode&);
    void CPrimitive (const MFnDagNode&);
    void CProjectCurve (const MFnDagNode&);
    void CProjectTangent (const MFnDagNode&);
    void CRBFsurface (const MFnDagNode&);
    void CRebuildCurve (const MFnDagNode&);
    void CRebuildSurface (const MFnDagNode&);
    void CReverseCurve (const MFnDagNode&);
    void CReverseSurface (const MFnDagNode&);
    void CRevolve (const MFnDagNode&);
    void CRevolvedPrimitive (const MFnDagNode&);
    void CCone (const MFnDagNode&);
    void CRenderCone (const MFnDagNode&);
    void CCylinder (const MFnDagNode&);
    void CSphere (const MFnDagNode&);
    void CSkin (const MFnDagNode&);
    void CStitchSrf (const MFnDagNode&);
    void CSubCurve (const MFnDagNode&);
    void CSurfaceInfo (const MFnDagNode&);
    void CTextCurves (const MFnDagNode&);
    void CTrim (const MFnDagNode&);
    void CUntrim (const MFnDagNode&);
    void CDagNode (const MFnDagNode&);
    void CProxy (const MFnDagNode&);
    void CUnderWorld (const MFnDagNode&);
    void CTransform (const MFnDagNode&);
    void CAimConstraint (const MFnDagNode&);
    void CLookAt (const MFnDagNode&);
    void CGeometryConstraint (const MFnDagNode&);
    void CGeometryVarGroup (const MFnDagNode&);
    void CAnyGeometryVarGroup (const MFnDagNode&);
    void CCurveVarGroup (const MFnDagNode&);
    void CMeshVarGroup (const MFnDagNode&);
    void CSurfaceVarGroup (const MFnDagNode&);
    void CIkEffector (const MFnDagNode&);
    void CIkHandle (const MFnDagNode&);
    void CJoint (const MFnDagNode&);
    void CManipulator3D (const MFnDagNode&);
    void CArrowManip (const MFnDagNode&);
    void CAxesActionManip (const MFnDagNode&);
    void CBallProjectionManip (const MFnDagNode&);
    void CCircleManip (const MFnDagNode&);
    void CScreenAlignedCircleManip (const MFnDagNode&);
    void CCircleSweepManip (const MFnDagNode&);
    void CConcentricProjectionManip (const MFnDagNode&);
    void CCubicProjectionManip (const MFnDagNode&);
    void CCylindricalProjectionManip (const MFnDagNode&);
    void CDiscManip (const MFnDagNode&);
    void CFreePointManip (const MFnDagNode&);
    void CCenterManip (const MFnDagNode&);
    void CLimitManip (const MFnDagNode&);
    void CEnableManip (const MFnDagNode&);
    void CFreePointTriadManip (const MFnDagNode&);
    void CPropMoveTriadManip (const MFnDagNode&);
    void CTowPointManip (const MFnDagNode&);
    void CPolyCreateToolManip (const MFnDagNode&);
    void CPolySplitToolManip (const MFnDagNode&);
    void CGeometryOnLineManip (const MFnDagNode&);
    void CCameraPlaneManip (const MFnDagNode&);
    void CToggleOnLineManip (const MFnDagNode&);
    void CStateManip (const MFnDagNode&);
    void CIsoparmManip (const MFnDagNode&);
    void CLineManip (const MFnDagNode&);
    void CManipContainer (const MFnDagNode&);
    void CAverageCurveManip (const MFnDagNode&);
    void CBarnDoorManip (const MFnDagNode&);
    void CBevelManip (const MFnDagNode&);
    void CBlendManip (const MFnDagNode&);
    void CButtonManip (const MFnDagNode&);
    void CCameraManip (const MFnDagNode&);
    void CCoiManip (const MFnDagNode&);
    void CCpManip (const MFnDagNode&);
    void CCreateCVManip (const MFnDagNode&);
    void CCreateEPManip (const MFnDagNode&);
    void CCurveEdManip (const MFnDagNode&);
    void CCurveSegmentManip (const MFnDagNode&);
    void CDirectionManip (const MFnDagNode&);
    void CDofManip (const MFnDagNode&);
    void CDropoffManip (const MFnDagNode&);
    void CExtendCurveDistanceManip (const MFnDagNode&);
    void CExtrudeManip (const MFnDagNode&);
    void CIkSplineManip (const MFnDagNode&);
    void CIkRPManip (const MFnDagNode&);
    void CJointClusterManip (const MFnDagNode&);
    void CLightManip (const MFnDagNode&);
    void CMotionPathManip (const MFnDagNode&);
    void COffsetCosManip (const MFnDagNode&);
    void COffsetCurveManip (const MFnDagNode&);
    void CProjectionManip (const MFnDagNode&);
    void CPolyProjectionManip (const MFnDagNode&);
    void CProjectionUVManip (const MFnDagNode&);
    void CProjectionMultiManip (const MFnDagNode&);
    void CProjectTangentManip (const MFnDagNode&);
    void CPropModManip (const MFnDagNode&);
    void CQuadPtOnLineManip (const MFnDagNode&);
    void CRbfSrfManip (const MFnDagNode&);
    void CReverseCurveManip (const MFnDagNode&);
    void CReverseCrvManip (const MFnDagNode&);
    void CReverseSurfaceManip (const MFnDagNode&);
    void CRevolveManip (const MFnDagNode&);
    void CRevolvedPrimitiveManip (const MFnDagNode&);
    void CSpotManip (const MFnDagNode&); 
    void CSpotCylinderManip (const MFnDagNode&);
    void CTriplanarProjectionManip (const MFnDagNode&);  
    void CTrsManip (const MFnDagNode&);
    void CDblTrsManip (const MFnDagNode&);
    void CPivotManip2D (const MFnDagNode&);
    void CManip2DContainer (const MFnDagNode&);
    void CPolyMoveUVManip (const MFnDagNode&);
    void CPolyMappingManip (const MFnDagNode&);
    void CPolyModifierManip (const MFnDagNode&);
    void CPolyMoveVertexManip (const MFnDagNode&);
    void CPolyVertexNormalManip (const MFnDagNode&);
    void CTrsTransManip (const MFnDagNode&);
    void CTrsInsertManip (const MFnDagNode&);
    void CTrsXformManip (const MFnDagNode&);
    void CManipulator2D (const MFnDagNode&);
    void CTranslateManip2D (const MFnDagNode&);
    void CPlanarProjectionManip (const MFnDagNode&);
    void CPointOnCurveManip (const MFnDagNode&);
    void CTowPointOnCurveManip (const MFnDagNode&);
    void CMarkerManip (const MFnDagNode&);
    void CPointOnLineManip (const MFnDagNode&);
    void CPointOnSurfaceManip (const MFnDagNode&);
    void CTranslateUVManip (const MFnDagNode&);
    void CRotateBoxManip (const MFnDagNode&);
    void CRotateManip (const MFnDagNode&);
    void CHandleRotateManip (const MFnDagNode&);
    void CRotateLimitsManip (const MFnDagNode&);
    void CScaleLimitsManip (const MFnDagNode&);
    void CScaleManip (const MFnDagNode&);
    void CScalingBoxManip (const MFnDagNode&);
    void CScriptManip (const MFnDagNode&);
    void CSphericalProjectionManip (const MFnDagNode&);
    void CTextureManip3D (const MFnDagNode&);
    void CToggleManip (const MFnDagNode&);
    void CTranslateBoxManip (const MFnDagNode&);
    void CTranslateLimitsManip (const MFnDagNode&);
    void CTranslateManip (const MFnDagNode&);
    void CTrimManip (const MFnDagNode&);
    void CJointTranslateManip (const MFnDagNode&);
    void CManipulator (const MFnDagNode&); 
    void CCirclePointManip (const MFnDagNode&);
    void CDimensionManip (const MFnDagNode&);
    void CFixedLineManip (const MFnDagNode&);
    void CLightProjectionGeometry (const MFnDagNode&);
    void CLineArrowManip (const MFnDagNode&);
    void CPointManip (const MFnDagNode&);
    void CTriadManip (const MFnDagNode&);
    void CNormalConstraint (const MFnDagNode&);
    void COrientConstraint (const MFnDagNode&);
    void CPointConstraint (const MFnDagNode&);
    void CParentConstraint (const MFnDagNode&);
    void CPoleVectorConstraint (const MFnDagNode&);
    void CScaleConstraint (const MFnDagNode&);
    void CTangentConstraint (const MFnDagNode&);
    void CUnknownTransform (const MFnDagNode&); 
    void CWorld (const MFnDagNode&);
    void CShape (const MFnDagNode&);
    void CBaseLattice (const MFnDagNode&);
    void CCamera (const MFnDagNode&);
    void CCluster (const MFnDagNode&);
    void CSoftMod (const MFnDagNode&);
    void CCollision (const MFnDagNode&);
    void CDummy (const MFnDagNode&);
    void CEmitter (const MFnDagNode&);
    void CField (const MFnDagNode&);
    void CAir (const MFnDagNode&);
    void CDrag (const MFnDagNode&);
    void CGravity (const MFnDagNode&);
    void CNewton (const MFnDagNode&);
    void CRadial (const MFnDagNode&);    
    void CTurbulence (const MFnDagNode&);
    void CUniform (const MFnDagNode&);
    void CVortex (const MFnDagNode&);
    void CGeometric (const MFnDagNode&);
    void CCurve (const MFnDagNode&);
    void CNurbsCurve (const MFnDagNode&);
    void CNurbsCurveGeom (const MFnDagNode&);
    void CDimension (const MFnDagNode&);
    void CAngle (const MFnDagNode&);
    void CAnnotation (const MFnDagNode&);
    void CDistance (const MFnDagNode&);
    void CArcLength (const MFnDagNode&);
    void CRadius (const MFnDagNode&);
    void CParamDimension (const MFnDagNode&);
    void CDirectedDisc (const MFnDagNode&);
    void CRenderRect (const MFnDagNode&);
    void CEnvFogShape (const MFnDagNode&);
    void CLattice (const MFnDagNode&);
    void CLatticeGeom (const MFnDagNode&);
    void CLocator (const MFnDagNode&);
    void CDropoffLocator (const MFnDagNode&);
    void CMarker (const MFnDagNode&);
    void COrientationMarker (const MFnDagNode&);
    void CPositionMarker (const MFnDagNode&);
    void COrientationLocator (const MFnDagNode&);
    void CTrimLocator (const MFnDagNode&);
    void CPlane (const MFnDagNode&);
    void CSketchPlane (const MFnDagNode&);
    void CGroundPlane (const MFnDagNode&);
    void COrthoGrid (const MFnDagNode&);
    void CSprite (const MFnDagNode&);
    void CSurface (const MFnDagNode&);
    void CNurbsSurface (const MFnDagNode&);
    void CNurbsSurfaceGeom (const MFnDagNode&);
    void CMesh (const MFnDagNode&);
    void CMeshGeom (const MFnDagNode&);
    void CRenderSphere (const MFnDagNode&);
    void CFlexor (const MFnDagNode&);
    void CClusterFlexor (const MFnDagNode&);
    void CGuideLine (const MFnDagNode&);
    void CLight (const MFnDagNode&);
    void CAmbientLight (const MFnDagNode&);
    void CNonAmbientLight (const MFnDagNode&);
    void CAreaLight (const MFnDagNode&);
    void CLinearLight (const MFnDagNode&);
    void CNonExtendedLight (const MFnDagNode&);
    void CDirectionalLight (const MFnDagNode&);
    void CPointLight (const MFnDagNode&);
    void CSpotLight (const MFnDagNode&);
    void CParticle (const MFnDagNode&);
    void CPolyToolFeedbackShape (const MFnDagNode&);
    void CRigidConstraint (const MFnDagNode&);
    void CRigid (const MFnDagNode&);
    void CSpring (const MFnDagNode&);
    void CUnknownDag (const MFnDagNode&);
    void CDefaultLightList (const MFnDagNode&);
    void CDeleteComponent (const MFnDagNode&);
    void CDispatchCompute (const MFnDagNode&);
    void CShadingEngine (const MFnDagNode&);
    void CDisplacementShader (const MFnDagNode&);
    void CDistanceBetween (const MFnDagNode&);
    void CDOF (const MFnDagNode&);
    void CDummyConnectable (const MFnDagNode&);
    void CDynamicsController (const MFnDagNode&);
    void CGeoConnectable (const MFnDagNode&); 
    void CExpression (const MFnDagNode&);
    void CExtract (const MFnDagNode&); 
    void CFilter (const MFnDagNode&);
    void CFilterClosestSample (const MFnDagNode&);
    void CFilterEuler (const MFnDagNode&);
    void CFilterSimplify (const MFnDagNode&);
    void CGammaCorrect (const MFnDagNode&);
    void CGeometryFilt (const MFnDagNode&);
    void CBendLattice (const MFnDagNode&);
    void CBlendShape (const MFnDagNode&);
    void CBulgeLattice (const MFnDagNode&);
    void CFFD (const MFnDagNode&);
    void CFfdDualBase (const MFnDagNode&);
    void CRigidDeform (const MFnDagNode&);
    void CSculpt (const MFnDagNode&);
    void CTweak (const MFnDagNode&);
    void CWeightGeometryFilt (const MFnDagNode&);
    void CClusterFilter (const MFnDagNode&);
    void CSoftModFilter (const MFnDagNode&);
    void CJointCluster (const MFnDagNode&);
    void CWire (const MFnDagNode&);
    void CGroupId (const MFnDagNode&);
    void CGroupParts (const MFnDagNode&);
    void CGuide (const MFnDagNode&);
    void CHsvToRgb (const MFnDagNode&);
    void CHyperGraphInfo (const MFnDagNode&);
    void CHyperLayout (const MFnDagNode&);
    void CHyperView (const MFnDagNode&);
    void CIkSolver (const MFnDagNode&);
    void CMCsolver (const MFnDagNode&);
    void CPASolver (const MFnDagNode&);
    void CSCsolver (const MFnDagNode&);
    void CRPsolver (const MFnDagNode&);
    void CSplineSolver (const MFnDagNode&);
    void CIkSystem (const MFnDagNode&);
    void CImagePlane (const MFnDagNode&);
    void CLambert (const MFnDagNode&);
    void CReflect (const MFnDagNode&);
    void CBlinn (const MFnDagNode&);
    void CPhong (const MFnDagNode&);
    void CPhongExplorer (const MFnDagNode&);
    void CLayeredShader (const MFnDagNode&);
    void CLightInfo (const MFnDagNode&);
    void CLeastSquares (const MFnDagNode&);
    void CLightFogMaterial (const MFnDagNode&);
    void CEnvFogMaterial (const MFnDagNode&);
    void CLightList (const MFnDagNode&);
    void CLightSource (const MFnDagNode&);
    void CLuminance (const MFnDagNode&);
    void CMakeGroup (const MFnDagNode&);
    void CMaterial (const MFnDagNode&);
    void CDiffuseMaterial (const MFnDagNode&);
    void CLambertMaterial (const MFnDagNode&);
    void CBlinnMaterial (const MFnDagNode&);
    void CPhongMaterial (const MFnDagNode&);
    void CLightSourceMaterial (const MFnDagNode&);
    void CMaterialInfo (const MFnDagNode&);
    void CMatrixAdd (const MFnDagNode&);
    void CMatrixHold (const MFnDagNode&);
    void CMatrixMult (const MFnDagNode&);
    void CMatrixPass (const MFnDagNode&);
    void CMatrixWtAdd (const MFnDagNode&);
    void CMidModifier (const MFnDagNode&);
    void CMidModifierWithMatrix (const MFnDagNode&);
    void CPolyBevel (const MFnDagNode&);
    void CPolyTweak (const MFnDagNode&);
    void CPolyAppend (const MFnDagNode&);
    void CPolyChipOff (const MFnDagNode&);
    void CPolyCloseBorder (const MFnDagNode&);
    void CPolyCollapseEdge (const MFnDagNode&);
    void CPolyCollapseF (const MFnDagNode&);
    void CPolyCylProj (const MFnDagNode&);
    void CPolyDelEdge (const MFnDagNode&);
    void CPolyDelFacet (const MFnDagNode&);
    void CPolyDelVertex (const MFnDagNode&);
    void CPolyExtrudeFacet (const MFnDagNode&);
    void CPolyMapCut (const MFnDagNode&);
    void CPolyMapDel (const MFnDagNode&);
    void CPolyMapSew (const MFnDagNode&);
    void CPolyMergeEdge (const MFnDagNode&);
    void CPolyMergeFacet (const MFnDagNode&);
    void CPolyMoveEdge (const MFnDagNode&);
    void CPolyMoveFacet (const MFnDagNode&);
    void CPolyMoveFacetUV (const MFnDagNode&);
    void CPolyMoveUV (const MFnDagNode&);
    void CPolyMoveVertex (const MFnDagNode&);
    void CPolyMoveVertexUV (const MFnDagNode&);
    void CPolyNormal (const MFnDagNode&);
    void CPolyPlanProj (const MFnDagNode&);
    void CPolyProj (const MFnDagNode&);
    void CPolyQuad (const MFnDagNode&);
    void CPolySmooth (const MFnDagNode&); 
    void CPolySoftEdge (const MFnDagNode&);
    void CPolySphProj (const MFnDagNode&);
    void CPolySplit (const MFnDagNode&);
    void CPolySubdEdge (const MFnDagNode&);
    void CPolySubdFacet (const MFnDagNode&);
    void CPolyTriangulate (const MFnDagNode&);
    void CPolyCreator (const MFnDagNode&);
    void CPolyPrimitive (const MFnDagNode&);
    void CPolyCone (const MFnDagNode&);
    void CPolyCube (const MFnDagNode&);
    void CPolyCylinder (const MFnDagNode&);
    void CPolyMesh (const MFnDagNode&);
    void CPolySphere (const MFnDagNode&);
    void CPolyTorus (const MFnDagNode&);
    void CPolyCreateFacet (const MFnDagNode&);
    void CPolyUnite (const MFnDagNode&);
    void CMotionPath (const MFnDagNode&);
    void CMultilisterLight (const MFnDagNode&);
    void CMultiplyDivide (const MFnDagNode&);
    void COldGeometryConstraint (const MFnDagNode&);
    void COpticalFX (const MFnDagNode&);
    void CParticleAgeMapper (const MFnDagNode&);
    void CParticleCloud (const MFnDagNode&);
    void CParticleColorMapper (const MFnDagNode&);
    void CParticleIncandecenceMapper (const MFnDagNode&);
    void CParticleTransparencyMapper (const MFnDagNode&);
    void CPartition (const MFnDagNode&); 
    void CPlace2dTexture (const MFnDagNode&);
    void CPlace3dTexture (const MFnDagNode&);
    void CPluginDependNode (const MFnDagNode&);
    void CPluginLocatorNode (const MFnDagNode&);
    void CPlusMinusAverage (const MFnDagNode&);
    void CPointMatrixMult (const MFnDagNode&);
    void CPolySeparate (const MFnDagNode&);
    void CPostProcessList (const MFnDagNode&);
    void CProjection (const MFnDagNode&);
    void CRecord (const MFnDagNode&);
    void CRenderUtilityList (const MFnDagNode&);
    void CReverse (const MFnDagNode&);
    void CRgbToHsv (const MFnDagNode&);  
    void CRigidSolver (const MFnDagNode&);  
    void CSet (const MFnDagNode&);
    void CTextureBakeSet (const MFnDagNode&);
    void CVertexBakeSet (const MFnDagNode&);
    void CSetRange (const MFnDagNode&);
    void CShaderGlow (const MFnDagNode&);
    void CShaderList (const MFnDagNode&);
    void CShadingMap (const MFnDagNode&);
    void CSamplerInfo (const MFnDagNode&);
    void CShapeFragment (const MFnDagNode&);
    void CSimpleVolumeShader (const MFnDagNode&);
    void CSl60 (const MFnDagNode&);
    void CSnapshot (const MFnDagNode&);
    void CStoryBoard (const MFnDagNode&);
    void CSummaryObject (const MFnDagNode&);
    void CSuper (const MFnDagNode&);
    void CControl (const MFnDagNode&);
    void CSurfaceLuminance (const MFnDagNode&);
    void CSurfaceShader (const MFnDagNode&);
    void CTextureList (const MFnDagNode&);
    void CTextureEnv (const MFnDagNode&);
    void CEnvBall (const MFnDagNode&);
    void CEnvCube (const MFnDagNode&);
    void CEnvChrome (const MFnDagNode&);
    void CEnvSky (const MFnDagNode&);
    void CEnvSphere (const MFnDagNode&);
    void CTexture2d (const MFnDagNode&);
    void CBulge (const MFnDagNode&);
    void CChecker (const MFnDagNode&);
    void CCloth (const MFnDagNode&);
    void CFileTexture (const MFnDagNode&);
    void CFractal (const MFnDagNode&);
    void CGrid (const MFnDagNode&);
    void CMountain (const MFnDagNode&);
    void CRamp (const MFnDagNode&);
    void CStencil (const MFnDagNode&);
    void CWater (const MFnDagNode&);
    void CTexture3d (const MFnDagNode&);
    void CBrownian (const MFnDagNode&);
    void CCloud (const MFnDagNode&);
    void CCrater (const MFnDagNode&); 
    void CGranite (const MFnDagNode&);
    void CLeather (const MFnDagNode&);
    void CMarble (const MFnDagNode&);
    void CRock (const MFnDagNode&);
    void CSnow (const MFnDagNode&);
    void CSolidFractal (const MFnDagNode&);
    void CStucco (const MFnDagNode&);
    void CTxSl (const MFnDagNode&);
    void CWood (const MFnDagNode&);
    void CTime (const MFnDagNode&);
    void CTimeToUnitConversion (const MFnDagNode&);
    void CRenderSetup (const MFnDagNode&);
    void CRenderGlobals (const MFnDagNode&);
    void CRenderGlobalsList (const MFnDagNode&);
    void CRenderQuality (const MFnDagNode&);
    void CResolution (const MFnDagNode&);  
    void CHardwareRenderGlobals (const MFnDagNode&);
    void CArrayMapper (const MFnDagNode&);
    void CUnitConversion (const MFnDagNode&);
    void CUnitToTimeConversion (const MFnDagNode&);
    void CUseBackground (const MFnDagNode&);
    void CUnknown (const MFnDagNode&);
    void CVectorProduct (const MFnDagNode&);
    void CVolumeShader (const MFnDagNode&);
    void CComponent (const MFnDagNode&);
    void CCurveCVComponent (const MFnDagNode&);
    void CCurveEPComponent (const MFnDagNode&);
    void CCurveKnotComponent (const MFnDagNode&);
    void CCurveParamComponent (const MFnDagNode&);
    void CIsoparmComponent (const MFnDagNode&);
    void CPivotComponent (const MFnDagNode&);
    void CSurfaceCVComponent (const MFnDagNode&);
    void CSurfaceEPComponent (const MFnDagNode&);
    void CSurfaceKnotComponent (const MFnDagNode&);
    void CEdgeComponent (const MFnDagNode&);
    void CLatticeComponent (const MFnDagNode&);
    void CSurfaceRangeComponent (const MFnDagNode&);
    void CDecayRegionCapComponent (const MFnDagNode&);
    void CDecayRegionComponent (const MFnDagNode&);
    void CMeshComponent (const MFnDagNode&);
    void CMeshEdgeComponent (const MFnDagNode&);
    void CMeshPolygonComponent (const MFnDagNode&);
    void CMeshFrEdgeComponent (const MFnDagNode&);
    void CMeshVertComponent (const MFnDagNode&);
    void COrientationComponent (const MFnDagNode&);
    void CSubVertexComponent (const MFnDagNode&);
    void CMultiSubVertexComponent (const MFnDagNode&);
    void CSetGroupComponent (const MFnDagNode&);
    void CDynParticleSetComponent (const MFnDagNode&);
    void CSelectionItem (const MFnDagNode&);
    void CDagSelectionItem (const MFnDagNode&);
    void CNonDagSelectionItem (const MFnDagNode&);
    void CItemList (const MFnDagNode&);
    void CAttribute (const MFnDagNode&);
    void CNumericAttribute (const MFnDagNode&);
    void CDoubleAngleAttribute (const MFnDagNode&);
    void CFloatAngleAttribute (const MFnDagNode&);
    void CDoubleLinearAttribute (const MFnDagNode&);
    void CFloatLinearAttribute (const MFnDagNode&);
    void CTimeAttribute (const MFnDagNode&);
    void CEnumAttribute (const MFnDagNode&);
    void CUnitAttribute (const MFnDagNode&);
    void CTypedAttribute (const MFnDagNode&);
    void CCompoundAttribute (const MFnDagNode&);
    void CGenericAttribute (const MFnDagNode&);
    void CLightDataAttribute (const MFnDagNode&);
    void CMatrixAttribute (const MFnDagNode&);
    void CFloatMatrixAttribute (const MFnDagNode&);
    void CMessageAttribute (const MFnDagNode&);
    void CPlugin (const MFnDagNode&);
    void CData (const MFnDagNode&);
    void CComponentListData (const MFnDagNode&);
    void CDoubleArrayData (const MFnDagNode&);
    void CIntArrayData (const MFnDagNode&);
    void CLatticeData (const MFnDagNode&);
    void CMatrixData (const MFnDagNode&);
    void CMeshData (const MFnDagNode&);
    void CNurbsSurfaceData (const MFnDagNode&);
    void CNurbsCurveData (const MFnDagNode&);
    void CNumericData (const MFnDagNode&);
    void CData2Double (const MFnDagNode&);
    void CData2Float (const MFnDagNode&);
    void CData2Int (const MFnDagNode&);
    void CData2Short (const MFnDagNode&);
    void CData3Double (const MFnDagNode&);
    void CData3Float (const MFnDagNode&);
    void CData3Int (const MFnDagNode&);
    void CData3Short (const MFnDagNode&);
    void CPluginData (const MFnDagNode&);
    void CPointArrayData (const MFnDagNode&);
    void CSphereData (const MFnDagNode&);
    void CStringData (const MFnDagNode&);
    void CStringArrayData (const MFnDagNode&);
    void CVectorArrayData (const MFnDagNode&);
    void CSelectionList (const MFnDagNode&);
    void CTransformGeometry (const MFnDagNode&);
    void CCommEdgePtManip (const MFnDagNode&);
    void CCommEdgeOperManip (const MFnDagNode&);
    void CCommEdgeSegmentManip (const MFnDagNode&);
    void CCommCornerManip (const MFnDagNode&);
    void CCommCornerOperManip (const MFnDagNode&);
    void CPluginDeformerNode (const MFnDagNode&);
    void CTorus (const MFnDagNode&);
    void CPolyBoolOp (const MFnDagNode&);
    void CSingleShadingSwitch (const MFnDagNode&);
    void CDoubleShadingSwitch (const MFnDagNode&);
    void CTripleShadingSwitch (const MFnDagNode&);
    void CNurbsSquare (const MFnDagNode&);
    void CAnisotropy (const MFnDagNode&);
    void CNonLinear (const MFnDagNode&);
    void CDeformFunc (const MFnDagNode&);
    void CDeformBend (const MFnDagNode&);
    void CDeformTwist (const MFnDagNode&);
    void CDeformSquash (const MFnDagNode&);
    void CDeformFlare (const MFnDagNode&);
    void CDeformSine (const MFnDagNode&);
    void CDeformWave (const MFnDagNode&);
    void CDeformBendManip (const MFnDagNode&);
    void CDeformTwistManip (const MFnDagNode&);
    void CDeformSquashManip (const MFnDagNode&);
    void CDeformFlareManip (const MFnDagNode&);
    void CDeformSineManip (const MFnDagNode&);
    void CDeformWaveManip (const MFnDagNode&);
    void CSoftModManip (const MFnDagNode&);
    void CDistanceManip (const MFnDagNode&);
    void CScript (const MFnDagNode&);
    void CCurveFromMeshEdge (const MFnDagNode&);
    void CCurveCurveIntersect (const MFnDagNode&);
    void CNurbsCircular3PtArc (const MFnDagNode&);
    void CNurbsCircular2PtArc (const MFnDagNode&);
    void COffsetSurface (const MFnDagNode&);
    void CRoundConstantRadius (const MFnDagNode&);
    void CRoundRadiusManip (const MFnDagNode&);
    void CRoundRadiusCrvManip (const MFnDagNode&);
    void CRoundConstantRadiusManip (const MFnDagNode&);
    void CThreePointArcManip (const MFnDagNode&);
    void CTwoPointArcManip (const MFnDagNode&);
    void CTextButtonManip (const MFnDagNode&);
    void COffsetSurfaceManip (const MFnDagNode&);
    void CImageData (const MFnDagNode&);
    void CImageLoad (const MFnDagNode&);
    void CImageSave (const MFnDagNode&);
    void CImageNetSrc (const MFnDagNode&);
    void CImageNetDest (const MFnDagNode&);
    void CImageRender (const MFnDagNode&);
    void CImageAdd (const MFnDagNode&);
    void CImageDiff (const MFnDagNode&);
    void CImageMultiply (const MFnDagNode&);
    void CImageOver (const MFnDagNode&);
    void CImageUnder (const MFnDagNode&);
    void CImageColorCorrect (const MFnDagNode&);
    void CImageBlur (const MFnDagNode&);
    void CImageFilter (const MFnDagNode&);
    void CImageDepth (const MFnDagNode&);
    void CImageDisplay (const MFnDagNode&);
    void CImageView (const MFnDagNode&);
    void CImageMotionBlur (const MFnDagNode&);
    void CMatrixFloatData (const MFnDagNode&);
    void CSkinShader (const MFnDagNode&);
    void CComponentManip (const MFnDagNode&);
    void CSelectionListData (const MFnDagNode&);
    void CObjectFilter (const MFnDagNode&);
    void CObjectMultiFilter (const MFnDagNode&);
    void CObjectNameFilter (const MFnDagNode&);
    void CObjectTypeFilter (const MFnDagNode&);
    void CObjectAttrFilter (const MFnDagNode&);
    void CObjectRenderFilter (const MFnDagNode&);
    void CObjectScriptFilter (const MFnDagNode&);
    void CSelectionListOperator (const MFnDagNode&);
    void CSubdiv (const MFnDagNode&);
    void CPolyToSubdiv (const MFnDagNode&);
    void CSkinClusterFilter (const MFnDagNode&);
    void CCharacter (const MFnDagNode&);
    void CCharacterOffset (const MFnDagNode&);
    void CDagPose (const MFnDagNode&);
    void CStitchAsNurbsShell (const MFnDagNode&);
    void CExplodeNurbsShell (const MFnDagNode&);
    void CNurbsBoolean (const MFnDagNode&);
    void CStitchSrfManip (const MFnDagNode&);
    void CForceUpdateManip (const MFnDagNode&);
    void CPluginManipContainer (const MFnDagNode&);
    void CPolySewEdge (const MFnDagNode&);
    void CPolyMergeVert (const MFnDagNode&);
    void CPolySmoothFacet (const MFnDagNode&);
    void CSmoothCurve (const MFnDagNode&);
    void CGlobalStitch (const MFnDagNode&);
    void CSubdivCVComponent (const MFnDagNode&);
    void CSubdivEdgeComponent (const MFnDagNode&);
    void CSubdivFaceComponent (const MFnDagNode&);
    void CTranslateUVManip2D (const MFnDagNode&);
    void CRotateUVManip2D (const MFnDagNode&);
    void CScaleUVManip2D (const MFnDagNode&);
    void CPolyTweakUV (const MFnDagNode&);
    void CPluginShape (const MFnDagNode&);
    void CGeometryData (const MFnDagNode&);
    void CSingleIndexedComponent (const MFnDagNode&);
    void CDoubleIndexedComponent (const MFnDagNode&);
    void CTripleIndexedComponent (const MFnDagNode&);
    void CExtendSurfaceDistanceManip (const MFnDagNode&);
    void CSquareSrf (const MFnDagNode&);
    void CSquareSrfManip (const MFnDagNode&);
    void CSubdivToPoly (const MFnDagNode&);
    void CDynBase (const MFnDagNode&);
    void CDynEmitterManip (const MFnDagNode&);
    void CDynFieldsManip (const MFnDagNode&);
    void CDynBaseFieldManip (const MFnDagNode&);
    void CDynAirManip (const MFnDagNode&);
    void CDynNewtonManip (const MFnDagNode&);
    void CDynTurbulenceManip (const MFnDagNode&);
    void CDynSpreadManip (const MFnDagNode&);
    void CDynAttenuationManip (const MFnDagNode&);
    void CDynArrayAttrsData (const MFnDagNode&);
    void CPluginFieldNode (const MFnDagNode&);
    void CPluginEmitterNode (const MFnDagNode&);
    void CPluginSpringNode (const MFnDagNode&);
    void CDisplayLayer (const MFnDagNode&);
    void CDisplayLayerManager (const MFnDagNode&);
    void CPolyColorPerVertex (const MFnDagNode&);
    void CCharacterMappingData (const MFnDagNode&);
    void CDynSweptGeometryData (const MFnDagNode&);
    void CWrapFilter (const MFnDagNode&);
    void CMeshVtxFaceComponent (const MFnDagNode&);
    void CBinaryData (const MFnDagNode&);
    void CAttribute2Double (const MFnDagNode&);
    void CAttribute2Float (const MFnDagNode&);
    void CAttribute2Short (const MFnDagNode&);
    void CAttribute2Int (const MFnDagNode&);
    void CAttribute3Double (const MFnDagNode&);
    void CAttribute3Float (const MFnDagNode&);
    void CAttribute3Short (const MFnDagNode&);
    void CAttribute3Int (const MFnDagNode&);
    void CReference (const MFnDagNode&);
    void CBlindData (const MFnDagNode&);
    void CBlindDataTemplate (const MFnDagNode&);
    void CPolyBlindData (const MFnDagNode&);
    void CPolyNormalPerVertex (const MFnDagNode&);
    void CNurbsToSubdiv (const MFnDagNode&);
    void CPluginIkSolver (const MFnDagNode&);
    void CInstancer (const MFnDagNode&);
    void CMoveVertexManip (const MFnDagNode&);
    void CStroke (const MFnDagNode&);
    void CBrush (const MFnDagNode&);
    void CStrokeGlobals (const MFnDagNode&);
    void CPluginGeometryData (const MFnDagNode&);
    void CLightLink (const MFnDagNode&);
    void CDynGlobals (const MFnDagNode&);
    void CPolyReduce (const MFnDagNode&);
    void CLodThresholds (const MFnDagNode&);
    void CChooser (const MFnDagNode&);
    void CLodGroup (const MFnDagNode&);
    void CMultDoubleLinear (const MFnDagNode&);
    void CFourByFourMatrix (const MFnDagNode&);
    void CTowPointOnSurfaceManip (const MFnDagNode&);
    void CSurfaceEdManip (const MFnDagNode&);
    void CSurfaceFaceComponent (const MFnDagNode&);
    void CClipScheduler (const MFnDagNode&);
    void CClipLibrary (const MFnDagNode&);
    void CSubSurface (const MFnDagNode&);
    void CSmoothTangentSrf (const MFnDagNode&);
    void CRenderLayer (const MFnDagNode&);
    void CRenderLayerManager (const MFnDagNode&);
    void CPolyFlipEdge (const MFnDagNode&);
    void CPolyExtrudeEdge (const MFnDagNode&);
    void CAnimBlend (const MFnDagNode&);
    void CAnimBlendInOut (const MFnDagNode&);
    void CPolyAppendVertex (const MFnDagNode&);
    void CUvChooser (const MFnDagNode&);
    void CSubdivCompId (const MFnDagNode&);
    void CVolumeAxis (const MFnDagNode&);
    void CDeleteUVSet (const MFnDagNode&);
    void CSubdHierBlind (const MFnDagNode&);
    void CSubdBlindData (const MFnDagNode&);
    void CCharacterMap (const MFnDagNode&);
    void CLayeredTexture (const MFnDagNode&);
    void CSubdivCollapse (const MFnDagNode&);
    void CParticleSamplerInfo (const MFnDagNode&);
    void CCopyUVSet (const MFnDagNode&);
    void CCreateUVSet (const MFnDagNode&);
    void CClip (const MFnDagNode&);
    void CPolySplitVert (const MFnDagNode&);
    void CSubdivData (const MFnDagNode&);
    void CSubdivGeom (const MFnDagNode&);
    void CUInt64ArrayData (const MFnDagNode&);
    void CPolySplitEdge (const MFnDagNode&);
    void CSubdivReverseFaces (const MFnDagNode&);
    void CMeshMapComponent (const MFnDagNode&);
    void CSectionManip (const MFnDagNode&);
    void CXsectionSubdivEdit (const MFnDagNode&);
    void CSubdivToNurbs (const MFnDagNode&);
    void CEditCurve (const MFnDagNode&);
    void CEditCurveManip (const MFnDagNode&);
    void CCrossSectionManager (const MFnDagNode&); 
    void CCreateSectionManip (const MFnDagNode&);
    void CCrossSectionEditManip (const MFnDagNode&);
    void CDropOffFunction (const MFnDagNode&);
    void CSubdBoolean (const MFnDagNode&);
    void CSubdModifyEdge (const MFnDagNode&);
    void CModifyEdgeCrvManip (const MFnDagNode&);
    void CModifyEdgeManip (const MFnDagNode&);
    void CScalePointManip (const MFnDagNode&);
    void CTransformBoxManip (const MFnDagNode&); 
    void CSymmetryLocator (const MFnDagNode&);
    void CSymmetryMapVector (const MFnDagNode&);
    void CSymmetryMapCurve (const MFnDagNode&);
    void CCurveFromSubdivEdge (const MFnDagNode&);
    void CCreateBPManip (const MFnDagNode&); 
    void CModifyEdgeBaseManip (const MFnDagNode&);
    void CSubdExtrudeFace (const MFnDagNode&);
    void CSubdivSurfaceVarGroup (const MFnDagNode&);
    void CSfRevolveManip (const MFnDagNode&);
    void CCurveFromSubdivFace (const MFnDagNode&);
    void CModelFacade (const MFnDagNode&);
    void CMaterialFacade (const MFnDagNode&);
    void CEnvironmentFacade (const MFnDagNode&);
    void CModelFacadeDefault (const MFnDagNode&);
    void CMaterialFacadeColor (const MFnDagNode&);
    void CEnvironmentFacadeDefault (const MFnDagNode&);
    void CPolyTransfer (const MFnDagNode&);
    void CPolyAverageVertex (const MFnDagNode&);
    void CPolyAutoProj (const MFnDagNode&); 
    void CPolyLayoutUV (const MFnDagNode&);
    void CPolyMapSewMove (const MFnDagNode&);
    void CSubdModifier (const MFnDagNode&);
    void CSubdMoveVertex (const MFnDagNode&);
    void CSubdMoveEdge (const MFnDagNode&);
    void CSubdMoveFace (const MFnDagNode&);
    void CSubdDelFace (const MFnDagNode&);
    void CSnapshotShape (const MFnDagNode&);
    void CSubdivMapComponent (const MFnDagNode&);
    void CJiggleDeformer (const MFnDagNode&);
    void CGlobalCacheControls (const MFnDagNode&);
    void CDiskCache (const MFnDagNode&);
    void CSubdCloseBorder (const MFnDagNode&);
    void CSubdMergeVert (const MFnDagNode&);
    void CBoxData (const MFnDagNode&);
    void CBox (const MFnDagNode&);
    void CRenderBox (const MFnDagNode&);
    void CSubdSplitFace (const MFnDagNode&);
    void CPluginAnimBlendNode (const MFnDagNode&);
    void CVolumeFog (const MFnDagNode&);
    void CSubdTweakUV (const MFnDagNode&);
    void CSubdMapCut (const MFnDagNode&);
    void CSubdLayoutUV (const MFnDagNode&);
    void CSubdMapSewMove (const MFnDagNode&);
    void COcean (const MFnDagNode&);
    void CVolumeNoise (const MFnDagNode&);
    void CSubdAutoProj (const MFnDagNode&);
    void CSubdSubdivideFace (const MFnDagNode&);
    void CNoise (const MFnDagNode&);
    void CAttribute4Double (const MFnDagNode&);
    void CData4Double (const MFnDagNode&);
    void CSubdPlanProj (const MFnDagNode&);
    void CSubdTweak (const MFnDagNode&);
    void CSubdProjectionManip (const MFnDagNode&);
    void CSubdMappingManip (const MFnDagNode&);
    void CHardwareReflectionMap (const MFnDagNode&);
    void CPolyNormalizeUV (const MFnDagNode&);
    void CPolyFlipUV (const MFnDagNode&);
    void CHwShaderNode (const MFnDagNode&);
    void CPluginHwShaderNode (const MFnDagNode&);
    void CSubdAddTopology (const MFnDagNode&);
    void CSubdCleanTopology (const MFnDagNode&);
    void CImplicitCone (const MFnDagNode&);
    void CImplicitSphere (const MFnDagNode&);
    void CRampShader (const MFnDagNode&);
    void CVolumeLight (const MFnDagNode&);
    void COceanShader (const MFnDagNode&);
    void CBevelPlus (const MFnDagNode&);
    void CStyleCurve (const MFnDagNode&);
    void CPolyCut (const MFnDagNode&);
    void CPolyPoke (const MFnDagNode&);
    void CPolyWedgeFace (const MFnDagNode&);
    void CPolyCutManipContainer (const MFnDagNode&);
    void CPolyCutManip (const MFnDagNode&);
    void CPolyPokeManip (const MFnDagNode&);
    void CFluidTexture3D (const MFnDagNode&);
    void CFluidTexture2D (const MFnDagNode&);
    void CPolyMergeUV (const MFnDagNode&);
    void CPolyStraightenUVBorder (const MFnDagNode&);
    void CAlignManip (const MFnDagNode&);
    void CPluginTransformNode (const MFnDagNode&);
    void CFluid (const MFnDagNode&);
    void CFluidGeom (const MFnDagNode&);
    void CFluidData (const MFnDagNode&);
    void CSmear (const MFnDagNode&);
    void CStringShadingSwitch (const MFnDagNode&);
    void CStudioClearCoat (const MFnDagNode&);
    void CFluidEmitter (const MFnDagNode&);
    void CHeightField (const MFnDagNode&);
    void CGeoConnector (const MFnDagNode&); 
    void CSnapshotPath (const MFnDagNode&); 
    void CPluginObjectSet (const MFnDagNode&);
    void CQuadShadingSwitch (const MFnDagNode&);
    void CPolyExtrudeVertex (const MFnDagNode&);
    void CPairBlend (const MFnDagNode&);
    void CTextManip (const MFnDagNode&);
    void CViewManip (const MFnDagNode&);
    void CXformManip (const MFnDagNode&);
    void CMute (const MFnDagNode&);
    void CConstraint (const MFnDagNode&);
    void CTrimWithBoundaries (const MFnDagNode&);
    void CCurveFromMeshCoM (const MFnDagNode&);
    void CFollicle (const MFnDagNode&);
    void CHairSystem (const MFnDagNode&);
    void CRemapValue (const MFnDagNode&);
    void CRemapColor (const MFnDagNode&);
    void CRemapHsv (const MFnDagNode&);
    void CHairConstraint (const MFnDagNode&);
    void CTimeFunction (const MFnDagNode&);
    void CMentalRayTexture (const MFnDagNode&);
    void CObjectBinFilter (const MFnDagNode&);
    void CPolySmoothProxy (const MFnDagNode&);
    void CPfxGeometry (const MFnDagNode&);
    void CPfxHair (const MFnDagNode&);
    void CHairTubeShader (const MFnDagNode&);
    void CPsdFileTexture (const MFnDagNode&);

};

#include "Exporter.inl"

#endif


