Line | |
---|
1 | #include "stdafx.h"
|
---|
2 |
|
---|
3 | #include <Delegate.h>
|
---|
4 |
|
---|
5 | void Delegate::RefleshParameterAndReturnType()
|
---|
6 | {
|
---|
7 | compiler.GetNamespaceSupporter().SetImportedNamespaces( this->importedNamespaces );
|
---|
8 | compiler.GetNamespaceSupporter().SetLivingNamespaceScopes( this->GetNamespaceScopes() );
|
---|
9 |
|
---|
10 | // パラメータを解析
|
---|
11 | ActiveBasic::Compiler::LexicalAnalyzer::AnalyzeParameter( params, paramStr.c_str(), sourceIndex );
|
---|
12 |
|
---|
13 | // 動的パラメータを作る
|
---|
14 | dynamicParams = params;
|
---|
15 | dynamicParams.insert( dynamicParams.begin(), new Parameter( "_System_LocalThis", Type( DEF_PTR_VOID ) ) );
|
---|
16 |
|
---|
17 | if( IsFunction() )
|
---|
18 | {
|
---|
19 | // 戻り値を取得
|
---|
20 | if( !compiler.StringToType( returnTypeName, returnType ) )
|
---|
21 | {
|
---|
22 | compiler.errorMessenger.Output(3,returnTypeName,sourceIndex);
|
---|
23 | }
|
---|
24 | }
|
---|
25 | }
|
---|
26 |
|
---|
27 | bool Delegate::IsSimilar( const Delegate &dgt ) const
|
---|
28 | {
|
---|
29 | if( this->Params().Equals( dgt.Params(), true ) ) // パラメータが等しい、もしくは反変
|
---|
30 | {
|
---|
31 | if( this->returnType.Equals( dgt.returnType ) )
|
---|
32 | {
|
---|
33 | // 戻り値が等しい
|
---|
34 | return true;
|
---|
35 | }
|
---|
36 | else if( this->returnType.IsCovariant( dgt.returnType ) )
|
---|
37 | {
|
---|
38 | // 戻り値が共変
|
---|
39 | return true;
|
---|
40 | }
|
---|
41 | }
|
---|
42 | return false;
|
---|
43 | }
|
---|
Note:
See
TracBrowser
for help on using the repository browser.