Skip to content
  • Jeff King's avatar
    add object_as_type helper for casting objects · 8ff226a9
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    When we call lookup_commit, lookup_tree, etc, the logic goes
    something like:
    
      1. Look for an existing object struct. If we don't have
         one, allocate and return a new one.
    
      2. Double check that any object we have is the expected
         type (and complain and return NULL otherwise).
    
      3. Convert an object with type OBJ_NONE (from a prior
         call to lookup_unknown_object) to the expected type.
    
    We can encapsulate steps 2 and 3 in a helper function which
    checks whether we have the expected object type, converts
    OBJ_NONE as appropriate, and returns the object.
    
    Not only does this shorten the code, but it also provides
    one central location for converting OBJ_NONE objects into
    objects of other types. Future patches will use that to
    enforce type-specific invariants.
    
    Since this is a refactoring, we would want it to behave
    exactly as the current code. It takes a little reasoning to
    see that this is the case:
    
      - for lookup_{commit,tree,etc} functions, we are ...
    8ff226a9