GME  13
MetaParser.h
Go to the documentation of this file.
00001 
00002 #ifndef MGA_MgaMetaParser_H
00003 #define MGA_MgaMetaParser_H
00004 
00005 #ifndef MGA_GENPARSER_H
00006 #include "GenParser.h"
00007 #endif
00008 
00009 #include "resource.h"
00010 #include "CommonVersionInfo.h"
00011 
00012 // --------------------------- CMgaMetaParser
00013 
00014 class ATL_NO_VTABLE CMgaMetaParser : 
00015         public CComObjectRootEx<CComSingleThreadModel>,
00016         public CComCoClass<CMgaMetaParser, &__uuidof(MgaMetaParser)>,
00017         public ISupportErrorInfoImpl<&__uuidof(IMgaMetaParser)>,
00018         public IDispatchImpl<IMgaMetaParser, &__uuidof(IMgaMetaParser), &__uuidof(__MGAParserLib), 1, 1>,
00019         public IGMEVersionInfoImpl,
00020         public CGenParser
00021 {
00022         enum pass_type{FIRST_PASS,SECOND_PASS};
00023         pass_type currentPass;
00024         bool foundconstraints;
00025         bool explicitguid;
00026 public:
00027         CMgaMetaParser();
00028         ~CMgaMetaParser();
00029 
00030 DECLARE_REGISTRY_RESOURCEID(IDR_MgaMetaParser)
00031 DECLARE_PROTECT_FINAL_CONSTRUCT()
00032 
00033 BEGIN_COM_MAP(CMgaMetaParser)
00034         COM_INTERFACE_ENTRY(IMgaMetaParser)
00035         COM_INTERFACE_ENTRY(IDispatch)
00036         COM_INTERFACE_ENTRY(ISupportErrorInfo)
00037         COM_INTERFACE_ENTRY_IID(__uuidof(IGMEVersionInfo), IGMEVersionInfoImpl)
00038 END_COM_MAP()
00039 
00040 // ------- Methods
00041 
00042 public:
00043         STDMETHOD(Parse)(BSTR filename, BSTR connection);
00044         
00045         HRESULT CloseAll();
00046 
00047 // ------- Attributes
00048 
00049 public:
00050         static const std::tstring GetNextToken(std::tstring::const_iterator &i, 
00051                 std::tstring::const_iterator &e, std::tstring::const_iterator end);
00052 
00053         typedef CGenParserFunc<CMgaMetaParser> elementfunc;
00054 
00055         static elementfunc elementfuncs_firstpass[];
00056         static elementfunc elementfuncs_secondpass[];
00057 
00058         CComObjPtr<IMgaMetaProject> metaproject;
00059 
00060 // ------- Element Handlers
00061 
00062 public:
00063         void StartParadigm(const attributes_type &attributes);
00064         void EndComment();
00065         void EndAuthor();
00066         void EndDispName();
00067         void StartFolder(const attributes_type &attributes);
00068         void StartFolder2(const attributes_type &attributes);
00069         void StartAtom(const attributes_type &attributes);
00070         void StartModel(const attributes_type &attributes);
00071         void StartConnection(const attributes_type &attributes);
00072         void StartReference(const attributes_type &attributes);
00073         void StartSet(const attributes_type &attributes);
00074         void StartAttrDef(const attributes_type &attributes);
00075         void StartFCO2(const attributes_type &attributes);
00076         void StartRole2(const attributes_type &attributes);
00077         void StartAspect2(const attributes_type &attributes);
00078         void StartPart2(const attributes_type &attributes);
00079         void StartRegNode(const attributes_type &attributes);
00080         void StartConnJoint(const attributes_type &attributes);
00081         void StartPointerSpec(const attributes_type &attributes);
00082         void StartPointerItem(const attributes_type &attributes);
00083         void StartEnumItem(const attributes_type &attributes);
00084         void StartConstraint(const attributes_type &attributes);
00085         void EndConstraint();
00086         void fireStartFunction(const std::tstring& name, const attributes_type& attributes);
00087         void fireEndFunction(const std::tstring& name);
00088 };
00089 
00090 #endif//MGA_MgaMetaParser_H