From 3331a73b863226a5d7a38f67f6bf39f07ae727e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20K=C3=A4semann?= Date: Wed, 1 Aug 2018 10:56:37 +0200 Subject: [PATCH] Optimized Git Type Determination - Optimized the type determination logic in ZCL_ABAPGIT_GIT_PACK=>GET_TYPE by removing the string conversion and processing the relevant bits directly --- src/git/zcl_abapgit_git_pack.clas.abap | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/git/zcl_abapgit_git_pack.clas.abap b/src/git/zcl_abapgit_git_pack.clas.abap index 3660b9592..b6b187b4c 100644 --- a/src/git/zcl_abapgit_git_pack.clas.abap +++ b/src/git/zcl_abapgit_git_pack.clas.abap @@ -785,23 +785,21 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION. METHOD get_type. - DATA: lv_char3 TYPE c LENGTH 3, - lv_bitbyte TYPE zif_abapgit_definitions=>ty_bitbyte. + CONSTANTS: c_mask TYPE x VALUE 112. + DATA: xtype TYPE x. + xtype = iv_x BIT-AND c_mask. - lv_bitbyte = zcl_abapgit_convert=>x_to_bitbyte( iv_x ). - lv_char3 = lv_bitbyte+1. - - CASE lv_char3. - WHEN '001'. + CASE xtype. + WHEN 16. rv_type = zif_abapgit_definitions=>gc_type-commit. - WHEN '010'. + WHEN 32. rv_type = zif_abapgit_definitions=>gc_type-tree. - WHEN '011'. + WHEN 48. rv_type = zif_abapgit_definitions=>gc_type-blob. - WHEN '100'. + WHEN 64. rv_type = zif_abapgit_definitions=>gc_type-tag. - WHEN '111'. + WHEN 112. rv_type = zif_abapgit_definitions=>gc_type-ref_d. WHEN OTHERS. zcx_abapgit_exception=>raise( 'Todo, unknown type' ).