<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
	<dict>
		<key>comment</key>
		<string></string>
		<key>fileTypes</key>
		<array>
			<string>cpp</string>
			<string>h</string>
			<string>hpp</string>
		</array>
		<key>firstLineMatch</key>
		<string>-\*- C\+\+ -\*-</string>
		<key>foldingStartMarker</key>
		<string>(?x)
			/\*\*(?!\*)
			|^(?![^{]*?//|[^{]*?/\*(?!.*?\*/.*?\{)).*?\{\s*($|//|/\*(?!.*?\*/.*\S))
		</string>
		<key>foldingStopMarker</key>
		<string>(?&lt;!\*)\*\*/|^\s*\}</string>
		<key>keyEquivalent</key>
		<string>^~C</string>
		<key>name</key>
		<string>CPP Arma</string>
		<key>patterns</key>
		<array>
			<dict>
				<key>include</key>
				<string>punctuation.definition.invalid.c++</string>
			</dict>
			<dict>
				<key>include</key>
				<string>invalid.illegal.you-forgot-semicolon.c++</string>
			</dict>
			<dict>
				<key>match</key>
				<string>(?i:(exitwith|then))( |){1,9}([a-zA-Z_0-9.]+)|(?i:(if))(.*)(then|exitwith)( |){1,9}([a-zA-Z_0-9.]+)|(,( ||\t|\n){0,999}})</string>
				<key>name</key>
				<string>keyword.critical.rpt</string>
			</dict>
			<dict>
				<key>match</key>
				<string>(?i:(//)(.*)(todo|note)(.*))</string>
				<key>name</key>
				<string>keyword.green.rpt</string>
			</dict>
			<dict>
				<key>match</key>
				<string>((((;)){2,9}))|(?i:(//)(.*)(?i:(check))(.*))</string>
				<key>name</key>
				<string>keyword.danger.rpt</string>
			</dict>
			<dict>
				<key>include</key>
				<string>#special_block</string>
			</dict>
			<dict>
				<key>include</key>
				<string>source.c</string>
			</dict>
			<dict>
				<key>match</key>
				<string>\b(friend|explicit|virtual)\b</string>
				<key>name</key>
				<string>storage.modifier.c++</string>
			</dict>
			<dict>
				<key>match</key>
				<string>\b(private:|protected:|public:)</string>
				<key>name</key>
				<string>storage.modifier.c++</string>
			</dict>
			<dict>
				<key>match</key>
				<string>\b(catch|operator|try|throw|using)\b</string>
				<key>name</key>
				<string>keyword.control.c++</string>
			</dict>
			<dict>
				<key>match</key>
				<string>\bdelete\b(\s*\[\])?|\bnew\b(?!])</string>
				<key>name</key>
				<string>keyword.control.c++</string>
			</dict>
			<dict>
				<key>comment</key>
				<string>common C++ instance var naming idiom -- fMemberName</string>
				<key>match</key>
				<string>\b(f|m)[A-Z]\w*\b</string>
				<key>name</key>
				<string>variable.other.readwrite.member.c++</string>
			</dict>
			<dict>
				<key>match</key>
				<string>\b(this)\b</string>
				<key>name</key>
				<string>variable.language.c++</string>
			</dict>
			<dict>
				<key>match</key>
				<string>\btemplate\b\s*</string>
				<key>name</key>
				<string>storage.type.template.c++</string>
			</dict>
			<dict>
				<key>match</key>
				<string>\b(const_cast|dynamic_cast|reinterpret_cast|static_cast)\b\s*</string>
				<key>name</key>
				<string>keyword.operator.cast.c++</string>
			</dict>
			<dict>
				<key>match</key>
				<string>\b(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq)\b</string>
				<key>name</key>
				<string>keyword.operator.c++</string>
			</dict>
			<dict>
				<key>match</key>
				<string>\b(class|wchar_t)\b</string>
				<key>name</key>
				<string>storage.type.c++</string>
			</dict>
			<dict>
				<key>match</key>
				<string>\b(export|mutable|typename)\b</string>
				<key>name</key>
				<string>storage.modifier.c++</string>
			</dict>
			<dict>
				<key>begin</key>
				<string>(?x)
					(?:  ^                                 # begin-of-line
					|  (?: (?&lt;!else|new|=) )             #  or word + space before name
					)
					((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) # actual name
					\s*(\()                           # start bracket or end-of-line
				</string>
				<key>beginCaptures</key>
				<dict>
					<key>1</key>
					<dict>
						<key>name</key>
						<string>entity.name.function.c++</string>
					</dict>
					<key>2</key>
					<dict>
						<key>name</key>
						<string>punctuation.definition.parameters.c</string>
					</dict>
				</dict>
				<key>end</key>
				<string>\)</string>
				<key>endCaptures</key>
				<dict>
					<key>0</key>
					<dict>
						<key>name</key>
						<string>punctuation.definition.parameters.c</string>
					</dict>
				</dict>
				<key>name</key>
				<string>meta.function.destructor.c++</string>
				<key>patterns</key>
				<array>
					<dict>
						<key>include</key>
						<string>$base</string>
					</dict>
				</array>
			</dict>
			<dict>
				<key>begin</key>
				<string>(?x)
					(?:  ^                                 # begin-of-line
					|  (?: (?&lt;!else|new|=) )             #  or word + space before name
					)
					((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) # actual name
					\s*(\()                           # terminating semi-colon
				</string>
				<key>beginCaptures</key>
				<dict>
					<key>1</key>
					<dict>
						<key>name</key>
						<string>entity.name.function.c++</string>
					</dict>
					<key>2</key>
					<dict>
						<key>name</key>
						<string>punctuation.definition.parameters.c</string>
					</dict>
				</dict>
				<key>end</key>
				<string>\)</string>
				<key>endCaptures</key>
				<dict>
					<key>0</key>
					<dict>
						<key>name</key>
						<string>punctuation.definition.parameters.c</string>
					</dict>
				</dict>
				<key>name</key>
				<string>meta.function.destructor.prototype.c++</string>
				<key>patterns</key>
				<array>
					<dict>
						<key>include</key>
						<string>$base</string>
					</dict>
				</array>
			</dict>
		</array>
		<key>repository</key>
		<dict>
			<key>angle_brackets</key>
			<dict>
				<key>begin</key>
				<string>&lt;</string>
				<key>end</key>
				<string>&gt;</string>
				<key>name</key>
				<string>meta.angle-brackets.c++</string>
				<key>patterns</key>
				<array>
					<dict>
						<key>include</key>
						<string>#angle_brackets</string>
					</dict>
					<dict>
						<key>include</key>
						<string>$base</string>
					</dict>
				</array>
			</dict>
			<key>block</key>
			<dict>
				<key>begin</key>
				<string>\{</string>
				<key>end</key>
				<string>\}</string>
				<key>name</key>
				<string>meta.block.c++</string>
				<key>patterns</key>
				<array>
					<dict>
						<key>captures</key>
						<dict>
							<key>1</key>
							<dict>
								<key>name</key>
								<string>support.function.any-method.c</string>
							</dict>
							<key>2</key>
							<dict>
								<key>name</key>
								<string>punctuation.definition.parameters.c</string>
							</dict>
						</dict>
						<key>match</key>
						<string>(?x)
							(
							(?!while|for|do|if|else|switch|catch|enumerate|return|r?iterate)(?: \b[A-Za-z_][A-Za-z0-9_]*+\b | :: )*+                  # actual name
							)
							\s*(\()</string>
							<key>name</key>
							<string>meta.function-call.c</string>
						</dict>
						<dict>
							<key>include</key>
							<string>$base</string>
						</dict>
					</array>
				</dict>
				<key>constructor</key>
				<dict>
					<key>patterns</key>
					<array>
						<dict>
							<key>begin</key>
							<string>(?x)
								(?:  ^\s*)                             # begin-of-line
								((?!while|for|do|if|else|switch|catch|enumerate|r?iterate)[A-Za-z_][A-Za-z0-9_:]*) # actual name
								\s*(\()                            # start bracket or end-of-line
							</string>
							<key>beginCaptures</key>
							<dict>
								<key>1</key>
								<dict>
									<key>name</key>
									<string>entity.name.function.c++</string>
								</dict>
								<key>2</key>
								<dict>
									<key>name</key>
									<string>punctuation.definition.parameters.c</string>
								</dict>
							</dict>
							<key>end</key>
							<string>\)</string>
							<key>endCaptures</key>
							<dict>
								<key>0</key>
								<dict>
									<key>name</key>
									<string>punctuation.definition.parameters.c</string>
								</dict>
							</dict>
							<key>name</key>
							<string>meta.function.constructor.c++</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>$base</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>begin</key>
							<string>(?x)
								(:)                            # begin-of-line
								((?=\s*[A-Za-z_][A-Za-z0-9_:]* # actual name
								\s*(\()))                      # start bracket or end-of-line
							</string>
							<key>beginCaptures</key>
							<dict>
								<key>1</key>
								<dict>
									<key>name</key>
									<string>punctuation.definition.parameters.c</string>
								</dict>
							</dict>
							<key>end</key>
							<string>(?=\{)</string>
							<key>name</key>
							<string>meta.function.constructor.initializer-list.c++</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>$base</string>
								</dict>
							</array>
						</dict>
					</array>
				</dict>
				<key>special_block</key>
				<dict>
					<key>patterns</key>
					<array>
						<dict>
							<key>match</key>
							<string>(?i:(\$str_[A-Za-z_][A-Za-z0-9_]*|&lt;img image='(.*)'(.*)/&gt;))</string>
							<key>name</key>
							<string>keyword.preprocess.sqf</string>
						</dict>
						<dict>
							<key>match</key>
							<string>( [A-Z_][A-Z0-9_]*;)</string> 
							<key>name</key>
							<string>variable.magic.sqf</string>
						</dict>
						<!-- Common stuff -->
						<dict>
							<key>match</key>
							<string>\b((?i:units|required(Version|Addons)|dev))\b</string> 
							<key>name</key> 
							<string>support.definition.cfg</string>
						</dict>
						<!-- Enum -->
						<dict>
							<key>match</key>
							<string>\b((?i:destruct(engine|default|wreck|tree|tent|no|man|building)|stabilized(inaxisx|inaxesxyz|inaxisy|inaxesboth|inaxesnone)))\b</string> 
							<key>name</key> 
							<string>variable.parameter</string>
						</dict>
						<dict>
							<key>match</key>
							<string>\b((?i:ambient|angle(0|1)|animationList|author|axis|begin|cargoGetInAction|cargoGetOutAction|color|coneFadeCoef|dayLight|direction|displayName(Default|)|driveOnComponent|driverAction|end|features|flareMaxDistance|flareSize|getInAction|getOutAction|hiddenSelections(Textures|)|hideValue|hitpoint|initAngle(X|Y)|innerAngle|intensity|isDiscrete|maximumLoad|(max|min)Value|memory(Points|)(GetIn(Driver|Cargo|Gunner)(Precise|Dir|))|model|offset(0|1)|outerAngle|position|scope(|Curator)|sections(Inherit|)|selection|size|skeleton(Bones|Inherit|Name)|source(Address|)|textureList|threat|transportSoldier|type|typicalCargo|useFlare|usePreciseGetInAction|(occlude|obstruct)SoundsWhenIn|point(Position|Direction)|render(Quality|VisionMode)|fov|explosionShielding|visual|armor|radius|tex|mat|lockCargoAnimationPhase|lockCargo|hitpoint|raw|animPeriod|weapons|magazines|description|(driver|cargo)CanEject|side|ejectDeadCargo|cargo((Get(In|Out|)Action)|PreciseGetInOut)|accuracy|depends|available|bodyFrictionCoef|camera(Begin|End)|cargoAction|castCargoShadow|condition|constant|crew(CrashProtection|Vulnerable|)|cyclic(Aside|Forward)ForceCoef|damageResistance|driverCanSee|effect|epeImpulseDamageCoef|fuelCapacity|fuelConsumptionRate|gunnerUsesPilotView|hardLimit(Start|End)|icon|irScanRangeMax|liftForceCoef|linear|LockDetectionSystem|mainBladeRadius|maxFordingDepth|nameSound|onlyForPlayer|picture|priority|quadratic|radiusView|renderTarget|sensitivity|shortcut|showIn3D|showWindow|start|statement|textToolTip|userActionID|maxspeed|(min|max|init)(Turn|Elev)|canEject|controllable|faction|gunne|gunner(get|)(In|Oust)Action|initFov|initPhase|max(X|Y)RotSpeed|memoryPointDriverOptics|pilotOpticsShowCursor|preciseGetInOut|preciseGetInOut|radarType|slingLoadMaxCargoMass|showNVGCargo|cost|incomingMissileDetectionSystem|memoryPointGun|gun(Beg|End)|memoryPoint(L|R)Missile|availableForSupportTypes|DLC|(landing|empty|)sound(s|(Bush|Water|General)Collision[0-9]|(|Land|Building|Armor|Wood)Crash(es|)|Get(In|Out)|Dammage|Engine(On|Off)(Int|Ext)|Locked|IncommingMissile|(Int|Out)([0-9]|)|)|(rotor|tail)Damage(Int|Out|)|attenuationEffectType|cargoProxyIndexes|cone|defaultCollective|frequency|hideWeaponsCargo|landingSound(Int|Out)[0-9]|overviewPicture|slingCargo(RopeBreak|(At|De)tach(Air|)([0-9]|)|)|soundGet(Out|In)|volume|soundBushCrash|soundWaterCrashes|db[0-9]*|actions|canPullTrigger|collisionShape|connectTo|disableWeapons|enableOptics|file|head(Bob(Mode|Strength)|)|interpolateTo|leaningFactorBeg|looped|soundEnabled|speed|terminal|useIdles|variant(s|)(After|player|AI)|equivalentTo|(left|right)(Hand|leg)IKCurve|reloadMagazine|gunner(Action|Compartments|Name)|proxyIndex|isPersonTurret|ejectDeadGunner|playerPosition|soundAttenuationTurret|disableSoundAttenuation|getInProxyOrder|_generalMacro|activeLight|armorStructural|audible|blinking|border(Bottom|Left|Right|Top)|camouflage|castGunnerShadow|commanding|convexComponent|count|damage(Effect|Full|Half)|destrType|distance|draw(Light|)(Center|)(Size|)|(driver|gunner)(Left|Right)(Hand|Leg)AnimName|enableManualFire|flareVelocity|fuelExplosionPower|gForceShakeAttenuation|gunner(ForceOptics|GetOutAction|OpticsModel)|helmet(Down|MountedDisplay|Position|Right)|impactEffectsSea|interval|lifeTime|mainBladeCenter|mapSize|markerLight|material|max(Move(X|Y|Z)|(Angle(X|Y))|(Fov|GForce)|SmokeDamage|Speed|)|memoryPoint(CM(Dir|)|GunnerOptics)|min(Move(X|Y|Z)|(Angle(X|Y))|(Fov|GForce)|SmokeDamage|Speed|)|name|outGunnerMayFire|passThrough|power|secondaryExplosion|selection((FireAnim|HRotor|VRotor|)(Move|Still|)|(Move|Still|))|simulation|startEngine|supplyRadius|tailBlade(Center|Radius|Vertical)|transportMaxBackpacks|unitInfoType(Lite|RTD|)|unitInfoTypeLite|unitInfoTypeRTD|viewGunnerShadow|washDown(Diameter|Strength)|water(Leakiness|Resistance)|camShakeCoef|fired|commanderCanSee|gunnerCanSee|isCopilot|primaryGunner|body|gun|animationSourceBody|animationSourceGun|gunnerNotSpawned|maxHorizontalRotSpeed|maxVerticalRotSpeed|turretCanSee|maxTorque|max((Main|Tail)Rotor|(Horizontal|Vertical)Stabilizer(Left|Right)|)(Stress|Torque)|stressDamagePerSec|rtd_center|transportMax(Weapons|Magazines)|memoryPointSupply|maxVerticalStabilizerStress))\b</string> 
							<key>name</key> 
							<string>support.definition.cfg</string>
						</dict>
						<!-- UI stuff -->
						<dict>
							<key>match</key>
							<string>\b((?i:animTexture(Default|Disabled|Focused|Normal|Over|Pressed|)|bottom|color(Background|Active|)([0-9]|)(Focused|Link(Active|)|Text|Disabled|)|default|font(Bold|)|(I|)GUI|h|height|idc|left|Loading|period(Focus|Over|)|right|shadow(Color|Offset|)|size(Ex|)|sound(Click|Enter|Escape|Push|)|style|tooltip(Color|)(Box|Shade|Text|)|top|type|underline|(v|)align|w|width|x|y|(text|speech)(Plural|Singular|)|autoplay|loops|idd|on(Un|)Load|disableCustomColors|movingEnable|show|enableSimulation|(progress|)(drag|)(Valid|Invalid|)(Bgr|Bar)|highlight|))\b</string> 
							<key>name</key> 
							<string>support.definition.cfg</string>
						</dict>
						<!-- World stuff -->
						<dict>
							<key>match</key>
							<string>\b((?i:access|centerPosition|cutscenes|directory|elevationOffset|enableTerrainSynth|forecastFog|forecastWeather|format(X|Y|)|horizon(tObject|)|ils(Direction|Position|TaxiIn|TaxiOff)|max(Road|SlopeFactor|Track|)|mid(DetailTexture|RocksInRockSquare|Slope|TreesInForestSquare|Y)|noDetailDist|nopx|offsetX|offsetY|overcast|overcast|pictureMap|pictureShot|plateLetters|rougness|rougness|safePositionAnchor|safePositionRadius|satellite|seagullPos|sky(Object|R|Texture|TextureR|)|start(Date|Fog|Time|Weather)|step(X|Y)|texture|world(Id|Name)|zoomMax|min(Y|Slope)|affectedByWind|character|clutterDist|clutterGrid|deepNight|dust|earlyMorning|earlySun|files|fullDetailDist|fullNight|groundReflection|lateMorning|latitude|longitude|midMorning|minRocksInRockSquare|minTreesInForestSquare|model|morning|names|noon|plateFormat|probability|rough|scaleMax|scaleMin|soundEnviron|soundHit|sunMoon|sunrise|swLighting))\b</string> 
							<key>name</key> 
							<string>support.definition.cfg</string>
						</dict>
						<dict>
							<key>match</key>
							<string>\b(?i:((| ):(| )([A-Za-z_][A-Za-z0-9_]**)))\b</string> 
							<key>name</key> 
							<string>keyword.inherited.ext</string>
						</dict>
						<dict>
							<key>match</key>
							<string>\b(((class |)[A-Za-z_][A-Za-z0-9_]**(:)))\b</string> 
							<key>name</key> 
							<string>keyword.class.ext</string>
						</dict>
						<dict>
							<key>match</key>
							<string>\b(?i:(class ))\b</string> 
							<key>name</key> 
							<string>keyword.control.ext</string>
						</dict>
						<dict>
							<key>begin</key>
							<string>\b(namespace)\s+([A-Za-z_][_A-Za-z0-9:]*\b)?+(?!\s*?(;|=|,))</string>
							<key>end</key>
							<string>(?&lt;=\})</string>
							<key>name</key>
							<string>meta.namespace-block.c++</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>begin</key>
									<string>\{</string>
									<key>end</key>
									<string>\}</string>
									<key>patterns</key>
									<array>
										<dict>
											<key>include</key>
											<string>#special_block</string>
										</dict>
										<dict>
											<key>include</key>
											<string>#constructor</string>
										</dict>
										<dict>
											<key>include</key>
											<string>$base</string>
										</dict>
									</array>
								</dict>
							</array>
						</dict>
						<dict>
							<key>begin</key>
							<string>\b(class|struct)\s+([_A-Za-z][_A-Za-z0-9]*\b)</string>
							<key>beginCaptures</key>
							<dict>
								<key>1</key>
								<dict>
									<key>name</key>
									<string>storage.type.c++</string>
								</dict>
								<key>2</key>
								<dict>
									<key>name</key>
									<string>entity.name.type.c++</string>
								</dict>
							</dict>
							<key>end</key>
							<string>(?&lt;=\})|(?=(;|,|\(|\)|&gt;|\[|\]))</string>
							<key>name</key>
							<string>meta.class-struct-block.c++</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>include</key>
									<string>#angle_brackets</string>
								</dict>
								<dict>
									<key>begin</key>
									<string>(\{)</string>
									<key>beginCaptures</key>
									<dict>
										<key>1</key>
										<dict>
											<key>name</key>
											<string>punctuation.definition.scope.c++</string>
										</dict>
									</dict>
									<key>end</key>
									<string>(\})(\s*\n)?</string>
									<key>endCaptures</key>
									<dict>
										<key>1</key>
										<dict>
											<key>name</key>
											<string>punctuation.definition.invalid.c++</string>
										</dict>
										<key>2</key>
										<dict>
											<key>name</key>
											<string>invalid.illegal.you-forgot-semicolon.c++</string>
										</dict>
									</dict>
									<key>patterns</key>
									<array>
										<dict>
											<key>include</key>
											<string>#special_block</string>
										</dict>
										<dict>
											<key>include</key>
											<string>#constructor</string>
										</dict>
										<dict>
											<key>include</key>
											<string>$base</string>
										</dict>
									</array>
								</dict>
								<dict>
									<key>include</key>
									<string>$base</string>
								</dict>
							</array>
						</dict>
						<dict>
							<key>begin</key>
							<string>\b(extern)(?=\s*")</string>
							<key>beginCaptures</key>
							<dict>
								<key>1</key>
								<dict>
									<key>name</key>
									<string>storage.modifier.c++</string>
								</dict>
							</dict>
							<key>end</key>
							<string>(?&lt;=\})|(?=\w)</string>
							<key>name</key>
							<string>meta.extern-block.c++</string>
							<key>patterns</key>
							<array>
								<dict>
									<key>begin</key>
									<string>\{</string>
									<key>end</key>
									<string>\}</string>
									<key>patterns</key>
									<array>
										<dict>
											<key>include</key>
											<string>#special_block</string>
										</dict>
										<dict>
											<key>include</key>
											<string>$base</string>
										</dict>
									</array>
								</dict>
								<dict>
									<key>include</key>
									<string>$base</string>
								</dict>
							</array>
						</dict>
					</array>
				</dict>
			</dict>
			<key>scopeName</key>
			<string>source.c++</string>
			<key>uuid</key>
			<string>26251B18-6B1D-11D9-AFDB-000D93589AF6</string>
		</dict>
	</plist>
