|
Packit |
c32a2d |
/*
|
|
Packit |
c32a2d |
mpg123clr: MPEG Audio Decoder library Common Language Runtime version.
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
copyright 2009 by Malcolm Boczek - free software under the terms of the LGPL 2.1
|
|
Packit |
c32a2d |
mpg123clr.dll is a derivative work of libmpg123 - all original mpg123 licensing terms apply.
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
All rights to this work freely assigned to the mpg123 project.
|
|
Packit |
c32a2d |
*/
|
|
Packit |
c32a2d |
/*
|
|
Packit |
c32a2d |
libmpg123: MPEG Audio Decoder library
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
copyright 1995-2008 by the mpg123 project - free software under the terms of the LGPL 2.1
|
|
Packit |
c32a2d |
see COPYING and AUTHORS files in distribution or http://mpg123.org
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
*/
|
|
Packit |
c32a2d |
/*
|
|
Packit |
c32a2d |
1.8.1.0 04-Aug-09 Initial release.
|
|
Packit |
c32a2d |
*/
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
#pragma once
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
#pragma warning(disable : 4635)
|
|
Packit |
c32a2d |
#include "mpg123.h"
|
|
Packit |
c32a2d |
#pragma warning(default : 4635)
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
#include "string.h"
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
#include <string>
|
|
Packit |
c32a2d |
#include <iostream>
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
#include <vcclr.h>
|
|
Packit |
c32a2d |
using namespace std;
|
|
Packit |
c32a2d |
using namespace System;
|
|
Packit |
c32a2d |
using namespace System::Runtime::InteropServices;
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
namespace mpg123clr
|
|
Packit |
c32a2d |
{
|
|
Packit |
c32a2d |
// Recommended usage when creating reference type on the managed heap (not using stack semantics
|
|
Packit |
c32a2d |
// for reference types...) [see Destructors and Finalizers in Visual C++]
|
|
Packit |
c32a2d |
//
|
|
Packit |
c32a2d |
// A ^ myA = gcnew A;
|
|
Packit |
c32a2d |
// try
|
|
Packit |
c32a2d |
// {
|
|
Packit |
c32a2d |
// use myA
|
|
Packit |
c32a2d |
// }
|
|
Packit |
c32a2d |
// finally
|
|
Packit |
c32a2d |
// {
|
|
Packit |
c32a2d |
// delete myA;
|
|
Packit |
c32a2d |
// }
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
///<summary>Wrapper for mpg123_text.</summary>
|
|
Packit |
c32a2d |
[StructLayout(LayoutKind::Sequential, CharSet=CharSet::Ansi)]
|
|
Packit |
c32a2d |
public ref struct mpg123text
|
|
Packit |
c32a2d |
{
|
|
Packit |
c32a2d |
private:
|
|
Packit |
c32a2d |
mpg123_text* sb;
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
internal:
|
|
Packit |
c32a2d |
///<summary>Constructor.
|
|
Packit |
c32a2d |
///<para>Recommended usage: only as tracking marker to existing mpg123_text objects.</para></summary>
|
|
Packit |
c32a2d |
mpg123text(void);
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
///<summary>Reference Constructor.
|
|
Packit |
c32a2d |
///<para>Recommended usage: only as tracking marker to existing mpg123_text objects.</para></summary>
|
|
Packit |
c32a2d |
mpg123text(mpg123_text* sb);
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
protected:
|
|
Packit |
c32a2d |
///<summary>Finalizer.
|
|
Packit |
c32a2d |
///<para>Does nothing. mpg123text can only be instanced as a reference to an existing mpg123_text object (which is responsible for its own disposal.</para></summary>
|
|
Packit |
c32a2d |
/// Implementation of CLR Finalize().
|
|
Packit |
c32a2d |
!mpg123text(void);
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
public:
|
|
Packit |
c32a2d |
///<summary>Destructor. Used for final object deletion.
|
|
Packit |
c32a2d |
///<para>Calls finalizer.</para>
|
|
Packit |
c32a2d |
///</summary>
|
|
Packit |
c32a2d |
/// Implementation of CLR Dispose().
|
|
Packit |
c32a2d |
/// ~Destructor and !Finalizer are the prescribed implementation of Dispose() and Finalize().
|
|
Packit |
c32a2d |
/// See Destructors and Finalizers in Visual C++
|
|
Packit |
c32a2d |
~mpg123text(void);
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
///<summary>Get a string representation of the 3-letter language code.
|
|
Packit |
c32a2d |
///<para>Only COMM and USLT have a language element.</para>
|
|
Packit |
c32a2d |
///<para>Property returns string representation of the 3-letter language code.</para>
|
|
Packit |
c32a2d |
///</summary>
|
|
Packit |
c32a2d |
///<value>String representation of the 3-letter language code.</value>
|
|
Packit |
c32a2d |
property String^ lang{String^ __clrcall get();}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
///<summary>Get a string representation of the ID3v2 field id. (i.e. TALB, TPE2 etc.)
|
|
Packit |
c32a2d |
///<para>Property returns string representation of the ID3v2 field id. (i.e. TALB, TPE2 etc.)</para>
|
|
Packit |
c32a2d |
///</summary>
|
|
Packit |
c32a2d |
///<value>String representation of the ID3v2 field id. (i.e. TALB, TPE2 etc.)</value>
|
|
Packit |
c32a2d |
property String^ id{String^ __clrcall get();}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
///<summary>Get a string representation of the description field.
|
|
Packit |
c32a2d |
///<para>Only COMM and TXXX have a description element.</para>
|
|
Packit |
c32a2d |
///<para>Property returns string representation of the description field.</para>
|
|
Packit |
c32a2d |
///</summary>
|
|
Packit |
c32a2d |
///<value>String representation of the description field.</value>
|
|
Packit |
c32a2d |
property String^ description{String^ __clrcall get();}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
///<summary>Get a string representation of the ID3 tag text.
|
|
Packit |
c32a2d |
///<para>This is for COMM, TXXX and all the other text fields.</para>
|
|
Packit |
c32a2d |
///<para>Property returns string representation of the ID3 tag text.</para>
|
|
Packit |
c32a2d |
///</summary>
|
|
Packit |
c32a2d |
///<value>String representation of the ID3 tag text.</value>
|
|
Packit |
c32a2d |
property String^ text{String^ __clrcall get();}
|
|
Packit |
c32a2d |
|
|
Packit |
c32a2d |
};
|
|
Packit |
c32a2d |
}
|