english
version "1.0"
identify "wxyz"
#: Copyright (c) 1995, 1996, 2002 by Wayne C. Gramlich.
#, All rights reserved.
#,
#, Permission to use, copy, modify, distribute, and sell this software
#, for any purpose is hereby granted without fee provided that the above
#, copyright notice and this permission are retained. The author makes
#, no representations about the suitability of this software for any purpose.
#, It is provided "as is" without express or implied warranty.
module delta
#: This module implements the delta object for SVMS.
define delta #: A history file in memory
record
ancestor delta #: Ancestor delta (or ?? if first)
history history #: Parent {history
} object
merge delta #: Merge delta (or ?? if none)
number unsigned #: Delta number (never changes w/merge)
offset unsigned #: Offset number (changes w/merge)
project_name project_name #: {project_name
} name for {delta
}
resources resources #: {resources
} {delta
} allocated from
symbolic_link string #: Sym. link value (if {type
} = {link
})
timestamp unsigned #: Time delta showed up in project
type delta_type #: Delta type
user_name string #: User name
version version #: {version
} obj. (if {type
} = {file
})
generate address_get, allocate, erase, identical, print
define delta_type #: Delta type
enumeration
deleted #: Deleted file
directory #: Directory
file #: File
link #: Symbolic link
generate equal, print
#: {delta
} procedures:
procedure xallocate@delta
takes
history history
type delta_type
project_name project_name
timestamp unsigned
user_name string
returns delta
#: This procedure will allocate and return a new {delta
} object
#, from {history
} with a type of {type
}, a project of {project
},
#, a timestamp of {timestamp
}, and a user name of {user_name
}.
#: Carefully reinitialize {delta
}:
procedure compare@delta
takes
delta1 delta
delta2 delta
returns integer
#: This procedure will return -1, 0, 1 depending upon whether {delta1
}
#, less than, equal to, or greater than {delta2
}.
procedure deallocate@delta
takes
delta delta
returns_nothing
#: This procedure will deallocate {delta
} and make it available for
#, subsequent reallocation:
procedure deleted_allocate@delta
takes
history history
project_name project_name
timestamp unsigned
user_name string
returns delta
#: This procedure will create and append a new directory {delta
}
#, object for {history
} with a project name of {project_name
}, a timestamp
#, of {timestamp
}, and a user name of {user_name
}.
procedure delta_allocate@delta
takes
version version
project_name project_name
timestamp unsigned
user_name string
ancestor delta
merge delta
returns delta
#: This procedure will allocate and return a new {delta
} object for
#, {version
} with a project name of {project_name
}, a timestamp of
#, {timestamp
}, a number of {number
}, and a user name of {user_name
}.
procedure directory_allocate@delta
takes
history history
project_name project_name
timestamp unsigned
user_name string
returns delta
#: This procedure will create and return a new {delta
} object for
#, {history
} with a project name of {project_name
}, a timestamp of
#, {timestamp
}, and a user name of {user_name
}.
procedure read@delta
takes
data_in_stream data_in_stream
history history
returns delta
#: This procedure will read in a {delta
} object from {data_in_stream
}
#, and return it.
procedure string_append@delta
takes
delta delta
text string
returns_nothing
#: This procedure will append the contents of {delta
} to the end
#, of {delta
}.
procedure write@delta
takes
delta delta
data_out_stream data_out_stream
returns_nothing
#: This procedure will write {delta
} out to {data_out_stream
}.