Listing 3
struct CFileInfo {
CString FileName;
short Quality;
};
struct CSongInfo {
CString SongTitle;
CString AlbumTitle;
float Duration;
CFileInfo MP3Info;
};
typedef CArray<CSongInfo, CSongInfo> CSongInfoArray;
public __value struct FileInfo {
FileInfo() {}
// Init-FROM constructor for MFC->.NET conversion
FileInfo(const CFileInfo& fileInfo)
{
FileName = fileInfo.FileName;
Quality = fileInfo.Quality;
}
String* FileName;
short Quality;
};
// "CONVERT-TO operator" for .NET->MFC conversion
CFileInfo ToCFileInfo(FileInfo myFileInfo)
{
CFileInfo FileInfo;
FileInfo.FileName = myFileInfo.FileName;
FileInfo.Quality = myFileInfo.Quality;
return FileInfo;
}
public __value struct SongInfo {
SongInfo() {}
// Init-FROM constructor for MFC->.NET conversion
SongInfo(const CSongInfo& songInfo)
{
SongTitle = songInfo.SongTitle;
AlbumTitle = songInfo.AlbumTitle;
Duration = songInfo.Duration;
MP3Info = songInfo.MP3Info;
}
String* SongTitle;
String* AlbumTitle;
float Duration;
FileInfo MP3Info;
};
// "CONVERT-TO operator" for .NET->MFC conversion
CSongInfo ToCSongInfo(SongInfo mySongInfo)
{
CSongInfo SongInfo;
SongInfo.SongTitle = mySongInfo.SongTitle;
SongInfo.AlbumTitle = mySongInfo.AlbumTitle;
SongInfo.Duration = mySongInfo.Duration;
SongInfo.MP3Info = ToCFileInfo(mySongInfo.MP3Info);
return SongInfo;
}