code: def create_masked_unary_identifier_func(op, cuda_func):
      """
      Provide a wrapper around numba's low-level extension API which
      produces the boilerplate needed to implement a unary function
      of a masked string.
      """
  
      def masked_unary_func_impl(context, builder, sig, args):
          ret = cgutils.create_struct_proxy(sig.return_type)(
              context, builder
          )
          masked_str = cgutils.create_struct_proxy(sig.args[0])(
              context, builder, value=args[0]
          )
  
          result = cuda_func(
              context,
              builder,
              types.boolean(string_view, string_view),
              (masked_str.value,),
          )
          ret.value = result
          ret.valid = masked_str.valid
          return ret._getvalue()
  
      cuda_lower(op, MaskedType(string_view))(masked_unary_func_impl)
  
imports: import operator
  from functools import partial
  from numba import cuda, types
  from numba.core import cgutils
  from numba.core.datamodel import default_manager
  from numba.core.typing import signature
  from numba.cuda.cudaimpl import lower, registry
  from cudf._lib.strings_udf import get_character_cases_table_ptr, get_character_flags_table_ptr, get_special_case_mapping_table_ptr
  from cudf.core.udf.masked_typing import MaskedType
  from cudf.core.udf.strings_typing import size_type, string_view, udf_string
label_desc: Use image node_id 48 for calling a global function with example usage: create_masked_unary_identifier_func(op, cuda_func) and returns: ret