Class HighFunctionDBUtil


  • public class HighFunctionDBUtil
    extends java.lang.Object
    HighFunctionDBUtil provides various methods for updating the state of a function contained within a program database. It is important to note that the decompiler result state (e.g., HighFunction, HighParam, HighLocal, etc.) is not altered by any of these methods. A new decompiler result will need to be generated to reflect any changes made to the database. Care must be taken when making incremental changes to multiple elements (e.g., Variables)
    • Constructor Detail

      • HighFunctionDBUtil

        public HighFunctionDBUtil()
    • Method Detail

      • commitReturnToDatabase

        public static void commitReturnToDatabase​(HighFunction highFunction,
                                                  SourceType source)
        Commit function return to the underlying database.
        Parameters:
        highFunction -
      • commitParamsToDatabase

        public static void commitParamsToDatabase​(HighFunction highFunction,
                                                  boolean useDataTypes,
                                                  SourceType source)
                                           throws DuplicateNameException,
                                                  InvalidInputException
        Commit all parameters associated with HighFunction to the underlying database.
        Parameters:
        highFunction - is the associated HighFunction
        useDataTypes - is true if the HighFunction's parameter data-types should be committed
        source - is the signature source type to set
        Throws:
        DuplicateNameException - if commit of parameters caused conflict with other local variable/label.
        InvalidInputException - if specified storage is invalid
      • commitParamsToDatabase

        public static void commitParamsToDatabase​(Function function,
                                                  FunctionPrototype prototype,
                                                  java.util.List<Parameter> params,
                                                  boolean hasVarArgs,
                                                  boolean renameConflicts,
                                                  SourceType source)
                                           throws DuplicateNameException,
                                                  InvalidInputException
        Commit the specified parameter list to the specified function.
        Parameters:
        function -
        params -
        renameConflicts - if true any name conflicts will be resolved by renaming the conflicting local variable/label
        source - source type
        Throws:
        DuplicateNameException - if commit of parameters caused conflict with other local variable/label. Should not occur if renameConflicts is true.
        InvalidInputException
      • commitLocalsToDatabase

        public static void commitLocalsToDatabase​(HighFunction highFunction,
                                                  SourceType source)
        Commit all local variables to the underlying database.
        Parameters:
        highFunction -
        source - source type
      • updateDBVariable

        public static void updateDBVariable​(HighVariable variable,
                                            java.lang.String name,
                                            DataType dataType,
                                            SourceType source)
                                     throws InvalidInputException,
                                            DuplicateNameException
        Retype the specified variable in the database. All parameters may be flushed to the database if typed parameter inconsistency detected. Only variable types HighParam, HighLocal and HighGlobal are supported.
        Parameters:
        variable -
        name - new variable name or null to use retain current variable name
        dataType - newly assigned data type or null to retain current variable datatype. Only a fixed-length data type may be specified. If size varies from the current size, an attempt will be made to grow/shrink the storage.
        source - source type
        Throws:
        InvalidInputException - if suitable data type was not specified, or unable to resize storage, or invalid name specified
        DuplicateNameException - if name was specified and conflicts with another variable/label within the function's namespace
        java.lang.UnsupportedOperationException - if unsupported variable type is specified
      • readOverride

        public static DataTypeSymbol readOverride​(Symbol sym)
        Read a call prototype override which corresponds to the specified override code symbol
        Parameters:
        sym - special call override code symbol whose address corresponds to a callsite
        Returns:
        call prototype override DataTypeSymbol or null if associated function signature datatype could not be found