Index: trunk/ab5.0/abdev/BasicCompiler_Common/src/ObjectModule.cpp
===================================================================
--- trunk/ab5.0/abdev/BasicCompiler_Common/src/ObjectModule.cpp	(revision 585)
+++ trunk/ab5.0/abdev/BasicCompiler_Common/src/ObjectModule.cpp	(revision 587)
@@ -96,6 +96,6 @@
 void ObjectModule::StaticLink( ObjectModule &objectModule )
 {
-	long dataSectionBaseOffset = this->nativeSection.dataTable.GetSize();
-	int sourceIndexBase = (int)nativeSection.GetSources().size();
+	long dataSectionBaseOffset = dataTable.GetSize();
+	int sourceIndexBase = (int)sources.size();
 
 	// メタ情報を結合
@@ -103,48 +103,91 @@
 
 	// グローバル ネイティブコードを結合
-	objectModule.nativeSection.globalNativeCode.ResetDataSectionBaseOffset( dataSectionBaseOffset );
-	objectModule.nativeSection.globalNativeCode.ResetSourceIndexes( sourceIndexBase );
-	nativeSection.globalNativeCode.PutEx( objectModule.nativeSection.globalNativeCode );
+	objectModule.globalNativeCode.ResetDataSectionBaseOffset( dataSectionBaseOffset );
+	objectModule.globalNativeCode.ResetSourceIndexes( sourceIndexBase );
+	globalNativeCode.PutEx( objectModule.globalNativeCode );
 
 	// データテーブルを結合
-	objectModule.nativeSection.dataTable.ResetDataSectionBaseOffset( dataSectionBaseOffset );
-	this->nativeSection.dataTable.Add( objectModule.nativeSection.dataTable );
+	objectModule.dataTable.ResetDataSectionBaseOffset( dataSectionBaseOffset );
+	dataTable.Add( objectModule.dataTable );
 
 	// ソースコードを結合
-	BOOST_FOREACH( const BasicSource &source, objectModule.nativeSection.GetSources() )
-	{
-		this->nativeSection.GetSources().push_back( source );
+	BOOST_FOREACH( const BasicSource &source, objectModule.sources )
+	{
+		this->sources.push_back( source );
 	}
 
 	// TODO: basbufがいらなくなったら消す
 	extern char *basbuf;
-	basbuf = this->nativeSection.GetSources()[0].GetBuffer();
+	basbuf = this->sources[0].GetBuffer();
 }
 
 bool ObjectModule::Read( const std::string &filePath )
 {
-	Jenga::Common::File file( filePath );
-
-	Jenga::Common::Binary binary;
-	if( !file.ReadBinary( binary ) )
+	// XMLとして読み込む
+	bool isSuccessful = false;
+
+	try{
+#ifdef OBJECT_MODULE_IS_NOT_BINARY
+		std::ifstream ifs( filePath.c_str() );
+		boost::archive::xml_iarchive ia(ifs);
+#else
+		std::ifstream ifs( filePath.c_str(), std::ios::in | std::ios::binary );
+		boost::archive::binary_iarchive ia(ifs);
+#endif
+
+		// ファイルから読込
+		ia >> boost::serialization::make_nvp( RootTagName(), *this );
+
+		isSuccessful = true;
+	}
+	catch( boost::archive::archive_exception e )
+	{
+		MessageBox( NULL, e.what(), "XMLシリアライズの例外", MB_OK );
+	}
+	catch(...){
+		MessageBox( NULL, "archive_exception以外の不明な例外", "XMLシリアライズの例外", MB_OK );
+	}
+
+	if( !isSuccessful )
 	{
 		return false;
 	}
 
-	return Load( binary );
+	return true;
 }
 bool ObjectModule::Write( const std::string &filePath ) const
 {
-	Jenga::Common::File file( filePath );
-
-	Jenga::Common::Binary binary;
-	if( !Save( binary ) )
+	bool isSuccessful = false;
+
+	try{
+#ifdef OBJECT_MODULE_IS_NOT_BINARY
+		std::ofstream ofs( filePath.c_str() );
+		boost::archive::xml_oarchive oa(ofs);
+#else
+		std::ofstream ofs( filePath.c_str(), std::ios::out | std::ios::binary );
+		boost::archive::binary_oarchive oa(ofs);
+#endif
+
+		// ファイルに書き出し
+		oa << boost::serialization::make_nvp( RootTagName(), *this );
+
+		isSuccessful = true;
+	}
+	catch( boost::archive::archive_exception e )
+	{
+		MessageBox( NULL, e.what(), "XMLシリアライズの例外", MB_OK );
+	}
+	catch(...){
+		MessageBox( NULL, "archive_exception以外の不明な例外", "XMLシリアライズの例外", MB_OK );
+	}
+
+	if( !isSuccessful )
 	{
 		return false;
 	}
 
-	return file.WriteBinary( binary );
-}
-bool ObjectModule::Load( const Jenga::Common::Binary &binary )
+	return true;
+}
+bool ObjectModule::ReadString( const std::string &str )
 {
 	bool isSuccessful = false;
@@ -153,6 +196,4 @@
 
 	try{
-		std::string str( binary.GetBuffer(), binary.GetSize() );
-
 #ifdef OBJECT_MODULE_IS_NOT_BINARY
 		std::istringstream iss( str );
@@ -183,5 +224,5 @@
 	return true;
 }
-bool ObjectModule::Save( Jenga::Common::Binary &binary ) const
+bool ObjectModule::WriteString( std::string &str ) const
 {
 	// 出力アーカイブの作成
@@ -200,5 +241,5 @@
 		oa << boost::serialization::make_nvp( RootTagName(), *this );
 
-		binary.Put( oss.str().c_str(), static_cast<int>(oss.str().size()) );
+		str = oss.str();
 
 		isSuccessful = true;
