<unit name="ok_objc">
  <description><abstract>Objective-C/Objective-Pascal FPC syntax tests.</abstract><detailed> See https://github.com/pasdoc/pasdoc/issues/220 https://wiki.freepascal.org/FPC_PasCocoa</detailed></description>
  <structure name="TSomeCocoaClassObject" name_with_generic="TSomeCocoaClassObject" type="objcclass">
    <ancestor name="NSObject" declaration="NSObject" />
    <routine name="SomeFunction" declaration="procedure SomeFunction(someparameter: SomeType); message 'SomeFunction:';" visibility="public" type="procedure">
    </routine>
  </structure>
  <structure name="NSSomeObject" name_with_generic="NSSomeObject" type="objcclass">
    <ancestor name="NSObject" declaration="NSObject" />
    <routine name="method" declaration="procedure method(params: Integer); message 'method:';" visibility="public" type="procedure">
    </routine>
    <routine name="classmethod" declaration="class procedure classmethod(para: char); override;" visibility="public" type="procedure">
    </routine>
  </structure>
  <structure name="NSView" name_with_generic="NSView" type="objcclass">
    <ancestor name="NSResponder" declaration="NSResponder" />
    <routine name="initWithFrame" declaration="function initWithFrame(rect : NSRect): id; message 'initWithFrame:';" visibility="public" type="function">
      <description><abstract>private field</abstract></description>
    </routine>
    <routine name="addSubview" declaration="procedure addSubview(aview: NSView); message 'addSubview:';" visibility="public" type="procedure">
    </routine>
    <routine name="setAutoresizingMask" declaration="procedure setAutoresizingMask(mask: NSUInteger); message 'setAutoresizingMask:';" visibility="public" type="procedure">
    </routine>
    <routine name="setAutoresizesSubviews" declaration="procedure setAutoresizesSubviews(flag: LongBool); message 'setAutoresizesSubviews:';" visibility="public" type="procedure">
    </routine>
    <routine name="drawRect" declaration="procedure drawRect(dirtyRect: NSRect); message 'drawRect:';" visibility="public" type="procedure">
    </routine>
  </structure>
  <structure name="MyView" name_with_generic="MyView" type="objcclass">
    <ancestor name="MSView" declaration="MSView" />
    <routine name="customMessage" declaration="procedure customMessage(dirtyRect: NSRect); message 'customMessage';" visibility="public" type="procedure">
    </routine>
    <routine name="drawRect" declaration="procedure drawRect(dirtyRect: NSRect); override;" visibility="public" type="procedure">
    </routine>
    <variable name="data" declaration="data: Integer;" visibility="public">
    </variable>
  </structure>
</unit>
