head	1.2;
access;
symbols
	RELENG_9_1_0_RELEASE:1.1.2.2
	RELENG_9_1:1.1.2.2.0.2
	RELENG_9_1_BP:1.1.2.2
	RELENG_9:1.1.0.2;
locks; strict;
comment	@# @;


1.2
date	2013.04.28.00.41.54;	author svnexp;	state Exp;
branches;
next	1.1;

1.1
date	2011.11.25.20.59.04;	author theraven;	state Exp;
branches
	1.1.2.1;
next	;

1.1.2.1
date	2012.05.22.18.30.14;	author theraven;	state dead;
branches;
next	1.1.2.2;

1.1.2.2
date	2012.05.22.18.30.14;	author theraven;	state Exp;
branches;
next	1.1.2.3;

1.1.2.3
date	2013.05.11.17.01.44;	author svnexp;	state Exp;
branches;
next	1.1.2.4;

1.1.2.4
date	2014.03.05.20.01.45;	author svnexp;	state Exp;
branches;
next	;


desc
@@


1.2
log
@## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/249998
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
@
text
@// -*- C++ -*-
//===-------------------------- typeindex ---------------------------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_TYPEINDEX
#define _LIBCPP_TYPEINDEX

/*

    typeindex synopsis

namespace std
{

class type_index
{
public:
    type_index(const type_info& rhs) noexcept;

    bool operator==(const type_index& rhs) const noexcept;
    bool operator!=(const type_index& rhs) const noexcept;
    bool operator< (const type_index& rhs) const noexcept;
    bool operator<=(const type_index& rhs) const noexcept;
    bool operator> (const type_index& rhs) const noexcept;
    bool operator>=(const type_index& rhs) const noexcept;

    size_t hash_code() const noexcept;
    const char* name() const noexcept;
};

template <>
struct hash<type_index>
    : public unary_function<type_index, size_t>
{
    size_t operator()(type_index index) const noexcept;
};

}  // std

*/

#include <__config>
#include <typeinfo>
#include <__functional_base>

#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
#endif

_LIBCPP_BEGIN_NAMESPACE_STD

class _LIBCPP_TYPE_VIS type_index
{
    const type_info* __t_;
public:
    _LIBCPP_INLINE_VISIBILITY
    type_index(const type_info& __y) _NOEXCEPT : __t_(&__y) {}

    _LIBCPP_INLINE_VISIBILITY
    bool operator==(const type_index& __y) const _NOEXCEPT
        {return *__t_ == *__y.__t_;}
    _LIBCPP_INLINE_VISIBILITY
    bool operator!=(const type_index& __y) const _NOEXCEPT
        {return *__t_ != *__y.__t_;}
    _LIBCPP_INLINE_VISIBILITY
    bool operator< (const type_index& __y) const _NOEXCEPT
        {return  __t_->before(*__y.__t_);}
    _LIBCPP_INLINE_VISIBILITY
    bool operator<=(const type_index& __y) const _NOEXCEPT
        {return !__y.__t_->before(*__t_);}
    _LIBCPP_INLINE_VISIBILITY
    bool operator> (const type_index& __y) const _NOEXCEPT
        {return  __y.__t_->before(*__t_);}
    _LIBCPP_INLINE_VISIBILITY
    bool operator>=(const type_index& __y) const _NOEXCEPT
        {return !__t_->before(*__y.__t_);}

    _LIBCPP_INLINE_VISIBILITY
    size_t hash_code() const _NOEXCEPT {return __t_->hash_code();}
    _LIBCPP_INLINE_VISIBILITY
    const char* name() const _NOEXCEPT {return __t_->name();}
};

template <class _Tp> struct _LIBCPP_TYPE_VIS hash;

template <>
struct _LIBCPP_TYPE_VIS hash<type_index>
    : public unary_function<type_index, size_t>
{
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(type_index __index) const _NOEXCEPT
        {return __index.hash_code();}
};

_LIBCPP_END_NAMESPACE_STD

#endif  // _LIBCPP_TYPEINDEX
@


1.1
log
@SVN rev 227983 on 2011-11-25 20:59:04Z by theraven

Import libc++ / libcxxrt into base.  Not build by default yet (use
MK_LIBCPLUSPLUS=yes to enable).  This is a work-in-progress.  It works for
me, but is not guaranteed to work for anyone else and may eat your dog.

To build C++ using libc++, add -stdlib=libc++ to your CXX and LD flags.

Bug reports welcome, bug fixes even more welcome...

Approved by:	dim (mentor)
@
text
@d58 1
a58 1
class _LIBCPP_VISIBLE type_index
d90 1
a90 1
template <class _Tp> struct _LIBCPP_VISIBLE hash;
d93 1
a93 1
struct _LIBCPP_VISIBLE hash<type_index>
@


1.1.2.1
log
@file typeindex was added on branch RELENG_9 on 2012-05-22 18:32:26 +0000
@
text
@d1 103
@


1.1.2.2
log
@SVN rev 235798 on 2012-05-22 18:30:14Z by theraven

Merged libcxxrt and libc++.  Now available for testing on 9-stable with
-stdlib=libc++.  Changes to libstdc++ not yet merged, so it is not yet possible
to mix libstdc++ and libc++ in the same program.

Merged revisions: 226702,226785,227006,227755,227983,227987,228531,228630,228761,229067,230127,232950,233098,234715-234716,234772
@
text
@a0 103
// -*- C++ -*-
//===-------------------------- typeindex ---------------------------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_TYPEINDEX
#define _LIBCPP_TYPEINDEX

/*

    typeindex synopsis

namespace std
{

class type_index
{
public:
    type_index(const type_info& rhs) noexcept;

    bool operator==(const type_index& rhs) const noexcept;
    bool operator!=(const type_index& rhs) const noexcept;
    bool operator< (const type_index& rhs) const noexcept;
    bool operator<=(const type_index& rhs) const noexcept;
    bool operator> (const type_index& rhs) const noexcept;
    bool operator>=(const type_index& rhs) const noexcept;

    size_t hash_code() const noexcept;
    const char* name() const noexcept;
};

template <>
struct hash<type_index>
    : public unary_function<type_index, size_t>
{
    size_t operator()(type_index index) const noexcept;
};

}  // std

*/

#include <__config>
#include <typeinfo>
#include <__functional_base>

#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
#endif

_LIBCPP_BEGIN_NAMESPACE_STD

class _LIBCPP_VISIBLE type_index
{
    const type_info* __t_;
public:
    _LIBCPP_INLINE_VISIBILITY
    type_index(const type_info& __y) _NOEXCEPT : __t_(&__y) {}

    _LIBCPP_INLINE_VISIBILITY
    bool operator==(const type_index& __y) const _NOEXCEPT
        {return *__t_ == *__y.__t_;}
    _LIBCPP_INLINE_VISIBILITY
    bool operator!=(const type_index& __y) const _NOEXCEPT
        {return *__t_ != *__y.__t_;}
    _LIBCPP_INLINE_VISIBILITY
    bool operator< (const type_index& __y) const _NOEXCEPT
        {return  __t_->before(*__y.__t_);}
    _LIBCPP_INLINE_VISIBILITY
    bool operator<=(const type_index& __y) const _NOEXCEPT
        {return !__y.__t_->before(*__t_);}
    _LIBCPP_INLINE_VISIBILITY
    bool operator> (const type_index& __y) const _NOEXCEPT
        {return  __y.__t_->before(*__t_);}
    _LIBCPP_INLINE_VISIBILITY
    bool operator>=(const type_index& __y) const _NOEXCEPT
        {return !__t_->before(*__y.__t_);}

    _LIBCPP_INLINE_VISIBILITY
    size_t hash_code() const _NOEXCEPT {return __t_->hash_code();}
    _LIBCPP_INLINE_VISIBILITY
    const char* name() const _NOEXCEPT {return __t_->name();}
};

template <class _Tp> struct _LIBCPP_VISIBLE hash;

template <>
struct _LIBCPP_VISIBLE hash<type_index>
    : public unary_function<type_index, size_t>
{
    _LIBCPP_INLINE_VISIBILITY
    size_t operator()(type_index __index) const _NOEXCEPT
        {return __index.hash_code();}
};

_LIBCPP_END_NAMESPACE_STD

#endif  // _LIBCPP_TYPEINDEX
@


1.1.2.3
log
@## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/250514
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
@
text
@d58 1
a58 1
class _LIBCPP_TYPE_VIS type_index
d90 1
a90 1
template <class _Tp> struct _LIBCPP_TYPE_VIS hash;
d93 1
a93 1
struct _LIBCPP_TYPE_VIS hash<type_index>
@


1.1.2.4
log
@## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/262801
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
@
text
@d58 1
a58 1
class _LIBCPP_TYPE_VIS_ONLY type_index
d90 1
a90 1
template <class _Tp> struct _LIBCPP_TYPE_VIS_ONLY hash;
d93 1
a93 1
struct _LIBCPP_TYPE_VIS_ONLY hash<type_index>
@


