Changeset 828 in dev for trunk/ab5.0/abdev/ab_common/src/Lexical
- Timestamp:
- Mar 19, 2012, 1:59:48 AM (13 years ago)
- Location:
- trunk
- Files:
-
- 20 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk
-
Property svn:mergeinfo
set to
/branches/egtra merged eligible
-
Property svn:mergeinfo
set to
-
trunk/ab5.0/abdev
-
Property svn:ignore
set to
*.opensdf
*.sdf
*.suo
*.user
int
ipch
out
-
Property svn:ignore
set to
-
trunk/ab5.0/abdev/ab_common/src/Lexical/Class.cpp
r750 r828 1 1 #include "stdafx.h" 2 #include <jenga/include/jenga.h> 3 #include <abdev/ab_common/include/ab_common.h> 2 4 #include <algorithm> 3 5 #include <boost/checked_delete.hpp> … … 777 779 778 780 std::vector<const CClass *> classes; 779 const CClass *pClass = GetHashArrayElement( symbol.GetName().c_str() );780 while( pClass )781 {782 if( pClass->IsEqualSymbol( symbol.GetNamespaceScopes(), symbol.GetName() ) ){781 foreach (auto pClass, GetHashArrayElement(symbol.GetName())) 782 { 783 if ( pClass->IsEqualSymbol(symbol.GetNamespaceScopes(), symbol.GetName())) 784 { 783 785 //名前空間とクラス名が一致した 784 786 classes.push_back( pClass ); 785 787 } 786 pClass = pClass->GetChainNext();787 788 } 788 789 if( classes.size() > 0 ) 789 790 { 790 791 // 複数の名前空間の中に同一のクラス名が存在する場合があるので、アクセス可能で尚且つ階層が一番深いものをチョイスする 791 pClass = classes.front();792 auto pClass = classes.front(); 792 793 793 794 foreach( const CClass *pTempClass, classes ) -
trunk/ab5.0/abdev/ab_common/src/Lexical/Const.cpp
r700 r828 29 29 CConst *Consts::GetObjectPtr( const Symbol &symbol ) 30 30 { 31 CConst *pConst = GetHashArrayElement( symbol.GetName().c_str() ); 32 while( pConst ) 33 { 34 if( pConst->IsEqualSymbol( symbol ) ) 35 { 36 break; 37 } 38 pConst = pConst->GetChainNext(); 39 } 40 41 return pConst; 31 auto c = GetHashArrayElement(symbol.GetName()); 32 auto it = std::find_if(c.begin(), c.end(), 33 [&](CConst* t) {return t->IsEqualSymbol(symbol);}); 34 return it != c.end() 35 ? *it 36 : nullptr; 42 37 } 43 38 … … 131 126 ConstMacro *ConstMacros::Find( const Symbol &symbol ) 132 127 { 133 ConstMacro *pConstMacro = GetHashArrayElement( symbol.GetName().c_str() ); 134 while( pConstMacro ) 135 { 136 if( pConstMacro->IsEqualSymbol( symbol ) ) 137 { 138 break; 139 } 140 pConstMacro = pConstMacro->GetChainNext(); 141 } 142 143 return pConstMacro; 128 auto c = GetHashArrayElement(symbol.GetName()); 129 auto it = std::find_if(c.begin(), c.end(), 130 [&](ConstMacro* t) {return t->IsEqualSymbol(symbol);}); 131 return it != c.end() 132 ? *it 133 : nullptr; 144 134 } -
trunk/ab5.0/abdev/ab_common/src/Lexical/Interface.cpp
r750 r828 1 1 #include "stdafx.h" 2 #include <jenga/include/jenga.h> 3 #include <abdev/ab_common/include/ab_common.h> 2 4 3 5 Interface::Interface( const CClass *pInterfaceClass, const Types &actualTypeParameters ) -
trunk/ab5.0/abdev/ab_common/src/Lexical/Member.cpp
r640 r828 1 1 #include "stdafx.h" 2 #include <jenga/include/jenga.h> 3 #include <abdev/ab_common/include/ab_common.h> 2 4 3 5 -
trunk/ab5.0/abdev/ab_common/src/Lexical/Meta.cpp
r750 r828 37 37 { 38 38 // 名前空間 39 BOOST_FOREACH( NamespaceScopes &namespaceScopes, meta.namespaceScopesCollection)39 foreach (NamespaceScopes const &namespaceScopes, meta.namespaceScopesCollection) 40 40 { 41 41 if( !this->namespaceScopesCollection.IsExist( namespaceScopes ) ) … … 46 46 47 47 // 関数・メソッド 48 meta.GetUserProcs().Iterator_Reset(); 49 while( meta.GetUserProcs().Iterator_HasNext() ) 50 { 51 UserProc *pUserProc = meta.GetUserProcs().Iterator_GetNext(); 48 foreach (auto pUserProc, meta.GetUserProcs()) 49 { 52 50 if( pUserProc->IsExternal() ) 53 51 { … … 65 63 66 64 // DLL関数 67 meta.GetDllProcs().Iterator_Reset(); 68 while( meta.GetDllProcs().Iterator_HasNext() ) 69 { 70 DllProc *pDllProc = meta.GetDllProcs().Iterator_GetNext(); 65 foreach (auto pDllProc, meta.GetDllProcs()) 66 { 71 67 if( pDllProc->IsExternal() ) 72 68 { … … 81 77 82 78 // クラス 83 meta.GetClasses().Iterator_Reset(); 84 while( meta.GetClasses().Iterator_HasNext() ) 85 { 86 CClass *pClass = meta.GetClasses().Iterator_GetNext(); 79 foreach (auto pClass, meta.GetClasses()) 80 { 87 81 if( pClass->IsExternal() ) 88 82 { … … 132 126 133 127 // グローバル定数 134 meta.GetGlobalConsts().Iterator_Reset(); 135 while( meta.GetGlobalConsts().Iterator_HasNext() ) 136 { 137 CConst *pConst = meta.GetGlobalConsts().Iterator_GetNext(); 128 foreach (auto pConst, meta.GetGlobalConsts()) 129 { 138 130 if( pConst->IsExternal() ) 139 131 { … … 148 140 149 141 // グローバル定数マクロ 150 meta.GetGlobalConstMacros().Iterator_Reset(); 151 while( meta.GetGlobalConstMacros().Iterator_HasNext() ) 152 { 153 ConstMacro *pConstMacro = meta.GetGlobalConstMacros().Iterator_GetNext(); 142 foreach (auto pConstMacro, meta.GetGlobalConstMacros()) 143 { 154 144 if( pConstMacro->IsExternal() ) 155 145 { … … 200 190 201 191 // デリゲート 202 meta.GetDelegates().Iterator_Reset(); 203 while( meta.GetDelegates().Iterator_HasNext() ) 204 { 205 Delegate *pDelegate = meta.GetDelegates().Iterator_GetNext(); 192 foreach (auto pDelegate, meta.GetDelegates()) 193 { 206 194 if( pDelegate->IsExternal() ) 207 195 { … … 218 206 const ::Delegate &Meta::ToDelegate( const CClass &_class ) 219 207 { 220 const ::Delegate *dg = this->GetDelegates().GetHashArrayElement( _class.GetName().c_str());221 while( dg)222 { 223 if( dg->IsEqualSymbol( _class.GetNamespaceScopes(), _class.GetName() ) ){208 auto dg = this->GetDelegates().GetHashArrayElement(_class.GetName()); 209 foreach (auto t, dg) 210 { 211 if( t->IsEqualSymbol( _class.GetNamespaceScopes(), _class.GetName() ) ){ 224 212 //名前空間とクラス名が一致した 225 return *dg; 226 } 227 dg = dg->GetChainNext(); 228 } 229 230 throw; 213 return *t; 214 } 215 } 216 217 throw std::runtime_error("Meta::ToDelegate"); 231 218 } 232 219 … … 256 243 { 257 244 // 関数・メソッド 258 this->GetUserProcs().Iterator_Init(); 259 this->GetUserProcs().Iterator_Reset(); 260 while( this->GetUserProcs().Iterator_HasNext() ) 261 { 262 UserProc *pUserProc = this->GetUserProcs().Iterator_GetNext(); 245 foreach (auto pUserProc, this->GetUserProcs()) 246 { 263 247 pUserProc->Resolve( resolver, resolveErrors ); 264 248 } 265 249 266 250 // DLL関数 267 this->GetDllProcs().Iterator_Init(); 268 this->GetDllProcs().Iterator_Reset(); 269 while( this->GetDllProcs().Iterator_HasNext() ) 270 { 271 DllProc *pDllProc = this->GetDllProcs().Iterator_GetNext(); 251 foreach (auto pDllProc, this->GetDllProcs()) 252 { 272 253 pDllProc->Resolve( resolver, resolveErrors ); 273 254 } 274 255 275 256 // クラス 276 this->GetClasses().Iterator_Init(); 277 this->GetClasses().Iterator_Reset(); 278 while( this->GetClasses().Iterator_HasNext() ) 279 { 280 CClass *pClass = this->GetClasses().Iterator_GetNext(); 257 foreach (auto pClass, this->GetClasses()) 258 { 281 259 pClass->Resolve( resolver, resolveErrors ); 282 260 } … … 289 267 290 268 // グローバル定数 291 this->GetGlobalConsts().Iterator_Init(); 292 this->GetGlobalConsts().Iterator_Reset(); 293 while( this->GetGlobalConsts().Iterator_HasNext() ) 294 { 295 CConst *pConst = this->GetGlobalConsts().Iterator_GetNext(); 269 foreach (auto pConst, this->GetGlobalConsts()) 270 { 296 271 pConst->Resolve( resolver, resolveErrors ); 297 272 } 298 273 299 274 // グローバル定数マクロ 300 this->GetGlobalConstMacros().Iterator_Init(); 301 this->GetGlobalConstMacros().Iterator_Reset(); 302 while( this->GetGlobalConstMacros().Iterator_HasNext() ) 303 { 304 ConstMacro *pConstMacro = this->GetGlobalConstMacros().Iterator_GetNext(); 275 foreach (auto pConstMacro, this->GetGlobalConstMacros()) 276 { 305 277 pConstMacro->Resolve( resolver, resolveErrors ); 306 278 } … … 325 297 326 298 // デリゲート 327 this->GetDelegates().Iterator_Init(); 328 this->GetDelegates().Iterator_Reset(); 329 while( this->GetDelegates().Iterator_HasNext() ) 330 { 331 Delegate *pDelegate = this->GetDelegates().Iterator_GetNext(); 299 foreach (auto pDelegate, this->GetDelegates()) 300 { 332 301 pDelegate->Resolve( resolver, resolveErrors ); 333 302 } -
trunk/ab5.0/abdev/ab_common/src/Lexical/Method.cpp
r750 r828 1 1 #include "stdafx.h" 2 #include <jenga/include/jenga.h> 3 #include <abdev/ab_common/include/ab_common.h> 4 #include <stdexcept> 2 5 3 6 bool CMethod::Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors ) … … 75 78 { 76 79 // 静的メソッドがコピーコンストラトされることは想定しない 77 throw ;80 throw std::domain_error("静的メソッドのコピー構築に対応していない"); 78 81 } 79 82 -
trunk/ab5.0/abdev/ab_common/src/Lexical/Namespace.cpp
r736 r828 1 1 #include "stdafx.h" 2 #include <jenga/include/jenga.h> 3 #include <abdev/ab_common/include/ab_common.h> 2 4 #include <algorithm> 3 5 … … 16 18 std::string tempName = namespaceStr.substr( i, i2-i ); 17 19 18 push_back( tempName);20 push_back(std::move(tempName)); 19 21 20 22 if( i2 == std::string::npos ){ … … 26 28 } 27 29 28 NamespaceScopes NamespaceScopes::operator+ ( const NamespaceScopes &namespaceScopes ) const30 NamespaceScopes ActiveBasic::Common::Lexical::operator +(const NamespaceScopes &lhs, const NamespaceScopes &rhs) 29 31 { 30 NamespaceScopes result; 31 result.reserve( this->size() + namespaceScopes.size() ); 32 result = *this; 33 result.append( namespaceScopes ); 34 return result; 32 return NamespaceScopes(lhs) += rhs; 35 33 } 36 34 -
trunk/ab5.0/abdev/ab_common/src/Lexical/NamespaceSupporter.cpp
r750 r828 1 1 #include "stdafx.h" 2 #include <jenga/include/jenga.h> 3 #include <abdev/ab_common/include/ab_common.h> 2 4 3 5 using namespace ActiveBasic::Common::Lexical; -
trunk/ab5.0/abdev/ab_common/src/Lexical/NativeCode.cpp
r750 r828 1 1 #include "stdafx.h" 2 #include <jenga/include/jenga.h> 3 #include <abdev/ab_common/include/ab_common.h> 2 4 3 5 #define BREAK_EIP(checkEip) (obp+0x00401000>=checkEip) -
trunk/ab5.0/abdev/ab_common/src/Lexical/ObjectModule.cpp
r750 r828 1 #pragma warning(disable : 4996)1 //#pragma warning(disable : 4996) 2 2 3 3 #include <map> … … 29 29 30 30 31 #pragma warning(push) 32 #pragma warning(disable: 4244 6011 6326) 31 33 #ifdef OBJECT_MODULE_IS_NOT_BINARY 32 34 #include <boost/archive/xml_oarchive.hpp> … … 42 44 #include <boost/serialization/map.hpp> 43 45 #include <boost/serialization/version.hpp> 44 #include <boost/serialization/is_abstract.hpp>45 46 #include <boost/serialization/serialization.hpp> 46 47 #include <boost/serialization/nvp.hpp> 47 48 #include <boost/serialization/export.hpp> 49 #pragma warning(pop) 48 50 49 51 #define foreach(v, c) for each (v in c) … … 252 254 return isSuccessful; 253 255 } 256 257 BOOST_CLASS_EXPORT_IMPLEMENT( DynamicMethod ); 258 BOOST_CLASS_EXPORT_IMPLEMENT( StaticMethod ); -
trunk/ab5.0/abdev/ab_common/src/Lexical/Parameter.cpp
r708 r828 1 1 #include "stdafx.h" 2 #include <jenga/include/jenga.h> 3 #include <abdev/ab_common/include/ab_common.h> 2 4 3 5 Parameter::Parameter( const std::string &varName, const Type &type, bool isRef, const std::string initValue ) -
trunk/ab5.0/abdev/ab_common/src/Lexical/Procedure.cpp
r750 r828 1 1 #include "stdafx.h" 2 #include <jenga/include/jenga.h> 3 #include <abdev/ab_common/include/ab_common.h> 2 4 3 5 … … 243 245 244 246 // ハッシュ値を取得 245 UserProc *pUserProc = GetHashArrayElement( simpleName );246 while(pUserProc){247 foreach (auto pUserProc, GetHashArrayElement( simpleName )) 248 { 247 249 if( pUserProc->IsGlobalProcedure() ){ 248 250 if( pUserProc->IsEqualSymbol( localSymbol ) ){ … … 250 252 } 251 253 } 252 253 pUserProc=pUserProc->GetChainNext();254 254 } 255 255 } -
trunk/ab5.0/abdev/ab_common/src/Lexical/Source.cpp
r769 r828 945 945 return true; 946 946 } 947 948 int SourceCodePosition::GetRelationalObjectModuleIndex() const949 {950 if( this->IsNothing() )951 {952 _ASSERTE( false );953 throw;954 }955 956 return relationalObjectModuleIndex;957 }958 bool SourceCodePosition::IsNothing() const959 {960 if( this->relationalObjectModuleIndex == -1 && this->pos == -1 )961 {962 return true;963 }964 965 if( this->relationalObjectModuleIndex == -1 || this->pos == -1 )966 {967 _ASSERTE( false );968 throw;969 }970 971 return false;972 } -
trunk/ab5.0/abdev/ab_common/src/Lexical/Symbol.cpp
r752 r828 1 1 #include "stdafx.h" 2 #include <jenga/include/jenga.h> 3 #include <abdev/ab_common/include/ab_common.h> 2 4 3 5 using namespace ActiveBasic::Common::Lexical; -
trunk/ab5.0/abdev/ab_common/src/Lexical/Template.cpp
r640 r828 1 1 #include "stdafx.h" 2 #include <jenga/include/jenga.h> 3 #include <abdev/ab_common/include/ab_common.h> 2 4 3 5 ExpandedTemplateClass::~ExpandedTemplateClass() -
trunk/ab5.0/abdev/ab_common/src/Lexical/Type.cpp
r750 r828 1 1 #include "stdafx.h" 2 #include <jenga/include/jenga.h> 3 #include <abdev/ab_common/include/ab_common.h> 4 #include "Lexical/Type.h" 2 5 3 6 const int Type::basicTypeList[] = { … … 539 542 540 543 int Type::GetBasicTypeFromSimpleName( const char *variable ){ 541 extern char DefIntVari[26],DefSngVari[26],DefStrVari[26],divNum,dsvNum,dStrvNum; 544 assert(variable != nullptr); 545 auto length = std::strlen(variable); 546 assert(length > 0); 547 542 548 int i; 543 549 char name[VN_SIZE]; 544 550 545 551 //構造体メンバの場合を考慮 546 for(i=l strlen(variable);i>0;i--){552 for(i=length;i>0;i--){ 547 553 if(variable[i]=='.'){ 548 554 i++; -
trunk/ab5.0/abdev/ab_common/src/Lexical/TypeDef.cpp
r750 r828 1 1 #include "stdafx.h" 2 #include <jenga/include/jenga.h> 3 #include <abdev/ab_common/include/ab_common.h> 2 4 3 5 TypeDef::TypeDef( const Symbol &symbol, const std::string &baseName, const Type &baseType ) -
trunk/ab5.0/abdev/ab_common/src/Lexical/Variable.cpp
r640 r828 12 12 { 13 13 } 14 14 15 Variable::Variable( const Variable &var ) 15 16 : RelationalObjectModuleItem( var ) … … 24 25 { 25 26 } 27 28 Variable::Variable(Variable&& var) 29 : RelationalObjectModuleItem(std::move(var)) 30 , type(std::move(var.type)) 31 , isConst(std::move(var.isConst)) 32 , isRef(std::move(var.isRef)) 33 , isArray(std::move(var.isArray)) 34 , subscripts(std::move(var.subscripts)) 35 , isParameter(std::move(var.isParameter)) 36 , paramStrForConstructor(std::move(var.paramStrForConstructor)) 37 , hasInitData(std::move(var.hasInitData)) 38 { 39 } 40 26 41 Variable::Variable() 27 42 { 43 } 44 45 Variable& Variable::operator =(Variable&& var) 46 { 47 RelationalObjectModuleItem::operator =(std::move(var)); 48 type = std::move(var.type); 49 isConst = std::move(var.isConst); 50 isRef = std::move(var.isRef); 51 isArray = std::move(var.isArray); 52 subscripts = std::move(var.subscripts); 53 isParameter = std::move(var.isParameter); 54 paramStrForConstructor = std::move(var.paramStrForConstructor); 55 hasInitData = std::move(var.hasInitData); 56 return *this; 28 57 } 29 58
Note:
See TracChangeset
for help on using the changeset viewer.