00001 00007 /* 00008 * Copyright (c) 2003, Matt Beard 00009 * 00010 * This software is provided 'as-is', without any express or implied warranty. 00011 * In no event will the authors be held liable for any damages arising from 00012 * the use of this software. 00013 * 00014 * Permission is granted to anyone to use this software for any purpose, 00015 * including commercial applications, and to alter it and redistribute it 00016 * freely, subject to the following restrictions: 00017 * 00018 * 1. The origin of this software must not be misrepresented; you must 00019 * not claim that you wrote the original software. If you use this 00020 * software in a product, an acknowledgment in the product 00021 * documentation would be appreciated but is not required. 00022 * 00023 * 2. Altered source versions must be plainly marked as such, and must 00024 * not be misrepresented as being the original software. 00025 * 00026 * 3. This notice may not be removed or altered from any source 00027 * distribution. 00028 */ 00029 00030 #ifndef MXFLIB__FORWARD_H 00031 #define MXFLIB__FORWARD_H 00032 00033 // Many of the declarations are of smart pointers 00034 #include <mxflib/smartptr.h> 00035 00036 // STL includes 00037 #include <list> 00038 00039 00040 namespace mxflib 00041 { 00042 class MXFFile; 00043 typedef SmartPtr<MXFFile> MXFFilePtr; 00044 typedef ParentPtr<MXFFile> MXFFileParent; 00045 00046 // Forward declare so the class can include pointers to itself 00047 class KLVObject; 00048 00050 typedef SmartPtr<KLVObject> KLVObjectPtr; 00051 00052 // We need access to the MDValue class 00053 class MDValue; 00054 // 00055 // //! A smart pointer to an MDValue object 00056 // typedef SmartPtr<MDValue> MDValuePtr; 00057 00059 class MDValuePtr : public SmartPtr<MDValue> 00060 { 00061 public: 00062 MDValuePtr() : SmartPtr<MDValue>() {}; 00063 MDValuePtr(IRefCount<MDValue> * ptr) : SmartPtr<MDValue>(ptr) {}; 00064 00066 MDValuePtr operator[](int Index); 00067 00069 MDValuePtr operator[](const std::string ChildName); 00070 }; 00071 00073 typedef std::list<MDValuePtr> MDValueList; 00074 00075 /* Forward refs for index tables */ 00076 00077 class IndexTable; 00078 00080 typedef SmartPtr<IndexTable> IndexTablePtr; 00081 00083 typedef ParentPtr<IndexTable> IndexTableParent; 00084 00085 class IndexSegment; 00086 00088 typedef SmartPtr<IndexSegment> IndexSegmentPtr; 00089 00091 typedef std::list<IndexSegmentPtr> IndexSegmentList; 00092 00093 00094 /* SymbolSpace pointer types */ 00095 00096 class SymbolSpace; 00097 00099 typedef SmartPtr<SymbolSpace> SymbolSpacePtr; 00100 00102 typedef ParentPtr<SymbolSpace> SymbolSpaceParent; 00103 00105 typedef std::list<SymbolSpacePtr> SymbolSpaceList; 00106 00108 typedef std::list<SymbolSpaceParent> SymbolSpaceParentList; 00109 00111 typedef std::map<std::string, SymbolSpacePtr> SymbolSpaceMap; 00112 00114 extern SymbolSpacePtr MXFLibSymbols; 00115 } 00116 00117 00118 #endif // MXFLIB__FORWARD_H