IMF MCA labels
[asdcplib.git] / src / MXF.h
index 3b901ac93ef9a9c6dd3fa51c8251749f4d3afdbd..cda4408fa0f6aa3e421836fcd0aa8df55f74b4bd 100755 (executable)
--- a/src/MXF.h
+++ b/src/MXF.h
@@ -33,6 +33,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #define _MXF_H_
 
 #include "MXFTypes.h"
+#include <algorithm>
 
 namespace ASDCP
 {
@@ -432,26 +433,39 @@ namespace ASDCP
        }
       };
 
+      typedef std::map<const std::string, const UL, ci_comp> mca_label_map_t;
+      bool decode_mca_string(const std::string& s, const mca_label_map_t& labels, const Dictionary& dict, const std::string& language, InterchangeObject_list_t&, ui32_t&);
+
       //
-      class MCAConfigParser : public InterchangeObject_list_t
+      class ASDCP_MCAConfigParser : public InterchangeObject_list_t
        {
-         typedef std::map<const std::string, const UL, ci_comp> label_map_t;
-         label_map_t label_map;
-         ui32_t m_ChannelCount;
+         KM_NO_COPY_CONSTRUCT(ASDCP_MCAConfigParser);
+         ASDCP_MCAConfigParser();
 
+       protected:
+         mca_label_map_t m_LabelMap;
+         ui32_t m_ChannelCount;
          const Dictionary*& m_Dict;
 
-         KM_NO_COPY_CONSTRUCT(MCAConfigParser);
-         MCAConfigParser();
          
        public:
-         MCAConfigParser(const Dictionary*&);
+         ASDCP_MCAConfigParser(const Dictionary*&);
          bool DecodeString(const std::string& s, const std::string& language = "en");
 
          // Valid only after a successful call to DecodeString
          ui32_t ChannelCount() const;
        };
 
+      //
+      class AS02_MCAConfigParser : public ASDCP_MCAConfigParser
+       {
+         KM_NO_COPY_CONSTRUCT(AS02_MCAConfigParser);
+         AS02_MCAConfigParser();
+         
+       public:
+         AS02_MCAConfigParser(const Dictionary*&);
+       };
+
     } // namespace MXF
 } // namespace ASDCP