--- 
name: SWIG
fileTypes: 
- i
- swg
scopeName: source.swig
uuid: C781B0D0-BED9-11D9-A141-000393A143CC
foldingStartMarker: (/\*\*|%?\{\s*$)
patterns: 
- include: source.c++
  comment: SWIG files contain C or C++ code, so it's logical to derive from the C++ rules
- name: keyword.other.directive.inlinecode.swig
  captures: 
    "1": 
      name: punctuation.definition.keyword.swig
  match: (%)(header|init|inline|native|runtime|wrapper)\b
- name: keyword.other.function-parameter.swig
  captures: 
    "1": 
      name: punctuation.definition.keyword.swig
  match: (\$)([\*&]*[1-9]+(_name|_type|_ltype|_basetype|_mangle|_descriptor){0,1}|action|input|result|symname)\b
- name: support.function.type.swig
  match: \b(in|out|typecheck|arginit|default|check|argout|freearg|newfree|memberin|varin|varout|throws|numinputs)\b
- name: keyword.other.directive.swig
  captures: 
    "1": 
      name: punctuation.definition.keyword.swig
  match: (%)(apply|callback|clear|constant|contract|define|enddef|extend|feature|ignore|insert|makedefault|module|nocallback|nodefault|rename|typemap|varargs|template)\b
- name: meta.preprocessor.swig
  captures: 
    "1": 
      name: keyword.control.import.swig
  match: \(\s*(allegrocl|chicken|csharp|guile|java|modula3|mzscheme|ocaml|perl|php|pike|python|ruby|sexp|tcl|xml)\b
- name: meta.preprocessor.swig
  captures: 
    "1": 
      name: punctuation.definition.preprocessor.swig
    "2": 
      name: keyword.control.import.swig
    "3": 
      name: string.quoted.double.swig
  begin: ^\s*(%)\s*(include|import)\b\s+("?[A-Za-z0-9\._]+"?)
  end: $
- name: meta.preprocessor.macro.swig
  captures: 
    "1": 
      name: punctuation.definition.preprocessor.swig
  match: (%)([A-Za-z]+[A-Za-z0-9_]*)\b
- name: storage.type.swig
  match: \bSWIG_TYPECHECK_(POINTER|VOIDPTR|BOOL|UINT8|INT8|UINT16|INT16|UINT32|INT32|UINT64|INT64|UINT128|INT128|INTEGER|FLOAT|DOUBLE|COMPLEX|UNICHAR|UNISTRING|CHAR|STRING|BOOL_ARRAY|INT8_ARRAY|INT16_ARRAY|INT32_ARRAY|INT64_ARRAY|INT128_ARRAY|FLOAT_ARRAY|DOUBLE_ARRAY|CHAR_ARRAY|STRING_ARRAY)\b
- name: source.swig.codeblock
  captures: 
    "1": 
      name: punctuation.section.embedded.swig
  match: (%\{|%\})
foldingStopMarker: (\*\*/|^\s*%?\})
keyEquivalent: ^~S
