(self, constraints, ground_truth=None, var_mapping: Optional[Dict['SimVariable','TypeVariable']]=None,
                 prioritize_char_array_over_struct: bool=True,
                 must_struct: Optional[Set['TypeVariable']]=None,
                 )
:param constraints:
        :param ground_truth:        A set of SimType-style solutions for some or all type variables. They will be
                                    respected during type solving.
        :param var_mapping:
        :param prioritize_char_array_over_struct:
        :param must_struct:
def __init__(self, constraints, ground_truth=None, var_mapping: Optional[Dict['SimVariable','TypeVariable']]=None,
                 prioritize_char_array_over_struct: bool=True,
                 must_struct: Optional[Set['TypeVariable']]=None,
                 ):
        """

        :param constraints:
        :param ground_truth:        A set of SimType-style solutions for some or all type variables. They will be
                                    respected during type solving.
        :param var_mapping:
        :param prioritize_char_array_over_struct:
        :param must_struct:
        """

        self._constraints: Set['TypeConstraint'] = constraints
        self._ground_truth: Optional[Dict['TypeVariable','SimType']] = ground_truth
        self._var_mapping = var_mapping  # variable mapping is only used for debugging purposes
        self._must_struct = must_struct

        self.bits = self.project.arch.bits
        self.solution = None
        self.structs = None
        self.simtypes_solution = None

        # a bunch of arguments to tweak with
        self._prioritize_char_array_over_struct = prioritize_char_array_over_struct

        # import pprint
        # pprint.pprint(self._var_mapping)
        # pprint.pprint(self._constraints)
        self._analyze()
def __init__ ( self , constraints , ground_truth = None , var_mapping : Optional [ Dict [ 'SimVariable' , 'TypeVariable' ] ] = None , prioritize_char_array_over_struct : bool = True , must_struct : Optional [ Set [ 'TypeVariable' ] ] = None , ) : self . _constraints : Set [ 'TypeConstraint' ] = constraints self . _ground_truth : Optional [ Dict [ 'TypeVariable' , 'SimType' ] ] = ground_truth self . _var_mapping = var_mapping # variable mapping is only used for debugging purposes self . _must_struct = must_struct self . bits = self . project . arch . bits self . solution = None self . structs = None self . simtypes_solution = None # a bunch of arguments to tweak with self . _prioritize_char_array_over_struct = prioritize_char_array_over_struct # import pprint # pprint.pprint(self._var_mapping) # pprint.pprint(self._constraints) self . _analyze ( )