X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Flib%2Fgscphftaaux%2Fhfta_runtime_library.cc;h=c4bcc64c3984e20724f9d293fe25d66216c3d98a;hb=refs%2Fchanges%2F56%2F4756%2F1;hp=5cabb200d7a379ee0f7c789d65417e827c701d44;hpb=f6db93ae9480bc87fb36b61cec0bf17e6082b7c1;p=com%2Fgs-lite.git diff --git a/src/lib/gscphftaaux/hfta_runtime_library.cc b/src/lib/gscphftaaux/hfta_runtime_library.cc index 5cabb20..c4bcc64 100644 --- a/src/lib/gscphftaaux/hfta_runtime_library.cc +++ b/src/lib/gscphftaaux/hfta_runtime_library.cc @@ -59,14 +59,19 @@ void hfta_vstr_destroy(vstring * str) { str->length = 0; } +// Make the vstring safe to destroy even if its never initialized +// (e.g. stack-allocated groups containing strings) +void hfta_vstr_init(vstring * str) { + str->length = 0; +} gs_retval_t hfta_vstr_length(vstring *str) { return str->length; } // Assume that SRC is either INTERNAL or SHALLOW_COPY -void hfta_vstr_assign_with_copy_in_tuple(vstring32 * target, vstring * src, - gs_sp_t data_offset, gs_retval_t int_offset) { +void hfta_vstr_assign_with_copy_in_tuple(vstring32 * target, + const vstring * src, gs_sp_t data_offset, gs_retval_t int_offset) { target->length = src->length; target->offset = int_offset; target->reserved = PACKED; @@ -77,7 +82,7 @@ void hfta_vstr_assign_with_copy_in_tuple(vstring32 * target, vstring * src, // Ted wrote the following function. // make deep copy of src. Assume that dst is already empty. // Assume that SRC is either INTERNAL or SHALLOW_COPY -void hfta_vstr_assign_with_copy(vstring *dst, vstring *src){ +void hfta_vstr_assign_with_copy(vstring *dst, const vstring *src){ dst->length=src->length; if(src->length){ dst->offset=(gs_p_t)malloc(dst->length); @@ -89,7 +94,7 @@ void hfta_vstr_assign_with_copy(vstring *dst, vstring *src){ // Ted wrote the following function. // Make a deep copy of src. garbage collect dst if needed. // Assume that SRC is either INTERNAL or SHALLOW_COPY -void hfta_vstr_replace(vstring *dst, vstring *src){ +void hfta_vstr_replace(vstring *dst, const vstring *src){ hfta_vstr_destroy(dst); hfta_vstr_assign_with_copy(dst,src); } @@ -171,6 +176,23 @@ gs_retval_t hfta_vstr_compare(const vstring * s1, const vstring * s2) { return(s1->length - s2->length); } +gs_retval_t hfta_vstr_equal(const vstring * s1, const vstring * s2) { + gs_int32_t x; + + if(s1->length != s2->length) + return -1; + +// cmp_ret=memcmp((void *)s1->offset,(void *)s2->offset,s1->length); + for(x=0;xlength;x++) { + if (((char *)(s1->offset))[x]!=((char *)(s2->offset))[x]) { + return -1; + } + } + + + return 0; +} + gs_param_handle_t register_handle_for_str_regex_match_slot_1(vstring* pattern) { @@ -591,10 +613,12 @@ gs_param_handle_t register_handle_for_int_to_string_map_slot_1(vstring *filename return 0; } - char buf[10000], buf_str[10000]; - gs_int32_t buflen; + gs_int32_t buflen = 10000; + char buf[buflen], buf_str[buflen]; gs_int64_t val; - while(fgets(buf, buflen, fl) > 0){ + char *fret; + fret = fgets(buf, buflen, fl); + while(fret != NULL){ int nvals = sscanf(buf, "%lld,%s", &val, buf_str); if(nvals >= 2){ vstring new_str; @@ -604,6 +628,7 @@ gs_param_handle_t register_handle_for_int_to_string_map_slot_1(vstring *filename memcpy((char *)new_str.offset, buf_str, new_str.length); map_struct->i2s_map[val] = new_str; } + fret = fgets(buf, buflen, fl); } fclose(fl);