/* =========================================================================== Doom 3 BFG Edition GPL Source Code Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company. This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code"). Doom 3 BFG Edition Source Code is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Doom 3 BFG Edition Source Code is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Doom 3 BFG Edition Source Code. If not, see . In addition, the Doom 3 BFG Edition Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 BFG Edition Source Code. If not, please request a copy in writing from id Software at the address below. If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA. =========================================================================== */ #ifndef __DECLPDA_H__ #define __DECLPDA_H__ /* =============================================================================== idDeclPDA =============================================================================== */ class idDeclEmail : public idDecl { public: idDeclEmail() {} virtual size_t Size() const; virtual const char* DefaultDefinition() const; virtual bool Parse( const char* text, const int textLength, bool allowBinaryVersion ); virtual void FreeData(); virtual void Print() const; virtual void List() const; const char* GetFrom() const { return from; } const char* GetBody() const { return text; } const char* GetSubject() const { return subject; } const char* GetDate() const { return date; } const char* GetTo() const { return to; } private: idStr text; idStr subject; idStr date; idStr to; idStr from; }; class idDeclVideo : public idDecl { public: idDeclVideo() : preview( NULL ), video( NULL ), audio( NULL ) {}; virtual size_t Size() const; virtual const char* DefaultDefinition() const; virtual bool Parse( const char* text, const int textLength, bool allowBinaryVersion ); virtual void FreeData(); virtual void Print() const; virtual void List() const; const idMaterial* GetRoq() const { return video; } const idSoundShader* GetWave() const { return audio; } const char* GetVideoName() const { return videoName; } const char* GetInfo() const { return info; } const idMaterial* GetPreview() const { return preview; } private: const idMaterial* preview; const idMaterial* video; idStr videoName; idStr info; const idSoundShader* audio; }; class idDeclAudio : public idDecl { public: idDeclAudio() : audio( NULL ) {}; virtual size_t Size() const; virtual const char* DefaultDefinition() const; virtual bool Parse( const char* text, const int textLength, bool allowBinaryVersion ); virtual void FreeData(); virtual void Print() const; virtual void List() const; const char* GetAudioName() const { return audioName; } const idSoundShader* GetWave() const { return audio; } const char* GetInfo() const { return info; } private: const idSoundShader* audio; idStr audioName; idStr info; }; class idDeclPDA : public idDecl { public: idDeclPDA() { originalEmails = originalVideos = 0; }; virtual size_t Size() const; virtual const char* DefaultDefinition() const; virtual bool Parse( const char* text, const int textLength, bool allowBinaryVersion ); virtual void FreeData(); virtual void Print() const; virtual void List() const; virtual void AddVideo( const idDeclVideo* video, bool unique = true ) const { if( unique ) { videos.AddUnique( video ); } else { videos.Append( video ); } } virtual void AddAudio( const idDeclAudio* audio, bool unique = true ) const { if( unique ) { audios.AddUnique( audio ); } else { audios.Append( audio ); } } virtual void AddEmail( const idDeclEmail* email, bool unique = true ) const { if( unique ) { emails.AddUnique( email ); } else { emails.Append( email ); } } virtual void RemoveAddedEmailsAndVideos() const; virtual const int GetNumVideos() const { return videos.Num(); } virtual const int GetNumAudios() const { return audios.Num(); } virtual const int GetNumEmails() const { return emails.Num(); } virtual const idDeclVideo* GetVideoByIndex( int index ) const { return ( index < 0 || index > videos.Num() ? NULL : videos[index] ); } virtual const idDeclAudio* GetAudioByIndex( int index ) const { return ( index < 0 || index > audios.Num() ? NULL : audios[index] ); } virtual const idDeclEmail* GetEmailByIndex( int index ) const { return ( index < 0 || index > emails.Num() ? NULL : emails[index] ); } virtual void SetSecurity( const char* sec ) const; const char* GetPdaName() const { return pdaName; } const char* GetSecurity() const { return security; } const char* GetFullName() const { return fullName; } const char* GetIcon() const { return icon; } const char* GetPost() const { return post; } const char* GetID() const { return id; } const char* GetTitle() const { return title; } private: mutable idList videos; mutable idList audios; mutable idList emails; idStr pdaName; idStr fullName; idStr icon; idStr id; idStr post; idStr title; mutable idStr security; mutable int originalEmails; mutable int originalVideos; }; #endif /* !__DECLPDA_H__ */