db_version.anubis 1.49 KB
/*
 * Created by PyramIDE.
 * User: フランスのトトロ aka (David RENÉ) 
 * Date: 09/07/2017
 * Time: 00:52
 * © Calexium 
 */

transmit tools/basis.anubis
transmit calexium_lib/types/version.anubis

public type DB_Version_Compare_Result:
  less,
  more,
  equal,
  equal_but_sign
.

public type DB_Version:
  db_version (
    Version version,  //version of database
    String  db_hash   //signature like SHA1 etc
  )
.

public define DB_Version
  db_version
  (
    String  version_str,
    String  hash
  )=
  db_version(version(version_str), hash)
.

public define DB_Version
  db_version
  (
    String  version_str
  )=
  db_version(version(version_str), "")
.

public define DB_Version
  db_v_0 =
  db_version(version(0), "")
.

public define String
  String s + DB_Version db_v =
  s + db_v.version + " " + db_v.db_hash
.


public define String
  DB_Version db_v + String s =
  db_v.version + " " + db_v.db_hash + s
.


public define DB_Version_Compare_Result 
  compare_db_version
  (
    DB_Version v_x,
    DB_Version v_y
  ) =
  if v_x.version.numeric +< v_y.version.numeric then 
    less
  else  if v_x.version.numeric = v_y.version.numeric  then
      if v_x.db_hash = v_y.db_hash  then  
        equal
      else                                      
        equal_but_sign
  else
    more
.

public define Bool
  db_version_less
  (
    DB_Version v_x,
    DB_Version v_y
  )=
  // +=< below is unsigned comparison for Word32 
  if v_x.version.numeric +=< v_y.version.numeric then true else false
.