[173] | 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;
|
---|