Index: branches/egtra/ab5.0/abdev/ab_common/include/Lexical/Namespace.h
===================================================================
--- branches/egtra/ab5.0/abdev/ab_common/include/Lexical/Namespace.h	(revision 798)
+++ branches/egtra/ab5.0/abdev/ab_common/include/Lexical/Namespace.h	(revision 810)
@@ -7,4 +7,5 @@
 class NamespaceScopes : public std::vector<std::string>
 {
+	typedef std::vector<std::string> Base;
 	// XMLシリアライズ用
 private:
@@ -17,17 +18,29 @@
 
 public:
-	NamespaceScopes(){}
+	NamespaceScopes() {}
+	NamespaceScopes(NamespaceScopes const& y)
+		: Base(y)
+	{
+	}
+	NamespaceScopes(NamespaceScopes&& y)
+		: Base(std::move(y))
+	{
+	}
 	NamespaceScopes( const std::string &namespaceStr );
 	NamespaceScopes( NamespaceScopes::const_iterator first, NamespaceScopes::const_iterator last )
-		: std::vector<std::string>( first, last )
+		: Base(first, last)
 	{
 	}
 	~NamespaceScopes(){}
 
-	NamespaceScopes operator+ ( const NamespaceScopes &namespaceScopes ) const;
-
 	void append( const NamespaceScopes &namespaceScopes )
 	{
 		insert( end(), namespaceScopes.begin(), namespaceScopes.end() );
+	}
+
+	NamespaceScopes& operator +=(const NamespaceScopes &namespaceScopes)
+	{
+		append(namespaceScopes);
+		return *this;
 	}
 
@@ -77,4 +90,6 @@
 };
 
+NamespaceScopes operator +(const NamespaceScopes &lhs, const NamespaceScopes &rhs);
+
 inline bool operator ==( const NamespaceScopes &lhs, const NamespaceScopes &rhs )
 {
@@ -84,4 +99,5 @@
 class NamespaceScopesCollection : public std::vector<NamespaceScopes>
 {
+	typedef std::vector<NamespaceScopes> Base;
 	// XMLシリアライズ用
 private:
@@ -93,4 +109,16 @@
 
 public:
+	NamespaceScopesCollection() : Base() {}
+	NamespaceScopesCollection(NamespaceScopesCollection&& y) : Base(std::move(y)) {}
+	NamespaceScopesCollection(NamespaceScopesCollection const& y) : Base(y) {}
+	NamespaceScopesCollection& operator =(NamespaceScopesCollection&& y)
+	{
+		Base::operator =(std::move(y));
+		return *this;
+	}
+	NamespaceScopesCollection& operator =(NamespaceScopesCollection const& y)
+	{
+		return operator =(NamespaceScopesCollection(y));
+	}
 	bool IsExist( const NamespaceScopes &namespaceScopes ) const
 	{
Index: branches/egtra/ab5.0/abdev/ab_common/include/Lexical/Source.h
===================================================================
--- branches/egtra/ab5.0/abdev/ab_common/include/Lexical/Source.h	(revision 798)
+++ branches/egtra/ab5.0/abdev/ab_common/include/Lexical/Source.h	(revision 810)
@@ -21,6 +21,27 @@
 	{
 	}
+	IncludedFilesRelation(IncludedFilesRelation const& y)
+		: filePaths(y.filePaths)
+		, lineFileNumbers(y.lineFileNumbers)
+	{
+	}
+	IncludedFilesRelation(IncludedFilesRelation&& y)
+		: filePaths(std::move(y.filePaths))
+		, lineFileNumbers(std::move(y.lineFileNumbers))
+	{
+	}
 	~IncludedFilesRelation()
 	{
+	}
+	IncludedFilesRelation& operator =(IncludedFilesRelation&& y)
+	{
+		filePaths = std::move(y.filePaths);
+		lineFileNumbers = std::move(y.lineFileNumbers);
+		return *this;
+	}
+
+	IncludedFilesRelation& operator =(IncludedFilesRelation const& y)
+	{
+		return *this = std::move(IncludedFilesRelation(y));
 	}
 
@@ -76,4 +97,11 @@
 		buffer[length] = 0;
 	}
+	Text(Text&& text)
+		: length( text.length )
+	{
+		buffer = text.buffer;
+		text.buffer = static_cast<char*>(calloc(1, 1));
+		text.length = 0;
+	}
 	~Text(){
 		free( buffer );
@@ -100,4 +128,11 @@
 	static void SlideString(char *buffer, int slide){
 		memmove(buffer+slide, buffer, strlen(buffer)+1);
+	}
+
+protected:
+	static void SwapImpl(Text& lhs, Text& rhs)
+	{
+		std::swap(lhs.buffer, rhs.buffer);
+		std::swap(lhs.length, rhs.length);
 	}
 };
@@ -192,4 +227,9 @@
 	{
 	}
+	BasicSource(BasicSource&& basicSource)
+		: Text(std::move(basicSource))
+		, includedFilesRelation(std::move(basicSource.includedFilesRelation))
+	{
+	}
 	BasicSource( const std::string &source )
 	{
@@ -230,7 +270,14 @@
 	bool GetLineInfo( int sourceCodePos, int &line, std::string &fileName ) const;
 
-	void operator = ( const BasicSource &source ){
+	BasicSource& operator =(const BasicSource &source)
+	{
 		Realloc( source.length );
 		strcpy( buffer, source.buffer );
+		return *this;
+	}
+	BasicSource& operator =(BasicSource&& source)
+	{
+		Text::SwapImpl(*this, source);
+		return *this;
 	}
 
Index: branches/egtra/ab5.0/abdev/ab_common/include/Lexical/Symbol.h
===================================================================
--- branches/egtra/ab5.0/abdev/ab_common/include/Lexical/Symbol.h	(revision 798)
+++ branches/egtra/ab5.0/abdev/ab_common/include/Lexical/Symbol.h	(revision 810)
@@ -48,6 +48,21 @@
 	{
 	}
+	Symbol(Symbol&& symbol)
+		: namespaceScopes(std::move(symbol.namespaceScopes))
+		, name(std::move(symbol.name))
+	{
+	}
 	Symbol()
 	{
+	}
+	Symbol& operator =(Symbol&& symbol)
+	{
+		namespaceScopes = std::move(symbol.namespaceScopes);
+		name = std::move(symbol.name);
+		return *this;
+	}
+	Symbol& operator =(Symbol const& symbol)
+	{
+		return *this = Symbol(symbol);
 	}
 
