docs: def is_unary_operator(oper):
      """returns True, if operator is unary operator, otherwise False"""
      # definition:
      # member in class
      # ret-type operator symbol()
      # ret-type operator [++ --](int)
      # globally
      # ret-type operator symbol( arg )
      # ret-type operator [++ --](X&, int)
      symbols = ['!', '&', '~', '*', '+', '++', '-', '--']
      if not isinstance(oper, calldef_members.operator_t):
          return False
      if oper.symbol not in symbols:
          return False
      if isinstance(oper, calldef_members.member_operator_t):
          if len(oper.arguments) == 0:
              return True
          elif oper.symbol in ['++', '--'] and \
                  isinstance(oper.arguments[0].decl_type, cpptypes.int_t):
              return True
          return False
  
      if len(oper.arguments) == 1:
          return True
      elif oper.symbol in ['++', '--'] \
              and len(oper.arguments) == 2 \
              and isinstance(oper.arguments[1].decl_type, cpptypes.int_t):
          # may be I need to add additional check whether first argument is
          # reference or not?
          return True
      return False