This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/h/map

258 lines
8.8 KiB
Plaintext

///////////////////////////////////////////////////////////////////////////
// FILE: map (std::map definition)
//
// =========================================================================
//
// Open Watcom Project
//
// Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
//
// This file is automatically generated. Do not edit directly.
//
// =========================================================================
//
// Description: This header is part of the C++ standard library.
///////////////////////////////////////////////////////////////////////////
#ifndef _MAP_INCLUDED
#define _MAP_INCLUDED
#ifndef _ENABLE_AUTODEPEND
#pragma read_only_file;
#endif
#ifndef __cplusplus
#error This header file requires C++
#endif
#ifndef __RBTREE_H_INCLUDED
#include <_rbtree.h>
#endif
#ifndef _UTILITY_INCLUDED
#include <utility>
#endif
#ifndef _MEMORY_INCLUDED
#include <memory>
#endif
#ifndef _ITERATOR_INCLUDED
#include <iterator>
#endif
#ifndef _FUNCTIONAL_INCLUDED
#include <function>
#endif
namespace std {
/* ==================================================================
* class map
*/
template< class Key,
class Type,
class Compare = less< Key >,
class Allocator = allocator< pair< const Key, Type > >,
class Implementation = _ow::RedBlackTree< Key, Compare, Allocator,
_ow::TreePairWrapper< Key, Type > > >
class map : public Implementation{
public:
typedef Key key_type;
typedef Type mapped_type;
typedef pair<const Key, Type> value_type;
typedef Compare key_compare;
typedef Allocator allocator_type;
typedef typename Allocator::reference reference;
typedef typename Allocator::const_reference const_reference;
typedef typename Allocator::pointer pointer;
typedef typename Allocator::const_pointer const_pointer;
class value_compare : public binary_function< value_type, value_type, bool >{
friend class map;
protected:
Compare comp;
value_compare(Compare c) : comp(c){}
public:
bool operator()(const value_type& x, const value_type& y) const{
return comp(x.first, y.first);
}
};
public:
//ctors
explicit map( const Compare& comp = Compare(),
const Allocator& = Allocator() );
template< class InputIterator >
map( InputIterator first,
InputIterator last,
Compare const & c, //= Compare(),
Allocator const & a )// = Allocator() )
: Implementation( first, last, c, a )
{ }
map( map const & x ) : Implementation( x ) { };
~map(){}
map& operator=( map const & x ){Implementation::operator=( x ); return( *this );}
//element access (not in common with set)
Type& operator[](Key const &);
//iterators
//typedef Implementation::iterator iterator;
//typedef something const_iterator;
//typedef something size_type;
//typedef something difference_type;
//typedef std::reverse_iterator<iterator> reverse_iterator;
//typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
/* ---------------------------------------------------------------
* This is the interface defined in 14482 standard
* it is inherited from the implementation
* included here for reference
iterator begin();
const_iterator begin() const;
iterator end();
const_iterator end() const;
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
reverse_iterator rend();
const_reverse_iterator rend() const;
bool empty() const;
size_type size() const;
size_type max_size() const;
Type& operator[](const key_type& x);
pair<iterator,bool> insert(const value_type& v);
iterator insert(iterator position, const value_type& x);
template <class InputIterator>
void insert(InputIterator first, InputIterator last);
void erase(iterator position);
void erase(iterator first, iterator last);
size_type erase(const key_type& x);
void swap(map<Key,Type,Compare,Allocator>&);
void clear();
key_compare key_comp() const;
value_compare value_comp() const;
iterator find(const key_type& k);
const_terator find(const key_type& x) const;
size_type count(const key_type& x) const;
iterator lower_bound(const key_type& x):
const_iterator lower_bound(const key_type& x)const;
iterator upper_bound(const key_type& x);
const_iterator upper_bound(const key_type& x) const;
pair<iterato,iterator> equal_range(const key_type& x);
pair<const_iterator,const_iterator> equal_range(const key_type& x) const;
*/
}; //end template class map
/* ==================================================================
* map member functions
*/
/* ------------------------------------------------------------------
* ctors
*/
template <class Key, class Type, class Compare, class Allocator, class Implementation>
map<Key,Type,Compare,Allocator,Implementation>::map(
const Compare& c,
const Allocator& a ) : Implementation( c, a )
{
//cout<<"explicit map::ctor\n";
}
/* ------------------------------------------------------------------
* operator[]
* element access
*/
template< class Key, class Type, class Compare, class Allocator, class Implementation >
Type&
map< Key, Type, Compare, Allocator, Implementation >::operator[](Key const& k)
{
iterator it=( insert( value_type( k, Type() ) ) ).first;
return (*it).second;
}
template<class Key, class Type, class Compare, class Allocator>
bool operator==(const map<Key,Type,Compare,Allocator>& x,
const map<Key,Type,Compare,Allocator>& y);
template<class Key, class Type, class Compare, class Allocator>
bool operator!=(const map<Key,Type,Compare,Allocator>& x,
const map<Key,Type,Compare,Allocator>& y);
template<class Key, class Type, class Compare, class Allocator>
bool operator<(const map<Key,Type,Compare,Allocator>& x,
const map<Key,Type,Compare,Allocator>& y);
template<class Key, class Type, class Compare, class Allocator>
bool operator>(const map<Key,Type,Compare,Allocator>& x,
const map<Key,Type,Compare,Allocator>& y);
template<class Key, class Type, class Compare, class Allocator>
bool operator>=(const map<Key,Type,Compare,Allocator>& x,
const map<Key,Type,Compare,Allocator>& y);
template<class Key, class Type, class Compare, class Allocator>
bool operator<=(const map<Key,Type,Compare,Allocator>& x,
const map<Key,Type,Compare,Allocator>& y);
//specialized algo
template<class Key, class Type, class Compare, class Allocator>
void swap(map<Key,Type,Compare,Allocator>& x,
map<Key,Type,Compare,Allocator>& y);
/* ==================================================================
* class multimap
*/
template< class Key,
class Type,
class Compare = less< Key >,
class Allocator = allocator< pair< const Key, Type > >,
class Implementation = _ow::MultiListRBTree< Key, Compare, Allocator,
_ow::ListTreePairWrapper<Key, Type> > >
class multimap : public Implementation{
public:
typedef Key key_type;
typedef Type mapped_type;
typedef pair<const Key, Type> value_type;
typedef Compare key_compare;
typedef Allocator allocator_type;
typedef typename Allocator::reference reference;
typedef typename Allocator::const_reference const_reference;
typedef typename Allocator::pointer pointer;
typedef typename Allocator::const_pointer const_pointer;
class value_compare : public binary_function< value_type, value_type, bool >{
friend class multimap;
protected:
Compare comp;
value_compare(Compare c) : comp(c){}
public:
bool operator()(const value_type& x, const value_type& y) const{
return comp(x.first, y.first);
}
};
explicit multimap( const Compare& c = Compare(),
const Allocator& a = Allocator() ) : Implementation( c, a ) {}
multimap( multimap const & that ) : Implementation(that) {}
~multimap() {}
multimap& operator=( multimap const & x ){Implementation::operator=( x ); return( *this );}
}; //end template class multimap
} // namespace std
#endif