Index: trunk/ab5.0/abdev/BasicCompiler_Common/BreakPoint.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/BreakPoint.cpp	(revision 636)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/BreakPoint.cpp	(revision 637)
@@ -104,5 +104,5 @@
 			int i3;
 			for(i3=0;i3<(int)oldSourceLines.size()-1;i3++){
-				if(oldSourceLines[i3].GetSourceCodePos()==tempCp) break;
+				if(oldSourceLines[i3].GetSourceCodePosition().GetPos()==tempCp) break;
 			}
 			if(i3==oldSourceLines.size()-1){
Index: trunk/ab5.0/abdev/BasicCompiler_Common/Compile.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/Compile.cpp	(revision 636)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/Compile.cpp	(revision 637)
@@ -747,5 +747,5 @@
 			}
 
-			compiler.codeGenerator.NextSourceLine( compiler.GetCurrentRelationalObjectModuleIndexForSource() );
+			compiler.codeGenerator.NextSourceLine( SourceCodePosition( compiler.GetCurrentRelationalObjectModuleIndexForSource(), cp ) );
 
 			if(Command[0]==1){
Index: trunk/ab5.0/abdev/BasicCompiler_Common/Debug.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/Debug.cpp	(revision 636)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/Debug.cpp	(revision 637)
@@ -121,5 +121,5 @@
 			int i3;
 			for(i3=0;i3<(int)oldSourceLines.size()-1;i3++){
-				if(oldSourceLines[i3].GetSourceCodePos()==tempCp) break;
+				if(oldSourceLines[i3].GetSourceCodePosition().GetPos()==tempCp) break;
 			}
 			if(i3==oldSourceLines.size()-1){
Index: trunk/ab5.0/abdev/BasicCompiler_Common/DebugMiddleFile.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/DebugMiddleFile.cpp	(revision 636)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/DebugMiddleFile.cpp	(revision 637)
@@ -141,17 +141,14 @@
 	BOOST_FOREACH( const SourceLine &sourceLine, oldSourceLines )
 	{
-		*(long *)(buffer+i2) = sourceLine.GetLineNum();
-		i2+=sizeof(long);
-
 		*(long *)(buffer+i2) = sourceLine.GetNativeCodePos();
 		i2+=sizeof(long);
 
-		*(long *)(buffer+i2) = sourceLine.GetRelationalObjectModuleIndex();
-		i2+=sizeof(long);
-
-		*(long *)(buffer+i2) = sourceLine.GetSourceCodePos();
-		i2+=sizeof(long);
-
 		*(long *)(buffer+i2) = sourceLine.GetCodeType();
+		i2+=sizeof(long);
+
+		*(long *)(buffer+i2) = sourceLine.GetSourceCodePosition().GetRelationalObjectModuleIndex();
+		i2+=sizeof(long);
+
+		*(long *)(buffer+i2) = sourceLine.GetSourceCodePosition().GetPos();
 		i2+=sizeof(long);
 
@@ -245,26 +242,21 @@
 	i2+=sizeof(long);
 	for(i3=0;i3<maxLineInfoNum;i3++){
-		int lineNum = *(long *)(buffer+i2);
-		i2+=sizeof(long);
-
 		int nativeCodePos = *(long *)(buffer+i2);
 		i2+=sizeof(long);
 
-		int sourceIndex = *(long *)(buffer+i2);
+		DWORD sourceLineType = *(DWORD *)(buffer+i2);
+		i2+=sizeof(long);
+
+		int relationalObjectModuleIndex = *(long *)(buffer+i2);
 		i2+=sizeof(long);
 
 		int sourceCodePos = *(long *)(buffer+i2);
-		i2+=sizeof(long);
-
-		DWORD sourceLineType = *(DWORD *)(buffer+i2);
 		i2+=sizeof(long);
 
 		_oldSourceLines.push_back(
 			SourceLine(
-				lineNum,
 				nativeCodePos,
-				sourceIndex,
-				sourceCodePos,
-				sourceLineType
+				sourceLineType,
+				SourceCodePosition( relationalObjectModuleIndex, sourceCodePos )
 			)
 		);
Index: trunk/ab5.0/abdev/BasicCompiler_Common/VarList.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/VarList.cpp	(revision 636)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/VarList.cpp	(revision 637)
@@ -620,6 +620,6 @@
 		else
 		{
-			pobj_dti->lpdwCp[i3]=oldSourceLines[i2].GetSourceCodePos();
-			pobj_dti->relationalObjectModuleIndexes[i3]=oldSourceLines[i2].GetRelationalObjectModuleIndex();
+			pobj_dti->lpdwCp[i3]=oldSourceLines[i2].GetSourceCodePosition().GetPos();
+			pobj_dti->relationalObjectModuleIndexes[i3]=oldSourceLines[i2].GetSourceCodePosition().GetRelationalObjectModuleIndex();
 		}
 	}
Index: trunk/ab5.0/abdev/BasicCompiler_Common/VariableOpe.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/VariableOpe.cpp	(revision 636)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/VariableOpe.cpp	(revision 637)
@@ -962,6 +962,5 @@
 
 	Variable *pVar = new Variable(
-		compiler.GetNamespaceSupporter().GetLivingNamespaceScopes(),
-		name,
+		Symbol( compiler.GetNamespaceSupporter().GetLivingNamespaceScopes(), name ),
 		type,
 		isConst,
Index: trunk/ab5.0/abdev/BasicCompiler_Common/include/CodeGenerator.h
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/include/CodeGenerator.h	(revision 636)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/include/CodeGenerator.h	(revision 637)
@@ -241,8 +241,7 @@
 	}
 
-	void NextSourceLine( int currentSourceIndex )
-	{
-		extern int cp;
-		pNativeCode->NextSourceLine( currentSourceIndex, cp );
+	void NextSourceLine( const SourceCodePosition &sourceCodePosition )
+	{
+		pNativeCode->NextSourceLine( sourceCodePosition );
 	}
 
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp	(revision 636)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp	(revision 637)
@@ -50,5 +50,5 @@
 
 		// メタ情報
-		this->GetObjectModule().StaticLink( *pStaticLibrary );
+		this->GetObjectModule().StaticLink( *pStaticLibrary, this->IsSll() );
 	}
 }
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Class.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Class.cpp	(revision 636)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Class.cpp	(revision 637)
@@ -117,5 +117,5 @@
 
 			//クラスを追加
-			CClass *pClass = new CClass( namespaceScopes, importedNamespaces, temporary );
+			CClass *pClass = new CClass( Symbol( namespaceScopes, temporary ), importedNamespaces );
 			if( classes.IsExist( pClass ) )
 			{
@@ -575,7 +575,6 @@
 		//関数ハッシュへ登録
 		UserProc *pUserProc = new UserProc(
-			NamespaceScopes(),
+			Symbol( NamespaceScopes(), methodName ),
 			NamespaceScopesCollection(),
-			methodName,
 			Procedure::Function,
 			false,
@@ -1434,7 +1433,6 @@
 	// クラスをコピー
 	CClass *pNewClass = new CClass(
-		_class.GetNamespaceScopes(),
+		_class,
 		_class.GetImportedNamespaces(),
-		_class.GetName(),
 		_class.GetClassType(),
 		_class.GetFormalGenericTypes(),
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Const.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Const.cpp	(revision 636)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Const.cpp	(revision 637)
@@ -74,5 +74,5 @@
 
 		//定数を追加
-		consts.Add( namespaceScopes, temporary, NextValue);
+		consts.Add( Symbol( namespaceScopes, temporary ), NextValue);
 	}
 }
@@ -178,5 +178,5 @@
 					if( StaticCalculation(false, expression, 0, &i64data, resultType) )
 					{
-						consts.Add( namespaceScopes, name, i64data, resultType );
+						consts.Add( Symbol( namespaceScopes, name ), i64data, resultType );
 					}
 				}
@@ -185,5 +185,5 @@
 					// 定数マクロ
 					const char *params = temporary + i2;
-					if( !constMacros.Add( namespaceScopes, name, params ) )
+					if( !constMacros.Add( Symbol( namespaceScopes, name ), params ) )
 					{
 						compiler.errorMessenger.Output( 1, NULL, i );
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Delegate.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Delegate.cpp	(revision 636)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Delegate.cpp	(revision 637)
@@ -115,5 +115,5 @@
 			}
 
-			delegates.Put( new Delegate( namespaceScopes, importedNamespaces, name, procKind, paramStr, returnTypeName, nowLine ) );
+			delegates.Put( new Delegate( Symbol( namespaceScopes, name ), importedNamespaces, procKind, paramStr, returnTypeName, nowLine ) );
 		}
 	}
@@ -131,5 +131,5 @@
 		const Delegate &dg = *delegates.Iterator_GetNext();
 
-		if( !dg.isTargetObjectModule )
+		if( dg.IsExternal() )
 		{
 			// 静的リンクライブラリの場合は飛ばす（既にインスタンスが定義済みであるため）
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Procedure.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Procedure.cpp	(revision 636)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Procedure.cpp	(revision 637)
@@ -156,5 +156,5 @@
 
 	//ソースコードの位置
-	userProc.SetSourceCodePosition( SourceCodePosition( compiler.GetObjectModule().GetName(), nowLine ) );
+	userProc.SetSourceCodePosition( SourceCodePosition( compiler.GetCurrentRelationalObjectModuleIndexForSource(), nowLine ) );
 
 	//パラメータ
@@ -286,5 +286,5 @@
 
 	//ソースコードの位置
-	pProc->SetSourceCodePosition( SourceCodePosition( compiler.GetObjectModule().GetName(), nowLine ) );
+	pProc->SetSourceCodePosition( SourceCodePosition( compiler.GetCurrentRelationalObjectModuleIndexForSource(), nowLine ) );
 
 	//パラメータ
@@ -615,5 +615,5 @@
 	}
 
-	UserProc *pUserProc = new UserProc( namespaceScopes, importedNamespaces, temporary, kind, isMacro, isCdecl, isExport );
+	UserProc *pUserProc = new UserProc( Symbol( namespaceScopes, temporary ), importedNamespaces, kind, isMacro, isCdecl, isExport );
 	pUserProc->SetParentClass( pobj_c );
 
@@ -737,5 +737,5 @@
 
 	// オブジェクトを生成
-	DllProc *pDllProc = new DllProc( namespaceScopes, procName, kind, isCdecl, dllFileName, alias );
+	DllProc *pDllProc = new DllProc( Symbol( namespaceScopes, procName ), kind, isCdecl, dllFileName, alias );
 
 	// パラメータを解析
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_TypeDef.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_TypeDef.cpp	(revision 636)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_TypeDef.cpp	(revision 637)
@@ -75,6 +75,5 @@
 	typeDefs.push_back(
 		TypeDef(
-			namespaceScopes,
-			temporary,
+			Symbol( namespaceScopes, temporary ),
 			pTemp,
 			baseType
@@ -176,6 +175,5 @@
 				typeDefs.push_back(
 					TypeDef(
-						namespaceScopes,
-						temporary,
+						Symbol( namespaceScopes, temporary ),
 						"Long",
 						baseType
Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/ProcedureGenerator.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/ProcedureGenerator.cpp	(revision 636)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/ProcedureGenerator.cpp	(revision 637)
@@ -21,5 +21,5 @@
 	while(classes.Iterator_HasNext()){
 		CClass &objClass = *classes.Iterator_GetNext();
-		if( objClass.isTargetObjectModule == false )
+		if( objClass.IsExternal() )
 		{
 			// 静的リンクライブラリの場合は飛ばす（既にインスタンスが定義済みであるため）
