Seed7 - The extensible programming language
Seed7 FAQ Manual Screenshots Examples Libraries Algorithms Download Links
Examples echo args file in string simple clock count words subtype map function generic func declare stmt template operator 3-way if
Declare an operator
 previous   up   next 

The library "color.s7i" contains the following declarations:

const type: color is new struct
    var integer: red_part   is 0;
    var integer: green_part is 0;
    var integer: blue_part  is 0;
  end struct;

const func color: (in color: col1) + (in color: col2) is func
    var color: sum is color.value;
    sum.red_part   := (col1.red_part   + col2.red_part)   div 2;
    sum.green_part := (col1.green_part + col2.green_part) div 2;
    sum.blue_part  := (col1.blue_part  + col2.blue_part)  div 2;
  end func;

The type color is declared as struct with three elements. The three integer elements describe the intensities of the primary colors red, green and blue used in the RGB additive color model. Additionally the + operator is defined to do additive mixing of two colors. The syntax of the + operator is defined in the library "syntax.s7i" as:

$ syntax expr: .(). + .() is                      -> 7;

A totally new operator symbol, such as 'additiveMixing', could be used instead of +. In this case the syntax of 'additiveMixing' would be:

$ syntax expr: .(). additiveMixing .() is         -> 7;

Memory for color objects is managed automatically without garbage collection. Additionally it is not necessary to call constructors to initialize color objects.

 previous   up   next