Skip to content

Commit

Permalink
added cpp tags support.
Browse files Browse the repository at this point in the history
  • Loading branch information
Arjun Comar committed Aug 4, 2011
1 parent b39569a commit 4f0f3da
Show file tree
Hide file tree
Showing 117 changed files with 70,177 additions and 41 deletions.
22 changes: 11 additions & 11 deletions c-support/templates/cpp.idioms.template
Original file line number Diff line number Diff line change
@@ -1,24 +1,23 @@
$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
== idioms.function ==
void<CURSOR>
|?FUNCTION_NAME| ( <+argument list+> )
{
void<CURSOR> |?FUNCTION_NAME| ( <+argument list+> ) {

<SPLIT> return <+return value+>;

} // ----- end of function |FUNCTION_NAME| -----
$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
== idioms.function-static ==
static void<CURSOR>
|?FUNCTION_NAME| ( <+argument list+> )
{
static void<CURSOR> |?FUNCTION_NAME| ( <+argument list+> ){

<SPLIT> return <+return value+>;

} // ----- end of static function |FUNCTION_NAME| -----
$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
== idioms.main ==
#include <cstdlib>

int
main ( int argc, char *argv[] )
{<CURSOR>
int main ( int argc, char *argv[] ) {<CURSOR>

<SPLIT> return EXIT_SUCCESS;
} // ---------- end of function main ----------
$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Expand All @@ -27,8 +26,9 @@ enum |?ENUM_NAME| {<CURSOR>
<SPLIT>}; // ---------- end of enum |ENUM_NAME| ----------
$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
== idioms.struct ==
struct |?STRUCT_NAME| {<CURSOR>
<SPLIT>}; // ---------- end of struct |STRUCT_NAME| ----------
typedef struct _|?STRUCT_NAME| {<CURSOR>

<SPLIT>} |STRUCT_NAME|; // ---------- end of struct |STRUCT_NAME| ----------
$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
== idioms.union ==
union |?UNION_NAME| {<CURSOR>
Expand Down
11,802 changes: 11,802 additions & 0 deletions cpp

Large diffs are not rendered by default.

70 changes: 70 additions & 0 deletions cpp_src/algorithm
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
// <algorithm> -*- C++ -*-

// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library 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 2, or (at your option)
// any later version.

// This library 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 this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.

// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

/*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Hewlett-Packard Company makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
*
* Copyright (c) 1996,1997
* Silicon Graphics Computer Systems, Inc.
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Silicon Graphics makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*/

/** @file include/algorithm
* This is a Standard C++ Library header.
*/

#ifndef _GLIBCXX_ALGORITHM
#define _GLIBCXX_ALGORITHM 1

#pragma GCC system_header

#include <bits/stl_algobase.h>
#include <bits/stl_construct.h>
#include <bits/stl_uninitialized.h>
#include <bits/stl_algo.h>

#endif /* _GLIBCXX_ALGORITHM */
163 changes: 163 additions & 0 deletions cpp_src/allocator.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
// Allocators -*- C++ -*-

// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library 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 2, or (at your option)
// any later version.

// This library 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 this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.

// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

/*
* Copyright (c) 1996-1997
* Silicon Graphics Computer Systems, Inc.
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Silicon Graphics makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*/

/** @file allocator.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/

#ifndef _ALLOCATOR_H
#define _ALLOCATOR_H 1

// Define the base class to std::allocator.
#include <bits/c++allocator.h>

#include <bits/cpp_type_traits.h> // for __is_empty

namespace std {

template<typename _Tp>
class allocator;

/// allocator<void> specialization.
template<>
class allocator<void>
{
public:
typedef size_t size_type;
typedef ptrdiff_t difference_type;
typedef void* pointer;
typedef const void* const_pointer;
typedef void value_type;

template<typename _Tp1>
struct rebind
{ typedef allocator<_Tp1> other; };
};

/**
* @brief The "standard" allocator, as per [20.4].
*
* Further details:
* http://gcc.gnu.org/onlinedocs/libstdc++/20_util/allocator.html
*/
template<typename _Tp>
class allocator: public __glibcxx_base_allocator<_Tp>
{
public:
typedef size_t size_type;
typedef ptrdiff_t difference_type;
typedef _Tp* pointer;
typedef const _Tp* const_pointer;
typedef _Tp& reference;
typedef const _Tp& const_reference;
typedef _Tp value_type;

template<typename _Tp1>
struct rebind
{ typedef allocator<_Tp1> other; };

allocator() throw() { }

allocator(const allocator& __a) throw()
: __glibcxx_base_allocator<_Tp>(__a) { }

template<typename _Tp1>
allocator(const allocator<_Tp1>&) throw() { }

~allocator() throw() { }

// Inherit everything else.
};

template<typename _T1, typename _T2>
inline bool
operator==(const allocator<_T1>&, const allocator<_T2>&)
{ return true; }

template<typename _Tp>
inline bool
operator==(const allocator<_Tp>&, const allocator<_Tp>&)
{ return true; }

template<typename _T1, typename _T2>
inline bool
operator!=(const allocator<_T1>&, const allocator<_T2>&)
{ return false; }

template<typename _Tp>
inline bool
operator!=(const allocator<_Tp>&, const allocator<_Tp>&)
{ return false; }

// Inhibit implicit instantiations for required instantiations,
// which are defined via explicit instantiations elsewhere.
// NB: This syntax is a GNU extension.
#if _GLIBCXX_EXTERN_TEMPLATE
extern template class allocator<char>;
extern template class allocator<wchar_t>;
#endif

// Undefine.
#undef __glibcxx_base_allocator

// To implement Option 3 of DR 431.
template<typename _Alloc, bool = std::__is_empty<_Alloc>::__value>
struct __alloc_swap
{ static void _S_do_it(_Alloc&, _Alloc&) { } };

template<typename _Alloc>
struct __alloc_swap<_Alloc, false>
{
static void
_S_do_it(_Alloc& __one, _Alloc& __two)
{
// Precondition: swappable allocators.
if (__one != __two)
swap(__one, __two);
}
};

} // namespace std

#endif
Loading

0 comments on commit 4f0f3da

Please sign in to comment.