Sha256: a74868d2fb20c68b473c5756c687a63a095e9c09265afd80329651a957f08e14

Contents?: true

Size: 1.64 KB

Versions: 6

Compression:

Stored size: 1.64 KB

Contents

require_relative "version"

module Objc2swiftAssistant

  class ObjCAbstractParameter
    attr_accessor :param_type
    attr_accessor :pointer_level    # 0 -> not a pointer; 1 -> *; 2 -> **, ...
    attr_accessor :is_block_type
    attr_accessor :match_failure
    attr_accessor :is_weak

    def initialize
      @pointer_level = 0
      @param_type = nil
      @is_weak = false
    end

    def match_failed
      return ! @match_failure.nil?
    end

    def process_pointer_str( pointer_str )
      if pointer_str.nil?
        @pointer_level = 0
      else
        @pointer_level = pointer_str.length
      end
    end
  end



  class ObjCProperty < ObjCAbstractParameter
    #TODO: Use this class for properties
  end

  class ObjCReturnType < ObjCAbstractParameter
    #TODO: Use this class for return types
  end


  class ObjCMethodParameter < ObjCAbstractParameter
    attr_accessor :param_name
    attr_accessor :param_label      # May be empty for 1st param
    attr_accessor :null_qualifier

    def initialize
      super()
    end

    def from_declaration( declaration_str )

    end

  end

  class ObjCBlockParameter < ObjCAbstractParameter
    attr_accessor :param_name
    attr_accessor :null_qualifier

    def from_declaration( declaration_str )
      # TODO: nillabel qulaifiers
      m = declaration_str.match( /^(?<type>\w*)\s*(?<pointer_values>[\*&]*)?\s*(?<name>\w*)/ )
      if m.nil?
        match_failure = "Could not parse block agument: #{declaration_str }"
      else
        process_pointer_str( m[ 'pointer_values' ] )
        @is_block_type = false
        @param_type = m[ 'type' ]
        @param_name = m[ 'name' ]
      end
    end
  end

end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
objc2swift_assistant-0.3.6 lib/objc2swift_assistant/objc_variable_types.rb
objc2swift_assistant-0.3.4 lib/objc2swift_assistant/objc_variable_types.rb
objc2swift_assistant-0.3.3 lib/objc2swift_assistant/objc_variable_types.rb
objc2swift_assistant-0.3.2 lib/objc2swift_assistant/objc_variable_types.rb
objc2swift_assistant-0.3.1 lib/objc2swift_assistant/objc_variable_types.rb
objc2swift_assistant-0.3.0 lib/objc2swift_assistant/objc_variable_types.rb