base_view.h
//
// Copyright (C) 2008-2012 Artyom Beilis (Tonkikh) <artyomtnk@yahoo.com>
//
// See accompanying file COPYING.TXT file for licensing details.
//
#ifndef CPPCMS_BASE_VIEW_H
#define CPPCMS_BASE_VIEW_H
#include <cppcms/defs.h>
#include <ostream>
#include <sstream>
#include <string>
#include <map>
#include <ctime>
#include <memory>
#include <booster/hold_ptr.h>
#include <cppcms/base_content.h>
#include <booster/noncopyable.h>
#include <cppcms/config.h>
namespace cppcms {
class CPPCMS_API base_view : booster::noncopyable {
public:
virtual void render();
virtual ~base_view();
protected:
base_view(std::ostream &out);
std::ostream &out();
private:
struct _data;
booster::hold_ptr<_data> d;
};
} // cppcms
#if defined __clang__
# if __has_feature(cxx_auto_type)
# define CPPCMS_HAVE_AUTO_TYPE
# endif
#elif defined __GNUC__
# if (__GNUC__ >= 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) && defined(__GXX_EXPERIMENTAL_CXX0X__)
# define CPPCMS_HAVE_AUTO_TYPE
# endif
#elif defined _MSC_VER
# if _MSC_VER >= 1600
# define CPPCMS_HAVE_AUTO_TYPE
# endif
#elif defined __INTEL_COMPILER
# if __INTEL_COMPILER >= 1200 && defined(__GXX_EXPERIMENTAL_CXX0X__)
# define CPPCMS_HAVE_AUTO_TYPE
# endif
#elif defined CPPCMS_HAVE_CPP_0X_AUTO // detected at compilation stage
# define CPPCMS_HAVE_AUTO_TYPE
#endif
#if defined(CPPCMS_HAVE_AUTO_TYPE)
# define CPPCMS_TYPEOF(x) auto
#elif defined(CPPCMS_HAVE_CPP_0X_DECLTYPE)
# define CPPCMS_TYPEOF(x) decltype(x)
#elif defined(CPPCMS_HAVE_GCC_TYPEOF)
# define CPPCMS_TYPEOF(x) typeof(x)
#elif defined(CPPCMS_HAVE_UNDERSCORE_TYPEOF)
# define CPPCMS_TYPEOF(x) __typeof__(x)
#else
# define CPPCMS_TYPEOF(x) automatic_type_identification_is_not_supported_by_this_compiler
#endif
#endif
booster::hold_ptr< _data >
cppcms::base_view
This class is base class for all views (skins) rendered by CppCMS template engine.
Definition: base_view.h:35
booster::noncopyable
This class makes impossible to copy any class derived from this one.
Definition: noncopyable.h:15