/**
 * SyntaxHighlighter
 * http://alexgorbatchev.com/
 *
 * SyntaxHighlighter is donationware. If you are using it, please donate.
 * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
 *
 * @version
 * 2.1.364 (October 15 2009)
 * 
 * @copyright
 * Copyright (C) 2004-2009 Alex Gorbatchev.
 *
 * @license
 * This file is part of SyntaxHighlighter.
 * 
 * SyntaxHighlighter is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * SyntaxHighlighter is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with SyntaxHighlighter.  If not, see <http://www.gnu.org/copyleft/lesser.html>.
 */
SyntaxHighlighter.brushes.ObjC = function()
{
	// Copyright 2006 Shin, YoungJin
	
	var datatypes =
	'char bool BOOL double float int ' +
	'long short id void';

	var keywords =  '@property @selector @interface @end @implementation @synthesize ' +
					'IBAction IBOutlet SEL YES NO readwrite readonly nonatomic nil NULL ' +
					'super self copy ' +
					'break case catch class const copy __finally __exception __try ' +
					'const_cast continue private public protected __declspec ' + 
					'default delete deprecated dllexport dllimport do ' + 
					'else enum explicit extern if for friend goto inline ' + 
					'mutable naked namespace new noinline noreturn nothrow ' + 
					'register return selectany ' + 
					'sizeof static struct switch template this ' + 
					'thread throw true false try typedef typeid typename union ' + 
					'using uuid virtual volatile wchar_t while';
					
	var functions =	'assert isalnum isalpha iscntrl isdigit isgraph islower isprint' +
					'ispunct isspace isupper isxdigit tolower toupper errno localeconv ' +
					'setlocale acos asin atan atan2 ceil cos cosh exp fabs floor fmod ' +
					'frexp ldexp log log10 modf pow sin sinh sqrt tan tanh jmp_buf ' +
					'longjmp setjmp raise signal sig_atomic_t va_arg va_end va_start ' +
					'clearerr fclose feof ferror fflush fgetc fgetpos fgets fopen ' +
					'fprintf fputc fputs fread freopen fscanf fseek fsetpos ftell ' +
					'fwrite getc getchar gets perror printf putc putchar puts remove ' +
					'rename rewind scanf setbuf setvbuf sprintf sscanf tmpfile tmpnam ' +
					'ungetc vfprintf vprintf vsprintf abort abs atexit atof atoi atol ' +
					'bsearch calloc div exit free getenv labs ldiv malloc mblen mbstowcs ' +
					'mbtowc qsort rand realloc srand strtod strtol strtoul system ' +
					'wcstombs wctomb memchr memcmp memcpy memmove memset strcat strchr ' +
					'strcmp strcoll strcpy strcspn strerror strlen strncat strncmp ' +
					'strncpy strpbrk strrchr strspn strstr strtok strxfrm asctime ' +
					'clock ctime difftime gmtime localtime mktime strftime time';

	this.regexList = [
		{ regex: SyntaxHighlighter.regexLib.singleLineCComments,			css: 'comments' },			// one line comments
		{ regex: SyntaxHighlighter.regexLib.multiLineCComments,			css: 'comments' },			// multiline comments
		{ regex: SyntaxHighlighter.regexLib.doubleQuotedString,			css: 'string' },			// strings
		{ regex: SyntaxHighlighter.regexLib.singleQuotedString,			css: 'string' },			// strings
		{ regex: /^ *#.*/gm,								css: 'preprocessor' },
		{ regex: new RegExp(this.getKeywords(datatypes), 'gm'),			css: 'color1 bold' },
		{ regex: new RegExp(this.getKeywords(functions), 'gm'),			css: 'functions bold' },
		{ regex: new RegExp(this.getKeywords(keywords), 'gm'),			css: 'keyword bold' },
		{ regex: new RegExp('\\bNS\\w+\\b', 'g'),			css: 'keyword' },
		{ regex: new RegExp('@\\w+\\b', 'g'),				css: 'keyword' }
		];
};

SyntaxHighlighter.brushes.ObjC.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.ObjC.aliases	= ['obj-c', 'objc'];
