summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--python/architecture.py12
-rw-r--r--python/binaryview.py26
-rw-r--r--python/demangle.py3
-rw-r--r--python/filemetadata.py2
-rw-r--r--python/flowgraph.py2
-rw-r--r--python/function.py16
-rw-r--r--python/interaction.py20
-rw-r--r--python/lowlevelil.py6
-rw-r--r--python/mediumlevelil.py6
-rw-r--r--python/platform.py6
-rw-r--r--python/plugin.py32
-rw-r--r--python/types.py16
12 files changed, 83 insertions, 64 deletions
diff --git a/python/architecture.py b/python/architecture.py
index b5f3ac6f..5fe2aec9 100644
--- a/python/architecture.py
+++ b/python/architecture.py
@@ -1235,7 +1235,8 @@ class Architecture(with_metaclass(_ArchitectureMetaClass, object)):
:param int size:
:param int write_type:
:param int flag:
- :param list(int_or_str):
+ :param operands:
+ :type operands: list(str) or list(int)
:param LowLevelILFunction il:
:rtype: LowLevelILExpr
"""
@@ -1685,7 +1686,8 @@ class Architecture(with_metaclass(_ArchitectureMetaClass, object)):
:param LowLevelILOperation op:
:param int size:
:param str write_type:
- :param list(str or int) operands: a list of either items that are either string register names or constant \
+ :param operands: a list of either items that are either string register names or constant \
+ :type operands: list(str) or list(int)
integer values
:param LowLevelILFunction il:
:rtype: LowLevelILExpr
@@ -1697,7 +1699,8 @@ class Architecture(with_metaclass(_ArchitectureMetaClass, object)):
:param LowLevelILOperation op:
:param int size:
:param FlagRole role:
- :param list(str or int) operands: a list of either items that are either string register names or constant \
+ :param operands: a list of either items that are either string register names or constant \
+ :type operands: list(str) or list(int)
integer values
:param LowLevelILFunction il:
:rtype: LowLevelILExpr index
@@ -2360,7 +2363,8 @@ class CoreArchitecture(Architecture):
:param LowLevelILOperation op:
:param int size:
:param str write_type:
- :param list(str or int) operands: a list of either items that are either string register names or constant \
+ :param operands: a list of either items that are either string register names or constant \
+ :type operands: list(str) or list(int)
integer values
:param LowLevelILFunction il:
:rtype: LowLevelILExpr
diff --git a/python/binaryview.py b/python/binaryview.py
index b55f9aae..ff85396f 100644
--- a/python/binaryview.py
+++ b/python/binaryview.py
@@ -641,7 +641,7 @@ class BinaryViewType(with_metaclass(_BinaryViewTypeMetaclass, object)):
:param str filename: Path to filename or bndb
:param bool update_analysis: defaults to True. Pass False to not run update_analysis_and_wait.
- :param callable() progress_func: optional function to be called with the current progress and total count.
+ :param callback progress_func: optional function to be called with the current progress and total count.
:return: returns a BinaryView object for the given filename.
:rtype: BinaryView or None
"""
@@ -1211,8 +1211,8 @@ class BinaryView(object):
def set_default_session_data(cls, name, value):
"""
``set_default_session_data`` saves a variable to the BinaryView.
- :param name: name of the variable to be saved
- :param value: value of the variable to be saved
+ :param str name: name of the variable to be saved
+ :param str value: value of the variable to be saved
:Example:
>>> BinaryView.set_default_session_data("variable_name", "value")
@@ -2227,7 +2227,7 @@ class BinaryView(object):
``create_database`` writes the current database (.bndb) file out to the specified file.
:param str filename: path and filename to write the bndb to, this string `should` have ".bndb" appended to it.
- :param callable() progress_func: optional function to be called with the current progress and total count.
+ :param callback progress_func: optional function to be called with the current progress and total count.
:return: true on success, false on failure
:rtype: bool
"""
@@ -2239,7 +2239,7 @@ class BinaryView(object):
.. note:: :py:meth:`create_database` should have been called prior to executing this method
- :param callable() progress_func: optional function to be called with the current progress and total count.
+ :param callback progress_func: optional function to be called with the current progress and total count.
:return: True if it successfully saved the snapshot, False otherwise
:rtype: bool
"""
@@ -3943,7 +3943,7 @@ class BinaryView(object):
The callee of this function is not responsible for maintaining the lifetime of the returned AnalysisCompletionEvent object.
- :param callable() callback: A function to be called with no parameters when analysis has completed.
+ :param callback callback: A function to be called with no parameters when analysis has completed.
:return: An initialized AnalysisCompletionEvent object.
:rtype: AnalysisCompletionEvent
:Example:
@@ -4821,6 +4821,8 @@ class BinaryView(object):
``get_comment_at`` returns the address-based comment attached to the given address in this BinaryView
Note that address-based comments are different from function-level comments which are specific to each function.
For more information, see :func:`address_comments`.
+ :param int addr: virtual address within the current BinaryView to apply the comment to
+ :rtype: str
"""
return core.BNGetGlobalCommentForAddress(self.handle, addr)
@@ -4832,8 +4834,8 @@ class BinaryView(object):
Note that these are different from function-level comments which are specific to each function.
For more information, see :func:`address_comments`.
- :param addr int: virtual address within the current BinaryView to apply the comment to
- :param comment str: string comment to apply
+ :param int addr: virtual address within the current BinaryView to apply the comment to
+ :param str comment: string comment to apply
:rtype: None
:Example:
@@ -4846,7 +4848,7 @@ class BinaryView(object):
"""
`query_metadata` retrieves a metadata associated with the given key stored in the current BinaryView.
- :param string key: key to query
+ :param str key: key to query
:rtype: metadata associated with the key
:Example:
@@ -4873,7 +4875,7 @@ class BinaryView(object):
for more information. Python objects could obviously be serialized using pickle but this intentionally
a task left to the user since there is the potential security issues.
- :param string key: key value to associate the Metadata object with
+ :param str key: key value to associate the Metadata object with
:param Varies md: object to store.
:rtype: None
:Example:
@@ -4896,7 +4898,7 @@ class BinaryView(object):
"""
`remove_metadata` removes the metadata associated with key from the current BinaryView.
- :param string key: key associated with metadata to remove from the BinaryView
+ :param str key: key associated with metadata to remove from the BinaryView
:rtype: None
:Example:
@@ -4959,7 +4961,7 @@ class BinaryView(object):
- The ``$here`` keyword can be used in calculations and is defined as the ``here`` parameter
- The ``$start``/``$end`` keyword represents the address of the first/last bytes in the file respectively
- :param string expression: Arithmetic expression to be evaluated
+ :param str expression: Arithmetic expression to be evaluated
:param int here: (optional) Base address for relative expressions, defaults to zero
:rtype: int
"""
diff --git a/python/demangle.py b/python/demangle.py
index 8c7dd9b5..04a40b21 100644
--- a/python/demangle.py
+++ b/python/demangle.py
@@ -33,7 +33,8 @@ def get_qualified_name(names):
"""
``get_qualified_name`` gets a qualified name for the provided name list.
- :param list(str) names: name list to qualify
+ :param names: name list to qualify
+ :type names: list(str)
:return: a qualified name
:rtype: str
:Example:
diff --git a/python/filemetadata.py b/python/filemetadata.py
index f95c1142..3f957e10 100644
--- a/python/filemetadata.py
+++ b/python/filemetadata.py
@@ -76,7 +76,7 @@ class FileMetadata(object):
"""
Instantiates a new FileMetadata class.
- :param filename: The string path to the file to be opened. Defaults to None.
+ :param str filename: The string path to the file to be opened. Defaults to None.
:param handle: A handle to the underlying C FileMetadata object. Defaults to None.
"""
if handle is not None:
diff --git a/python/flowgraph.py b/python/flowgraph.py
index 69e3bd69..461cfc22 100644
--- a/python/flowgraph.py
+++ b/python/flowgraph.py
@@ -647,7 +647,7 @@ class FlowGraph(object):
This function does not wait for the graph to be ready to display, but a callback can be provided
to signal when the graph is ready.
- :param callable() callback: Function to be called when the graph is ready to display
+ :param callback callback: Function to be called when the graph is ready to display
:return: Pending flow graph layout request object
:rtype: FlowGraphLayoutRequest
"""
diff --git a/python/function.py b/python/function.py
index 8080c626..d25a8747 100644
--- a/python/function.py
+++ b/python/function.py
@@ -1557,8 +1557,8 @@ class Function(object):
"""
``set_comment_at`` sets a comment for the current function at the address specified
- :param addr int: virtual address within the current function to apply the comment to
- :param comment str: string comment to apply
+ :param int addr: virtual address within the current function to apply the comment to
+ :param str comment: string comment to apply
:rtype: None
:Example:
@@ -1574,9 +1574,9 @@ class Function(object):
source instruction is not contained within this function, no action is performed.
To remove the reference, use :func:`remove_user_code_ref`.
- :param from_addr int: virtual address of the source instruction
- :param to_addr int: virtual address of the xref's destination.
- :param from_arch Architecture: (optional) architecture of the source instruction
+ :param int from_addr: virtual address of the source instruction
+ :param int to_addr: virtual address of the xref's destination.
+ :param Architecture from_arch: (optional) architecture of the source instruction
:rtype: None
:Example:
@@ -1595,9 +1595,9 @@ class Function(object):
If the given address is not contained within this function, or if there is no
such user-defined cross-reference, no action is performed.
- :param from_addr int: virtual address of the source instruction
- :param to_addr int: virtual address of the xref's destination.
- :param from_arch Architecture: (optional) architecture of the source instruction
+ :param int from_addr: virtual address of the source instruction
+ :param int to_addr: virtual address of the xref's destination.
+ :param Architecture from_arch: (optional) architecture of the source instruction
:rtype: None
:Example:
diff --git a/python/interaction.py b/python/interaction.py
index 3a4f7575..d2fc59fc 100644
--- a/python/interaction.py
+++ b/python/interaction.py
@@ -956,8 +956,8 @@ def markdown_to_html(contents):
"""
``markdown_to_html`` converts the provided markdown to HTML
- :param string contents: Markdown contents to convert to HTML
- :rtype: string
+ :param str contents: Markdown contents to convert to HTML
+ :rtype: str
:Example:
>>> markdown_to_html("##Yay")
'<h2>Yay</h2>'
@@ -1057,7 +1057,7 @@ def get_text_line_input(prompt, title):
:param str prompt: String to prompt with.
:param str title: Title of the window when executed in the UI.
- :rtype: string containing the input without trailing newline character.
+ :rtype: str containing the input without trailing newline character.
:Example:
>>> get_text_line_input("PROMPT>", "getinfo")
PROMPT> Input!
@@ -1122,7 +1122,8 @@ def get_choice_input(prompt, title, choices):
:param str prompt: String to prompt with.
:param str title: Title of the window when executed in the UI.
- :param list choices: A list of strings for the user to choose from.
+ :param choices: A list of strings for the user to choose from.
+ :type choices: list(str)
:rtype: integer array index of the selected option
:Example:
>>> get_choice_input("PROMPT>", "choices", ["Yes", "No", "Maybe"])
@@ -1226,9 +1227,12 @@ def get_form_input(fields, title):
- OpenFileNameField - Prompt for file to open
- SaveFileNameField - Prompt for file to save to
- DirectoryNameField - Prompt for directory name
- This API is flexible and works both in the UI via a pop-up dialog and on the command-line.
- :params list fields: A list containing of the above specified classes, strings or None
- :params str title: The title of the pop-up dialog.
+ This API is flexible and works both in the UI via a pop-up dialog and on the command-line. Note that more complicated APIs should consider usin the included pyside2 functionality in the `binaryninjaui` module.
+
+ :param fields: A list containing of the above specified classes, strings or None
+ :type fields: list(str) or list(None) or list(LabelField) or list(SeparatorField) or list(TextLineField) or list(MultilineTextField) or list(IntegerField) or list(AddressField) or list(ChoiceField) or list(OpenFileNameField) or list(SaveFileNameField) or list(DirectoryNameField)
+ :param str title: The title of the pop-up dialog.
+ :rtype None
:Example:
>>> int_f = IntegerField("Specify Integer")
@@ -1236,7 +1240,7 @@ def get_form_input(fields, title):
>>> choice_f = ChoiceField("Options", ["Yes", "No", "Maybe"])
>>> get_form_input(["Get Data", None, int_f, tex_f, choice_f], "The options")
Get Data
-
+ <empty>
Specify Integer 1337
Specify name Peter
The options
diff --git a/python/lowlevelil.py b/python/lowlevelil.py
index b2379164..20266556 100644
--- a/python/lowlevelil.py
+++ b/python/lowlevelil.py
@@ -2667,7 +2667,8 @@ class LowLevelILFunction(object):
"""
``add_label_list`` returns a label list expression for the given list of LowLevelILLabel objects.
- :param list(LowLevelILLabel) lables: the list of LowLevelILLabel to get a label list expression from
+ :param labels: the list of LowLevelILLabel to get a label list expression from
+ :type labels: list(LowLevelILLabel)
:return: the label list expression
:rtype: LowLevelILExpr
"""
@@ -2680,7 +2681,8 @@ class LowLevelILFunction(object):
"""
``add_operand_list`` returns an operand list expression for the given list of integer operands.
- :param list(int) operands: list of operand numbers
+ :param operands: list of operand numbers
+ :type operands: list(int)
:return: an operand list expression
:rtype: LowLevelILExpr
"""
diff --git a/python/mediumlevelil.py b/python/mediumlevelil.py
index 8400d33a..d358753d 100644
--- a/python/mediumlevelil.py
+++ b/python/mediumlevelil.py
@@ -962,7 +962,8 @@ class MediumLevelILFunction(object):
"""
``add_label_list`` returns a label list expression for the given list of MediumLevelILLabel objects.
- :param list(MediumLevelILLabel) labels: the list of MediumLevelILLabel to get a label list expression from
+ :param labels: the list of MediumLevelILLabel to get a label list expression from
+ :type labels: list(MediumLevelILLabel)
:return: the label list expression
:rtype: MediumLevelILExpr
"""
@@ -975,7 +976,8 @@ class MediumLevelILFunction(object):
"""
``add_operand_list`` returns an operand list expression for the given list of integer operands.
- :param list(int) operands: list of operand numbers
+ :param operands: list of operand numbers
+ :type operands: list(int)
:return: an operand list expression
:rtype: MediumLevelILExpr
"""
diff --git a/python/platform.py b/python/platform.py
index 08b064fa..543e7c54 100644
--- a/python/platform.py
+++ b/python/platform.py
@@ -379,7 +379,8 @@ class Platform(with_metaclass(_PlatformMetaClass, object)):
:param str source: source string to be parsed
:param str filename: optional source filename
- :param list(str) include_dirs: optional list of string filename include directories
+ :param include_dirs: optional list of string filename include directories
+ :type include_dirs: list(str)
:param str auto_type_source: optional source of types if used for automatically generated types
:return: :py:class:`TypeParserResult` (a SyntaxError is thrown on parse error)
:rtype: TypeParserResult
@@ -425,7 +426,8 @@ class Platform(with_metaclass(_PlatformMetaClass, object)):
the optional list of directories provided in ``include_dirs``.
:param str filename: filename of file to be parsed
- :param list(str) include_dirs: optional list of string filename include directories
+ :param include_dirs: optional list of string filename include directories
+ :type include_dirs: list(str)
:param str auto_type_source: optional source of types if used for automatically generated types
:return: :py:class:`TypeParserResult` (a SyntaxError is thrown on parse error)
:rtype: TypeParserResult
diff --git a/python/plugin.py b/python/plugin.py
index 72a5ed42..08962381 100644
--- a/python/plugin.py
+++ b/python/plugin.py
@@ -329,8 +329,8 @@ class PluginCommand(with_metaclass(_PluginCommandMetaClass, object)):
:param str name: name of the plugin (use 'Folder\\Name' to have the menu item nested in a folder)
:param str description: description of the plugin
- :param action: function to call with the :class:`~binaryninja.binaryview.BinaryView` as an argument
- :param is_valid: optional argument of a function passed a :class:`~binaryninja.binaryview.BinaryView` to determine whether the plugin should be enabled for that view
+ :param callback action: function to call with the :class:`~binaryninja.binaryview.BinaryView` as an argument
+ :param callback is_valid: optional argument of a function passed a :class:`~binaryninja.binaryview.BinaryView` to determine whether the plugin should be enabled for that view
:rtype: None
.. warning:: Calling ``register`` with the same function name will replace the existing function but will leak the memory of the original plugin.
@@ -348,8 +348,8 @@ class PluginCommand(with_metaclass(_PluginCommandMetaClass, object)):
:param str name: name of the plugin (use 'Folder\\Name' to have the menu item nested in a folder)
:param str description: description of the plugin
- :param action: function to call with the :class:`~binaryninja.binaryview.BinaryView` and address as arguments
- :param is_valid: optional argument of a function passed a :class:`~binaryninja.binaryview.BinaryView` to determine whether the plugin should be enabled for that view
+ :param callback action: function to call with the :class:`~binaryninja.binaryview.BinaryView` and address as arguments
+ :param callback is_valid: optional argument of a function passed a :class:`~binaryninja.binaryview.BinaryView` to determine whether the plugin should be enabled for that view
:rtype: None
.. warning:: Calling ``register_for_address`` with the same function name will replace the existing function but will leak the memory of the original plugin.
@@ -367,8 +367,8 @@ class PluginCommand(with_metaclass(_PluginCommandMetaClass, object)):
:param str name: name of the plugin (use 'Folder\\Name' to have the menu item nested in a folder)
:param str description: description of the plugin
- :param action: function to call with the :class:`~binaryninja.binaryview.BinaryView` and :class:`~binaryninja.binaryview.AddressRange` as arguments
- :param is_valid: optional argument of a function passed a :class:`~binaryninja.binaryview.BinaryView` to determine whether the plugin should be enabled for that view
+ :param callback action: function to call with the :class:`~binaryninja.binaryview.BinaryView` and :class:`~binaryninja.binaryview.AddressRange` as arguments
+ :param callback is_valid: optional argument of a function passed a :class:`~binaryninja.binaryview.BinaryView` to determine whether the plugin should be enabled for that view
:rtype: None
.. warning:: Calling ``register_for_range`` with the same function name will replace the existing function but will leak the memory of the original plugin.
@@ -386,8 +386,8 @@ class PluginCommand(with_metaclass(_PluginCommandMetaClass, object)):
:param str name: name of the plugin (use 'Folder\\Name' to have the menu item nested in a folder)
:param str description: description of the plugin
- :param action: function to call with the :class:`~binaryninja.binaryview.BinaryView` and a :class:`~binaryninja.function.Function` as arguments
- :param is_valid: optional argument of a function passed a :class:`~binaryninja.binaryview.BinaryView` to determine whether the plugin should be enabled for that view
+ :param callback action: function to call with the :class:`~binaryninja.binaryview.BinaryView` and a :class:`~binaryninja.function.Function` as arguments
+ :param callback is_valid: optional argument of a function passed a :class:`~binaryninja.binaryview.BinaryView` to determine whether the plugin should be enabled for that view
:rtype: None
.. warning:: Calling ``register_for_function`` with the same function name will replace the existing function but will leak the memory of the original plugin.
@@ -405,8 +405,8 @@ class PluginCommand(with_metaclass(_PluginCommandMetaClass, object)):
:param str name: name of the plugin (use 'Folder\\Name' to have the menu item nested in a folder)
:param str description: description of the plugin
- :param action: function to call with the :class:`~binaryninja.binaryview.BinaryView` and a :class:`~binaryninja.mediumlevelil.LowLevelILFunction` as arguments
- :param is_valid: optional argument of a function passed a :class:`~binaryninja.binaryview.BinaryView` to determine whether the plugin should be enabled for that view
+ :param callback action: function to call with the :class:`~binaryninja.binaryview.BinaryView` and a :class:`~binaryninja.mediumlevelil.LowLevelILFunction` as arguments
+ :param callback is_valid: optional argument of a function passed a :class:`~binaryninja.binaryview.BinaryView` to determine whether the plugin should be enabled for that view
:rtype: None
.. warning:: Calling ``register_for_low_level_il_function`` with the same function name will replace the existing function but will leak the memory of the original plugin.
@@ -424,8 +424,8 @@ class PluginCommand(with_metaclass(_PluginCommandMetaClass, object)):
:param str name: name of the plugin (use 'Folder\\Name' to have the menu item nested in a folder)
:param str description: description of the plugin
- :param action: function to call with the :class:`~binaryninja.binaryview.BinaryView` and a :class:`~binaryninja.mediumlevelil.LowLevelILInstruction` as arguments
- :param is_valid: optional argument of a function passed a :class:`~binaryninja.binaryview.BinaryView` to determine whether the plugin should be enabled for that view
+ :param callback action: function to call with the :class:`~binaryninja.binaryview.BinaryView` and a :class:`~binaryninja.mediumlevelil.LowLevelILInstruction` as arguments
+ :param callback is_valid: optional argument of a function passed a :class:`~binaryninja.binaryview.BinaryView` to determine whether the plugin should be enabled for that view
:rtype: None
.. warning:: Calling ``register_for_low_level_il_instruction`` with the same function name will replace the existing function but will leak the memory of the original plugin.
@@ -443,8 +443,8 @@ class PluginCommand(with_metaclass(_PluginCommandMetaClass, object)):
:param str name: name of the plugin (use 'Folder\\Name' to have the menu item nested in a folder)
:param str description: description of the plugin
- :param action: function to call with the :class:`~binaryninja.binaryview.BinaryView` and a :class:`~binaryninja.mediumlevelil.MediumLevelILFunction` as arguments
- :param is_valid: optional argument of a function passed a :class:`~binaryninja.binaryview.BinaryView` to determine whether the plugin should be enabled for that view
+ :param callback action: function to call with the :class:`~binaryninja.binaryview.BinaryView` and a :class:`~binaryninja.mediumlevelil.MediumLevelILFunction` as arguments
+ :param callback is_valid: optional argument of a function passed a :class:`~binaryninja.binaryview.BinaryView` to determine whether the plugin should be enabled for that view
:rtype: None
.. warning:: Calling ``register_for_medium_level_il_function`` with the same function name will replace the existing function but will leak the memory of the original plugin.
@@ -462,8 +462,8 @@ class PluginCommand(with_metaclass(_PluginCommandMetaClass, object)):
:param str name: name of the plugin (use 'Folder\\Name' to have the menu item nested in a folder)
:param str description: description of the plugin
- :param action: function to call with the :class:`~binaryninja.binaryview.BinaryView` and a :class:`~binaryninja.mediumlevelil.MediumLevelILInstruction` as arguments
- :param is_valid: optional argument of a function passed a :class:`~binaryninja.binaryview.BinaryView` to determine whether the plugin should be enabled for that view
+ :param callback action: function to call with the :class:`~binaryninja.binaryview.BinaryView` and a :class:`~binaryninja.mediumlevelil.MediumLevelILInstruction` as arguments
+ :param callback is_valid: optional argument of a function passed a :class:`~binaryninja.binaryview.BinaryView` to determine whether the plugin should be enabled for that view
:rtype: None
.. warning:: Calling ``register_for_medium_level_il_instruction`` with the same function name will replace the existing function but will leak the memory of the original plugin.
diff --git a/python/types.py b/python/types.py
index b3403f6d..db56a19c 100644
--- a/python/types.py
+++ b/python/types.py
@@ -565,7 +565,7 @@ class Type(object):
:param int width: width of the integer in bytes
:param bool sign: optional variable representing signedness
- :param string altname: alternate name for type
+ :param str altname: alternate name for type
"""
if sign is None:
sign = BoolWithConfidence(True, confidence = 0)
@@ -584,7 +584,7 @@ class Type(object):
``float`` class method for creating an floating point Types.
:param int width: width of the floating point number in bytes
- :param string altname: alternate name for type
+ :param str altname: alternate name for type
"""
return Type(core.BNCreateFloatType(width, altname))
@@ -662,10 +662,11 @@ class Type(object):
"""
``function`` class method for creating an function Type.
- :param Type ret: width of the integer in bytes
- :param list(Type) params: list of parameter Types
- :param CallingConvention calling_convention: optional argument for function calling convention
- :param bool variable_arguments: optional argument for functions that have a variable number of arguments
+ :param Type ret: return Type of the function
+ :param params: list of parameter Types
+ :type params: list(Type)
+ :param CallingConvention calling_convention: optional argument for the function calling convention
+ :param bool variable_arguments: optional boolean, true if the function has a variable number of arguments
"""
param_buf = (core.BNFunctionParameter * len(params))()
for i in range(0, len(params)):
@@ -1298,7 +1299,8 @@ def preprocess_source(source, filename=None, include_dirs=[]):
:param str source: source to pre-process
:param str filename: optional filename to pre-process
- :param list(str) include_dirs: list of string directories to use as include directories.
+ :param include_dirs: list of string directories to use as include directories.
+ :type include_dirs: list(str)
:return: returns a tuple of (preprocessed_source, error_string)
:rtype: tuple(str,str)
:Example: