1 | #include <jenga/include/smoothie/Class.h>
|
---|
2 | #include <jenga/include/smoothie/SmoothieException.h>
|
---|
3 |
|
---|
4 | string UserProc::GetFullName() const
|
---|
5 | {
|
---|
6 | if( HasParentClass() ){
|
---|
7 | return GetParentClass().GetName() + "." + GetName();
|
---|
8 | }
|
---|
9 |
|
---|
10 | return GetName();
|
---|
11 | }
|
---|
12 | bool UserProc::IsVirtual() const
|
---|
13 | {
|
---|
14 | if( pMethod == NULL ){
|
---|
15 | return false;
|
---|
16 | }
|
---|
17 | return ( pMethod->IsVirtual() != 0 );
|
---|
18 | }
|
---|
19 | const NamespaceScopes &UserProc::GetNamespaceScopes() const
|
---|
20 | {
|
---|
21 | if( !pParentClass ){
|
---|
22 | throw SmoothieException();
|
---|
23 | }
|
---|
24 | return pParentClass->GetNamespaceScopes();
|
---|
25 | }
|
---|
26 | const NamespaceScopesCollection &UserProc::GetImportedNamespaces() const
|
---|
27 | {
|
---|
28 | if( !pParentClass ){
|
---|
29 | throw SmoothieException();
|
---|
30 | }
|
---|
31 | return pParentClass->GetImportedNamespaces();
|
---|
32 | }
|
---|
33 | bool UserProc::IsEqualSymbol( const NamespaceScopes &namespaceScopes, const string &name ) const
|
---|
34 | {
|
---|
35 | throw SmoothieException();
|
---|
36 | return false;
|
---|
37 | }
|
---|
38 |
|
---|
39 | bool DllProc::IsEqualSymbol( const NamespaceScopes &namespaceScopes, const string &name ) const
|
---|
40 | {
|
---|
41 | if( GetName() != name ){
|
---|
42 | return false;
|
---|
43 | }
|
---|
44 | return NamespaceScopes::IsSameArea( this->namespaceScopes, namespaceScopes );
|
---|
45 | }
|
---|
46 | bool DllProc::IsEqualSymbol( const string &fullName ) const
|
---|
47 | {
|
---|
48 | char AreaName[VN_SIZE] = ""; //オブジェクト変数
|
---|
49 | char NestName[VN_SIZE] = ""; //入れ子メンバ
|
---|
50 | bool isNest = CClass::SplitName( fullName.c_str(), AreaName, NestName );
|
---|
51 |
|
---|
52 | if( IsEqualSymbol( NamespaceScopes( AreaName ), NestName ) ){
|
---|
53 | return true;
|
---|
54 | }
|
---|
55 |
|
---|
56 | if( isNest ){
|
---|
57 | // 静的メンバを考慮
|
---|
58 |
|
---|
59 | char AreaName2[VN_SIZE] = ""; //オブジェクト変数
|
---|
60 | char NestName2[VN_SIZE] = ""; //入れ子メンバ
|
---|
61 | bool isNest = CClass::SplitName( AreaName, AreaName2, NestName2 );
|
---|
62 | lstrcat( NestName2, "." );
|
---|
63 | lstrcat( NestName2, NestName );
|
---|
64 |
|
---|
65 | return IsEqualSymbol( NamespaceScopes( AreaName2 ), NestName2 );
|
---|
66 | }
|
---|
67 |
|
---|
68 | return false;
|
---|
69 | }
|
---|
70 |
|
---|
71 | UserProc *UserProc::pCompilingUserProc = NULL;
|
---|