00001 //**************************************************************************/ 00002 // Copyright (c) 1998-2010 Autodesk, Inc. 00003 // All rights reserved. 00004 // 00005 // These coded instructions, statements, and computer programs contain 00006 // unpublished proprietary information written by Autodesk, Inc., and are 00007 // protected by Federal copyright law. They may not be disclosed to third 00008 // parties or copied or duplicated in any form, in whole or in part, without 00009 // the prior written consent of Autodesk, Inc. 00010 //**************************************************************************/ 00011 #pragma once 00012 #include "coreexp.h" 00013 #include "tab.h" 00014 #include "baseinterface.h" 00015 #include "ExcludeListConstants.h" 00016 00017 // forward declarations 00018 class ExclList; 00019 class ISave; 00020 class ILoad; 00021 class INode; 00022 class NameTab; 00023 class IMergeManager; 00024 00025 typedef INode* INodePtr; 00026 00032 class ExclList : public InterfaceServer { 00033 ULONG flags; 00034 Tab<ULONG> handles; 00035 public: 00037 ExclList() { flags = NT_AFFECT_ILLUM|NT_AFFECT_SHADOWCAST; } 00052 void SetFlag(ULONG f, BOOL b=1) { if (b) flags|=f; else flags &= ~f; } 00066 BOOL TestFlag(ULONG f) const { return (flags&f)?1:0; } 00069 int Count() const { return handles.Count(); } 00071 CoreExport INode* operator[] (const int i); 00079 CoreExport void Set(int i, INode *node); 00081 CoreExport ExclList& operator=(const ExclList& e); 00083 CoreExport ExclList& operator=(const NameTab& n); 00089 CoreExport int FindNode(INode *node); 00095 CoreExport int AddNode(INode *node); 00100 CoreExport void RemoveNode(INode *node); 00105 CoreExport void RemoveNode(int i); 00111 CoreExport void SetSize(int num); 00117 void SetCount(int num) { SetSize(num); } 00123 CoreExport IOResult Load(ILoad* iload); 00129 CoreExport IOResult Save(ISave* isave); 00135 CoreExport void OnMerge(IMergeManager* imm); 00136 }; 00137