No Description

Git Admin 2eda34aa6c Updated 2018-10-06 5 years ago
LICENSE 043faa15ba Initial commit 10 years ago
README.md 2eda34aa6c Updated 2018-10-06 5 years ago
std.stcgafpmufdcppp.cpp.tags 2eda34aa6c Updated 2018-10-06 5 years ago

README.md

geany-std.cpp.tags

Geany .tags file for the Standard Templated Containers, Generic Algorithms, Functional Programming and Miscellaneous Utilities Framework for the Development of C-Plus-Plus Programs.

The what?

The Standard Templated Containers, Generic Algorithms, Functional Programming and Miscellaneous Utilities Framework for the Development of C-Plus-Plus Programs.

...Perhaps some explaining is in order.

There is a large set of utilities provided by the C++ Standard. These go from generic algorithms such as copy and find, to generic-use containers such as vector and list, to functionoid binders for purposes of functional programming such as bind and cref, and beyond.

Over time, there have been internet wars over what to call this set of standard utilities. Some people call them the "stdlib", some other people call them the "STL", with a defined meaning, and some other people also call them the "STL" but refer to a basis provided by SGI, and yet some other people talk about the "Standard STL" (more or less in the same vein as the ATM Machines in which you insert a PIN Number).

There was a small, in-joke contest in the Freenode #C++ Channel (link to be provided) to produce the longest, unambiguous term to refer to this set of utilities, during which I came up with the acronym STCGAFPMUFDCPPP, which I've adopted in all my code and documentation ever since (but I don't have much hope of it ever catching up).

As such, when I decided to create a tags file for this set of utilities, of course I ended up using this name for them.

Why?

Because Geany lacks one, and coming up with a sensible one is hard to do, and having a handy reference of the features the C++ Standard provides is always good, considering the language is evolving with a new Standard being released in 2011 and yet another one in 2014.

How?

Just like any other .tags file for Geany.

Just copy this into your config directory's tags subdirectory.

When?

Like, right now. Just clone the repo (or extract this same tags file from the official Geany Wiki).

What is included?

The public function interfaces from the following C++ headers are provided in the tags file:

  • <algorithm> - generic algorithms to copy sequences, find elements, perform transformations, etc.
  • <functional> - reference wrappers, function object and functionoid binders such as mem_fn.
  • <ios>, <iostream> and <iomanip> - the various stream state functions.
  • <iterator> - the iterator helper conveniences such as next and prev, as well as the upcoming C++14 additions.
  • <memory> - the make_shared convenience and various memory management related utilities.
  • <numeric> - the numeric utilities including C++11's iota.
  • <system_error> - the functions used to tag error code and error category elements.
  • <tuple> - the make_tuple convenience and other tuple-related functions.
  • <utility> - the standard utilities such as swap, move, as well as some upcoming C++14 additions.

Changes in the latest version:

  • Added the for_each_n algorithm from C++17.
  • Added the missing 3-argument form of mismatch.
  • Added the missing iterator swap algorithms.
  • Added the missing partition algorithms.
  • Added the missing lexicographical_compare.
  • Added search and variants.
  • Added the time put/get functions for iomanip.
  • Added gcd, lcm from <numeric>.
  • Added the error condition makers from <system_error>.
  • Added as_const from <utility>.
  • Fixed the overloads for make_unique.

What is missing in the latest version?

  • All the heap algorithms.
  • All the partition algorithms.
  • All templated object constructs such as the various container constructors (Geany only provides tag completion opening on (, not on <).
  • Consequently, everything in <type_traits>.
  • Consequently, everything from <random>.
  • Everything from <regex>.
  • The new C++11 functions from <cmath> and other related headers.
  • Everything related to the garbage collection features.
  • Everything related to thread support.
  • Everything related to <optional> (from C++ C++17).
  • Everything related to <variant> (from C++17).

I don't have some of those functions?

''You might not have #included the necessary header''.

Consult a C++ reference to determine what header you need to include to have access to these features.

  • Your compiler might not have access to the C++ Standard listed, or its features.

In the general sense, it's most likely you are using an old (or new) enough C++ Standard that some of these features are not available, for example:

  • You might be using C++98/03, where some of the algorithms are not provided.
  • You might be using C++11, where nothing from eg.: <system_error> or <optional> is provided.
  • You might be using C++20, which deprecates or removes some of the stuff in <functional>.

If that's the case, you can still get most of these features by using a framework or toolkit library that provides a compatibility access later for such functions, such as cxxomfort (for C++03/C++11 backports) or Boost (for potential feature implementations).