story.h

Go to the documentation of this file.
00001 /*
00002  * story.h
00003  *
00004  * Copyright (C) 2008,2009  Thomas A. Vaughan
00005  * All rights reserved.
00006  *
00007  *
00008  * Redistribution and use in source and binary forms, with or without
00009  * modification, are permitted provided that the following conditions are met:
00010  *     * Redistributions of source code must retain the above copyright
00011  *       notice, this list of conditions and the following disclaimer.
00012  *     * Redistributions in binary form must reproduce the above copyright
00013  *       notice, this list of conditions and the following disclaimer in the
00014  *       documentation and/or other materials provided with the distribution.
00015  *     * Neither the name of the <organization> nor the
00016  *       names of its contributors may be used to endorse or promote products
00017  *       derived from this software without specific prior written permission.
00018  *
00019  * THIS SOFTWARE IS PROVIDED BY THOMAS A. VAUGHAN ''AS IS'' AND ANY
00020  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00021  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00022  * DISCLAIMED. IN NO EVENT SHALL THOMAS A. VAUGHAN BE LIABLE FOR ANY
00023  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00024  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00025  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00026  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00027  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00028  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00029  *
00030  *
00031  */
00032 
00033 #ifndef AESOP_STORY_H__
00034 #define AESOP_STORY_H__
00035 
00036 // includes --------------------------------------------------------------------
00037 #include "common/common.h"
00038 #include "i18n/i18n.h"
00039 #include "threadsafe/smart_ptr.h"
00040 
00041 
00042 // forward decl
00043 class Datahash;
00044 
00045 namespace story {
00046 
00060 
00065 
00066 
00067 
00068 
00069 
00070 
00071 
00072 
00073 
00074 
00075 
00076 
00077 
00078 
00079 
00080 
00081 
00082 
00083 
00084 
00085 
00086 
00087 
00088 
00089 
00090 
00091 class Story {
00092 public:
00093         // virtual destructor --------------------------------------------------
00094         virtual ~Story(void) throw();
00095 
00096         // story::Story class interface methods --------------------------------
00097 
00099         virtual const char * getUuid(void) const throw() = 0;
00100 
00102         virtual const char * getTitle(void) const throw() = 0;
00103 
00105         virtual const char * getStartingMapId(void) const throw() = 0;
00106 
00112         virtual std::string getObjectPath(IN const char * objectType,
00113                                 IN const char * objectId) const = 0;
00114 
00117         virtual smart_ptr<i18n::Manager> getI18nManager(IN const char * path) = 0;
00118 
00119         // static factory methods ----------------------------------------------
00120         static smart_ptr<Story> create(IN const char * locale,
00121                                 IN const char * story_dir);
00122 };
00123 
00124 
00125 };      // story namespace
00126 
00127 #endif  // AESOP_STORY_H__
00128