<unit name="ok_operator_test">
  <description><abstract>Operator overloads Delphi and FPC</abstract></description>
  <routine name=":=" declaration="Operator :=(C : TMyType2) z : TMyType;" type="operator">
  </routine>
  <routine name="+" declaration="Operator +(c: TMyType; c1: TMyType) c2: TMyType;" type="operator">
  </routine>
  <routine name="-" declaration="Operator -(c: TMyType; c1: TMyType) c2: TMyType;" type="operator">
  </routine>
  <routine name="*" declaration="Operator *(c: TMyType; i: integer) c2: TMyType;" type="operator">
  </routine>
  <routine name="/" declaration="Operator /(A, B: TMyType): TMyType;" type="operator">
  </routine>
  <routine name="**" declaration="Operator **(A, B: TMyType): TMyType;" type="operator">
  </routine>
  <routine name="=" declaration="operator =(const c, d: TMyType) : boolean;" type="operator">
  </routine>
  <routine name="&lt;" declaration="operator &lt;(const c, d: TMyType) : boolean;" type="operator">
  </routine>
  <routine name="&gt;" declaration="operator &gt;(const c, d: TMyType) : boolean;" type="operator">
  </routine>
  <routine name="&lt;=" declaration="operator &lt;=(const c, d: TMyType) : boolean;" type="operator">
  </routine>
  <routine name="&gt;=" declaration="operator &gt;=(const c, d: TMyType) : boolean;" type="operator">
  </routine>
  <routine name="or" declaration="operator or(const c,d:TMyType) : TMyType;" type="operator">
  </routine>
  <routine name="and" declaration="operator and(const c,d:TMyType) : TMyType;" type="operator">
  </routine>
  <routine name="xor" declaration="operator xor(const c,d:TMyType) : TMyType;" type="operator">
  </routine>
  <structure name="TDelphiRec" name_with_generic="TDelphiRec" type="record">
    <description><abstract>Operator overloads declared within a record (Delphi 2006+)</abstract></description>
    <routine name="Add" declaration="class operator Add(a, b: TDelphiRec): TDelphiRec;" visibility="public" type="operator">
      <description><abstract>Addition of two operands of type TDelphiRec</abstract></description>
    </routine>
    <routine name="Subtract" declaration="class operator Subtract(a, b: TDelphiRec): TDelphiRec;" visibility="public" type="operator">
      <description><abstract>Subtraction of type TDelphiRec</abstract></description>
    </routine>
    <routine name="Implicit" declaration="class operator Implicit(a: Integer): TDelphiRec;" visibility="public" type="operator">
      <description><abstract>Implicit conversion of an Integer to type TDelphiRec</abstract></description>
    </routine>
    <routine name="Implicit" declaration="class operator Implicit(a: TDelphiRec): Integer;" visibility="public" type="operator">
      <description><abstract>Implicit conversion of TDelphiRec to Integer</abstract></description>
    </routine>
    <routine name="Explicit" declaration="class operator Explicit(a: Double): TDelphiRec;" visibility="public" type="operator">
      <description><abstract>Explicit conversion of a Double to TDelphiRec</abstract></description>
    </routine>
  </structure>
  <structure name="TMyClass" name_with_generic="TMyClass" type="class">
    <description><abstract>In this case, &quot;Operator&quot; is used as a normal Delphi identifier</abstract></description>
    <ancestor name="TObject" declaration="TObject" />
    <property name="Operator" declaration="property Operator: string read FOperator write FOperator;" visibility="public" indexdecl="" type="string" reader="FOperator" writer="FOperator" default_in_class="False" default_value="" nodefault="False"   stored="">
      <description><abstract>In this case, &quot;Operator&quot; is used as a normal Delphi identifier, not as an ObjFpc keyword.</abstract><detailed> PasDoc should tolerate this, for compatibility with Delphi and with FPC in $mode delphi.</detailed></description>
    </property>
  </structure>
  <structure name="TMyType" name_with_generic="TMyType" type="record">
  </structure>
  <structure name="TMyType2" name_with_generic="TMyType2" type="record">
  </structure>
</unit>
