35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
optional< Term > BuildTemplateSignature( const Context& c, const Term& tpl )
{
const auto pTemplateRuleSet = GetTemplateRuleSet( c, tpl );
if( !pTemplateRuleSet )
return nullopt;
return pTemplateRuleSet->buildSignature( c, *ValueFromIRExpr( tpl ) );
}
Value BuildTemplateParam( const Context& c, const Term& tpl, const Term& arg )
{
const auto pTemplateRuleSet = GetTemplateRuleSet( c, tpl );
if( !pTemplateRuleSet )
return PoisonValue();
return pTemplateRuleSet->buildParamDecl( c, *ValueFromIRExpr( tpl ), *ValueFromIRExpr( arg ) );
}
void TemplateSetup( const Context& c, TypeCheckingContext tcc, const Term& tpl )
{
const auto pTemplateRuleSet = GetTemplateRuleSet( c, tpl );
if( !pTemplateRuleSet )
return;
pTemplateRuleSet->setup( c, tcc, *ValueFromIRExpr( tpl ) );
}
extern optional< Term > BuildTemplateArgPattern( const Context& c, const Term& tpl )
{
const auto pTemplateRuleSet = GetTemplateRuleSet( c, tpl );
if( !pTemplateRuleSet )
return nullopt;
return pTemplateRuleSet->buildArgPattern( c, *ValueFromIRExpr( tpl ) );
}
}
|
|
|
|
|
|
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
optional< Term > BuildTemplateSignature( const Context& c, const Term& tpl )
{
const auto pTemplateRuleSet = GetTemplateRuleSet( c, tpl );
if( !pTemplateRuleSet )
return nullopt;
return pTemplateRuleSet->buildSignature( c, *ValueFromEIR( tpl ) );
}
Value BuildTemplateParam( const Context& c, const Term& tpl, const Term& arg )
{
const auto pTemplateRuleSet = GetTemplateRuleSet( c, tpl );
if( !pTemplateRuleSet )
return PoisonValue();
return pTemplateRuleSet->buildParamDecl( c, *ValueFromEIR( tpl ), *ValueFromEIR( arg ) );
}
void TemplateSetup( const Context& c, TypeCheckingContext tcc, const Term& tpl )
{
const auto pTemplateRuleSet = GetTemplateRuleSet( c, tpl );
if( !pTemplateRuleSet )
return;
pTemplateRuleSet->setup( c, tcc, *ValueFromEIR( tpl ) );
}
extern optional< Term > BuildTemplateArgPattern( const Context& c, const Term& tpl )
{
const auto pTemplateRuleSet = GetTemplateRuleSet( c, tpl );
if( !pTemplateRuleSet )
return nullopt;
return pTemplateRuleSet->buildArgPattern( c, *ValueFromEIR( tpl ) );
}
}
|