cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
cpp_template_type.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module:
4
5
Author: Daniel Kroening, kroening@cs.cmu.edu
6
7
\*******************************************************************/
8
9
10
#ifndef CPROVER_CPP_CPP_TEMPLATE_TYPE_H
11
#define CPROVER_CPP_CPP_TEMPLATE_TYPE_H
12
13
#include <
util/invariant.h
>
14
#include <
util/type.h
>
15
16
#include "
cpp_template_parameter.h
"
17
18
class
template_typet
:
public
typet
19
{
20
public
:
21
template_typet
():
typet
(ID_template)
22
{
23
}
24
25
typedef
std::vector<template_parametert>
template_parameterst
;
26
27
template_parameterst
&
template_parameters
()
28
{
29
return
(
template_parameterst
&)
add
(ID_template_parameters).
get_sub
();
30
}
31
32
const
template_parameterst
&
template_parameters
()
const
33
{
34
return
(
const
template_parameterst
&)
find
(ID_template_parameters).
get_sub
();
35
}
36
37
const
typet
&
subtype
()
const
38
{
39
if
(
get_sub
().empty())
40
return
static_cast<
const
typet
&
>
(
get_nil_irep
());
41
return
static_cast<
const
typet
&
>
(
get_sub
().front());
42
}
43
44
typet
&
subtype
()
45
{
46
return
add_subtype
();
47
}
48
};
49
50
inline
template_typet
&
to_template_type
(
typet
&type)
51
{
52
PRECONDITION
(type.
id
() == ID_template);
53
return
static_cast<
template_typet
&
>
(type);
54
}
55
56
inline
const
template_typet
&
to_template_type
(
const
typet
&type)
57
{
58
PRECONDITION
(type.
id
() == ID_template);
59
return
static_cast<
const
template_typet
&
>
(type);
60
}
61
62
inline
const
typet
&
template_subtype
(
const
typet
&type)
63
{
64
if
(type.
id
()==ID_template)
65
return
to_type_with_subtype
(type).
subtype
();
66
67
return
type;
68
}
69
70
inline
typet
&
template_subtype
(
typet
&type)
71
{
72
if
(type.
id
()==ID_template)
73
return
to_template_type
(type).
subtype
();
74
75
return
type;
76
}
77
78
#endif
// CPROVER_CPP_CPP_TEMPLATE_TYPE_H
irept::find
const irept & find(const irep_idt &name) const
Definition
irep.cpp:93
irept::get_sub
subt & get_sub()
Definition
irep.h:448
irept::id
const irep_idt & id() const
Definition
irep.h:388
irept::add
irept & add(const irep_idt &name)
Definition
irep.cpp:103
template_typet
Definition
cpp_template_type.h:19
template_typet::subtype
typet & subtype()
Definition
cpp_template_type.h:44
template_typet::template_parameters
const template_parameterst & template_parameters() const
Definition
cpp_template_type.h:32
template_typet::template_parameters
template_parameterst & template_parameters()
Definition
cpp_template_type.h:27
template_typet::template_parameterst
std::vector< template_parametert > template_parameterst
Definition
cpp_template_type.h:25
template_typet::template_typet
template_typet()
Definition
cpp_template_type.h:21
template_typet::subtype
const typet & subtype() const
Definition
cpp_template_type.h:37
type_with_subtypet::subtype
const typet & subtype() const
Definition
type.h:187
typet
The type of an expression, extends irept.
Definition
type.h:29
typet::typet
typet()
Definition
type.h:31
typet::add_subtype
typet & add_subtype()
Definition
type.h:53
cpp_template_parameter.h
template_subtype
const typet & template_subtype(const typet &type)
Definition
cpp_template_type.h:62
to_template_type
template_typet & to_template_type(typet &type)
Definition
cpp_template_type.h:50
get_nil_irep
const irept & get_nil_irep()
Definition
irep.cpp:19
invariant.h
PRECONDITION
#define PRECONDITION(CONDITION)
Definition
invariant.h:463
type.h
Defines typet, type_with_subtypet and type_with_subtypest.
to_type_with_subtype
const type_with_subtypet & to_type_with_subtype(const typet &type)
Definition
type.h:208
cpp
cpp_template_type.h
Generated by
1.17.0