]> granicus.if.org Git - libmatroska/commitdiff
finish moving the EBML element definitions to the new macros
authorSteve Lhomme <slhomme@matroska.org>
Mon, 5 Apr 2010 15:53:20 +0000 (15:53 +0000)
committerSteve Lhomme <slhomme@matroska.org>
Mon, 5 Apr 2010 15:53:20 +0000 (15:53 +0000)
use the new EBML context definition macro
the GetKaxTagGlobalContext() function doesn't need to be exported

git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@70 a6f86f6d-0131-4f8e-9e7b-e335508773d5

matroska/KaxContexts.h
matroska/KaxDefines.h
src/KaxSegment.cpp
src/KaxTag.cpp
src/KaxTagMulti.cpp

index 9ef36236bfaecbd82e6f2ff8a1b88aef870eb1a3..e5e8381233f0918b9163b9ae9bd5a2c97560d6df 100644 (file)
@@ -115,9 +115,32 @@ extern const EbmlSemanticContext MATROSKA_DLL_API KaxTrackOverlay_Context;
 #define Context_KaxSeek                  KaxSeek_Context\r
 #define Context_KaxTags                  KaxTags_Context\r
 #define Context_KaxSeekHead              KaxSeekHead_Context\r
+#define Context_KaxTagGeneral            KaxTagGeneral_Context\r
+#define Context_KaxTagAudioSpecific      KaxTagAudioSpecific_Context\r
+#define Context_KaxTagImageSpecific      KaxTagImageSpecific_Context\r
+#define Context_KaxTagGenres             KaxTagGenres_Context\r
+#define Context_KaxTagTargets            KaxTagTargets_Context\r
+#define Context_KaxTag                   KaxTag_Context\r
+#define Context_KaxTagSimple             KaxTagSimple_Context\r
+#define Context_KaxTagMultiComment       KaxTagMultiComment_Context\r
+#define Context_KaxTagMultiCommercial    KaxTagMultiCommercial_Context\r
+#define Context_KaxTagCommercial         KaxTagCommercial_Context\r
+#define Context_KaxTagMultiPrice         KaxTagMultiPrice_Context\r
+#define Context_KaxTagMultiDate          KaxTagMultiDate_Context\r
+#define Context_KaxTagDate               KaxTagDate_Context\r
+#define Context_KaxTagMultiEntity        KaxTagMultiEntity_Context\r
+#define Context_KaxTagEntity             KaxTagEntity_Context\r
+#define Context_KaxTagMultiLegal         KaxTagMultiLegal_Context\r
+#define Context_KaxTagLegal              KaxTagLegal_Context\r
+#define Context_KaxTagMultiIdentifier    KaxTagMultiIdentifier_Context\r
+#define Context_KaxTagIdentifier         KaxTagIdentifier_Context\r
+#define Context_KaxTagMultiTitle         KaxTagMultiTitle_Context\r
+#define Context_KaxTagTitle              KaxTagTitle_Context\r
+#define Context_KaxTagMultiAttachment    KaxTagMultiAttachment_Context\r
+#define Context_KaxTagAttachment         KaxTagAttachment_Context\r
 \r
 extern const EbmlSemanticContext & MATROSKA_DLL_API GetKaxGlobal_Context();\r
-extern const EbmlSemanticContext & MATROSKA_DLL_API GetKaxTagsGlobal_Context();\r
+//extern const EbmlSemanticContext & MATROSKA_DLL_API GetKaxTagsGlobal_Context();\r
 \r
 END_LIBMATROSKA_NAMESPACE\r
 \r
index 064f6a802f8724afcf761da484d20421999c4d59..cf233da14f94d0bd52d73b0fffc9dab90a682a0c 100644 (file)
@@ -46,8 +46,8 @@
 #define DEFINE_MKX_FLOAT(a,b,c,d,e)     DEFINE_xxx_FLOAT(a,b,c,d,e,*GetKaxGlobal_Context)\r
 #define DEFINE_MKX_DATE(a,b,c,d,e)      DEFINE_xxx_DATE(a,b,c,d,e,*GetKaxGlobal_Context)\r
 #else\r
+#define DEFINE_MKX_CONTEXT(a)             DEFINE_xxx_CONTEXT(a,*GetKaxGlobal_Context)\r
 #define DEFINE_MKX_MASTER(a,b,c,d,e)      DEFINE_xxx_MASTER(a,b,c,d,e,*GetKaxGlobal_Context)\r
-#define DEFINE_MKX_MASTER_GLOBAL(a,b,c,d) DEFINE_xxx_MASTER_GLOBAL(a,b,c,d,*GetKaxGlobal_Context)\r
 #define DEFINE_MKX_MASTER_ORPHAN(a,b,c,d) DEFINE_xxx_MASTER_ORPHAN(a,b,c,d,*GetKaxGlobal_Context)\r
 #define DEFINE_MKX_UINTEGER(a,b,c,d,e)    DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)\r
 #define DEFINE_MKX_SINTEGER(a,b,c,d,e)    DEFINE_xxx_CLASS(a,b,c,d,e,*GetKaxGlobal_Context)\r
index 73632acaa7503e2becd88c81a0081029a0adbb0c..f2527f8a465daf08ab88c0765d17756969b85d73 100644 (file)
@@ -67,7 +67,8 @@ static const EbmlSemantic ContextList_KaxSegment[8] =
        EbmlSemantic(false, true,  EBML_INFO(KaxTags)),\r
 };\r
 \r
-DEFINE_MKX_MASTER_GLOBAL(KaxMatroska, -1, 5, "Matroska");\r
+DEFINE_MKX_CONTEXT(KaxMatroska);\r
+\r
 DEFINE_MKX_MASTER_ORPHAN(KaxSegment, 0x18538067, 4, "Segment\0rotomopogo");\r
 \r
 KaxSegment::KaxSegment()\r
index ff2bc68ddf1898885db33a5daecd3f025bafe49f..5967a0554035558d66becf156033aefcdcfae7af 100644 (file)
 #include "matroska/KaxTag.h"\r
 #include "matroska/KaxTagMulti.h"\r
 #include "matroska/KaxContexts.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 using namespace LIBEBML_NAMESPACE;\r
 \r
 // sub elements\r
 START_LIBMATROSKA_NAMESPACE\r
 \r
-EbmlSemantic KaxTag_ContextList[14] =\r
+static const EbmlSemantic ContextList_KaxTag[14] =\r
 {      \r
        EbmlSemantic(true,  true,  EBML_INFO(KaxTagTargets)),\r
        EbmlSemantic(false, true,  EBML_INFO(KaxTagGeneral)),\r
@@ -64,7 +65,7 @@ EbmlSemantic KaxTag_ContextList[14] =
        EbmlSemantic(true,  false, EBML_INFO(KaxTagSimple)),\r
 };\r
 \r
-EbmlSemantic KaxTagTargets_ContextList[6] =\r
+static const EbmlSemantic ContextList_KaxTagTargets[6] =\r
 {      \r
        EbmlSemantic(false, true,  EBML_INFO(KaxTagTargetTypeValue)),\r
        EbmlSemantic(false, true,  EBML_INFO(KaxTagTargetType)),\r
@@ -74,7 +75,7 @@ EbmlSemantic KaxTagTargets_ContextList[6] =
        EbmlSemantic(false, false, EBML_INFO(KaxTagAttachmentUID)),\r
 };\r
 \r
-EbmlSemantic KaxTagGeneral_ContextList[17] =\r
+static const EbmlSemantic ContextList_KaxTagGeneral[17] =\r
 {      \r
        EbmlSemantic(false, true,  EBML_INFO(KaxTagArchivalLocation)),\r
        EbmlSemantic(false, true,  EBML_INFO(KaxTagFile)),\r
@@ -95,14 +96,14 @@ EbmlSemantic KaxTagGeneral_ContextList[17] =
        EbmlSemantic(false, true,  EBML_INFO(KaxTagEncodeSettings)),\r
 };\r
 \r
-EbmlSemantic KaxTagGenres_ContextList[3] =\r
+static const EbmlSemantic ContextList_KaxTagGenres[3] =\r
 {      \r
        EbmlSemantic(false, false, EBML_INFO(KaxTagAudioGenre)),\r
        EbmlSemantic(false, false, EBML_INFO(KaxTagVideoGenre)),\r
        EbmlSemantic(false, true,  EBML_INFO(KaxTagSubGenre)),\r
 };\r
 \r
-EbmlSemantic KaxTagAudioSpecific_ContextList[10] =\r
+static const EbmlSemantic ContextList_KaxTagAudioSpecific[10] =\r
 {      \r
        EbmlSemantic(false, true, EBML_INFO(KaxTagAudioPeak)),\r
        EbmlSemantic(false, true, EBML_INFO(KaxTagAudioEncryption)),\r
@@ -116,7 +117,7 @@ EbmlSemantic KaxTagAudioSpecific_ContextList[10] =
        EbmlSemantic(false, true, EBML_INFO(KaxTagOfficialAudioSourceURL)),\r
 };\r
 \r
-EbmlSemantic KaxTagImageSpecific_ContextList[6] =\r
+static const EbmlSemantic ContextList_KaxTagImageSpecific[6] =\r
 {\r
        EbmlSemantic(false, true, EBML_INFO(KaxTagCaptureDPI)),\r
        EbmlSemantic(false, true, EBML_INFO(KaxTagCaptureLightness)),\r
@@ -126,7 +127,7 @@ EbmlSemantic KaxTagImageSpecific_ContextList[6] =
        EbmlSemantic(false, true, EBML_INFO(KaxTagOriginalDimensions)),\r
 };\r
 \r
-EbmlSemantic KaxTagSimple_ContextList[6] =\r
+static const EbmlSemantic ContextList_KaxTagSimple[6] =\r
 {      \r
        EbmlSemantic(true,  true,  EBML_INFO(KaxTagName)),\r
        EbmlSemantic(true,  true,  EBML_INFO(KaxTagLangue)),\r
@@ -136,185 +137,65 @@ EbmlSemantic KaxTagSimple_ContextList[6] =
        EbmlSemantic(false, false, EBML_INFO(KaxTagSimple)),\r
 };\r
 \r
-const EbmlSemanticContext KaxTag_Context = EbmlSemanticContext(countof(KaxTag_ContextList), KaxTag_ContextList, &KaxTags_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTag));\r
-const EbmlSemanticContext KaxTagTargets_Context = EbmlSemanticContext(countof(KaxTagTargets_ContextList), KaxTagTargets_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagTargets));\r
-const EbmlSemanticContext KaxTagGeneral_Context = EbmlSemanticContext(countof(KaxTagGeneral_ContextList), KaxTagGeneral_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagGeneral));\r
-const EbmlSemanticContext KaxTagGenres_Context = EbmlSemanticContext(countof(KaxTagGenres_ContextList), KaxTagGenres_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagGenres));\r
-const EbmlSemanticContext KaxTagAudioSpecific_Context = EbmlSemanticContext(countof(KaxTagAudioSpecific_ContextList), KaxTagAudioSpecific_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagAudioSpecific));\r
-const EbmlSemanticContext KaxTagImageSpecific_Context = EbmlSemanticContext(countof(KaxTagImageSpecific_ContextList), KaxTagImageSpecific_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagImageSpecific));\r
-const EbmlSemanticContext KaxTagBibliography_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagBibliography));\r
-const EbmlSemanticContext KaxTagEncoder_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagEncoder));\r
-const EbmlSemanticContext KaxTagEncodeSettings_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagEncodeSettings));\r
-const EbmlSemanticContext KaxTagLanguage_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagLanguage));\r
-const EbmlSemanticContext KaxTagLength_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagLength));\r
-const EbmlSemanticContext KaxTagPlaylistDelay_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagPlaylistDelay));\r
-const EbmlSemanticContext KaxTagRating_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagRating));\r
-const EbmlSemanticContext KaxTagSubject_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagSubject));\r
-const EbmlSemanticContext KaxTagUnsynchronisedText_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagUnsynchronisedText));\r
-const EbmlSemanticContext KaxTagUserDefinedURL_Context = EbmlSemanticContext(0, NULL, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagUserDefinedURL));\r
-const EbmlSemanticContext KaxTagTargetTypeValue_Context = EbmlSemanticContext(0, NULL, &KaxTagTargets_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagTargetTypeValue));\r
-const EbmlSemanticContext KaxTagTargetType_Context = EbmlSemanticContext(0, NULL, &KaxTagTargets_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagTargetType));\r
-const EbmlSemanticContext KaxTagTrackUID_Context = EbmlSemanticContext(0, NULL, &KaxTagTargets_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagTrackUID));\r
-const EbmlSemanticContext KaxTagEditionUID_Context = EbmlSemanticContext(0, NULL, &KaxTagTargets_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagEditionUID));\r
-const EbmlSemanticContext KaxTagChapterUID_Context = EbmlSemanticContext(0, NULL, &KaxTagTargets_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagChapterUID));\r
-const EbmlSemanticContext KaxTagAttachmentUID_Context = EbmlSemanticContext(0, NULL, &KaxTagTargets_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagAttachmentUID));\r
-const EbmlSemanticContext KaxTagArchivalLocation_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagArchivalLocation));\r
-const EbmlSemanticContext KaxTagFile_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagFile));\r
-const EbmlSemanticContext KaxTagKeywords_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagKeywords));\r
-const EbmlSemanticContext KaxTagMood_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMood));\r
-const EbmlSemanticContext KaxTagRecordLocation_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagRecordLocation));\r
-const EbmlSemanticContext KaxTagSource_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagSource));\r
-const EbmlSemanticContext KaxTagSourceForm_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagSourceForm));\r
-const EbmlSemanticContext KaxTagProduct_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagProduct));\r
-const EbmlSemanticContext KaxTagOriginalMediaType_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagOriginalMediaType));\r
-const EbmlSemanticContext KaxTagPlayCounter_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagPlayCounter));\r
-const EbmlSemanticContext KaxTagPopularimeter_Context = EbmlSemanticContext(0, NULL, &KaxTagGeneral_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagPopularimeter));\r
-const EbmlSemanticContext KaxTagAudioGenre_Context = EbmlSemanticContext(0, NULL, &KaxTagGenres_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagAudioGenre));\r
-const EbmlSemanticContext KaxTagVideoGenre_Context = EbmlSemanticContext(0, NULL, &KaxTagGenres_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagVideoGenre));\r
-const EbmlSemanticContext KaxTagSubGenre_Context = EbmlSemanticContext(0, NULL, &KaxTagGenres_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagSubGenre));\r
-const EbmlSemanticContext KaxTagAudioEncryption_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagAudioEncryption));\r
-const EbmlSemanticContext KaxTagAudioGain_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagAudioGain));\r
-const EbmlSemanticContext KaxTagAudioPeak_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagAudioPeak));\r
-const EbmlSemanticContext KaxTagBPM_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagBPM));\r
-const EbmlSemanticContext KaxTagDiscTrack_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagDiscTrack));\r
-const EbmlSemanticContext KaxTagSetPart_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagSetPart));\r
-const EbmlSemanticContext KaxTagEqualisation_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagEqualisation));\r
-const EbmlSemanticContext KaxTagInitialKey_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagInitialKey));\r
-const EbmlSemanticContext KaxTagOfficialAudioFileURL_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagOfficialAudioFileURL));\r
-const EbmlSemanticContext KaxTagOfficialAudioSourceURL_Context = EbmlSemanticContext(0, NULL, &KaxTagAudioSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagOfficialAudioSourceURL));\r
-const EbmlSemanticContext KaxTagCaptureDPI_Context = EbmlSemanticContext(0, NULL, &KaxTagImageSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagCaptureDPI));\r
-const EbmlSemanticContext KaxTagCaptureLightness_Context = EbmlSemanticContext(0, NULL, &KaxTagImageSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagCaptureLightness));\r
-const EbmlSemanticContext KaxTagCapturePaletteSetting_Context = EbmlSemanticContext(0, NULL, &KaxTagImageSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagCapturePaletteSetting));\r
-const EbmlSemanticContext KaxTagCaptureSharpness_Context = EbmlSemanticContext(0, NULL, &KaxTagImageSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagCaptureSharpness));\r
-const EbmlSemanticContext KaxTagCropped_Context = EbmlSemanticContext(0, NULL, &KaxTagImageSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagCropped));\r
-const EbmlSemanticContext KaxTagOriginalDimensions_Context = EbmlSemanticContext(0, NULL, &KaxTagImageSpecific_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagOriginalDimensions));\r
-\r
-const EbmlSemanticContext KaxTagSimple_Context = EbmlSemanticContext(countof(KaxTagSimple_ContextList), KaxTagSimple_ContextList, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagSimple));\r
-const EbmlSemanticContext KaxTagName_Context = EbmlSemanticContext(0, NULL, &KaxTagSimple_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagName));\r
-const EbmlSemanticContext KaxTagLangue_Context = EbmlSemanticContext(0, NULL, &KaxTagSimple_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagLangue));\r
-const EbmlSemanticContext KaxTagDefault_Context = EbmlSemanticContext(0, NULL, &KaxTagSimple_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagDefault));\r
-const EbmlSemanticContext KaxTagString_Context = EbmlSemanticContext(0, NULL, &KaxTagSimple_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagString));\r
-const EbmlSemanticContext KaxTagBinary_Context = EbmlSemanticContext(0, NULL, &KaxTagSimple_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagBinary));\r
-\r
-EbmlId KaxTag_TheId                      (0x7373, 2);\r
-EbmlId KaxTagTargets_TheId               (0x63C0, 2);\r
-EbmlId KaxTagGeneral_TheId               (0x67C9, 2);\r
-EbmlId KaxTagGenres_TheId                (0x6583, 2);\r
-EbmlId KaxTagAudioSpecific_TheId         (0x41C5, 2);\r
-EbmlId KaxTagImageSpecific_TheId         (0x4990, 2);\r
-EbmlId KaxTagBibliography_TheId          (0x4488, 2);\r
-EbmlId KaxTagEncoder_TheId               (0x4431, 2);\r
-EbmlId KaxTagEncodeSettings_TheId        (0x6526, 2);\r
-EbmlId KaxTagLanguage_TheId              (0x22B59F, 3);\r
-EbmlId KaxTagLength_TheId                (0x5243, 2);\r
-EbmlId KaxTagPlaylistDelay_TheId         (0x72CC, 2);\r
-EbmlId KaxTagRating_TheId                (0x52BC, 2);\r
-EbmlId KaxTagSubject_TheId               (0x49C1, 2);\r
-EbmlId KaxTagUnsynchronisedText_TheId    (0x874B, 2);\r
-EbmlId KaxTagUserDefinedURL_TheId        (0x434A, 2);\r
-EbmlId KaxTagTargetTypeValue_TheId       (0x68CA, 2);\r
-EbmlId KaxTagTargetType_TheId            (0x63CA, 2);\r
-EbmlId KaxTagTrackUID_TheId              (0x63C5, 2);\r
-EbmlId KaxTagEditionUID_TheId            (0x63C9, 2);\r
-EbmlId KaxTagChapterUID_TheId            (0x63C4, 2);\r
-EbmlId KaxTagAttachmentUID_TheId         (0x63C6, 2);\r
-EbmlId KaxTagAudioGenre_TheId            (0x65C2, 2);\r
-EbmlId KaxTagVideoGenre_TheId            (0x65A1, 2);\r
-EbmlId KaxTagSubGenre_TheId              (0x65AC, 2);\r
-EbmlId KaxTagAudioEncryption_TheId       (0x41B4, 2);\r
-EbmlId KaxTagAudioGain_TheId             (0x4199, 2);\r
-EbmlId KaxTagAudioPeak_TheId             (0x4189, 2);\r
-EbmlId KaxTagBPM_TheId                   (0x41A1, 2);\r
-EbmlId KaxTagDiscTrack_TheId             (0x41B6, 2);\r
-EbmlId KaxTagSetPart_TheId               (0x416E, 2);\r
-EbmlId KaxTagEqualisation_TheId          (0x41B1, 2);\r
-EbmlId KaxTagInitialKey_TheId            (0x413A, 2);\r
-EbmlId KaxTagOfficialAudioFileURL_TheId         (0x4133, 2);\r
-EbmlId KaxTagOfficialAudioSourceURL_TheId(0x413E, 2);\r
-EbmlId KaxTagArchivalLocation_TheId      (0x45A4, 2);\r
-EbmlId KaxTagFile_TheId                  (0x454E, 2);\r
-EbmlId KaxTagKeywords_TheId              (0x458C, 2);\r
-EbmlId KaxTagMood_TheId                  (0x45AE, 2);\r
-EbmlId KaxTagRecordLocation_TheId        (0x457E, 2);\r
-EbmlId KaxTagSource_TheId                (0x458A, 2);\r
-EbmlId KaxTagSourceForm_TheId            (0x45B5, 2);\r
-EbmlId KaxTagProduct_TheId               (0x45E3, 2);\r
-EbmlId KaxTagOriginalMediaType_TheId     (0x45A7, 2);\r
-EbmlId KaxTagPlayCounter_TheId           (0x4566, 2);\r
-EbmlId KaxTagPopularimeter_TheId         (0x4532, 2);\r
-EbmlId KaxTagCaptureDPI_TheId            (0x49C7, 2);\r
-EbmlId KaxTagCaptureLightness_TheId      (0x49E1, 2);\r
-EbmlId KaxTagCapturePaletteSetting_TheId (0x4934, 2);\r
-EbmlId KaxTagCaptureSharpness_TheId      (0x4922, 2);\r
-EbmlId KaxTagCropped_TheId               (0x4987, 2);\r
-EbmlId KaxTagOriginalDimensions_TheId    (0x4933, 2);\r
-\r
-EbmlId KaxTagSimple_TheId                                                               (0x67C8, 2);\r
-EbmlId KaxTagName_TheId                                                                         (0x45A3, 2);\r
-EbmlId KaxTagLangue_TheId                                                               (0x447A, 2);\r
-EbmlId KaxTagDefault_TheId                                                              (0x4484, 2);\r
-EbmlId KaxTagString_TheId                                                               (0x4487, 2);\r
-EbmlId KaxTagBinary_TheId                                                               (0x4485, 2);\r
-\r
-const EbmlCallbacks KaxTag::ClassInfos(KaxTag::Create, KaxTag_TheId, "Tag", KaxTag_Context);\r
-const EbmlCallbacks KaxTagTargets::ClassInfos(KaxTagTargets::Create, KaxTagTargets_TheId, "TagTargets", KaxTagTargets_Context);\r
-const EbmlCallbacks KaxTagGeneral::ClassInfos(KaxTagGeneral::Create, KaxTagGeneral_TheId, "TagGeneral", KaxTagGeneral_Context);\r
-const EbmlCallbacks KaxTagGenres::ClassInfos(KaxTagGenres::Create, KaxTagGenres_TheId, "TagGenres", KaxTagGenres_Context);\r
-const EbmlCallbacks KaxTagAudioSpecific::ClassInfos(KaxTagAudioSpecific::Create, KaxTagAudioSpecific_TheId, "TagAudioSpecific", KaxTagAudioSpecific_Context);\r
-const EbmlCallbacks KaxTagImageSpecific::ClassInfos(KaxTagImageSpecific::Create, KaxTagImageSpecific_TheId, "TagImageSpecific", KaxTagImageSpecific_Context);\r
-const EbmlCallbacks KaxTagBibliography::ClassInfos(KaxTagBibliography::Create, KaxTagBibliography_TheId, "Bibliography", KaxTagBibliography_Context);\r
-const EbmlCallbacks KaxTagCaptureDPI::ClassInfos(KaxTagCaptureDPI::Create, KaxTagCaptureDPI_TheId, "CaptureDPI", KaxTagCaptureDPI_Context);\r
-const EbmlCallbacks KaxTagCaptureLightness::ClassInfos(KaxTagCaptureLightness::Create, KaxTagCaptureLightness_TheId, "CaptureLightness", KaxTagCaptureLightness_Context);\r
-const EbmlCallbacks KaxTagCapturePaletteSetting::ClassInfos(KaxTagCapturePaletteSetting::Create, KaxTagCapturePaletteSetting_TheId, "CapturePaletteSetting", KaxTagCapturePaletteSetting_Context);\r
-const EbmlCallbacks KaxTagCaptureSharpness::ClassInfos(KaxTagCaptureSharpness::Create, KaxTagCaptureSharpness_TheId, "CaptureSharpness", KaxTagCaptureSharpness_Context);\r
-const EbmlCallbacks KaxTagCropped::ClassInfos(KaxTagCropped::Create, KaxTagCropped_TheId, "Cropped", KaxTagCropped_Context);\r
-const EbmlCallbacks KaxTagEncoder::ClassInfos(KaxTagEncoder::Create, KaxTagEncoder_TheId, "Encoder", KaxTagEncoder_Context);\r
-const EbmlCallbacks KaxTagEncodeSettings::ClassInfos(KaxTagEncodeSettings::Create, KaxTagEncodeSettings_TheId, "EncodeSettings", KaxTagEncodeSettings_Context);\r
-const EbmlCallbacks KaxTagLanguage::ClassInfos(KaxTagLanguage::Create, KaxTagLanguage_TheId, "Language", KaxTagLanguage_Context);\r
-const EbmlCallbacks KaxTagLength::ClassInfos(KaxTagLength::Create, KaxTagLength_TheId, "Length", KaxTagLength_Context);\r
-const EbmlCallbacks KaxTagOriginalDimensions::ClassInfos(KaxTagOriginalDimensions::Create, KaxTagOriginalDimensions_TheId, "OriginalDimensions", KaxTagOriginalDimensions_Context);\r
-const EbmlCallbacks KaxTagPlaylistDelay::ClassInfos(KaxTagPlaylistDelay::Create, KaxTagPlaylistDelay_TheId, "PlaylistDelay", KaxTagPlaylistDelay_Context);\r
-const EbmlCallbacks KaxTagRating::ClassInfos(KaxTagRating::Create, KaxTagRating_TheId, "Rating", KaxTagRating_Context);\r
-const EbmlCallbacks KaxTagSubject::ClassInfos(KaxTagSubject::Create, KaxTagSubject_TheId, "Subject", KaxTagSubject_Context);\r
-const EbmlCallbacks KaxTagUnsynchronisedText::ClassInfos(KaxTagUnsynchronisedText::Create, KaxTagUnsynchronisedText_TheId, "UnsynchronisedText", KaxTagUnsynchronisedText_Context);\r
-const EbmlCallbacks KaxTagUserDefinedURL::ClassInfos(KaxTagUserDefinedURL::Create, KaxTagUserDefinedURL_TheId, "UserDefinedURL", KaxTagUserDefinedURL_Context);\r
-const EbmlCallbacks KaxTagTargetTypeValue::ClassInfos(KaxTagTargetTypeValue::Create, KaxTagTargetTypeValue_TheId, "TagTargetTypeValue", KaxTagTargetTypeValue_Context);\r
-const EbmlCallbacks KaxTagTargetType::ClassInfos(KaxTagTargetType::Create, KaxTagTargetType_TheId, "TagTargetType", KaxTagTargetType_Context);\r
-const EbmlCallbacks KaxTagTrackUID::ClassInfos(KaxTagTrackUID::Create, KaxTagTrackUID_TheId, "TagTrackUID", KaxTagTrackUID_Context);\r
-const EbmlCallbacks KaxTagEditionUID::ClassInfos(KaxTagEditionUID::Create, KaxTagEditionUID_TheId, "TagEditionUID", KaxTagEditionUID_Context);\r
-const EbmlCallbacks KaxTagChapterUID::ClassInfos(KaxTagChapterUID::Create, KaxTagChapterUID_TheId, "TagChapterUID", KaxTagChapterUID_Context);\r
-const EbmlCallbacks KaxTagAttachmentUID::ClassInfos(KaxTagAttachmentUID::Create, KaxTagAttachmentUID_TheId, "TagAttachmentUID", KaxTagAttachmentUID_Context);\r
-const EbmlCallbacks KaxTagAudioGenre::ClassInfos(KaxTagAudioGenre::Create, KaxTagAudioGenre_TheId, "AudioGenre", KaxTagAudioGenre_Context);\r
-const EbmlCallbacks KaxTagVideoGenre::ClassInfos(KaxTagVideoGenre::Create, KaxTagVideoGenre_TheId, "VideoGenre", KaxTagVideoGenre_Context);\r
-const EbmlCallbacks KaxTagSubGenre::ClassInfos(KaxTagSubGenre::Create, KaxTagSubGenre_TheId, "SubGenre", KaxTagSubGenre_Context);\r
-const EbmlCallbacks KaxTagAudioEncryption::ClassInfos(KaxTagAudioEncryption::Create, KaxTagAudioEncryption_TheId, "AudioEncryption", KaxTagAudioEncryption_Context);\r
-const EbmlCallbacks KaxTagAudioGain::ClassInfos(KaxTagAudioGain::Create, KaxTagAudioGain_TheId, "AudioGain", KaxTagAudioGain_Context);\r
-const EbmlCallbacks KaxTagAudioPeak::ClassInfos(KaxTagAudioPeak::Create, KaxTagAudioPeak_TheId, "AudioPeak", KaxTagAudioPeak_Context);\r
-const EbmlCallbacks KaxTagBPM::ClassInfos(KaxTagBPM::Create, KaxTagBPM_TheId, "BPM", KaxTagBPM_Context);\r
-const EbmlCallbacks KaxTagDiscTrack::ClassInfos(KaxTagDiscTrack::Create, KaxTagDiscTrack_TheId, "DiscTrack", KaxTagDiscTrack_Context);\r
-const EbmlCallbacks KaxTagSetPart::ClassInfos(KaxTagSetPart::Create, KaxTagSetPart_TheId, "SetPart", KaxTagSetPart_Context);\r
-const EbmlCallbacks KaxTagEqualisation::ClassInfos(KaxTagEqualisation::Create, KaxTagEqualisation_TheId, "Equalisation", KaxTagEqualisation_Context);\r
-const EbmlCallbacks KaxTagInitialKey::ClassInfos(KaxTagInitialKey::Create, KaxTagInitialKey_TheId, "InitialKey", KaxTagInitialKey_Context);\r
-const EbmlCallbacks KaxTagOfficialAudioFileURL::ClassInfos(KaxTagOfficialAudioFileURL::Create, KaxTagOfficialAudioFileURL_TheId, "OfficialAudioFileURL", KaxTagOfficialAudioFileURL_Context);\r
-const EbmlCallbacks KaxTagOfficialAudioSourceURL::ClassInfos(KaxTagOfficialAudioSourceURL::Create, KaxTagOfficialAudioSourceURL_TheId, "AudioSourceURL", KaxTagOfficialAudioSourceURL_Context);\r
-const EbmlCallbacks KaxTagArchivalLocation::ClassInfos(KaxTagArchivalLocation::Create, KaxTagArchivalLocation_TheId, "ArchivalLocation", KaxTagArchivalLocation_Context);\r
-const EbmlCallbacks KaxTagFile::ClassInfos(KaxTagFile::Create, KaxTagFile_TheId, "File", KaxTagFile_Context);\r
-const EbmlCallbacks KaxTagKeywords::ClassInfos(KaxTagKeywords::Create, KaxTagKeywords_TheId, "Keywords", KaxTagKeywords_Context);\r
-const EbmlCallbacks KaxTagMood::ClassInfos(KaxTagMood::Create, KaxTagMood_TheId, "Mood", KaxTagMood_Context);\r
-const EbmlCallbacks KaxTagRecordLocation::ClassInfos(KaxTagRecordLocation::Create, KaxTagRecordLocation_TheId, "RecordLocation", KaxTagRecordLocation_Context);\r
-const EbmlCallbacks KaxTagSource::ClassInfos(KaxTagSource::Create, KaxTagSource_TheId, "Source", KaxTagSource_Context);\r
-const EbmlCallbacks KaxTagSourceForm::ClassInfos(KaxTagSourceForm::Create, KaxTagSourceForm_TheId, "SourceForm", KaxTagSourceForm_Context);\r
-const EbmlCallbacks KaxTagProduct::ClassInfos(KaxTagProduct::Create, KaxTagProduct_TheId, "Product", KaxTagProduct_Context);\r
-const EbmlCallbacks KaxTagOriginalMediaType::ClassInfos(KaxTagOriginalMediaType::Create, KaxTagOriginalMediaType_TheId, "OriginalMediaType", KaxTagOriginalMediaType_Context);\r
-const EbmlCallbacks KaxTagPlayCounter::ClassInfos(KaxTagPlayCounter::Create, KaxTagPlayCounter_TheId, "PlayCounter", KaxTagPlayCounter_Context);\r
-const EbmlCallbacks KaxTagPopularimeter::ClassInfos(KaxTagPopularimeter::Create, KaxTagPopularimeter_TheId, "Popularimeter", KaxTagPopularimeter_Context);\r
-\r
-const EbmlCallbacks KaxTagSimple::ClassInfos(KaxTagSimple::Create, KaxTagSimple_TheId, "TagSimple", KaxTagSimple_Context);\r
-const EbmlCallbacks KaxTagName::ClassInfos(KaxTagName::Create, KaxTagName_TheId, "TagName", KaxTagName_Context);\r
-const EbmlCallbacks KaxTagLangue::ClassInfos(KaxTagLangue::Create, KaxTagLangue_TheId, "TagLanguage", KaxTagLangue_Context);\r
-const EbmlCallbacks KaxTagDefault::ClassInfos(KaxTagDefault::Create, KaxTagDefault_TheId, "TagDefault", KaxTagDefault_Context);\r
-const EbmlCallbacks KaxTagString::ClassInfos(KaxTagString::Create, KaxTagString_TheId, "TagString", KaxTagString_Context);\r
-const EbmlCallbacks KaxTagBinary::ClassInfos(KaxTagBinary::Create, KaxTagBinary_TheId, "TagBinary", KaxTagBinary_Context);\r
+DEFINE_MKX_MASTER   (KaxTag,                       0x7373, 2, KaxTags, "Tag");\r
+DEFINE_MKX_MASTER   (KaxTagTargets,                0x63C0, 2, KaxTag, "TagTargets");\r
+DEFINE_MKX_MASTER   (KaxTagGeneral,                0x67C9, 2, KaxTag, "TagGeneral");\r
+DEFINE_MKX_MASTER   (KaxTagGenres,                 0x6583, 2, KaxTag, "TagGenres");\r
+DEFINE_MKX_MASTER   (KaxTagAudioSpecific,          0x41C5, 2, KaxTag, "TagAudioSpecific");\r
+DEFINE_MKX_MASTER   (KaxTagImageSpecific,          0x4990, 2, KaxTag, "TagImageSpecific");\r
+DEFINE_MKX_UNISTRING(KaxTagBibliography,           0x4488, 2, KaxTag, "Bibliography");\r
+DEFINE_MKX_UNISTRING(KaxTagEncoder,                0x4431, 2, KaxTag, "Encoder");\r
+DEFINE_MKX_UNISTRING(KaxTagEncodeSettings,         0x6526, 2, KaxTag, "EncodeSettings");\r
+DEFINE_MKX_STRING   (KaxTagLanguage,             0x22B59F, 3, KaxTag, "Language");\r
+DEFINE_MKX_UINTEGER (KaxTagLength,                 0x5243, 2, KaxTag, "Length");\r
+DEFINE_MKX_UINTEGER (KaxTagPlaylistDelay,          0x72CC, 2, KaxTag, "PlaylistDelay");\r
+DEFINE_MKX_BINARY   (KaxTagRating,                 0x52BC, 2, KaxTag, "Rating");\r
+DEFINE_MKX_UNISTRING(KaxTagSubject,                0x49C1, 2, KaxTag, "Subject");\r
+DEFINE_MKX_UNISTRING(KaxTagUnsynchronisedText,     0x874B, 2, KaxTag, "UnsynchronisedText");\r
+DEFINE_MKX_STRING   (KaxTagUserDefinedURL,         0x434A, 2, KaxTag, "UserDefinedURL");\r
+DEFINE_MKX_UINTEGER (KaxTagTargetTypeValue,        0x68CA, 2, KaxTagTargets, "TagTargetTypeValue");\r
+DEFINE_MKX_STRING   (KaxTagTargetType,             0x63CA, 2, KaxTagTargets, "TagTargetType");\r
+DEFINE_MKX_UINTEGER (KaxTagTrackUID,               0x63C5, 2, KaxTagTargets, "TagTrackUID");\r
+DEFINE_MKX_UINTEGER (KaxTagEditionUID,             0x63C9, 2, KaxTagTargets, "TagEditionUID");\r
+DEFINE_MKX_UINTEGER (KaxTagChapterUID,             0x63C4, 2, KaxTagTargets, "TagChapterUID");\r
+DEFINE_MKX_UINTEGER (KaxTagAttachmentUID,          0x63C6, 2, KaxTagTargets, "TagAttachmentUID");\r
+DEFINE_MKX_UNISTRING(KaxTagArchivalLocation,       0x45A4, 2, KaxTagGeneral, "ArchivalLocation");\r
+DEFINE_MKX_UNISTRING(KaxTagFile,                   0x454E, 2, KaxTagGeneral, "File");\r
+DEFINE_MKX_UNISTRING(KaxTagKeywords,               0x458C, 2, KaxTagGeneral, "Keywords");\r
+DEFINE_MKX_UNISTRING(KaxTagMood,                   0x45AE, 2, KaxTagGeneral, "Mood");\r
+DEFINE_MKX_STRING   (KaxTagRecordLocation,         0x457E, 2, KaxTagGeneral, "RecordLocation");\r
+DEFINE_MKX_UNISTRING(KaxTagSource,                 0x458A, 2, KaxTagGeneral, "Source");\r
+DEFINE_MKX_UNISTRING(KaxTagSourceForm,             0x45B5, 2, KaxTagGeneral, "SourceForm");\r
+DEFINE_MKX_UNISTRING(KaxTagProduct,                0x45E3, 2, KaxTagGeneral, "Product");\r
+DEFINE_MKX_UNISTRING(KaxTagOriginalMediaType,      0x45A7, 2, KaxTagGeneral, "OriginalMediaType");\r
+DEFINE_MKX_UINTEGER (KaxTagPlayCounter,            0x4566, 2, KaxTagTargets, "PlayCounter");\r
+DEFINE_MKX_SINTEGER (KaxTagPopularimeter,          0x4532, 2, KaxTagTargets, "Popularimeter");\r
+DEFINE_MKX_STRING   (KaxTagAudioGenre,             0x65C2, 2, KaxTagGenres, "AudioGenre");\r
+DEFINE_MKX_BINARY   (KaxTagVideoGenre,             0x65A1, 2, KaxTagGenres, "VideoGenre");\r
+DEFINE_MKX_STRING   (KaxTagSubGenre,               0x65AC, 2, KaxTagGenres, "SubGenre");\r
+DEFINE_MKX_BINARY   (KaxTagAudioEncryption,        0x41B4, 2, KaxTagAudioSpecific, "AudioEncryption");\r
+DEFINE_MKX_FLOAT    (KaxTagAudioGain,              0x4199, 2, KaxTagAudioSpecific, "AudioGain");\r
+DEFINE_MKX_FLOAT    (KaxTagAudioPeak,              0x4189, 2, KaxTagAudioSpecific, "AudioPeak");\r
+DEFINE_MKX_FLOAT    (KaxTagBPM,                    0x41A1, 2, KaxTagAudioSpecific, "BPM");\r
+DEFINE_MKX_UINTEGER (KaxTagDiscTrack,              0x41B6, 2, KaxTagAudioSpecific, "DiscTrack");\r
+DEFINE_MKX_UINTEGER (KaxTagSetPart,                0x416E, 2, KaxTagAudioSpecific, "SetPart");\r
+DEFINE_MKX_BINARY   (KaxTagEqualisation,           0x41B1, 2, KaxTagAudioSpecific, "Equalisation");\r
+DEFINE_MKX_STRING   (KaxTagInitialKey,             0x413A, 2, KaxTagAudioSpecific, "InitialKey");\r
+DEFINE_MKX_STRING   (KaxTagOfficialAudioFileURL,   0x4133, 2, KaxTagAudioSpecific, "OfficialAudioFileURL");\r
+DEFINE_MKX_STRING   (KaxTagOfficialAudioSourceURL, 0x413E, 2, KaxTagAudioSpecific, "AudioSourceURL");\r
+DEFINE_MKX_UINTEGER (KaxTagCaptureDPI,             0x49C7, 2, KaxTagImageSpecific, "CaptureDPI");\r
+DEFINE_MKX_BINARY   (KaxTagCaptureLightness,       0x49E1, 2, KaxTagImageSpecific, "CaptureLightness");\r
+DEFINE_MKX_UINTEGER (KaxTagCapturePaletteSetting,  0x4934, 2, KaxTagImageSpecific, "CapturePaletteSetting");\r
+DEFINE_MKX_BINARY   (KaxTagCaptureSharpness,       0x4922, 2, KaxTagImageSpecific, "CaptureSharpness");\r
+DEFINE_MKX_UNISTRING(KaxTagCropped,                0x4987, 2, KaxTagImageSpecific, "Cropped");\r
+DEFINE_MKX_STRING   (KaxTagOriginalDimensions,     0x4933, 2, KaxTagImageSpecific, "OriginalDimensions");\r
+\r
+DEFINE_MKX_MASTER   (KaxTagSimple,                 0x67C8, 2, KaxTag, "TagSimple");\r
+DEFINE_MKX_UNISTRING(KaxTagName,                   0x45A3, 2, KaxTagSimple, "TagName");\r
+DEFINE_MKX_STRING   (KaxTagLangue,                 0x447A, 2, KaxTagSimple, "TagLanguage");\r
+DEFINE_MKX_UINTEGER (KaxTagDefault,                0x4484, 2, KaxTagSimple, "TagDefault");\r
+DEFINE_MKX_UNISTRING(KaxTagString,                 0x4487, 2, KaxTagSimple, "TagString");\r
+DEFINE_MKX_BINARY   (KaxTagBinary,                 0x4485, 2, KaxTagSimple, "TagBinary");\r
 \r
 KaxTag::KaxTag()\r
        :EbmlMaster(KaxTag_Context)\r
index 148b911c0cbe9bb3f7c52c8f22d2327a74504e83..d74eb1c692e8c6ce959ee11dc81784ef9bac40d4 100644 (file)
 */\r
 #include "matroska/KaxTagMulti.h"\r
 #include "matroska/KaxContexts.h"\r
+#include "matroska/KaxDefines.h"\r
 \r
 using namespace LIBEBML_NAMESPACE;\r
 \r
 START_LIBMATROSKA_NAMESPACE\r
 \r
-EbmlSemantic KaxTagMultiGlobal_ContextList[1] =\r
+static const EbmlSemantic ContextList_KaxTagMultiGlobal[1] =\r
 {\r
        EbmlSemantic(false, false, EBML_INFO(KaxTagMultiComment)),\r
 };\r
 \r
-EbmlSemantic KaxTagMultiComment_ContextList[3] =\r
+static const EbmlSemantic ContextList_KaxTagMultiComment[3] =\r
 {\r
        EbmlSemantic(false, true, EBML_INFO(KaxTagMultiCommentName)),\r
        EbmlSemantic(false, true, EBML_INFO(KaxTagMultiCommentComments)),\r
        EbmlSemantic(false, true, EBML_INFO(KaxTagMultiCommentLanguage)),\r
 };\r
 \r
-EbmlSemantic KaxTagMultiCommercial_ContextList[1] =\r
+static const EbmlSemantic ContextList_KaxTagMultiCommercial[1] =\r
 {\r
        EbmlSemantic(true, false, EBML_INFO(KaxTagCommercial)),\r
 };\r
 \r
-EbmlSemantic KaxTagCommercial_ContextList[5] =\r
+static const EbmlSemantic ContextList_KaxTagCommercial[5] =\r
 {\r
        EbmlSemantic(true,  true,  EBML_INFO(KaxTagMultiCommercialType)),\r
        EbmlSemantic(false, true,  EBML_INFO(KaxTagMultiCommercialAddress)),\r
@@ -66,31 +67,31 @@ EbmlSemantic KaxTagCommercial_ContextList[5] =
        EbmlSemantic(false, false, EBML_INFO(KaxTagMultiPrice)),\r
 };\r
 \r
-EbmlSemantic KaxTagMultiPrice_ContextList[3] =\r
+static const EbmlSemantic ContextList_KaxTagMultiPrice[3] =\r
 {\r
        EbmlSemantic(false, true, EBML_INFO(KaxTagMultiPriceCurrency)),\r
        EbmlSemantic(false, true, EBML_INFO(KaxTagMultiPriceAmount)),\r
        EbmlSemantic(false, true, EBML_INFO(KaxTagMultiPricePriceDate)),\r
 };\r
 \r
-EbmlSemantic KaxTagMultiDate_ContextList[1] =\r
+static const EbmlSemantic ContextList_KaxTagMultiDate[1] =\r
 {\r
        EbmlSemantic(true, false, EBML_INFO(KaxTagDate)),\r
 };\r
 \r
-EbmlSemantic KaxTagDate_ContextList[3] =\r
+static const EbmlSemantic ContextList_KaxTagDate[3] =\r
 {\r
        EbmlSemantic(true,  true, EBML_INFO(KaxTagMultiDateType)),\r
        EbmlSemantic(false, true, EBML_INFO(KaxTagMultiDateDateBegin)),\r
        EbmlSemantic(false, true, EBML_INFO(KaxTagMultiDateDateEnd)),\r
 };\r
 \r
-EbmlSemantic KaxTagMultiEntity_ContextList[1] =\r
+static const EbmlSemantic ContextList_KaxTagMultiEntity[1] =\r
 {\r
        EbmlSemantic(true, false, EBML_INFO(KaxTagEntity)),\r
 };\r
 \r
-EbmlSemantic KaxTagEntity_ContextList[5] =\r
+static const EbmlSemantic ContextList_KaxTagEntity[5] =\r
 {\r
        EbmlSemantic(true,  true,  EBML_INFO(KaxTagMultiEntityType)),\r
        EbmlSemantic(false, true,  EBML_INFO(KaxTagMultiEntityName)),\r
@@ -99,24 +100,24 @@ EbmlSemantic KaxTagEntity_ContextList[5] =
        EbmlSemantic(false, true,  EBML_INFO(KaxTagMultiEntityAddress)),\r
 };\r
 \r
-EbmlSemantic KaxTagMultiIdentifier_ContextList[1] =\r
+static const EbmlSemantic ContextList_KaxTagMultiIdentifier[1] =\r
 {\r
        EbmlSemantic(true, false, EBML_INFO(KaxTagIdentifier)),\r
 };\r
 \r
-EbmlSemantic KaxTagIdentifier_ContextList[3] =\r
+static const EbmlSemantic ContextList_KaxTagIdentifier[3] =\r
 {\r
        EbmlSemantic(true,  true, EBML_INFO(KaxTagMultiIdentifierType)),\r
        EbmlSemantic(false, true, EBML_INFO(KaxTagMultiIdentifierBinary)),\r
        EbmlSemantic(false, true, EBML_INFO(KaxTagMultiIdentifierString)),\r
 };\r
 \r
-EbmlSemantic KaxTagMultiLegal_ContextList[1] =\r
+static const EbmlSemantic ContextList_KaxTagMultiLegal[1] =\r
 {\r
        EbmlSemantic(true, false, EBML_INFO(KaxTagLegal)),\r
 };\r
 \r
-EbmlSemantic KaxTagLegal_ContextList[4] =\r
+static const EbmlSemantic ContextList_KaxTagLegal[4] =\r
 {\r
        EbmlSemantic(true,  true,  EBML_INFO(KaxTagMultiLegalType)),\r
        EbmlSemantic(false, true,  EBML_INFO(KaxTagMultiLegalContent)),\r
@@ -124,12 +125,12 @@ EbmlSemantic KaxTagLegal_ContextList[4] =
        EbmlSemantic(false, true,  EBML_INFO(KaxTagMultiLegalAddress)),\r
 };\r
 \r
-EbmlSemantic KaxTagMultiTitle_ContextList[1] =\r
+static const EbmlSemantic ContextList_KaxTagMultiTitle[1] =\r
 {\r
        EbmlSemantic(true, false, EBML_INFO(KaxTagTitle)),\r
 };\r
 \r
-EbmlSemantic KaxTagTitle_ContextList[8] =\r
+static const EbmlSemantic ContextList_KaxTagTitle[8] =\r
 {\r
        EbmlSemantic(true,  true,  EBML_INFO(KaxTagMultiTitleType)),\r
        EbmlSemantic(false, true,  EBML_INFO(KaxTagMultiTitleName)),\r
@@ -141,195 +142,82 @@ EbmlSemantic KaxTagTitle_ContextList[8] =
        EbmlSemantic(false, true,  EBML_INFO(KaxTagMultiTitleLanguage)),\r
 };\r
 \r
-EbmlSemantic KaxTagMultiAttachment_ContextList[1] =\r
+static const EbmlSemantic ContextList_KaxTagMultiAttachment[1] =\r
 {\r
        EbmlSemantic(true, false, EBML_INFO(KaxTagAttachment)),\r
 };\r
 \r
-EbmlSemantic KaxTagAttachment_ContextList[1] =\r
+static const EbmlSemantic ContextList_KaxTagAttachment[1] =\r
 {\r
        EbmlSemantic(false, true,  EBML_INFO(KaxTagAttachmentID)),\r
 };\r
 \r
-const EbmlSemanticContext KaxTagMultiGlobal_Context = EbmlSemanticContext(countof(KaxTagMultiGlobal_ContextList), KaxTagMultiGlobal_ContextList, NULL, *GetKaxGlobal_Context, NULL);\r
-\r
-const EbmlSemanticContext KaxTagMultiComment_Context = EbmlSemanticContext(countof(KaxTagMultiComment_ContextList), KaxTagMultiComment_ContextList, &KaxTag_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiComment));\r
-const EbmlSemanticContext KaxTagMultiCommentName_Context = EbmlSemanticContext(0, NULL, &KaxTagMultiComment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommentName));\r
-const EbmlSemanticContext KaxTagMultiCommentComments_Context = EbmlSemanticContext(0, NULL, &KaxTagMultiComment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommentComments));\r
-const EbmlSemanticContext KaxTagMultiCommentLanguage_Context = EbmlSemanticContext(0, NULL, &KaxTagMultiComment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommentLanguage));\r
-\r
-const EbmlSemanticContext KaxTagMultiCommercial_Context = EbmlSemanticContext(countof(KaxTagMultiCommercial_ContextList), KaxTagMultiCommercial_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiCommercial));\r
-const EbmlSemanticContext KaxTagCommercial_Context = EbmlSemanticContext(countof(KaxTagCommercial_ContextList), KaxTagCommercial_ContextList, &KaxTagMultiCommercial_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagCommercial));\r
-const EbmlSemanticContext KaxTagMultiCommercialType_Context = EbmlSemanticContext(0, NULL, &KaxTagCommercial_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommercialType));\r
-const EbmlSemanticContext KaxTagMultiCommercialAddress_Context = EbmlSemanticContext(0, NULL, &KaxTagCommercial_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommercialAddress));\r
-const EbmlSemanticContext KaxTagMultiCommercialURL_Context = EbmlSemanticContext(0, NULL, &KaxTagCommercial_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommercialURL));\r
-const EbmlSemanticContext KaxTagMultiCommercialEmail_Context = EbmlSemanticContext(0, NULL, &KaxTagCommercial_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiCommercialEmail));\r
-\r
-const EbmlSemanticContext KaxTagMultiPrice_Context = EbmlSemanticContext(countof(KaxTagMultiPrice_ContextList), KaxTagMultiPrice_ContextList, &KaxTagCommercial_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiPrice));\r
-const EbmlSemanticContext KaxTagMultiPriceCurrency_Context = EbmlSemanticContext(0, NULL, &KaxTagMultiPrice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiPriceCurrency));\r
-const EbmlSemanticContext KaxTagMultiPriceAmount_Context = EbmlSemanticContext(0, NULL, &KaxTagMultiPrice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiPriceAmount));\r
-const EbmlSemanticContext KaxTagMultiPricePriceDate_Context = EbmlSemanticContext(0, NULL, &KaxTagMultiPrice_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiPricePriceDate));\r
-\r
-const EbmlSemanticContext KaxTagMultiDate_Context = EbmlSemanticContext(countof(KaxTagMultiDate_ContextList), KaxTagMultiDate_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiDate));\r
-const EbmlSemanticContext KaxTagDate_Context = EbmlSemanticContext(countof(KaxTagDate_ContextList), KaxTagDate_ContextList, &KaxTagMultiDate_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagDate));\r
-const EbmlSemanticContext KaxTagMultiDateType_Context = EbmlSemanticContext(0, NULL, &KaxTagDate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiDateType));\r
-const EbmlSemanticContext KaxTagMultiDateDateBegin_Context = EbmlSemanticContext(0, NULL, &KaxTagDate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiDateDateBegin));\r
-const EbmlSemanticContext KaxTagMultiDateDateEnd_Context = EbmlSemanticContext(0, NULL, &KaxTagDate_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiDateDateEnd));\r
-\r
-const EbmlSemanticContext KaxTagMultiEntity_Context = EbmlSemanticContext(countof(KaxTagMultiEntity_ContextList), KaxTagMultiEntity_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiEntity));\r
-const EbmlSemanticContext KaxTagEntity_Context = EbmlSemanticContext(countof(KaxTagEntity_ContextList), KaxTagEntity_ContextList, &KaxTagMultiEntity_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagEntity));\r
-const EbmlSemanticContext KaxTagMultiEntityType_Context = EbmlSemanticContext(0, NULL, &KaxTagEntity_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiEntityType));\r
-const EbmlSemanticContext KaxTagMultiEntityName_Context = EbmlSemanticContext(0, NULL, &KaxTagEntity_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiEntityName));\r
-const EbmlSemanticContext KaxTagMultiEntityURL_Context = EbmlSemanticContext(0, NULL, &KaxTagEntity_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiEntityURL));\r
-const EbmlSemanticContext KaxTagMultiEntityEmail_Context = EbmlSemanticContext(0, NULL, &KaxTagEntity_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiEntityEmail));\r
-const EbmlSemanticContext KaxTagMultiEntityAddress_Context = EbmlSemanticContext(0, NULL, &KaxTagEntity_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiEntityAddress));\r
-\r
-const EbmlSemanticContext KaxTagMultiIdentifier_Context = EbmlSemanticContext(countof(KaxTagMultiIdentifier_ContextList), KaxTagMultiIdentifier_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiIdentifier));\r
-const EbmlSemanticContext KaxTagIdentifier_Context = EbmlSemanticContext(countof(KaxTagIdentifier_ContextList), KaxTagIdentifier_ContextList, &KaxTagMultiIdentifier_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagIdentifier));\r
-const EbmlSemanticContext KaxTagMultiIdentifierType_Context = EbmlSemanticContext(0, NULL, &KaxTagIdentifier_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiIdentifierType));\r
-const EbmlSemanticContext KaxTagMultiIdentifierBinary_Context = EbmlSemanticContext(0, NULL, &KaxTagIdentifier_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiIdentifierBinary));\r
-const EbmlSemanticContext KaxTagMultiIdentifierString_Context = EbmlSemanticContext(0, NULL, &KaxTagIdentifier_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiIdentifierString));\r
-\r
-const EbmlSemanticContext KaxTagMultiLegal_Context = EbmlSemanticContext(countof(KaxTagMultiLegal_ContextList), KaxTagMultiLegal_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiLegal));\r
-const EbmlSemanticContext KaxTagLegal_Context = EbmlSemanticContext(countof(KaxTagLegal_ContextList), KaxTagLegal_ContextList, &KaxTagMultiLegal_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagLegal));\r
-const EbmlSemanticContext KaxTagMultiLegalType_Context = EbmlSemanticContext(0, NULL, &KaxTagLegal_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiLegalType));\r
-const EbmlSemanticContext KaxTagMultiLegalContent_Context = EbmlSemanticContext(0, NULL, &KaxTagLegal_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiLegalContent));\r
-const EbmlSemanticContext KaxTagMultiLegalURL_Context = EbmlSemanticContext(0, NULL, &KaxTagLegal_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiLegalURL));\r
-const EbmlSemanticContext KaxTagMultiLegalAddress_Context = EbmlSemanticContext(0, NULL, &KaxTagLegal_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiLegalAddress));\r
-\r
-const EbmlSemanticContext KaxTagMultiTitle_Context = EbmlSemanticContext(countof(KaxTagMultiTitle_ContextList), KaxTagMultiTitle_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiTitle));\r
-const EbmlSemanticContext KaxTagTitle_Context = EbmlSemanticContext(countof(KaxTagTitle_ContextList), KaxTagTitle_ContextList, &KaxTagMultiTitle_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagTitle));\r
-const EbmlSemanticContext KaxTagMultiTitleType_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleType));\r
-const EbmlSemanticContext KaxTagMultiTitleName_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleName));\r
-const EbmlSemanticContext KaxTagMultiTitleSubTitle_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleSubTitle));\r
-const EbmlSemanticContext KaxTagMultiTitleEdition_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleEdition));\r
-const EbmlSemanticContext KaxTagMultiTitleAddress_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleAddress));\r
-const EbmlSemanticContext KaxTagMultiTitleURL_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleURL));\r
-const EbmlSemanticContext KaxTagMultiTitleEmail_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleEmail));\r
-const EbmlSemanticContext KaxTagMultiTitleLanguage_Context = EbmlSemanticContext(0, NULL, &KaxTagTitle_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagMultiTitleLanguage));\r
-\r
-const EbmlSemanticContext KaxTagMultiAttachment_Context = EbmlSemanticContext(countof(KaxTagMultiAttachment_ContextList), KaxTagMultiAttachment_ContextList, &KaxTag_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagMultiAttachment));\r
-const EbmlSemanticContext KaxTagAttachment_Context = EbmlSemanticContext(countof(KaxTagAttachment_ContextList), KaxTagAttachment_ContextList, &KaxTagMultiAttachment_Context, *GetKaxTagsGlobal_Context, &EBML_INFO(KaxTagAttachment));\r
-const EbmlSemanticContext KaxTagAttachmentID_Context = EbmlSemanticContext(0, NULL, &KaxTagAttachment_Context, *GetKaxGlobal_Context, &EBML_INFO(KaxTagAttachmentID));\r
-\r
-//The Muti Elements\r
-EbmlId KaxTagMultiComment_TheId             (0x5B7B, 2);\r
-EbmlId KaxTagMultiCommentName_TheId         (0x5F7D, 2);\r
-EbmlId KaxTagMultiCommentComments_TheId     (0x5F7C, 2);\r
-EbmlId KaxTagMultiCommentLanguage_TheId     (0x22B59D, 3);\r
-\r
-EbmlId KaxTagMultiCommercial_TheId          (0x4DC7, 2);\r
-EbmlId KaxTagCommercial_TheId               (0x4EC7, 2);\r
-EbmlId KaxTagMultiCommercialType_TheId      (0x5BD7, 2);\r
-EbmlId KaxTagMultiCommercialAddress_TheId   (0x5BBB, 2);\r
-EbmlId KaxTagMultiCommercialURL_TheId       (0x5BDA, 2);\r
-EbmlId KaxTagMultiCommercialEmail_TheId     (0x5BC0, 2);\r
-\r
-EbmlId KaxTagMultiPrice_TheId               (0x5BC3, 2);\r
-EbmlId KaxTagMultiPriceCurrency_TheId       (0x5B6C, 2);\r
-EbmlId KaxTagMultiPriceAmount_TheId         (0x5B6E, 2);\r
-EbmlId KaxTagMultiPricePriceDate_TheId      (0x5B6F, 2);\r
-\r
-EbmlId KaxTagMultiDate_TheId                (0x4DC8, 2);\r
-EbmlId KaxTagDate_TheId                     (0x4EC8, 2);\r
-EbmlId KaxTagMultiDateType_TheId            (0x5BD8, 2);\r
-EbmlId KaxTagMultiDateDateBegin_TheId       (0x4460, 2);\r
-EbmlId KaxTagMultiDateDateEnd_TheId         (0x4462, 2);\r
-\r
-EbmlId KaxTagMultiEntity_TheId              (0x4DC9, 2);\r
-EbmlId KaxTagEntity_TheId                   (0x4EC9, 2);\r
-EbmlId KaxTagMultiEntityType_TheId          (0x5BD9, 2);\r
-EbmlId KaxTagMultiEntityName_TheId          (0x5BED, 2);\r
-EbmlId KaxTagMultiEntityAddress_TheId       (0x5BDC, 2);\r
-EbmlId KaxTagMultiEntityURL_TheId           (0x5BDB, 2);\r
-EbmlId KaxTagMultiEntityEmail_TheId         (0x5BC1, 2);\r
-\r
-EbmlId KaxTagMultiIdentifier_TheId          (0x4DC6, 2);\r
-EbmlId KaxTagIdentifier_TheId               (0x4EC6, 2);\r
-EbmlId KaxTagMultiIdentifierType_TheId      (0x5BAD, 2);\r
-EbmlId KaxTagMultiIdentifierBinary_TheId    (0x6B67, 2);\r
-EbmlId KaxTagMultiIdentifierString_TheId    (0x6B68, 2);\r
-\r
-EbmlId KaxTagMultiLegal_TheId               (0x4DC5, 2);\r
-EbmlId KaxTagLegal_TheId                    (0x4EC5, 2);\r
-EbmlId KaxTagMultiLegalType_TheId           (0x5BBD, 2);\r
-EbmlId KaxTagMultiLegalContent_TheId        (0x5BB2, 2);\r
-EbmlId KaxTagMultiLegalURL_TheId            (0x5B34, 2);\r
-EbmlId KaxTagMultiLegalAddress_TheId        (0x5B9B, 2);\r
-\r
-EbmlId KaxTagMultiTitle_TheId               (0x4DC4, 2);\r
-EbmlId KaxTagTitle_TheId                    (0x4EC4, 2);\r
-EbmlId KaxTagMultiTitleType_TheId           (0x5B7D, 2);\r
-EbmlId KaxTagMultiTitleName_TheId           (0x5BB9, 2);\r
-EbmlId KaxTagMultiTitleSubTitle_TheId       (0x5B5B, 2);\r
-EbmlId KaxTagMultiTitleEdition_TheId        (0x5BAE, 2);\r
-EbmlId KaxTagMultiTitleAddress_TheId        (0x5B33, 2);\r
-EbmlId KaxTagMultiTitleURL_TheId            (0x5BA9, 2);\r
-EbmlId KaxTagMultiTitleEmail_TheId          (0x5BC9, 2);\r
-EbmlId KaxTagMultiTitleLanguage_TheId       (0x22B59E, 3);\r
-\r
-EbmlId KaxTagMultiAttachment_TheId          (0x4DC3, 2);\r
-EbmlId KaxTagAttachment_TheId               (0x4EC3, 2);\r
-EbmlId KaxTagAttachmentID_TheId             (0x5BA0, 2);\r
-\r
-const EbmlCallbacks KaxTagMultiComment::ClassInfos(KaxTagMultiComment::Create, KaxTagMultiComment_TheId, "MultiComment", KaxTagMultiComment_Context);\r
-const EbmlCallbacks KaxTagMultiCommentName::ClassInfos(KaxTagMultiCommentName::Create, KaxTagMultiCommentName_TheId, "MultiCommentName", KaxTagMultiCommentName_Context);\r
-const EbmlCallbacks KaxTagMultiCommentComments::ClassInfos(KaxTagMultiCommentComments::Create, KaxTagMultiCommentComments_TheId, "MultiCommentComments", KaxTagMultiCommentComments_Context);\r
-const EbmlCallbacks KaxTagMultiCommentLanguage::ClassInfos(KaxTagMultiCommentLanguage::Create, KaxTagMultiCommentLanguage_TheId, "MultiCommentLanguage", KaxTagMultiCommentLanguage_Context);\r
-\r
-const EbmlCallbacks KaxTagMultiCommercial::ClassInfos(KaxTagMultiCommercial::Create, KaxTagMultiCommercial_TheId, "MultiCommercial", KaxTagMultiCommercial_Context);\r
-const EbmlCallbacks KaxTagCommercial::ClassInfos(KaxTagCommercial::Create, KaxTagCommercial_TheId, "Commercial", KaxTagCommercial_Context);\r
-const EbmlCallbacks KaxTagMultiCommercialType::ClassInfos(KaxTagMultiCommercialType::Create, KaxTagMultiCommercialType_TheId, "MultiCommercialType", KaxTagMultiCommercialType_Context);\r
-const EbmlCallbacks KaxTagMultiCommercialAddress::ClassInfos(KaxTagMultiCommercialAddress::Create, KaxTagMultiCommercialAddress_TheId, "MultiCommercialAddress", KaxTagMultiCommercialAddress_Context);\r
-const EbmlCallbacks KaxTagMultiCommercialURL::ClassInfos(KaxTagMultiCommercialURL::Create, KaxTagMultiCommercialURL_TheId, "MultiCommercialURL", KaxTagMultiCommercialURL_Context);\r
-const EbmlCallbacks KaxTagMultiCommercialEmail::ClassInfos(KaxTagMultiCommercialEmail::Create, KaxTagMultiCommercialEmail_TheId, "MultiCommercialEmail", KaxTagMultiCommercialEmail_Context);\r
-\r
-const EbmlCallbacks KaxTagMultiPrice::ClassInfos(KaxTagMultiPrice::Create, KaxTagMultiPrice_TheId, "MultiPrice", KaxTagMultiPrice_Context);\r
-const EbmlCallbacks KaxTagMultiPriceCurrency::ClassInfos(KaxTagMultiPriceCurrency::Create, KaxTagMultiPriceCurrency_TheId, "MultiPriceCurrency", KaxTagMultiPriceCurrency_Context);\r
-const EbmlCallbacks KaxTagMultiPriceAmount::ClassInfos(KaxTagMultiPriceAmount::Create, KaxTagMultiPriceAmount_TheId, "MultiPriceAmount", KaxTagMultiPriceAmount_Context);\r
-const EbmlCallbacks KaxTagMultiPricePriceDate::ClassInfos(KaxTagMultiPricePriceDate::Create, KaxTagMultiPricePriceDate_TheId, "MultiPricePriceDate", KaxTagMultiPricePriceDate_Context);\r
-\r
-const EbmlCallbacks KaxTagMultiDate::ClassInfos(KaxTagMultiDate::Create, KaxTagMultiDate_TheId, "MultiDate", KaxTagMultiDate_Context);\r
-const EbmlCallbacks KaxTagDate::ClassInfos(KaxTagDate::Create, KaxTagDate_TheId, "Date", KaxTagDate_Context);\r
-const EbmlCallbacks KaxTagMultiDateType::ClassInfos(KaxTagMultiDateType::Create, KaxTagMultiDateType_TheId, "MultiDateType", KaxTagMultiDateType_Context);\r
-const EbmlCallbacks KaxTagMultiDateDateBegin::ClassInfos(KaxTagMultiDateDateBegin::Create, KaxTagMultiDateDateBegin_TheId, "MultiDateDateBegin", KaxTagMultiDateDateBegin_Context);\r
-const EbmlCallbacks KaxTagMultiDateDateEnd::ClassInfos(KaxTagMultiDateDateEnd::Create, KaxTagMultiDateDateEnd_TheId, "MultiDateDateEnd", KaxTagMultiDateDateEnd_Context);\r
-\r
-const EbmlCallbacks KaxTagMultiEntity::ClassInfos(KaxTagMultiEntity::Create, KaxTagMultiEntity_TheId, "MultiEntity", KaxTagMultiEntity_Context);\r
-const EbmlCallbacks KaxTagEntity::ClassInfos(KaxTagEntity::Create, KaxTagEntity_TheId, "Entity", KaxTagEntity_Context);\r
-const EbmlCallbacks KaxTagMultiEntityType::ClassInfos(KaxTagMultiEntityType::Create, KaxTagMultiEntityType_TheId, "MultiEntityType", KaxTagMultiEntityType_Context);\r
-const EbmlCallbacks KaxTagMultiEntityName::ClassInfos(KaxTagMultiEntityName::Create, KaxTagMultiEntityName_TheId, "MultiEntityName", KaxTagMultiEntityName_Context);\r
-const EbmlCallbacks KaxTagMultiEntityURL::ClassInfos(KaxTagMultiEntityURL::Create, KaxTagMultiEntityURL_TheId, "MultiEntityURL", KaxTagMultiEntityURL_Context);\r
-const EbmlCallbacks KaxTagMultiEntityEmail::ClassInfos(KaxTagMultiEntityEmail::Create, KaxTagMultiEntityEmail_TheId, "MultiEntityEmail", KaxTagMultiEntityEmail_Context);\r
-const EbmlCallbacks KaxTagMultiEntityAddress::ClassInfos(KaxTagMultiEntityAddress::Create, KaxTagMultiEntityAddress_TheId, "MultiEntityAddress", KaxTagMultiEntityAddress_Context);\r
-\r
-const EbmlCallbacks KaxTagMultiIdentifier::ClassInfos(KaxTagMultiIdentifier::Create, KaxTagMultiIdentifier_TheId, "MultiIdentifier", KaxTagMultiIdentifier_Context);\r
-const EbmlCallbacks KaxTagIdentifier::ClassInfos(KaxTagIdentifier::Create, KaxTagIdentifier_TheId, "Identifier", KaxTagIdentifier_Context);\r
-const EbmlCallbacks KaxTagMultiIdentifierType::ClassInfos(KaxTagMultiIdentifierType::Create, KaxTagMultiIdentifierType_TheId, "TagMultiIdentifierType", KaxTagMultiIdentifierType_Context);\r
-const EbmlCallbacks KaxTagMultiIdentifierBinary::ClassInfos(KaxTagMultiIdentifierBinary::Create, KaxTagMultiIdentifierBinary_TheId, "MultiIdentifierBinary", KaxTagMultiIdentifierBinary_Context);\r
-const EbmlCallbacks KaxTagMultiIdentifierString::ClassInfos(KaxTagMultiIdentifierString::Create, KaxTagMultiIdentifierString_TheId, "MultiIdentifierString", KaxTagMultiIdentifierString_Context);\r
-\r
-const EbmlCallbacks KaxTagMultiLegal::ClassInfos(KaxTagMultiLegal::Create, KaxTagMultiLegal_TheId, "MultiLegal", KaxTagMultiLegal_Context);\r
-const EbmlCallbacks KaxTagLegal::ClassInfos(KaxTagLegal::Create, KaxTagLegal_TheId, "Legal", KaxTagLegal_Context);\r
-const EbmlCallbacks KaxTagMultiLegalType::ClassInfos(KaxTagMultiLegalType::Create, KaxTagMultiLegalType_TheId, "KaxTagMultiLegalType", KaxTagMultiLegalType_Context);\r
-const EbmlCallbacks KaxTagMultiLegalContent::ClassInfos(KaxTagMultiLegalContent::Create, KaxTagMultiLegalContent_TheId, "TagMultiLegalContent", KaxTagMultiLegalContent_Context);\r
-const EbmlCallbacks KaxTagMultiLegalURL::ClassInfos(KaxTagMultiLegalURL::Create, KaxTagMultiLegalURL_TheId, "KaxTagMultiLegalURL", KaxTagMultiLegalURL_Context);\r
-const EbmlCallbacks KaxTagMultiLegalAddress::ClassInfos(KaxTagMultiLegalAddress::Create, KaxTagMultiLegalAddress_TheId, "KaxTagMultiLegalAddress", KaxTagMultiLegalAddress_Context);\r
-\r
-const EbmlCallbacks KaxTagMultiTitle::ClassInfos(KaxTagMultiTitle::Create, KaxTagMultiTitle_TheId, "MultiEntity", KaxTagMultiTitle_Context);\r
-const EbmlCallbacks KaxTagTitle::ClassInfos(KaxTagTitle::Create, KaxTagTitle_TheId, "Entity", KaxTagTitle_Context);\r
-const EbmlCallbacks KaxTagMultiTitleType::ClassInfos(KaxTagMultiTitleType::Create, KaxTagMultiTitleType_TheId, "MultiTitleType", KaxTagMultiTitleType_Context);\r
-const EbmlCallbacks KaxTagMultiTitleName::ClassInfos(KaxTagMultiTitleName::Create, KaxTagMultiTitleName_TheId, "MultiTitleName", KaxTagMultiTitleName_Context);\r
-const EbmlCallbacks KaxTagMultiTitleSubTitle::ClassInfos(KaxTagMultiTitleSubTitle::Create, KaxTagMultiTitleSubTitle_TheId, "MultiTitleSubTitle", KaxTagMultiTitleSubTitle_Context);\r
-const EbmlCallbacks KaxTagMultiTitleEdition::ClassInfos(KaxTagMultiTitleEdition::Create, KaxTagMultiTitleEdition_TheId, "MultiTitleEdition", KaxTagMultiTitleEdition_Context);\r
-const EbmlCallbacks KaxTagMultiTitleAddress::ClassInfos(KaxTagMultiTitleAddress::Create, KaxTagMultiTitleAddress_TheId, "MultiTitleAddress", KaxTagMultiTitleAddress_Context);\r
-const EbmlCallbacks KaxTagMultiTitleURL::ClassInfos(KaxTagMultiTitleURL::Create, KaxTagMultiTitleURL_TheId, "MultiTitleURL", KaxTagMultiTitleURL_Context);\r
-const EbmlCallbacks KaxTagMultiTitleEmail::ClassInfos(KaxTagMultiTitleEmail::Create, KaxTagMultiTitleEmail_TheId, "MultiTitleEmail", KaxTagMultiTitleEmail_Context);\r
-const EbmlCallbacks KaxTagMultiTitleLanguage::ClassInfos(KaxTagMultiTitleLanguage::Create, KaxTagMultiTitleLanguage_TheId, "MultiTitleLanguage", KaxTagMultiTitleLanguage_Context);\r
-\r
-const EbmlCallbacks KaxTagMultiAttachment::ClassInfos(KaxTagMultiAttachment::Create, KaxTagMultiAttachment_TheId, "TagMultiAttachment", KaxTagMultiAttachment_Context);\r
-const EbmlCallbacks KaxTagAttachment::ClassInfos(KaxTagAttachment::Create, KaxTagAttachment_TheId, "TagAttachment", KaxTagAttachment_Context);\r
-const EbmlCallbacks KaxTagAttachmentID::ClassInfos(KaxTagAttachmentID::Create, KaxTagAttachmentID_TheId, "TagAttachmentID", KaxTagAttachmentID_Context);\r
+\r
+DEFINE_MKX_CONTEXT(KaxTagMultiGlobal);\r
+\r
+const EbmlSemanticContext & GetKaxTagsGlobal_Context()\r
+{\r
+       return Context_KaxTagMultiGlobal;\r
+}\r
+\r
+\r
+DEFINE_MKX_MASTER   (KaxTagMultiComment,           0x5B7B, 2, KaxTag, "MultiComment");\r
+DEFINE_MKX_STRING   (KaxTagMultiCommentName,       0x5F7D, 2, KaxTagMultiComment, "MultiCommentName");\r
+DEFINE_MKX_UNISTRING(KaxTagMultiCommentComments,   0x5F7C, 2, KaxTagMultiComment, "MultiCommentComments");\r
+DEFINE_MKX_STRING   (KaxTagMultiCommentLanguage, 0x22B59D, 3, KaxTagMultiComment, "MultiCommentLanguage");\r
+\r
+DEFINE_xxx_MASTER   (KaxTagMultiCommercial,        0x4DC7, 2, KaxTag, "MultiCommercial", GetKaxTagsGlobal_Context);\r
+DEFINE_xxx_MASTER   (KaxTagCommercial,             0x4EC7, 2, KaxTagMultiCommercial, "Commercial", GetKaxTagsGlobal_Context);\r
+DEFINE_MKX_UINTEGER (KaxTagMultiCommercialType,    0x5BD7, 2, KaxTagCommercial, "MultiCommercialType");\r
+DEFINE_MKX_UNISTRING(KaxTagMultiCommercialAddress, 0x5BBB, 2, KaxTagCommercial, "MultiCommercialAddress");\r
+DEFINE_MKX_STRING   (KaxTagMultiCommercialURL,     0x5BDA, 2, KaxTagCommercial, "MultiCommercialURL");\r
+DEFINE_MKX_STRING   (KaxTagMultiCommercialEmail,   0x5BC0, 2, KaxTagCommercial, "MultiCommercialEmail");\r
+DEFINE_xxx_MASTER   (KaxTagMultiPrice,             0x5BC3, 2, KaxTagCommercial, "MultiPrice", GetKaxTagsGlobal_Context);\r
+DEFINE_MKX_STRING   (KaxTagMultiPriceCurrency,     0x5B6C, 2, KaxTagMultiPrice, "MultiPriceCurrency");\r
+DEFINE_MKX_FLOAT    (KaxTagMultiPriceAmount,       0x5B6E, 2, KaxTagMultiPrice, "MultiPriceAmount");\r
+DEFINE_MKX_DATE     (KaxTagMultiPricePriceDate,    0x5B6F, 2, KaxTagMultiPrice, "MultiPricePriceDate");\r
+\r
+DEFINE_xxx_MASTER   (KaxTagMultiDate,              0x4DC8, 2, KaxTag, "MultiDate", GetKaxTagsGlobal_Context);\r
+DEFINE_xxx_MASTER   (KaxTagDate,                   0x4EC8, 2, KaxTagMultiDate, "Date", GetKaxTagsGlobal_Context);\r
+DEFINE_MKX_UINTEGER (KaxTagMultiDateType,          0x5BD8, 2, KaxTagDate, "MultiDateType");\r
+DEFINE_MKX_DATE     (KaxTagMultiDateDateBegin,     0x4460, 2, KaxTagDate, "MultiDateDateBegin");\r
+DEFINE_MKX_DATE     (KaxTagMultiDateDateEnd,       0x4462, 2, KaxTagDate, "MultiDateDateEnd");\r
+\r
+DEFINE_xxx_MASTER   (KaxTagMultiEntity,            0x4DC9, 2, KaxTag, "MultiEntity", GetKaxTagsGlobal_Context);\r
+DEFINE_xxx_MASTER   (KaxTagEntity,                 0x4EC9, 2, KaxTagMultiEntity, "Entity", GetKaxTagsGlobal_Context);\r
+DEFINE_MKX_UINTEGER (KaxTagMultiEntityType,        0x5BD9, 2, KaxTagEntity, "MultiEntityType");\r
+DEFINE_MKX_UNISTRING(KaxTagMultiEntityName,        0x5BED, 2, KaxTagEntity, "MultiEntityName");\r
+DEFINE_MKX_STRING   (KaxTagMultiEntityURL,         0x5BDB, 2, KaxTagEntity, "MultiEntityURL");\r
+DEFINE_MKX_STRING   (KaxTagMultiEntityEmail,       0x5BC1, 2, KaxTagEntity, "MultiEntityEmail");\r
+DEFINE_MKX_UNISTRING(KaxTagMultiEntityAddress,     0x5BDC, 2, KaxTagEntity, "MultiEntityAddress");\r
+\r
+DEFINE_xxx_MASTER   (KaxTagMultiIdentifier,        0x4DC6, 2, KaxTag, "MultiIdentifier", GetKaxTagsGlobal_Context);\r
+DEFINE_xxx_MASTER   (KaxTagIdentifier,             0x4EC6, 2, KaxTagMultiIdentifier, "Identifier", GetKaxTagsGlobal_Context);\r
+DEFINE_MKX_UINTEGER (KaxTagMultiIdentifierType,    0x5BAD, 2, KaxTagIdentifier, "MultiIdentifierType");\r
+DEFINE_MKX_BINARY   (KaxTagMultiIdentifierBinary,  0x6B67, 2, KaxTagIdentifier, "MultiIdentifierBinary");\r
+DEFINE_MKX_UNISTRING(KaxTagMultiIdentifierString,  0x6B68, 2, KaxTagIdentifier, "MultiIdentifierString");\r
+\r
+DEFINE_xxx_MASTER   (KaxTagMultiLegal,             0x4DC5, 2, KaxTag, "MultiLegal", GetKaxTagsGlobal_Context);\r
+DEFINE_xxx_MASTER   (KaxTagLegal,                  0x4EC5, 2, KaxTagMultiLegal, "Legal", GetKaxTagsGlobal_Context);\r
+DEFINE_MKX_UINTEGER (KaxTagMultiLegalType,         0x5BBD, 2, KaxTagLegal, "MultiLegalType");\r
+DEFINE_MKX_UNISTRING(KaxTagMultiLegalContent,      0x5BB2, 2, KaxTagLegal, "MultiLegalContent");\r
+DEFINE_MKX_STRING   (KaxTagMultiLegalURL,          0x5B34, 2, KaxTagLegal, "MultiLegalURL");\r
+DEFINE_MKX_UNISTRING(KaxTagMultiLegalAddress,      0x5B9B, 2, KaxTagLegal, "MultiLegalAddress");\r
+\r
+DEFINE_xxx_MASTER   (KaxTagMultiTitle,             0x4DC4, 2, KaxTag, "MultiTitle", GetKaxTagsGlobal_Context);\r
+DEFINE_xxx_MASTER   (KaxTagTitle,                  0x4EC4, 2, KaxTagMultiTitle, "Title", GetKaxTagsGlobal_Context);\r
+DEFINE_MKX_UINTEGER (KaxTagMultiTitleType,         0x5B7D, 2, KaxTagTitle, "MultiTitleType");\r
+DEFINE_MKX_UNISTRING(KaxTagMultiTitleName,         0x5BB9, 2, KaxTagTitle, "MultiTitleName");\r
+DEFINE_MKX_UNISTRING(KaxTagMultiTitleSubTitle,     0x5B5B, 2, KaxTagTitle, "MultiTitleSubTitle");\r
+DEFINE_MKX_UNISTRING(KaxTagMultiTitleEdition,      0x5BAE, 2, KaxTagTitle, "MultiTitleEdition");\r
+DEFINE_MKX_UNISTRING(KaxTagMultiTitleAddress,      0x5B33, 2, KaxTagTitle, "MultiTitleAddress");\r
+DEFINE_MKX_STRING   (KaxTagMultiTitleURL,          0x5BA9, 2, KaxTagTitle, "MultiTitleURL");\r
+DEFINE_MKX_STRING   (KaxTagMultiTitleEmail,        0x5BC9, 2, KaxTagTitle, "MultiTitleEmail");\r
+DEFINE_MKX_STRING   (KaxTagMultiTitleLanguage,   0x22B59E, 3, KaxTagTitle, "MultiTitleLanguage");\r
+\r
+DEFINE_xxx_MASTER   (KaxTagMultiAttachment,        0x4DC3, 2, KaxTag, "MultiAttachment", GetKaxTagsGlobal_Context);\r
+DEFINE_xxx_MASTER   (KaxTagAttachment,             0x4EC3, 2, KaxTagMultiAttachment, "Attachment", GetKaxTagsGlobal_Context);\r
+DEFINE_MKX_UINTEGER (KaxTagAttachmentID,           0x5BA0, 2, KaxTagAttachment, "AttachmentID");\r
 \r
 KaxTagMultiComment::KaxTagMultiComment()\r
        :EbmlMaster(KaxTagMultiComment_Context)\r
@@ -396,9 +284,4 @@ KaxTagAttachment::KaxTagAttachment()
        :EbmlMaster(KaxTagAttachment_Context)\r
 {}\r
 \r
-const EbmlSemanticContext & GetKaxTagsGlobal_Context()\r
-{\r
-       return KaxTagMultiGlobal_Context;\r
-}\r
-\r
 END_LIBMATROSKA_NAMESPACE\r