Oxygen

macro operators
USE: encode operator sets for different types (UDTs)
 
'---------------
'MACRO OPERATORS
'===============

'PARTIAL DEMO

type vector3f
  float x,y,z
end type

macro vector3f_op
  macro ."save"(a,acc)
    a.x = acc.x
    a.y = acc.y
    a.z = acc.z
  end macro
  macro ."load"(acc,a)
    acc.x = a.x
    acc.y = a.y
    acc.z = a.z
  end macro
  macro ."neg"(acc,a)
    acc.x = -a.x
    acc.y = -a.y
    acc.z = -a.z
  end macro
  macro ."+"(acc,a)
    acc.x += a.x
    acc.y += a.y
    acc.z += a.z
  end macro
  macro ."-"(acc,a)
    acc.x -= a.x
    acc.y -= a.y
    acc.z -= a.z
  end macro
  macro ."*"(acc,a)
    acc.x *= a.x
    acc.y *= a.y
    acc.z *= a.z
  end macro
  macro ."/"(acc,a)
    acc.x /= a.x
    acc.y /= a.y
    acc.z /= a.z
  end macro
  '
  macro ."str" string (out,a) 'CORE FUNCTIONS
    out=str(a.x)+","+str(a.y)+","+str(a.z)
  end macro
  '
end macro

'TESTS
'=====
'#recordof "r.txt" vector3f_op
dim vector3f A = {1,2,3}
dim vector3f B = {10,20,30}
dim vector3f C = {10,100,1000}

print str(A)
print str(A+B)
print str(C*(A+B))

  
REMARKS: implementing operators for compund types: vectors, complex numbers, matrices, etc.

RELATED: macros macro functions