Skip to content

library

def Library.vectorName : String

The library’s vector class template.

def Library.stringName : String

The library’s string class.

def Library.listName : String

The library’s class template of a braced list’s elements (the one the language names, [dcl.init.list]p5).

def Library.vectorType (t : TypeSyntax) : TypeSyntax

The syntax’s vector type as the library’s template’s instance.

def Library.isVector (t : TypeSyntax) : Bool

Whether a written type is a vector (the syntax’s, or the template’s instance).

def Library.stringMember (name : String) : Option String

The full name of a member type of the library’s string written name (string::size_type under using namespace std, or std::string::size_type), if that is what it is.

def Library.stringType (t : TypeSyntax) : TypeSyntax

The syntax’s string type as the library’s class; a member type of it as the typedef the class’s lowering declares.

def Library.isString (t : TypeSyntax) : Bool

Whether a written type is a string or a member type of one (the syntax’s, or the library’s class).

def Library.isList (t : TypeSyntax) : Bool

Whether a written type is a std::initializer_list.

def Library.lastName (x : String) : String

A name without its qualifiers.

def Library.calledName (e : Expr) : List String

The name a call names: a member function’s, or a function’s without its qualifier.

def Library.operatorUsed (e : Expr) : List String

The operator functions an expression can use by its operator ([over.match.oper]).

def Library.usedName (e : Expr) : List String

The functions an expression names: by a call, or by an operator.

def Library.streamed (s : Stmt) : List String

The operator functions a statement can use: output’s operator<<.

def Library.declares (items : List Item) : List String

The names (without qualifiers) of the classes and the functions other than operators items declare.

def Library.programNames (items : List Item) : List String

The names (without qualifiers) a program’s items name: the classes of its written types and the functions it calls.

def Library.asMember (f : FunctionDefinition) : Member

A free function seen as a member (whether it is kept and what it calls are found the same way).

def Library.namesList (t : TypeSyntax) : Bool

Whether a written type names std::initializer_list (inside the library, before its namespace is flattened, without the qualifier).

def Library.takesList (m : Member) : Bool

Whether a member takes a std::initializer_list (only a braced list or a list object can be its argument, [over.match.list]).

def Library.kept (lists : Bool) (names : List String) (m : Member) : Bool

Whether a library class’s member is kept when the names are called (and lists, whether the program has std::initializer_list).

def Library.prunedClass (lists : Bool) (names : List String) (d : ClassDefinition) : ClassDefinition

A class with only its kept members.

def Library.pruned (lists : Bool) (names : List String) (items : List Item) : List Item

Library items with only their kept functions (their classes’ members, their free functions).

record LibraryMember

A library class’s member: whether it is kept without being named, whether it takes a std::initializer_list, its name (a member function’s), and the names it calls.

def LibraryMember.of (d : ClassDefinition) (m : Member) : LibraryMember

A member’s entry: what it calls (found as in a class of its own).

def Library.members (items : List Item) : List LibraryMember

The functions of library items: their classes’ members (a class template’s explicit specializations’ too) and their free functions.

def Library.closed (fuel : Nat) (members : List LibraryMember) (names : List String) : List String

The names called, with those the usable members they name call, and so on (fuel bounds the rounds).

record LibraryHeader

A header of the library: its name, the headers it includes (by name), its items and their functions (made when a program includes it: a header’s items are a large tree, and a program that includes few headers does not build the others’), and the names it declares (Library.declares of its items, generated with them as data: choosing a program’s headers reads only these).

def LibraryHeader.of (name : String) (needs : List String) (items : Unit -> List Item) (members : Unit -> List LibraryMember) (declares : List String) : LibraryHeader

The header name that includes the headers needs, with its items and their functions members (each made when it is first needed: a top-level constant behind each, so made once) and the names declares they declare.

def LibraryHeader.named (h : LibraryHeader) (names : List String) : Bool

Whether a program names something a header declares.

def Library.initializerListMembers : List LibraryMember

The functions of Library.initializerList, made once (when a program first includes the header).

def Library.lists : LibraryHeader

<initializer_list>.

def Library.stringMembers : List LibraryMember

The functions of Library.string, made once (when a program first includes the header).

def Library.strings : LibraryHeader

<string> (with <iterator>, whose distance the range versions use).

def Library.iteratorMembers : List LibraryMember

The functions of Library.iterator, made once (when a program first includes the header).

def Library.iterators : LibraryHeader

<iterator>’s std::prev and std::next.

def Library.vectorMembers : List LibraryMember

The functions of Library.vector, made once (when a program first includes the header).

def Library.vectors : LibraryHeader

<vector> (with <iterator>’s std::prev and std::next, as libc++’s brings them in).

def Library.pairMembers : List LibraryMember

The functions of Library.pair, made once (when a program first includes the header).

def Library.pairs : LibraryHeader

<utility>’s std::pair and std::make_pair.

def Library.tupleMembers : List LibraryMember

The functions of Library.tuple, made once (when a program first includes the header).

def Library.tuples : LibraryHeader

<tuple>’s std::tuple (one to four elements), std::make_tuple, std::get, std::tie and std::tuple_element.

def Library.comparisonMembers : List LibraryMember

The functions of Library.comparison, made once (when a program first includes the header).

def Library.comparisons : LibraryHeader

<functional>’s std::less and std::greater.

def Library.algorithmMembers : List LibraryMember

The functions of Library.algorithm, made once (when a program first includes the header).

def Library.algorithms : LibraryHeader

<algorithm>’s sorting, binary search and heaps.

def Library.dequeMembers : List LibraryMember

The functions of Library.deque, made once (when a program first includes the header).

def Library.deques : LibraryHeader

<deque>’s std::deque (with <iterator>, whose distance its assign(i, j) uses).

def Library.numericMembers : List LibraryMember

The functions of Library.numeric, made once (when a program first includes the header).

def Library.numerics : LibraryHeader

<numeric>’s std::accumulate, std::iota, std::partial_sum, std::gcd and std::lcm.

def Library.bitsetMembers : List LibraryMember

The functions of Library.bitset, made once (when a program first includes the header).

def Library.bitsets : LibraryHeader

.

def Library.unorderedMapMembers : List LibraryMember

The functions of Library.unorderedMap, made once (when a program first includes the header).

def Library.unorderedMaps : LibraryHeader

<unordered_map>.

def Library.queueMembers : List LibraryMember

The functions of Library.queue, made once (when a program first includes the header).

def Library.queues : LibraryHeader

<queue>’s std::queue and std::priority_queue.

def Library.stackMembers : List LibraryMember

The functions of Library.stack, made once (when a program first includes the header).

def Library.stacks : LibraryHeader

<stack>’s std::stack.

def Library.treeMembers : List LibraryMember

The functions of Library.tree, made once (when a program first includes the header).

def Library.trees : LibraryHeader

The red-black tree std::set and std::map keep their elements in.

def Library.setMembers : List LibraryMember

The functions of Library.set, made once (when a program first includes the header).

def Library.sets : LibraryHeader

<set>’s std::set.

def Library.mapMembers : List LibraryMember

The functions of Library.map, made once (when a program first includes the header).

def Library.maps : LibraryHeader

<map>’s std::map.

def Library.limitsMembers : List LibraryMember

The functions of Library.limits, made once (when a program first includes the header).

def Library.limitsHeader : LibraryHeader

<limits>’s std::numeric_limits.

def Library.streamIteratorMembers : List LibraryMember

The functions of Library.streamIterator, made once (when a program first includes the header).

def Library.streamIterators : LibraryHeader

<iterator>’s std::ostream_iterator, a header of its own (the others that include <iterator> do not bring in the stream’s class).

def Library.headers : List LibraryHeader

The library’s headers, each after the headers it includes.

def Library.withNeeds (fuel : Nat) (wanted : List String) : List String

The headers wanted (by name) with the headers they include, in the library’s order (fuel bounds the rounds).

def Library.bracedDeclaration (s : Stmt) : List Bool

Whether a statement declares something initialized by a braced list.

def Library.bracedExpression (e : Expr) : List Bool

Whether an expression is a braced list (x = {1, 2}, f({1, 2}), return {1, 2}, new T{1, 2}), which a class’s initializer-list constructor or operator= takes: without them {1, 2} would be taken as a constructor’s arguments. e is the expression.

def Library.initializerStatements (inits : List MemberInit) : List Stmt

A constructor’s initializers inits as the statements they are lowered to (sMInit, sMInitList).

def Library.memberBodies (m : Member) : List Stmt

The statements of a member’s bodies (a constructor’s initializers too).

def Library.bodies (items : List Item) : List Stmt

The bodies of items’ functions (members’ too).

def Library.braced (items : List Item) : Bool

Whether a program initializes something with a braced list (a global, a local, or a member in a constructor).

def Library.prepare (holeTypes : List TypeSyntax) (p : Program) : Program

A program with the library’s items it uses first, its vector and string types the library’s.