Doxy comments
This commit is contained in:
		
							parent
							
								
									d2b08d0f26
								
							
						
					
					
						commit
						266def9ee3
					
				@ -46,7 +46,31 @@ namespace nana
 | 
				
			|||||||
		class charset_encoding_interface;
 | 
							class charset_encoding_interface;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/// An intelligent charset class for character code conversion.
 | 
						/*!\class charset
 | 
				
			||||||
 | 
						\brief An intelligent charset class for character code conversion.
 | 
				
			||||||
 | 
						Example:
 | 
				
			||||||
 | 
						1. A UTF-8 string from the socket.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						    int len = ::recv(sd, buf, buflen, 0);
 | 
				
			||||||
 | 
						    textbox.caption(nana::charset(std::string(buf, len), nana::unicode::utf8));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						2. Send the string in text to the socket as UTF-8.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						    std::string utf8str = nana::charset(textbox.caption()).to_bytes(nana::unicode::utf8);
 | 
				
			||||||
 | 
						    ::send(sd, utf8str.c_str(), utf8str.size(), 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						3, Convert a string to the specified multi-byte character code.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						    // Convert to a multibytes string through default system language.
 | 
				
			||||||
 | 
						    std::string mbstr = nana::charset(a_wstring);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						    // If the default system language is English and convert
 | 
				
			||||||
 | 
						    // a Chinese unicode string to multibytes string through GB2312
 | 
				
			||||||
 | 
						    std::setlocale(LC_CTYPE, "zh_CN.GB2312");
 | 
				
			||||||
 | 
						               //set::setlocale(LC_CTYPE, ".936"); call it in Windows
 | 
				
			||||||
 | 
						    std::string mbstr = nana::charset(a_wstring_with_chinese);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						*/
 | 
				
			||||||
	class charset
 | 
						class charset
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	public:
 | 
						public:
 | 
				
			||||||
@ -74,27 +98,3 @@ namespace nana
 | 
				
			|||||||
}//end namespace nana
 | 
					}//end namespace nana
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*!\class charset
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Example
 | 
					 | 
				
			||||||
1. A UTF-8 string from the socket.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		int len = ::recv(sd, buf, buflen, 0);
 | 
					 | 
				
			||||||
		textbox.caption(nana::charset(std::string(buf, len), nana::unicode::utf8));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
2. Send the string in text to the socket as UTF-8.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		std::string utf8str = nana::charset(textbox.caption()).to_bytes(nana::unicode::utf8);
 | 
					 | 
				
			||||||
		::send(sd, utf8str.c_str(), utf8str.size(), 0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
3, Convert a string to the specified multi-byte character code.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			//Convert to a multibytes string through default system language.
 | 
					 | 
				
			||||||
		std::string mbstr = nana::charset(a_wstring);
 | 
					 | 
				
			||||||
			//If the default system language is English and convert
 | 
					 | 
				
			||||||
			//a Chinese unicode string to multibytes string through GB2312
 | 
					 | 
				
			||||||
		std::setlocale(LC_CTYPE, "zh_CN.GB2312"); 
 | 
					 | 
				
			||||||
			//set::setlocale(LC_CTYPE, ".936"); call it in Windows
 | 
					 | 
				
			||||||
		std::string mbstr = nana::charset(a_wstring_with_chinese);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
@ -578,37 +578,38 @@ namespace nana
 | 
				
			|||||||
			std::string data_for_move_;
 | 
								std::string data_for_move_;
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
 | 
					        /// return the first code point and move the pointer to next character, springing to the end by errors
 | 
				
			||||||
		unsigned long utf8char(const unsigned char*& p, const unsigned char* end)
 | 
							unsigned long utf8char(const unsigned char*& p, const unsigned char* end)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			if(p != end)
 | 
								if(p != end)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				if(*p < 0x80)
 | 
									if(*p < 0x80)        // ASCII char   0-127 or 0-0x80
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					return *(p++);
 | 
										return *(p++);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				unsigned ch = *p;
 | 
									unsigned ch = *p;
 | 
				
			||||||
				unsigned long code;
 | 
									unsigned long code;
 | 
				
			||||||
				if(ch < 0xC0)
 | 
									if(ch < 0xC0)       // error? - move to end. Posible ANSI or ISO code-page 
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					p = end;
 | 
										p = end;
 | 
				
			||||||
					return 0;
 | 
										return 0;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				else if(ch < 0xE0 && (p + 1 <= end))
 | 
									else if(ch < 0xE0 && (p + 1 <= end))      // two byte chararcter
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					code = ((ch & 0x1F) << 6) | (p[1] & 0x3F);
 | 
										code = ((ch & 0x1F) << 6) | (p[1] & 0x3F);
 | 
				
			||||||
					p += 2;
 | 
										p += 2;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				else if(ch < 0xF0 && (p + 2 <= end))
 | 
									else if(ch < 0xF0 && (p + 2 <= end))     // 3 byte character
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					code = ((((ch & 0xF) << 6) | (p[1] & 0x3F)) << 6) | (p[2] & 0x3F);
 | 
										code = ((((ch & 0xF) << 6) | (p[1] & 0x3F)) << 6) | (p[2] & 0x3F);
 | 
				
			||||||
					p += 3;
 | 
										p += 3;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				else if(ch < 0x1F && (p + 3 <= end))
 | 
									else if(ch < 0x1F && (p + 3 <= end))   // 4 byte character
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					code = ((((((ch & 0x7) << 6) | (p[1] & 0x3F)) << 6) | (p[2] & 0x3F)) << 6) | (p[3] & 0x3F);
 | 
										code = ((((((ch & 0x7) << 6) | (p[1] & 0x3F)) << 6) | (p[2] & 0x3F)) << 6) | (p[3] & 0x3F);
 | 
				
			||||||
					p += 4;
 | 
										p += 4;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				else
 | 
									else    //  error, go to end
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					p = end;
 | 
										p = end;
 | 
				
			||||||
					return 0;
 | 
										return 0;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user