It is accomplished ...
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10 a95241bf-73f2-0310-859d-f6bbb57e9c96
@@ -0,0 +1,735 @@
|
||||
# Include BuildConfig
|
||||
{
|
||||
local buildConfig = [ GLOB $(OBOS_TOP) : BuildConfig ] ;
|
||||
if ! $(buildConfig)
|
||||
{
|
||||
EXIT "No BuildConfig!"
|
||||
"Run ./configure in the source tree's root directory first!" ;
|
||||
}
|
||||
include $(buildConfig) ;
|
||||
}
|
||||
|
||||
# Determine if we're building on PPC or x86
|
||||
# Determine mimetype of executable
|
||||
# Cross compiling can come later
|
||||
|
||||
if $(METROWERKS) {
|
||||
OBOS_TARGET ?= "ppc.R5" ;
|
||||
OBOS_TARGET_TYPE ?= "application/x-be-executable" ;
|
||||
OBOS_ARCH ?= "ppc" ;
|
||||
OBOS_TARGET_DEFINE ?= "ARCH_ppc" ;
|
||||
} else {
|
||||
OBOS_TARGET ?= "x86.R5" ;
|
||||
OBOS_TARGET_TYPE ?= "application/x-vnd.Be-elfexecutable" ;
|
||||
OBOS_ARCH ?= "x86" ;
|
||||
OBOS_TARGET_DEFINE ?= "ARCH_x86" ;
|
||||
OBOS_TARGET_DIR ?= "x86" ;
|
||||
}
|
||||
|
||||
KERNEL_CCFLAGS ?= "-Wall -Wno-multichar -Wmissing-prototypes -finline -nostdinc" ;
|
||||
KERNEL_CCFLAGS += "-fno-builtin -D$(OBOS_TARGET_DEFINE) " ;
|
||||
|
||||
AR = ar r ;
|
||||
OPTIM = -O2 ;
|
||||
|
||||
# If no OBOS_OBJECT_TARGET is not defined yet, use our default directory and
|
||||
# include our "OBOS_TARGET" as subdirectory in there (to prevent different
|
||||
# builds mixing objects from different targets).
|
||||
if ! $(OBOS_OBJECT_TARGET) {
|
||||
OBOS_OBJECT_TARGET ?= [ FDirName $(OBOS_TOP) objects $(OBOS_TARGET) ] ;
|
||||
}
|
||||
|
||||
# If no OBOS_DISTRO_TARGET is not defined yet, use our default directory and
|
||||
# include our "OBOS_TARGET" as subdirectory in there (to prevent different
|
||||
# builds mixing executables from different targets).
|
||||
if ! $(OBOS_DISTRO_TARGET) {
|
||||
OBOS_DISTRO_TARGET ?= [ FDirName $(OBOS_TOP) distro $(OBOS_TARGET) ] ;
|
||||
}
|
||||
|
||||
# Set our version number if not already set and mark it as a developer build
|
||||
if ! $(OBOS_BUILD_VERSION) {
|
||||
OBOS_BUILD_VERSION ?= "1 0 0 a 1" ;
|
||||
OBOS_BUILD_DESCRIPTION ?= "Developer Build" ;
|
||||
}
|
||||
|
||||
# If OBOS_BUILD_VERSION is set, but OBOS_BUILD_DESCRIPTION isn't, mark it as
|
||||
# an unknown build.
|
||||
if ! $(OBOS_BUILD_DESCRIPTION) {
|
||||
OBOS_BUILD_DESCRIPTION ?= "Unknown Build" ;
|
||||
}
|
||||
|
||||
# Relative subdirs for distro dir (these are for *INTERNAL* use by the following rules only!)
|
||||
OBOS_PREFS_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos preferences ] ;
|
||||
OBOS_SERVER_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos system servers ] ;
|
||||
OBOS_ADDON_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos system add-ons ] ;
|
||||
OBOS_SHLIB_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos system lib ] ;
|
||||
OBOS_STLIB_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos system lib ] ;
|
||||
OBOS_KERNEL_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos system ] ;
|
||||
OBOS_TEST_DIR ?= [ FDirName $(OBOS_TOP) tests ] ;
|
||||
|
||||
OBOS_KERNEL_CONFIG = config.$(OBOS_ARCH).ini ;
|
||||
OBOS_KERNEL = kernel.$(OBOS_ARCH) ;
|
||||
OBOS_FLOPPY = floppy.$(OBOS_ARCH) ;
|
||||
|
||||
rule SetupIncludes
|
||||
{
|
||||
OBOS_INCLUDES ?= . add-ons app be_apps device drivers game interface kernel mail media midi midi2 net opengl storage support translation ;
|
||||
UsePublicHeaders $(OBOS_INCLUDES) ;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Things Jam needs in order to work :)
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
rule UserObject
|
||||
{
|
||||
switch $(2)
|
||||
{
|
||||
case *.S : assemble $(1) : $(2) ;
|
||||
case * : ECHO "unknown suffix on" $(2) ;
|
||||
}
|
||||
}
|
||||
|
||||
# Override the default to give "prettier" command lines.
|
||||
actions Cc
|
||||
{
|
||||
$(CC) -c $(2) $(CCFLAGS) $(CCDEFS) $(CCHDRS) -o $(1) ;
|
||||
}
|
||||
|
||||
actions C++
|
||||
{
|
||||
$(C++) -c $(2) $(C++FLAGS) $(CCDEFS) $(CCHDRS) -o $(1) ;
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# General High-level OBOS target rules
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
rule Preference
|
||||
{
|
||||
# Preference <name> : <sources> ;
|
||||
# SetupIncludes ;
|
||||
SetupObjectsDir ;
|
||||
Main $(<) : $(>) ;
|
||||
MakeLocate $(<) : $(OBOS_PREFS_DIR) ;
|
||||
}
|
||||
|
||||
rule Server
|
||||
{
|
||||
# Server <name> : <sources> ;
|
||||
|
||||
SetupIncludes ;
|
||||
SetupObjectsDir ;
|
||||
Main $(<) : $(>) ;
|
||||
MakeLocate $(<) : $(OBOS_SERVER_DIR) ;
|
||||
}
|
||||
|
||||
# test pseudo targets
|
||||
NOTFILE obostests ;
|
||||
NOTFILE r5tests ;
|
||||
|
||||
rule CommonUnitTest
|
||||
{
|
||||
# CommonUnitTest <target> : <sources> : <dest> : <obos libraries>
|
||||
# : <r5 libraries> : <public headers>;
|
||||
# Builds a unit test for both OBOS and R5 modules.
|
||||
# <target> The name of the target.
|
||||
# <sources> The list of sources.
|
||||
# <dest> The directory for the target (as passed to FDirName).
|
||||
# <obos libraries> A list of link libraries for the OBOS tests (as passed
|
||||
# to LinkSharedOSLibs).
|
||||
# <r5 libraries> A list of link libraries for the R5 tests (as passed
|
||||
# to LinkSharedOSLibs).
|
||||
# <public headers> A list of public header dirs (as passed to
|
||||
# UsePublicHeaders).
|
||||
|
||||
UnitTest $(1) : $(2) : $(3) : $(4) : $(6) ;
|
||||
R5UnitTest $(1) : $(2) : $(3) : $(5) ;
|
||||
}
|
||||
|
||||
rule UnitTest
|
||||
{
|
||||
# UnitTest <target> : <sources> : <dest> : <libraries> : <public headers>
|
||||
# Builds a unit test for an OBOS module.
|
||||
# <target> The name of the target.
|
||||
# <sources> The list of sources.
|
||||
# <dest> The directory for the target (as passed to FDirName).
|
||||
# <libraries> A list of link libraries (as passed to LinkSharedOSLibs).
|
||||
# <public headers> A list of public header dirs (as passed to
|
||||
# UsePublicHeaders).
|
||||
|
||||
local target = $(1) ;
|
||||
local sources = $(2) ;
|
||||
local dest = $(3) ;
|
||||
local libraries = $(4) ;
|
||||
local headerDirs = $(5) ;
|
||||
|
||||
# SetupIncludes ;
|
||||
UseCppUnitHeaders ;
|
||||
SetupObjectsDir ;
|
||||
MakeLocateObjects $(sources) ;
|
||||
Main $(target) : $(sources) ;
|
||||
MakeLocate $(target) : [ FDirName $(OBOS_TEST_DIR) $(dest) ] ;
|
||||
DEPENDS $(target) : libcppunit.so ;
|
||||
DEPENDS obostests : $(target) ;
|
||||
LinkSharedOSLibs $(target) : libcppunit.so $(libraries) ;
|
||||
UsePublicHeaders $(headerDirs) : $(sources) ;
|
||||
ObjectDefines $(sources) : TEST_OBOS ;
|
||||
|
||||
# Turn debugging on. That is usually desired for test code.
|
||||
ObjectCcFlags $(sources) : "-g" ;
|
||||
ObjectC++Flags $(sources) : "-g" ;
|
||||
}
|
||||
|
||||
rule R5UnitTest
|
||||
{
|
||||
# R5UnitTest <target> : <sources> : <dest> : <libraries>
|
||||
# Builds a unit test for an R5 module. "_r5" is appended to the object
|
||||
# and the target name.
|
||||
# <target> The name of the target.
|
||||
# <sources> The list of sources.
|
||||
# <dest> The directory for the target (as passed to FDirName).
|
||||
# <libraries> A list of link libraries (as passed to LinkSharedOSLibs).
|
||||
|
||||
local target = $(1)_r5 ;
|
||||
local sources = $(2) ;
|
||||
local dest = $(3) ;
|
||||
local libraries = $(4) ;
|
||||
local objects = [ R5ObjectNames $(sources) ] ;
|
||||
|
||||
UseCppUnitHeaders ;
|
||||
SetupObjectsDir ;
|
||||
MakeLocateObjects $(objects) ;
|
||||
|
||||
# Our Main replacement.
|
||||
MainFromObjects $(target) : $(objects) ;
|
||||
local source ;
|
||||
for source in [ FGristFiles $(sources) ]
|
||||
{
|
||||
local object = [ R5ObjectNames $(source) ] ;
|
||||
Object $(object) : $(source) ;
|
||||
Depends obj : $(object) ;
|
||||
}
|
||||
|
||||
MakeLocate $(target) : [ FDirName $(OBOS_TEST_DIR) $(dest) ] ;
|
||||
DEPENDS $(target) : libcppunit.so ;
|
||||
DEPENDS r5tests : $(target) ;
|
||||
LinkSharedOSLibs $(target) : libcppunit.so $(libraries) ;
|
||||
ObjectDefines $(objects) : TEST_R5 ;
|
||||
|
||||
# Turn debugging on. That is usually desired for test code.
|
||||
ObjectCcFlags $(objects) : "-g" ;
|
||||
ObjectC++Flags $(objects) : "-g" ;
|
||||
}
|
||||
|
||||
rule R5ObjectNames
|
||||
{
|
||||
# R5ObjectNames <sources> ;
|
||||
# Returns a list of gristed object names given a list of source file names.
|
||||
# Moreover each object names gets "_r5" inserted before the object suffix.
|
||||
local objects = $(1:S=)_r5 ;
|
||||
return [ FGristFiles $(objects:S=$(SUFOBJ)) ] ;
|
||||
}
|
||||
|
||||
rule Addon
|
||||
{
|
||||
# Addon <name> : <relpath> : <sources> ;
|
||||
|
||||
SetupIncludes ;
|
||||
SetupObjectsDir ;
|
||||
Main $(1) : $(3) ;
|
||||
|
||||
# Create output dir path for addon
|
||||
local targetdir;
|
||||
targetdir = [ FDirName $(OBOS_ADDON_DIR) $(2) ] ;
|
||||
|
||||
MakeLocate $(1) : $(targetdir) ;
|
||||
LINKFLAGS on $(1) = $(LINKFLAGS) -nostart -Xlinker -soname=\"$(1)\" ;
|
||||
}
|
||||
|
||||
rule MakeLocateObjects
|
||||
{
|
||||
# MakeLocateObjects <gristed_sources_or_objects> ;
|
||||
|
||||
local _objs = $(1:S=$(SUFOBJ)) ;
|
||||
|
||||
for o in $(_objs)
|
||||
{
|
||||
local dir = $(o:D) ;
|
||||
if $(dir) {
|
||||
MakeLocate $(o) : [ FDirName $(LOCATE_TARGET) $(dir) ] ;
|
||||
} else {
|
||||
MakeLocate $(o) : $(LOCATE_TARGET) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rule StaticLibrary
|
||||
{
|
||||
# StaticLibrary <name> : <sources> ;
|
||||
|
||||
SetupIncludes ;
|
||||
SetupObjectsDir ;
|
||||
MakeLocateObjects $(2) ;
|
||||
Library lib$(<).a : $(>) ;
|
||||
MakeLocate lib$(<).a : $(OBOS_STLIB_DIR) ;
|
||||
}
|
||||
|
||||
rule SharedLibrary
|
||||
{
|
||||
# SharedLibrary <name> : <sources> ;
|
||||
local _lib = lib$(1).so ;
|
||||
|
||||
# SetupIncludes ;
|
||||
SetupObjectsDir ;
|
||||
MakeLocateObjects $(2) ;
|
||||
Main $(_lib) : $(2) ;
|
||||
MakeLocate $(_lib) : $(OBOS_SHLIB_DIR) ;
|
||||
LINKFLAGS on $(_lib) = $(LINKFLAGS) -nostart -Xlinker -soname=\"$(_lib)\" ;
|
||||
}
|
||||
|
||||
rule LinkSharedOSLibs
|
||||
{
|
||||
# LinkSharedOSLibs <name> : <libs> ;
|
||||
# Valid elements for <libs> are e.g. "be" or "libopenbeos.so" or
|
||||
# "/boot/.../libfoo.so". If the basename starts with "lib", it is added
|
||||
# to the NEEDLIBS variable (i.e. the file will be bound!), otherwise it is
|
||||
# prefixed "-l" and added to LINKLIBS.
|
||||
|
||||
for i in $(>)
|
||||
{
|
||||
switch $(i:B)
|
||||
{
|
||||
case lib* : NEEDLIBS on $(1) += $(i) ; DEPENDS $(1) : $(i) ;
|
||||
case * : LINKLIBS on $(1) += -l$(i) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rule LinkStaticOSLibs
|
||||
{
|
||||
# LinkStaticOSLibs <name> : <libs> ;
|
||||
|
||||
for i in $(>)
|
||||
{
|
||||
LINKLIBS on $(<) = $(LINKLIBS) -l $(i) ;
|
||||
}
|
||||
}
|
||||
|
||||
rule AddResources
|
||||
{
|
||||
# AddResources <name> : <resourcefiles> ;
|
||||
|
||||
local dir;
|
||||
|
||||
dir = [ FDirName $(OBOS_TOP) $(SUBDIR_TOKENS) ] ;
|
||||
|
||||
for i in $(>)
|
||||
{
|
||||
RESFILES on $(<) = [ FDirName $(dir) $(i) ] ;
|
||||
DEPENDS $(<) : [ FDirName $(dir) $(i) ] ;
|
||||
}
|
||||
}
|
||||
|
||||
rule UsePublicHeaders
|
||||
{
|
||||
# UsePublicHeaders <group list> [ <sources_or_objects> ] ;
|
||||
#
|
||||
# Adds the public C header dirs given by <group list> to the header search
|
||||
# dirs of the subdirectory or of <sources_or_objects>, if given.
|
||||
# NOTE: Currently the latter doesn't work, since Cc seems to be
|
||||
# buggy: It sets the HDRS variable to $(SUBDIRHDRS) instead of adding it.
|
||||
|
||||
local list = $(1) ;
|
||||
local targets = $(2) ;
|
||||
|
||||
local headers ;
|
||||
|
||||
for i in $(list) {
|
||||
headers += [ FDirName $(OBOS_TOP) headers obos public $(i) ] ;
|
||||
}
|
||||
|
||||
UseHeaders $(headers) : $(targets) ;
|
||||
}
|
||||
|
||||
rule UsePrivateHeaders
|
||||
{
|
||||
# UsePrivateHeaders <group list> [ <sources_or_objects> ] ;
|
||||
#
|
||||
# Adds the private C header dirs given by <group list> to the header search
|
||||
# dirs of the subdirectory or of <sources_or_objects>, if given.
|
||||
# NOTE: Currently the latter doesn't work, since Cc seems to be
|
||||
# buggy: It sets the HDRS variable to $(SUBDIRHDRS) instead of adding it.
|
||||
|
||||
local list = $(1) ;
|
||||
local targets = $(2) ;
|
||||
|
||||
local headers ;
|
||||
|
||||
for i in $(list) {
|
||||
headers += [ FDirName $(OBOS_TOP) headers obos private $(i) ] ;
|
||||
}
|
||||
|
||||
UseHeaders $(headers) : $(targets) ;
|
||||
}
|
||||
|
||||
rule UseHeaders
|
||||
{
|
||||
# UseHeaders <headers> [ <sources_or_objects> ] ;
|
||||
#
|
||||
# Adds the C header dirs <headers> to the header search
|
||||
# dirs of the subdirectory or of <sources_or_objects>, if given.
|
||||
# NOTE: Currently the latter doesn't work, since Cc seems to be
|
||||
# buggy: It sets the HDRS variable to $(SUBDIRHDRS) instead of adding it.
|
||||
|
||||
local headers = $(1) ;
|
||||
local targets = $(2) ;
|
||||
|
||||
if $(targets) {
|
||||
ObjectHdrs $(targets) : $(headers) ;
|
||||
} else {
|
||||
# Note: Unlike ObjectHdrs SubDirHdrs expects only one dir given as
|
||||
# path component list.
|
||||
for header in $(headers) {
|
||||
SubDirHdrs $(header) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rule UseCppUnitHeaders
|
||||
{
|
||||
local opt = -I [ FDirName $(OBOS_TOP) headers tools cppunit ] ;
|
||||
|
||||
SubDirCcFlags $(opt) ;
|
||||
SubDirC++Flags $(opt) ;
|
||||
}
|
||||
|
||||
rule UseArchHeaders
|
||||
{
|
||||
# usage: UseArchHeaders <arch>
|
||||
# <arch> specifies the architecture (e.g. x86).
|
||||
local opt = -D$(OBOS_TARGET_DEFINE) ;
|
||||
SubDirCcFlags $(opt) ;
|
||||
SubDirC++Flags $(opt) ;
|
||||
SubDirHdrs [ FDirName $(OBOS_TOP) headers obos private kernel arch $(1) ] ;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Low-level OBOS utility rules
|
||||
#-------------------------------------------------------------------------------
|
||||
rule SetupObjectsDir
|
||||
{
|
||||
local rel_objectsdir;
|
||||
|
||||
# Copy subdir tokens except the first, as that will be "sources", and we
|
||||
# do not want to include that :)
|
||||
rel_objectsdir = [ FDirName $(SUBDIR_TOKENS[2-]) ] ;
|
||||
LOCATE_TARGET = [ FDirName $(OBOS_OBJECT_TARGET) $(rel_objectsdir) ] ;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Link rule/action are overwritten as they don't handle linking files who's name
|
||||
# contain spaces very well. Also adds resources and version to executable.
|
||||
#-------------------------------------------------------------------------------
|
||||
rule Link
|
||||
{
|
||||
# Note: RESFILES must be set before invocation.
|
||||
MODE on $(<) = $(EXEMODE) ;
|
||||
on $(1) XRes $(1) : $(RESFILES) ;
|
||||
SetVersion $(1) ;
|
||||
Chmod $(<) ;
|
||||
SetType $(1) ;
|
||||
MimeSet $(1) ;
|
||||
}
|
||||
|
||||
actions Link bind NEEDLIBS
|
||||
{
|
||||
$(LINK) $(LINKFLAGS) -o "$(1)" $(UNDEFS) $(2) $(NEEDLIBS) $(LINKLIBS) ;
|
||||
}
|
||||
|
||||
# BeOS specific rules
|
||||
|
||||
rule XRes
|
||||
{
|
||||
# XRes <target> : <resource files>
|
||||
if $(2)
|
||||
{
|
||||
DEPENDS $(1) : $(2) ;
|
||||
XRes1 $(1) : $(2) ;
|
||||
}
|
||||
}
|
||||
|
||||
rule XRes1 { }
|
||||
|
||||
rule SetVersion
|
||||
{
|
||||
# SetVersion <target>
|
||||
}
|
||||
|
||||
rule SetType
|
||||
{
|
||||
# SetType <target>
|
||||
}
|
||||
|
||||
rule MimeSet
|
||||
{
|
||||
# SetType <target>
|
||||
}
|
||||
|
||||
|
||||
if $(OS) = BEOS
|
||||
{
|
||||
|
||||
actions XRes1
|
||||
{
|
||||
xres -o "$(1)" $(2) ;
|
||||
}
|
||||
|
||||
actions SetVersion
|
||||
{
|
||||
setversion "$(1)" -system $(OBOS_BUILD_VERSION) -short "$(OBOS_BUILD_DESCRIPTION)" ;
|
||||
}
|
||||
|
||||
actions SetType
|
||||
{
|
||||
settype -t $(OBOS_TARGET_TYPE) "$(1)" ;
|
||||
}
|
||||
|
||||
actions MimeSet
|
||||
{
|
||||
mimeset -f "$(1)" ;
|
||||
}
|
||||
|
||||
} # if BEOS
|
||||
|
||||
|
||||
rule assemble
|
||||
{
|
||||
DEPENDS $(1) : $(2) ;
|
||||
Clean clean : $(1) ;
|
||||
}
|
||||
|
||||
actions assemble
|
||||
{
|
||||
$(CC) -c $(2) -O2 $(KERNEL_CCFLAGS) -o $(1) ;
|
||||
}
|
||||
|
||||
## Kernel stuff!
|
||||
|
||||
rule SetupKernel
|
||||
{
|
||||
# Usage SetupKernel <sources_or_objects> : <extra_cc_flags>;
|
||||
|
||||
local _objs = $(1:S=$(SUFOBJ)) ;
|
||||
|
||||
UsePublicHeaders kernel ;
|
||||
UsePrivateHeaders kernel ;
|
||||
UseArchHeaders $(OBOS_ARCH) ;
|
||||
|
||||
SetupObjectsDir ;
|
||||
|
||||
CCFLAGS on $(_objs) = $(KERNEL_CCFLAGS) $(2) ;
|
||||
C++FLAGS on $(_objs) = $(KERNEL_CCFLAGS) $(2) ;
|
||||
}
|
||||
|
||||
rule KernelObjects
|
||||
{
|
||||
SetupKernel $(1) : $(2) ;
|
||||
|
||||
Objects $(1) ;
|
||||
}
|
||||
|
||||
rule KernelLd
|
||||
{
|
||||
# KernelLd <name> : <objs> : <linkerscript> : <args> : <gcc_off> ;
|
||||
|
||||
SetupKernel $(2) ;
|
||||
LINK on $(1) = ld ;
|
||||
|
||||
LINKFLAGS on $(1) = $(4) ;
|
||||
if $(3) { LINKFLAGS on $(1) += --script=$(3) ; }
|
||||
|
||||
# Remove any preset LINKLIBS
|
||||
LINKLIBS on $(1) = ;
|
||||
|
||||
# Show that we depend on the libraries we need
|
||||
Clean clean : $(1) ;
|
||||
Depends all : $(1) ;
|
||||
Depends $(1) : $(2) ;
|
||||
|
||||
if $(6) {
|
||||
Depends $(OBOS_KERNEL_CONFIG) : $(1) ;
|
||||
for i in $(6) {
|
||||
SECTIONS on $(OBOS_KERNEL_CONFIG) += ":" $(i) elf32 [ FDirName $(LOCATE_TARGET) $(1) ] ;
|
||||
}
|
||||
}
|
||||
|
||||
MakeLocate $(1) : $(LOCATE_TARGET) ;
|
||||
|
||||
# Add libgcc.a - NB this should be detected not hard coded!
|
||||
if ! $(5) {
|
||||
LINKLIBS on $(1) += "-L $(GCC_PATH) -lgcc" ;
|
||||
}
|
||||
}
|
||||
|
||||
actions KernelLd
|
||||
{
|
||||
$(LINK) $(LINKFLAGS) -o $(1) $(2) $(LINKLIBS) ;
|
||||
}
|
||||
|
||||
rule KernelStaticLibrary
|
||||
{
|
||||
# Usage KernelStaticLibrary <name> : <sources> : <extra cc flags> ;
|
||||
# This is designed to take a set of sources and libraries and create
|
||||
# a file called lib<name>.a
|
||||
|
||||
SetupKernel $(2) : $(3) ;
|
||||
|
||||
MakeLocateObjects $(2) ;
|
||||
Library $(1) : $(2) ;
|
||||
}
|
||||
|
||||
rule KernelStaticLibraryObjects
|
||||
{
|
||||
# Usage KernelStaticLibrary <name> : <sources> ;
|
||||
# This is designed to take a set of sources and libraries and create
|
||||
# a file called <name>
|
||||
|
||||
SetupKernel $(2) ;
|
||||
|
||||
# Show that we depend on the libraries we need
|
||||
Clean clean : $(1) ;
|
||||
Depends all : $(1) ;
|
||||
Depends $(1) : $(2) ;
|
||||
|
||||
MakeLocate $(1) : $(LOCATE_TARGET) ;
|
||||
}
|
||||
|
||||
actions KernelStaticLibraryObjects
|
||||
{
|
||||
ar -r $(1) $(2) ;
|
||||
}
|
||||
|
||||
rule SystemMain
|
||||
{
|
||||
# Usage SystemMain <target> : <sources> : <rqd_by> ;
|
||||
SetupObjectsDir ;
|
||||
|
||||
CCFLAGS on $(1) = $(OPTIM) ;
|
||||
C++FLAGS on $(1) = $(OPTIM) ;
|
||||
LINKLIBS = ;
|
||||
|
||||
# This allows us to preset certain commands we use
|
||||
# for building.
|
||||
if $(3) {
|
||||
for obj in $(3) {
|
||||
BUILD_CMD on $(obj) = [ FDirName $(LOCATE_TARGET) $(1) ] ;
|
||||
}
|
||||
}
|
||||
|
||||
Main $(1) : $(2) ;
|
||||
}
|
||||
|
||||
rule KernelConfigSection
|
||||
{
|
||||
# KernelConfigSection <section> : <type> : <file> ;
|
||||
SECTIONS on $(OBOS_KERNEL_CONFIG) += ":" $(1) $(2) $(3) ;
|
||||
}
|
||||
|
||||
rule WriteKernelConfig
|
||||
{
|
||||
# usage: WriteKernelConfig <target> ;
|
||||
|
||||
Depends files : $(1) ;
|
||||
|
||||
LOCATE on $(1) = $(LOCATE_TARGET) ;
|
||||
|
||||
MakeLocate $(1) : $(LOCATE_TARGET) ;
|
||||
|
||||
Clean clean : $(1) ;
|
||||
}
|
||||
|
||||
actions WriteKernelConfig
|
||||
{
|
||||
target=$(1)
|
||||
echo "# OpenBeOS Kernel Config File" > $target
|
||||
echo "# Automatically generated - do not edit!" >> $target
|
||||
issection="0"
|
||||
section=
|
||||
for i in "$(SECTIONS)" ; do
|
||||
if [ $issection == 1 ]; then
|
||||
section=$i
|
||||
issection=2
|
||||
echo "["$section"]" >> $target
|
||||
elif [ $issection == 2 ]; then
|
||||
type=$i
|
||||
issection=3
|
||||
echo "type="$type >> $target
|
||||
else
|
||||
if [ $i == ":" ]; then
|
||||
issection=1
|
||||
echo "" >> $target
|
||||
else
|
||||
file=$i
|
||||
case $file in
|
||||
/*) ;;
|
||||
*) file=`pwd`/$file;;
|
||||
esac
|
||||
echo "file="$file >> $target
|
||||
fi
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
rule BuildKernel
|
||||
{
|
||||
# Usage BuildKernel <target> : <config_file> ;
|
||||
|
||||
Depends all : $(1) ;
|
||||
Depends $(1) : $(2) ;
|
||||
Clean clean : $(1) ;
|
||||
|
||||
MakeLocate $(1) : $(LOCATE_TARGET) ;
|
||||
}
|
||||
|
||||
actions BuildKernel
|
||||
{
|
||||
$(BUILD_CMD) --strip-debug --strip-binary strip $(2) -o $(1) ;
|
||||
echo ""
|
||||
echo "Kernel linked!"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# At present I don't bother moving the final location for
|
||||
# the floppy image as it makes copying it onto a floppy easier if it's
|
||||
# where you did the build. This is easy enough changed.
|
||||
rule KernelFloppyImage
|
||||
{
|
||||
# Usage KernelFloppyImage <target> : <kernel> : <bootblock> ;
|
||||
|
||||
Depends all : $(1) ;
|
||||
Depends $(1) : $(2) ;
|
||||
Clean clean : $(1) ;
|
||||
|
||||
BOOT_BLOCK on $(1) = $(3) ;
|
||||
}
|
||||
|
||||
# This may be a bit verbose, but I think it's useful to show what's
|
||||
# going on, at least in this early stage of development.
|
||||
actions KernelFloppyImage
|
||||
{
|
||||
$(BUILD_CMD) $(BOOT_BLOCK) $(2) $(1) ;
|
||||
echo ""
|
||||
echo "*************************************************"
|
||||
echo "* Kernel build completed! *"
|
||||
echo "* Boot image for a 1.44M floppy created *"
|
||||
echo "*************************************************"
|
||||
echo ""
|
||||
echo "Floppy image is $(OBOS_FLOPPY)"
|
||||
echo "The following command will write it to a floppy on BeOS"
|
||||
echo " dd if=$(OBOS_FLOPPY) of=/dev/disk/floppy/raw bs=18k"
|
||||
echo ""
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
Building
|
||||
--------
|
||||
|
||||
The build system uses Jam/MR (http://www.perforce.com/jam/jam.html).
|
||||
A BeOS executable of Jam 2.3.1 is available at:
|
||||
|
||||
http://open-beos.sf.net/misc/jam.zip
|
||||
|
||||
Unzip the executable and copy it to /boot/home/config/bin.
|
||||
|
||||
To build the whole source tree, launch a Terminal, cd into the openbeos root
|
||||
directory and just type:
|
||||
|
||||
$ ./configure
|
||||
$ jam
|
||||
|
||||
The configure script generates a file named BuildConfig. As long as configure
|
||||
is not modified (!), there is no need to call it again. That is for
|
||||
re-building you only need to invoke Jam. If you don't update the source tree
|
||||
very frequently, you may want to execute configure after each update just to
|
||||
be on the safe side.
|
||||
|
||||
NOTE: If you have checked out the latest CVS version, it is not unlikely that
|
||||
some parts of the tree won't build.
|
||||
|
||||
|
||||
Running
|
||||
-------
|
||||
|
||||
If the build went fine, a file named floppy.x86 had been created in the
|
||||
root directory of the source tree. What you want to do now, is to boot from
|
||||
this floppy image. Therefore you either write the image onto a real floppy
|
||||
disk and restart you computer, or you write it onto a "virtual floppy disk"
|
||||
emulated by a x86 PC emulator and just start this emulator.
|
||||
|
||||
1. Real Floppy
|
||||
|
||||
Put in the disk and type in the source tree's root dir:
|
||||
|
||||
$ dd if=floppy.x86 of=/dev/disk/floppy/raw bs=18k
|
||||
|
||||
|
||||
2. Emulated Floppy (Bochs)
|
||||
|
||||
Type:
|
||||
|
||||
$ dd if=floppy.x86 of=<floppy image> bs=18k
|
||||
|
||||
where <floppy image> has to be replaced with the filename of the floppy
|
||||
image Bochs has been told to use (e.g. /tmp/obos.img).
|
||||
|
||||
|
||||
Bochs
|
||||
-----
|
||||
|
||||
Version 1.4 of Bochs for BeOS (BeBochs) can be downloaded from BeBits:
|
||||
|
||||
http://www.bebits.com/app/2902
|
||||
|
||||
The package installs to: /boot/apps/BeBochs1.4
|
||||
|
||||
You have to set up a configuration for Bochs. A relatively short and
|
||||
painless procedure follows:
|
||||
|
||||
Lauch a Terminal:
|
||||
|
||||
$ cd /tmp
|
||||
$ /boot/apps/BeBochs1.4/bximage
|
||||
|
||||
Answer with "fd", RETURN (for 1.44) and "obos.img", and a floppy image
|
||||
/tmp/obos.img will be created.
|
||||
Open folder /boot/apps/BeBochs1.4 and backup .bochsrc. Open .bochsrc with
|
||||
your favorite text editor, remove the complete contents and paste the
|
||||
following instead (you may as well take the original file and insert/replace/
|
||||
keep the respective lines):
|
||||
|
||||
romimage: file=bios/BIOS-bochs-latest, address=0xf0000
|
||||
megs: 32
|
||||
vgaromimage: bios/VGABIOS-elpin-2.40
|
||||
floppya: 1_44=/tmp/obos.img, status=inserted
|
||||
boot: a
|
||||
log: /var/log/bochs-obos.log
|
||||
panic: action=ask
|
||||
error: action=report
|
||||
info: action=report
|
||||
debug: action=ignore
|
||||
vga_update_interval: 300000
|
||||
keyboard_serial_delay: 250
|
||||
keyboard_paste_delay: 100000
|
||||
floppy_command_delay: 500
|
||||
ips: 2000000
|
||||
|
||||
Now put the OBOS boot image onto you "virtual" floppy and start Bochs:
|
||||
|
||||
$ cd <OBOS sources directory>
|
||||
$ dd if=floppy.x86 of=/tmp/obos.img bs=18k
|
||||
$ cd /boot/apps/BeBochs1.4
|
||||
$ ./bochs
|
||||
|
||||
Answer three times with RETURN and with some patience you will see OBOS
|
||||
booting.
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# configure
|
||||
#
|
||||
# No parameters for now.
|
||||
|
||||
platform=`uname`
|
||||
|
||||
# BeOS
|
||||
if [ "${platform}" == "BeOS" ] ; then
|
||||
# GGC_PATH
|
||||
if [ "x${GCC_PATH}" == "x" ] ; then
|
||||
gcclib=`gcc -print-libgcc-file-name`
|
||||
GCC_PATH=`dirname ${gcclib}`
|
||||
fi
|
||||
|
||||
# Linux
|
||||
else if [ "${platform}" == "Linux" ] ; then
|
||||
# GGC_PATH
|
||||
if [ "x${GCC_PATH}" == "x" ] ; then
|
||||
gcclib=`gcc -print-libgcc-file-name`
|
||||
GCC_PATH=`dirname ${gcclib}`
|
||||
fi
|
||||
|
||||
# Unknown platform
|
||||
else
|
||||
echo Unsupported platform: ${platform}
|
||||
exit 1
|
||||
fi; fi
|
||||
|
||||
# Generate BuildConfig
|
||||
cat << EOF > BuildConfig
|
||||
# BuildConfig
|
||||
# Note: This file has been automatically generated by configure.
|
||||
|
||||
GCC_PATH = ${GCC_PATH} ;
|
||||
EOF
|
||||
@@ -0,0 +1,147 @@
|
||||
<HTML>
|
||||
<!-- $Id: BMessageQueueUseCases.html,v 1.1 2002/07/09 12:24:30 ejakowatz Exp $ -->
|
||||
<HEAD>
|
||||
<TITLE>BMessageQueue Use Cases and Implementation Details</TITLE>
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white" LINK="#000067" VLINK="#000067" ALINK="#0000FF">
|
||||
|
||||
<FONT FACE="Verdana,Arial,Helvetica,sans-serif" SIZE="-1">
|
||||
|
||||
<H1>BMessageQueue Use Cases and Implementation Details:</H1>
|
||||
|
||||
<P>This document describes the BMessageQueue interface and some basics of how it is implemented.
|
||||
The document has the following sections:</P>
|
||||
|
||||
<OL>
|
||||
<LI><A HREF="#interface">BMessageQueue Interface</A></LI>
|
||||
<LI><A HREF="#usecases">BMessageQueue Use Cases</A></LI>
|
||||
<LI><A HREF="#implement">BMessageQueue Implementation</A></LI>
|
||||
</OL>
|
||||
|
||||
<A NAME="interface"></A><H2>BMessageQueue Interface:</H2>
|
||||
|
||||
<P>The BMessageQueue class is a simple class for managing a queue of BMessages. The best
|
||||
source of information for the BMessageQueue interface can be found
|
||||
<A HREF="file:///boot/beos/documentation/Be%20Book/The%20Application%20Kit/MessageQueue.html">here in the Be Book</A>.
|
||||
</P>
|
||||
|
||||
<A NAME="usecases"></A><H2>BMessageQueue Use Cases:</H2>
|
||||
|
||||
<P>The following use cases cover the BMessageQueue functionality:</P>
|
||||
|
||||
<OL>
|
||||
<LI><P><B>Construction:</B> A BMessageQueue does not take any arguments when it is constructed.
|
||||
After construction, the queue is empty.</P></LI>
|
||||
|
||||
<LI><P><B>Destruction:</B> When a BMessageQueue is deconstructed, all BMessages on the queue are
|
||||
deleted. This implies that all BMessages added to a BMessageQueue must be allocated on the heap
|
||||
with the new operation. The BMessageQueue is locked before performing the delete to ensure
|
||||
that the queue doesn't change while it is being deleted. The lock is never released from the
|
||||
destructor to ensure that any AddMessage() or other members blocking for the lock never
|
||||
succeed in getting the lock. They will fail once the BMessageQueue is completely deleted.</P></LI>
|
||||
|
||||
<LI><P><B>Add Message 1:</B> When AddMessage() is used to put a BMessage on the queue, the
|
||||
BMessageQueue takes ownership of the BMessage. The BMessage should be created on the heap but
|
||||
there is no checking to ensure that has happened. The BMessageQueue records the order in
|
||||
which the BMessages are added to the queue.</P></LI>
|
||||
|
||||
<LI><P><B>Add Message 2:</B> No check is performed to see if the BMessage is already part of that
|
||||
BMessageQueue or any other when AddMessage() is used to put a BMessage on a queue. An attempt to
|
||||
add a BMessage to a BMessageQueue which already has that same BMessage in it (where equality is
|
||||
based on the address of the BMessage) will corrupt the queue. An attempt to add a BMessage to a
|
||||
BMessageQueue when that BMessage is already in another BMessageQueue will corrupt the original
|
||||
BMessageQueue. It is up to the caller of AddMessage() to use RemoveMessage() to prevent
|
||||
queue corruption.</P></LI>
|
||||
|
||||
<LI><P><B>Add Message 3:</B> BMessage's can be added using AddMessage() from multiple threads
|
||||
at the same time with no risk of queue corruption. Similarly, RemoveMessage() or NextMessage()
|
||||
can be executing from another thread while an AddMessage() is started without corrupting the queue.
|
||||
An AddMessage() attempt will block if another thread has used the Lock() member to lock the
|
||||
BMessageQueue.</P></LI>
|
||||
|
||||
<LI><P><B>Remove Message 1:</B> The RemoveMessage() member takes a BMessage pointer. The
|
||||
BMessageQueue is searched for this BMessage pointer. If that pointer is in the queue, then it
|
||||
is removed from the queue. The BMessage is not deleted (note the BeBook implies it is but in
|
||||
fact it is not). If the BMessage pointer is not on this BMessageQueue, this call has no affect.
|
||||
After this call completes successfully, it is as though AddMessage() was never called for
|
||||
this BMessage pointer.</P></LI>
|
||||
|
||||
<LI><P><B>Remove Message 2:</B> BMessage's can be removed using RemoveMessage() from multiple
|
||||
threads at the same time with no risk of queue corruption. Similarly, AddMessage() or
|
||||
NextMessage() can be executing from another thread while a RemoveMessage() is started without
|
||||
corrupting the queue. A RemoveMessage() attempt will block if another thread has used the Lock()
|
||||
member to lock the BMessageQueue.</P></LI>
|
||||
|
||||
<LI><P><B>Count Messages:</B> The CountMessages() member function returns the number of BMessage's
|
||||
in the BMessageQueue. If there are no messages on the queue (an example of this situation is just
|
||||
after construction), the member returns 0. Note, it is possible for the count to become corrupted
|
||||
if the situation in Add Message 2 occurs.</P></LI>
|
||||
|
||||
<LI><P><B>Is Empty:</B> The IsEmpty() member function returns true if there are no BMessages on the
|
||||
BMessageQueue. If there are one or more BMessages on the BMessageQueue, it returns false.</P></LI>
|
||||
|
||||
<LI><P><B>Find Message 1:</B> The FindMessage() member function is overloaded. If the member
|
||||
function takes a single int32 argument, it is used to return the BMessage on the queue at a
|
||||
particular index as indicated by the argument. The first message is at index 0, the second
|
||||
at index 1 etc. If no message is at that index, NULL is returned.</P></LI>
|
||||
|
||||
<LI><P><B>Find Message 2:</B> The other FindMessage() member function takes a single uint32
|
||||
argument and an optional int32 argument. The first mandatory argument specifies the "what" code
|
||||
for the BMessage being searched for. The second optional argument specifies what occurance of
|
||||
that "what" code in a BMessage on the queue should be returned. If the second argument is not
|
||||
provided, it is assumed to be 0. If the second argument is 0, the first BMessage that has the
|
||||
what code provided is returned. If the second argument is 1, the second BMessage that has the
|
||||
what code provided is returned, etc. If no match is found, NULL is returned.</P></LI>
|
||||
|
||||
<LI><P><B>Lock 1:</B> The Lock() member function blocks until this thread can acquire exclusive
|
||||
access to the BMessageQueue. Only one thread can hold the lock at any one time. A thread can
|
||||
acquire the Lock() multiple times but release it the same number of times. While a thread holds
|
||||
the lock, other threads will not be able to perform AddMessage(), RemoveMessage() or NextMessage().
|
||||
Any threads attempting to do so will block until the BMessageQueue is unlocked.</P></LI>
|
||||
|
||||
<LI><P><B>Lock 2:</B> The Lock() member function returns true if the lock has successfully been
|
||||
acquired. It will return false if an unrecoverable error has occurred. An example of such an
|
||||
error would be deleting the BMessageQueue.</P></LI>
|
||||
|
||||
<LI><P><B>Unlock:</B> The Unlock() member function releases a lock on the BMessageQueue. If the
|
||||
thread no longer holds any locks on the BMessageQueue, other threads are free to acquire the
|
||||
BMessageQueue lock or call member functions like AddMessage(), RemoveMessage(), NextMessage() or
|
||||
delete the BMessageQueue.</P></LI>
|
||||
|
||||
<LI><P><B>Next Message 1:</B> The NextMessage() member function removes the BMessage which is the
|
||||
oldest on the queue. It returns that BMessage to the caller. After the call completes, the
|
||||
BMessage is no longer on the queue and the next oldest BMessage is at the front of the queue
|
||||
(ie next to be returned by NextMessage()).</P></LI>
|
||||
|
||||
<LI><P><B>Next Message 2:</B> BMessage's can be removed using NextMessage() from multiple
|
||||
threads at the same time with no risk of queue corruption. Similarly, AddMessage() or
|
||||
RemoveMessage() can be executing from another thread while a NextMessage() is started without
|
||||
corrupting the queue. A NextMessage() attempt will block if another thread has used the Lock()
|
||||
member to lock the BMessageQueue.</P></LI>
|
||||
|
||||
</OL>
|
||||
|
||||
<A NAME="implement"></A><H2>BMessageQueue Implementation:</H2>
|
||||
|
||||
<P>Internally, the BMessageQueue uses a BLocker to ensure that member functions like AddMessage(),
|
||||
RemoveMessage() and NextMessage() do not corrupt the queue when used from multiple threads. The
|
||||
same BLocker is used to implemented the Lock() and Unlock() members.</P>
|
||||
|
||||
<P>Testing with a debugger shows that the queue is implemented using a "link" pointer in the
|
||||
BMessage class itself. Each BMessage is also a singly linked list which represents the queue.
|
||||
All the BMessageQueue needs is a pointer to the BMessage which starts the list. For performance
|
||||
reasons, it is worth maintaining a pointer to the BMessage at the end of the list and the count
|
||||
of the number of elements in the list. If these are not maintained, adding an element to the
|
||||
list will get slower as the number of elements grows and the cost to determine the number of
|
||||
elements in the list will be high.</P>
|
||||
|
||||
<P>Because the BMessageQueue uses the link pointer which is a private part of the BMessage class,
|
||||
the BMessageQueue must be a friend class of BMessage. Checking the headers, this is in fact the
|
||||
case in Be's implementation. Although friendship in classes can cause some pretty serious long
|
||||
term headaches if abused (and I am not convinced that this is an abuse), the OpenBeOS
|
||||
implementation will follow the same implementation for now.</P>
|
||||
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
@@ -0,0 +1,48 @@
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>PortLink Use Cases and Implementation Details</TITLE>
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white" LINK="#000067" VLINK="#000067" ALINK="#0000FF">
|
||||
|
||||
<FONT FACE="Verdana,Arial,Helvetica,sans-serif" SIZE="-1">
|
||||
|
||||
<H1>PortLink Use Cases:</H1>
|
||||
|
||||
<P>This document describes the PortLink interface and some basics of how it is implemented.
|
||||
The document has the following sections:</P>
|
||||
|
||||
<OL>
|
||||
<LI><A HREF="#interface">PortLink Interface</A></LI>
|
||||
<LI><A HREF="#usecases">PortLink Use Cases</A></LI>
|
||||
</OL>
|
||||
|
||||
<A NAME="interface"><H2>PortLink Interface:</H2>
|
||||
<P>The PortLink class is a lightweight class designed to ease the pain of sending a message to a port. Normal use boils down to creating a PortLink object, setting the message code, attaching any extra data via Attach(), and calling Flush() to send it.
|
||||
</P>
|
||||
<P>While this class is designed to facilitate port-based messaging, it does not devise any protocols for such. The recipient will need to know if data is included in a message, for example. Likewise, all extra data must be freed by the recipient.
|
||||
</P>
|
||||
|
||||
<A NAME="usecases"><H2>PortLink Use Cases:</H2>
|
||||
<P>The following use cases cover the PortLink functionality:</P>
|
||||
|
||||
<OL>
|
||||
<LI><P><B>Construction:</B> A PortLink is created by passing it a port ID. Error-checking is not performed on the port itself, so be sure it is a valid port.
|
||||
</P></LI>
|
||||
|
||||
<LI><P><B>Destruction:</B> When a PortLink is destroyed, any data which is currently attached to a pending message is freed.</P></LI>
|
||||
|
||||
<LI><P><B>Creating a message:</B> Creating a message can be as simple as setting the message code (similar to BMessage's <i>what</i> member). Extra data is not required.</P></LI>
|
||||
|
||||
<LI><P><B>Attaching Data:</B> Adding extra data is as simple as calling the member function Attach(), which makes a copy of the parameter passed to it.</P></LI>
|
||||
|
||||
<LI><P><B>Sending a message:</B> Call Flush(). Whatever opcode has been set will be sent to the target. Optionally, a timeout (in microseconds) of type bigtime_t can be specified. This can be useful in preventing deadlocks if the target has crashed and its port fills up.</P></LI>
|
||||
|
||||
<LI><P><B>Synchronous Messaging:</B> This one requires a little more care in order to prevent deadlocks. Attachments may be used as with Flush(), but FlushWithReply() will wait until the target replies unless a timeout value is specified in microseconds of type bigtime_t. A return code of B_ERROR indicates an internal data error and your message is intact. If a reply times out, it will return B_TIMED_OUT. Otherwise, it returns B_OK.
|
||||
<P>
|
||||
<i>Reply Protocol:</i> The target will receive the message with all attached data with one slight modification to the otherwise chosen message protocol - the first item will be a port_id which is the port to which the sender is to reply. All other attached data (if any) immediately follows this port id.
|
||||
</li>
|
||||
</OL>
|
||||
<h6>HTML Documentation Format by Jeremy Rand</h6>
|
||||
</BODY>
|
||||
</HTML>
|
||||
@@ -0,0 +1,54 @@
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>Documentation and Resources for writing BeOS File Systems</TITLE>
|
||||
</HEAD>
|
||||
|
||||
<BODY text="#000000" link="#0000FF" bgcolor="#FFFFFF">
|
||||
|
||||
<H1>Hints for BeOS File System Authors</H1>
|
||||
|
||||
<P>Besides the example DOS file system that comes with the BeOS developers
|
||||
stuff, there's also a CD-ROM file system example. If you installed the
|
||||
optional stuff on the BeOS 5.0 Pro CD-ROM (or the developer's kit from the free
|
||||
site), it's at: /boot/optional/sample-code/add-ons/iso9660
|
||||
|
||||
<P>On <A HREF="http://www.bebits.com/">BeBits</A> you can get source code
|
||||
examples from a few programs, such as AtheOS FS (<A
|
||||
HREF="http://www.bebits.com/app/2028">app 2028 on BeBits</A>). There used to
|
||||
be a copy of NTFS too with source (<A HREF="http://www.bebits.com/app/620">app
|
||||
620 on BeBits</A>), but the site seems to be down. There are also other file
|
||||
systems there, but source is not included (some have it available on request).
|
||||
|
||||
<P>Another useful source of information is the <A
|
||||
HREF="http://www.be.com/developers/dev_lib/index.html">BeOS developer library
|
||||
web site</A>. It has some articles on file systems, the most relevant being
|
||||
the <A
|
||||
HREF="http://www-classic.be.com/aboutbe/benewsletter/volume_III/Issue20.html#Insight">One
|
||||
File Network File System</A>, which shows one way of combining a user space
|
||||
program with a kernel file system stub. Another good one is <A
|
||||
HREF="http://www-classic.be.com/aboutbe/benewsletter/Issue52.html#Insight">about
|
||||
the FSP</A> (file system protocol). The prior issue describes what <A
|
||||
HREF="http://www-classic.be.com/aboutbe/benewsletter/Issue51.html#Insight">features
|
||||
the BFS supports</A>. There are lots of other tangentially related articles,
|
||||
such as ones on device drivers, programming in kernel mode, debugging, etc.
|
||||
|
||||
<P>There's also the very good <CITE>Practical File System Design</CITE> book
|
||||
by Dominic Giampaolo, from <A HREF="http://www.mkp.com/">Morgan Kaufmann
|
||||
Publishers</A>, read their <A
|
||||
HREF="http://www.mkp.com/books_catalog/catalog.asp?ISBN=1-55860-497-9">catalog
|
||||
entry</A> for more info about the book.
|
||||
|
||||
<P>Finally, there's <A
|
||||
HREF="http://www.google.com/search?q=%22Alexander+G.+M.+Smith%22">Alexander G.
|
||||
M. Smith</A>'s ongoing documentation of the file system API, condensed from all
|
||||
these sources and from his continuing experiences with trying to write a RAM
|
||||
file system. You can get the StyledEdit text file with the <A
|
||||
HREF="http://www.achilles.net/~agmsmith/beos/FileSystemAPINotes20011018.zip">October
|
||||
18 2001 version</A> or check the <A
|
||||
HREF="http://www.achilles.net/~agmsmith/beos/">BeOS directory</A> on his site
|
||||
for newer versions.
|
||||
|
||||
<P><FONT SIZE="-1">Last updated November 11, 2001 by AGMS.</FONT>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
@@ -0,0 +1,165 @@
|
||||
Drive Setup Design Document
|
||||
|
||||
Contents
|
||||
--------
|
||||
1 General
|
||||
2 Display View
|
||||
3 Menus
|
||||
3.1 Mount
|
||||
3.2 Unmount
|
||||
3.3 Setup
|
||||
3.4 Options
|
||||
3.5 Rescan
|
||||
4 Partition View
|
||||
4.1 Intel
|
||||
4.2 Apple
|
||||
|
||||
1: General
|
||||
----------
|
||||
|
||||
- When the app starts up, it pops up a dialog while scanning for devices.
|
||||
- The window is resizeable.
|
||||
- There doesn't seem to be any way to get the information that I need
|
||||
easily: I suspect that some direct reading of the partition map is
|
||||
needed. For now, a fake struct with the info I need will suffice.
|
||||
|
||||
2: Display View
|
||||
---------------
|
||||
|
||||
The display view displays information about the drives that the system knows
|
||||
about. The following information is shown:
|
||||
- Device: Where the device is mounted on the system. For example, my floppy
|
||||
drive is at /dev/disk/floppy.
|
||||
- Map Style: Either apple or intel, depending on which type the media is.
|
||||
- Partition type: Empty for a drive.
|
||||
- File System: Comma seperated list of the File Systems on the selected
|
||||
device.
|
||||
- Volume Name: Comma seperated list of the Volume Names of the partitions on
|
||||
the selected device.
|
||||
- Mounted At: Comma seperated list of the mount points of the partitions on
|
||||
the selected device.
|
||||
- Size: Total size of the media at the selected device.
|
||||
Selecting a drop down arrow on a device shows a list of partitions on the media
|
||||
in the device. The following information is shown:
|
||||
- Device: Empty for a partition.
|
||||
- Map Style: Empty for a partition.
|
||||
- Partition type: The type of the partition.
|
||||
- File System: The file system on that partition.
|
||||
- Volume Name: The name of the partition.
|
||||
- Mounted At: The mount point of the partition.
|
||||
- Size: The size of the partition.
|
||||
|
||||
3: Menus
|
||||
--------
|
||||
|
||||
Mount
|
||||
- Only available when there is a partition available to mount on the selected
|
||||
drive.
|
||||
|
||||
*Mount All Partitions
|
||||
- Shortcut: Alt-M
|
||||
- Action: Mounts all unmounted partitions on the selected drive.
|
||||
|
||||
*[List of partitions on the selected drive, with mounted partitions greyed
|
||||
out and unmounted partitions selectable]
|
||||
- Action: Mounts the selected partition on the selected drive.
|
||||
|
||||
Unmount
|
||||
- Only available when there is a mounted partition on the selected drive.
|
||||
|
||||
*[List of mounted partitions on the selected drive, with all mounted partitions
|
||||
selectable except /boot]
|
||||
- Action: Unmounts the selected partition.
|
||||
|
||||
Setup
|
||||
- Only available when the selected drive has valid media in it: example, a
|
||||
hard drive, or a floppy drive with a disk in.
|
||||
|
||||
*Format
|
||||
- Shortcut: Alt-F
|
||||
- Action: Formats the drive.
|
||||
|
||||
*Partition
|
||||
- Action: Opens sub menu.
|
||||
|
||||
*apple...
|
||||
- Action: Allows partitioning of apple hard drives, using an apple-like
|
||||
interface.
|
||||
|
||||
*intel...
|
||||
- Action: Allows partitioning of intel hard drives.
|
||||
|
||||
*Initialize
|
||||
- Action: Opens sub menu.
|
||||
|
||||
*[List of partitions on the selected drive, with unmounted partitions
|
||||
selectable]
|
||||
- Action: Opens sub menu.
|
||||
|
||||
*[List of supported formats to initialize the drive to.]
|
||||
- Current list of formats:
|
||||
- Be File System...
|
||||
- cdda...
|
||||
- cifs...
|
||||
- DOS/FAT...
|
||||
- ext2...
|
||||
- Mac HFS...
|
||||
- iso9660...
|
||||
- NTFS...
|
||||
- Old Be File System...
|
||||
- uspacefs...
|
||||
- Possibly this section should be dynamically created, with initializing
|
||||
code done in a plug-in type way, so other formats can be easily added.
|
||||
- Action: Initializes the selected partition.
|
||||
|
||||
Options
|
||||
- Only available when the selected drive has valid media in it: example, a
|
||||
hard drive, or a floppy drive with a disk in.
|
||||
|
||||
*Eject
|
||||
- Only available if the selected drive has removable media.
|
||||
- Shortcut: Alt-E
|
||||
- Action: Ejects the media.
|
||||
|
||||
*Surface Test
|
||||
- Shortcut: Alt-T
|
||||
- Action: Performs a surface test on the media.
|
||||
|
||||
Rescan
|
||||
|
||||
*IDE
|
||||
- Action: Rescans the IDE chain for new media/devices/whatever.
|
||||
|
||||
*SCSI
|
||||
- Action: Rescans the SCSI chain for new media/devices/whatever.
|
||||
|
||||
Context Sensitive Right Click Menu
|
||||
- Available by right clicking on a drive in the display view.
|
||||
- Allows access to the Mount, Unmount, Setup, and Options menus, with the
|
||||
same "selectability" as above - if the menu is not selectable on the main'
|
||||
menu bar, it is not selectable on this context menu.
|
||||
|
||||
4: Partition View
|
||||
-----------------
|
||||
|
||||
- The partition view is brought up when "Partition" is chose from the Setup
|
||||
menu.
|
||||
- If the selected drive has partitions that are currently mounted, a dialog
|
||||
is brought up explaining that the partition map can not be modified, only
|
||||
viewed, and offering a choice to cancel or proceed. If the user proceeds,
|
||||
all of the UI components are set to an inactive state, except for the
|
||||
Cancel and Ok buttons.
|
||||
|
||||
Intel
|
||||
- The top part of the view shows the device path.
|
||||
- The middle section of the view shows the partitions, the type (in a text
|
||||
box), a readable explanation of the type number in a drop down menu, and
|
||||
a checkbox indicating the state of the Active flag.
|
||||
- The bottom section of the view consists of a slide bar for each partition,
|
||||
allowing the user to set the size of the partitions. Each slide bar can
|
||||
be locked or unlocked, which disallows or allows movement of the slide bar.
|
||||
- The button actions are Revert, Cancel, and Ok.
|
||||
|
||||
Apple
|
||||
- (I have no apple partitions available, help needed!!)
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
TODO:
|
||||
|
||||
* make the unmount menu build off of the selected drive,
|
||||
rather than all mounted partitions
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
Font Pref App
|
||||
|
||||
ISSUES
|
||||
|
||||
* Rescanning fonts causes the bold font to lose its boldness.
|
||||
* Fixed width font selector should only show fixed width fonts
|
||||
|
||||
TODO
|
||||
|
||||
* When a style is selected, the font menu label needs to be updated to reflect this
|
||||
* make a cache panel function that updates the slider labels with an int as a parameter
|
||||
* Add the VMSettings code so that the panel uses the settings file for position/size
|
||||
|
||||
Matt McMinn
|
||||
[email protected]
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
<documentation>
|
||||
|
||||
<appName>Fonts</appName>
|
||||
|
||||
<version>0.8</version>
|
||||
|
||||
<author>
|
||||
|
||||
<name>Matt McMinn</name>
|
||||
<email>[email protected]</email>
|
||||
<homePage>http://home.earthlink.net/~melfina/</homePage>
|
||||
|
||||
</author>
|
||||
|
||||
<description>
|
||||
|
||||
It's just a copy of the fonts preferences app that comes with BeOS.
|
||||
|
||||
</description>
|
||||
|
||||
<issues>
|
||||
|
||||
<issue>
|
||||
|
||||
<id>1</id>
|
||||
<description>
|
||||
|
||||
Rescanning fonts causes the bold font to lose its boldness.
|
||||
|
||||
</description>
|
||||
<relatedInfo />
|
||||
|
||||
</issue>
|
||||
<issue>
|
||||
|
||||
<id>2</id>
|
||||
<description>
|
||||
|
||||
Fixed width font selector should only show fixed width fonts.
|
||||
|
||||
</description>
|
||||
<relatedInfo>
|
||||
|
||||
<note>
|
||||
|
||||
Should be relatively easy - just filter the fonts.
|
||||
|
||||
</note>
|
||||
|
||||
</relatedInfo>
|
||||
|
||||
</issue>
|
||||
|
||||
</issues>
|
||||
|
||||
<todoList>
|
||||
|
||||
<todo>
|
||||
|
||||
<id>1</id>
|
||||
<forVersion>0.9</forVersion>
|
||||
<description>
|
||||
|
||||
When a style is selected, the font menu label needs to be
|
||||
updated to reflect this.
|
||||
|
||||
</description>
|
||||
<relatedInfo />
|
||||
|
||||
</todo>
|
||||
<todo>
|
||||
|
||||
<id>2</id>
|
||||
<forVersion>0.9</forVersion>
|
||||
<description>
|
||||
|
||||
Make a cache panel function that updates the slider labels with
|
||||
an int as a parameter.
|
||||
|
||||
</description>
|
||||
<relatedInfo />
|
||||
|
||||
</todo>
|
||||
<todo>
|
||||
|
||||
<id>3</id>
|
||||
<forVersion>0.9</forVersion>
|
||||
<description>
|
||||
|
||||
Add the VMSettings code so that the panel uses the settings
|
||||
file for position/size.
|
||||
|
||||
</description>
|
||||
<relatedInfo />
|
||||
|
||||
</todo>
|
||||
<todo>
|
||||
|
||||
<id>4</id>
|
||||
<forVersion>0.9</forVersion>
|
||||
<description>
|
||||
|
||||
Update the default fonts on close.
|
||||
|
||||
</description>
|
||||
<relatedInfo />
|
||||
|
||||
</todo>
|
||||
|
||||
</todoList>
|
||||
|
||||
</documentation>
|
||||
@@ -0,0 +1,181 @@
|
||||
<html>
|
||||
<header>
|
||||
<title>Maintaining Binary Compatibility</title>
|
||||
</header>
|
||||
<body>
|
||||
<h1>Binary Compatibility in 3 Easy Steps!<hr></h1>
|
||||
|
||||
<h2>An Introduction</h2>
|
||||
In the early days of the OpenBeOS project, a debate raged concerning one of the projects
|
||||
primary goals: maintaining binary compatibility with BeOS R5. The idea was that the
|
||||
only way an effort to rewrite BeOS would be successful was if folks could continue
|
||||
running the apps they already had. Certainly, a lot of software available for BeOS is
|
||||
open source or actively maintained -- these apps could just be recompiled if necessary.
|
||||
Others -- PostMaster, gobe's Productive suite and a few other crucial apps -- weren't
|
||||
likely to get rebuilt, either because the original author had stopped maintainance
|
||||
without being kind enough to release the source, or because it just wouldn't be
|
||||
commercially feasible.<p>
|
||||
Some said that we were crazy; that it couldn't be done. Thankfully, cooler heads
|
||||
prevailed and we're well on our way to a binary compatible clone of R5.<p>
|
||||
|
||||
"But wait!" you cry. "How did the cooler heads which prevailed know that the holy grail
|
||||
of binary compatibility was achievable?" I'm so glad you asked! Keeping reading and be
|
||||
enlightened, Grasshopper.<p>
|
||||
|
||||
<h2>The Issues</h2>
|
||||
There are three basic issues that have to be addressed to ensure binary compatibility:
|
||||
<ul>
|
||||
<li>
|
||||
<b>Names must be identical</b><br>
|
||||
This includes class and structure names as well as public, protected and global
|
||||
function and variable names.
|
||||
</li>
|
||||
<li>
|
||||
<b>Object sizes must be identical</b><br>
|
||||
Classes must contain the same number of bytes of data; global variables must
|
||||
be the same size. Maybe BGlobalVar should've been an <code>int32</code>
|
||||
instead of an <code>int16</code>, but we're stuck with it now.
|
||||
</li>
|
||||
<li>
|
||||
<b>Virtual function table layout must be identical</b><br>
|
||||
The most cryptic and confusing aspect of maintaining binary compatibility.
|
||||
The issue essentially boils down to this: for any given class, there must
|
||||
be the same number of virtual functions, declared in the same order as the
|
||||
original.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>The Nitty Gritty</h2>
|
||||
"Good grief!" you say. "How on earth do I keep all this stuff straight?" Ah,
|
||||
Grasshopper, it is easier that you might imagine. Just follow these steps, and you
|
||||
should be binary compatible in no time!
|
||||
<ol>
|
||||
<li>
|
||||
<b>Make a copy of the appropriate Be header file</b><br>
|
||||
This is now your header file. You may need to change a thing or two, but what
|
||||
you can (or will need to) change is quite limited, and discussed below.
|
||||
</li>
|
||||
<li>
|
||||
<b>Implement public, protected and virtual functions</b><br>
|
||||
In the course of doing this, you may discover that there are some private
|
||||
non-virtual function declarations that you just don't use. Feel free to axe
|
||||
them! Since they're private, nobody using the class will miss them, and
|
||||
because they're not virtual, they don't effect the vtable layout. Conversely,
|
||||
if you find a need to add some private, non-virtual functions, go right ahead
|
||||
(for the very same reasons).
|
||||
</li>
|
||||
<li>
|
||||
<b>Make sure you don't change the number of bytes used for data</b><br>
|
||||
There are two situations that can make this seem difficult. First, there
|
||||
may be data members that you don't use in your reimplementation. You can
|
||||
just leave them (safe, but a little messy) or you can add the extra members'
|
||||
bytes to the class's "unused" data array. An example will make this clear.<br>
|
||||
Let's say we have a class BFoo:<br>
|
||||
<code>
|
||||
<pre>
|
||||
class BFoo {
|
||||
public:
|
||||
BFoo();
|
||||
void SomeFunc();
|
||||
private:
|
||||
int32 fBar;
|
||||
char fZig;
|
||||
int32 fQux;
|
||||
int32 fUnused[2];
|
||||
};
|
||||
</pre>
|
||||
</code>
|
||||
The Be engineers that originally wrote this BFoo purposely added some data
|
||||
padding in the form of an array of 2 <code>int32</code>s (they did this with
|
||||
most classes in the API). Now let's suppose in your implementation, you
|
||||
really didn't need <code>fQux</code>. You can add <code>fQux</code>'s bytes
|
||||
into <code>fUnused</code>:<br>
|
||||
<code>
|
||||
<pre>
|
||||
class BFoo
|
||||
{
|
||||
...
|
||||
private:
|
||||
int32 fBar;
|
||||
char fZig;
|
||||
int32 fUnused[3];
|
||||
};
|
||||
</pre>
|
||||
</code>
|
||||
Nothing could be easier! An additional twist that should be noted is that
|
||||
data member order must also be preserved. In much the same way as existing
|
||||
apps will "look" for virtual functions in a specific place in the vtable,
|
||||
so will they "look" for data members in a specific place in an object.<br>
|
||||
"But what if I don't need <code>fZig</code>, either?" you wonder. "It's only
|
||||
one byte, not four like an <code>int32</code>!" Have no fear! Just rename it
|
||||
"<code>fUnusedChar</code>" and be done with it.<p>
|
||||
|
||||
The second situation that can make preserving object size tricky is if there
|
||||
aren't <i>enough</i> bytes of data available. Building on our cheesy BFoo
|
||||
example, let's suppose that rather than getting rid of <code>fQux</code> and
|
||||
<code>fZig</code>, you actually needed to <i>add</i> another 4
|
||||
<code>int32</code>s worth of data: <code>fNewData1</code> through
|
||||
<code>fNewData4</code>. The original implementation of BFoo has two extra
|
||||
<code>int32</code>s which we can use, but that leaves us two <code>int32</code>s
|
||||
short. What to do? The easiest thing to do is create a data structure to hold
|
||||
your new data and convert one of the <code>fUnused</code> items into a pointer
|
||||
to that structure:
|
||||
<code>
|
||||
<pre>
|
||||
// Foo.h
|
||||
struct _BFooData_;
|
||||
class BFoo
|
||||
{
|
||||
public:
|
||||
BFoo();
|
||||
~BFoo();
|
||||
void SomeFunc();
|
||||
private:
|
||||
int32 fBar;
|
||||
char fZig;
|
||||
_BFooData_* fNewData;
|
||||
int32 fUnused[1];
|
||||
};
|
||||
|
||||
// Foo.cpp
|
||||
struct _BFooData_
|
||||
{
|
||||
int32 fNewData1;
|
||||
int32 fNewData2;
|
||||
int32 fNewData3;
|
||||
int32 fNewData4;
|
||||
};
|
||||
BFoo::BFoo()
|
||||
{
|
||||
fNewData = new _BFooData_;
|
||||
}
|
||||
BFoo::~BFoo()
|
||||
{
|
||||
delete fNewData;
|
||||
}
|
||||
</pre>
|
||||
</code>
|
||||
Voila! More data without making the class bigger. Notice the added
|
||||
destructor; make sure you're cleaning up your new (dynamically allocated) data.
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
And there you have it: Binary Compatibility in 3 Easy Steps!<br>
|
||||
Questions, comments, or corrections? Please let
|
||||
<a href="mailto:[email protected]">me</a> know!<br>
|
||||
<hr>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,140 @@
|
||||
<html>
|
||||
<Title>Interface Kit Team Process</Title>
|
||||
<body>
|
||||
<h1>Interface Kit Team Process</h1>
|
||||
<p>
|
||||
This paper deals with the set of requirements for reimplementing any portion of the BeOS
|
||||
covered by the Interface Kit team's charter; namely, the Interface Kit, the Application
|
||||
Kit, the app_server, and related preferences applets. This team's resposibilities
|
||||
may broaden later to include more areas of the OS which are related (the input_server
|
||||
comes to mind as a possibility). Since the mandate of the group covers such a
|
||||
large and public (from a 3rd party developer's perspective) portion of BeOS -- a portion
|
||||
that is central to the user and developer experience of BeOS -- it is vital that our work
|
||||
be done in a scrupulously documented and tested fashion. This paper lays out the
|
||||
process which, when adhered to, aims to ensure this high standard of documentation and
|
||||
testability.
|
||||
</p><p>
|
||||
First, a definition of "module" as it pertains to this paper.
|
||||
<p>
|
||||
<b>Module:</b>
|
||||
A function, class, kit, application or related set of functions, classes, kits or
|
||||
applications is refered to as a "module" in this paper, the implication being that
|
||||
there can be modules within modules. A module is any specifiable and testable
|
||||
entity -- which may or may not rely on other modules to accomplish its functionality.
|
||||
</p><p>
|
||||
<h2>
|
||||
Process Requirements
|
||||
<hr align="left" width="25%">
|
||||
</h2>
|
||||
|
||||
Each module in this project shall have the following items:
|
||||
<ul>
|
||||
<li>Complete interface specification. For kits, this will mostly come
|
||||
from the BeBook, but in many cases the specification will have to elaborate
|
||||
on what the BeBook provides or even be created entirely (app_server internals
|
||||
are a good example).</li>
|
||||
<li>Complete use case specification. For those not familiar with use cases,
|
||||
they consist of the following:
|
||||
<ul>
|
||||
<li>A list of ways in which a module is expected to be used</li>
|
||||
<li>Sublists of assumptions/prerequisites for each of those cases.
|
||||
This should include items such as state of an object instance at the
|
||||
time of method invocation, the state of parameters passed to functions,
|
||||
etc.</li>
|
||||
<li>Sublists of error conditions and handling for each case where
|
||||
assumptions/prerequisites are not properly met. This list should
|
||||
not attempt to be all inclusive: circumstances that do not
|
||||
directly bear upon the assumptions/prerequisites do not need to be
|
||||
considered unless clearly necessary.</li>
|
||||
</ul></li>
|
||||
<li>A set of unit tests which verify that the module performs correctly in expected
|
||||
use cases as well as under error conditions as described in the use case
|
||||
specification.</li>
|
||||
<li>A plain-english discussion of how the module implements its functionality:
|
||||
what algorithms are to be used, what other modules are relied upon, the general
|
||||
design rationale, execution flow, etc.</li>
|
||||
<li>The actual reimplementation.</li>
|
||||
</ul>
|
||||
|
||||
Each of the above items is to be completed roughly in the order listed. In other
|
||||
words, a given module should have a complete interface specification, etc., before it is
|
||||
reimplemented. Prototyping is encouraged, of course. For existing APIs, the
|
||||
recommended course is to write the interface spec, use case spec and unit tests to the
|
||||
API. Unit tests, in particular, should perform as expected when run against the
|
||||
existing API. When they do not, changes may need to be made to the specifications.
|
||||
Our goal is to reimplement the APIs as they are, not necessarily as they're
|
||||
documented -- and then ensure that the docs accurately reflect the reimplementation.
|
||||
Thorough testing of the existing implementation will show us where the
|
||||
documentation is wrong, misleading or absent, thereby helping to ensure that our
|
||||
reimplementation is functionaly identical to the existing one.
|
||||
<p>
|
||||
<a href="http://www.xprogramming.com/ftp/TestingFramework/CppUnit/CppUnit15.zip">
|
||||
CppTest</a>
|
||||
is the test framework we will be using. By using this framework for all our unit
|
||||
tests, we can easily build large test suites which will verify the codebase in a single
|
||||
executed run. An excellent short discussion of the value of unit tests is here:<br>
|
||||
|
||||
<a href="http://www.extremeprogramming.org/rules/unittests.html">
|
||||
http://www.extremeprogramming.org/rules/unittests.html</a>
|
||||
|
||||
<h2>
|
||||
A Suggestion
|
||||
<hr align="left" width="25%">
|
||||
</h2>
|
||||
|
||||
Although the interface specification for each module should be completed first, I have a
|
||||
suggestion for how to proceed from there which should make the remainder of the process
|
||||
less boring. Rather than following the interface specification with a full set of
|
||||
use cases followed by a full set of tests, a more productive and enjoyable way to go is
|
||||
to take each module in turn, write one of the use cases/error conditions for it and
|
||||
immediately write the test for that use case/error condition. This will break up
|
||||
the tedious process of specifying all the use cases and error conditions with a bit of
|
||||
coding -- not implementation code, but code nonetheless.
|
||||
|
||||
<h2>
|
||||
Some Final Thoughts
|
||||
<hr align="left" width="25%">
|
||||
</h2>
|
||||
|
||||
This process is a very rigorous approach to take. Given that our goal is to produce
|
||||
the most stable, robust and professional desktop operating system available, this sort of
|
||||
thoroughness is justifiable and necessary. Our understanding of the system will be
|
||||
greatly increased and the task of coming up to speed on the system will be made much
|
||||
easier for outsiders and newcomers to the project.
|
||||
<p>
|
||||
This approach is also not the most "fun": sitting down and hacking out code has the
|
||||
attraction of instant gratification that design work does not. It is important to
|
||||
understand, however, that proper design work done up front makes the task of
|
||||
implementation easier, the chore of integration much less onerous and testing and
|
||||
code verification a snap. Provided we do not get locked in "analysis paralysis"
|
||||
and attack the design work as vigorously as the coding work, the entire project will
|
||||
actually move more quickly -- usually quite a bit more quickly -- than if we had simply
|
||||
started coding. Thrown away versions of the codebase should be just that:
|
||||
quick prototypes intended to be disposable, rather than full-blown implementation
|
||||
attempts which fail or are mysterious blackboxes because we don't really understand the
|
||||
module. Following this process makes it far more likely that when we sit down to
|
||||
do a module implementation, the first try will be the last (bug fixes not withstanding,
|
||||
of course ;).
|
||||
</p><p>
|
||||
To ensure the process is followed and we produce the highest quality code we can, code
|
||||
will not be accepted for release until all of the process items are covered. If
|
||||
this seems like a hardline stance to take, remember: every single app which
|
||||
utilizes the Application and Interface Kits relies on our code to be rock solid --
|
||||
totally predictable and completely reliable. Let's strive to be engineers, not
|
||||
h4X0rz.
|
||||
</p>
|
||||
<hr>
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,391 @@
|
||||
<HTML>
|
||||
<!-- $Id: UnitTestingInfo.html,v 1.1 2002/07/09 12:24:30 ejakowatz Exp $ -->
|
||||
<HEAD>
|
||||
<TITLE>Unit Testing Information</TITLE>
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white" LINK="#000067" VLINK="#000067" ALINK="#0000FF">
|
||||
<FONT FACE="Verdana,Arial,Helvetica,sans-serif" SIZE="-1">
|
||||
|
||||
<H1>Unit Testing Information:</H1>
|
||||
|
||||
<P>This document describes the "why's" and "how's" of unit testing for the AppKit team of the
|
||||
OpenBeOS project. Although it is intended for the AppKit team, there is no reason other teams
|
||||
couldn't use this information to develop a similar unit testing strategy.</P>
|
||||
|
||||
<P>The document has the following sections:</P>
|
||||
|
||||
<OL>
|
||||
<LI><A HREF="#what">What is unit testing?</A></LI>
|
||||
<LI><A HREF="#why">Why is unit testing important?</A></LI>
|
||||
<LI><A HREF="#when">When should I write my unit tests?</A></LI>
|
||||
<LI><A HREF="#whattests">What kinds of tests should be in a unit test?</A></LI>
|
||||
<LI><A HREF="#testframework">What framework is being used to do unit testing for the AppKit?</A></LI>
|
||||
<LI><A HREF="#frameworkmods">What AppKit specific modifications have been made to this framework?</A></LI>
|
||||
<LI><A HREF="#futuremods">What framework modifications might be required in the future?</A></LI>
|
||||
<LI><A HREF="#buildingtests">How do I build the framework and current tests for the AppKit?</A></LI>
|
||||
<LI><A HREF="#runningtests">How do I run tests?</A></LI>
|
||||
<LI><A HREF="#writingtests">How do I write tests for my component?</A></LI>
|
||||
<LI><A HREF="#exampletests">Are there example tests to base mine on?</A></LI>
|
||||
<LI><A HREF="#threadedtests">How do I write a test with multiple threads?</A></LI>
|
||||
</OL>
|
||||
|
||||
<A NAME="what"></A><H2>What is unit testing?</H2>
|
||||
|
||||
<P>Unit testing is the process of showing that a part of a software system works as far as the
|
||||
requirements created for that part of the system. Unit testing is best if it has the following
|
||||
characteristics:</P>
|
||||
|
||||
<UL>
|
||||
<LI>The software component is tested in isolation with as little interaction with other software
|
||||
components as possible.</LI>
|
||||
<LI>The software component is tested using automated tools so that unit tests can be run with
|
||||
every build of the software if required.</LI>
|
||||
<LI>All requirements of the software component are tested as part of the unit tests.</LI>
|
||||
</UL>
|
||||
|
||||
<P>Unit testing is not the only type of testing but is definitely a very important part of any
|
||||
testing strategy. Following unit testing, software should go through "integration testing" to
|
||||
show that the components work as expected when put together.</P>
|
||||
|
||||
<A NAME="why"></A><H2>Why is unit testing important?</H2>
|
||||
|
||||
<P>A basic concept of software engineering is that the cost of fixing a bug goes up by a factor
|
||||
of 2-10x (depending on the source of the information) the later in the development process it is
|
||||
found. Unit testing is critical to finding implementation bugs within a particular component as
|
||||
quickly as possible.</P>
|
||||
|
||||
<P>Unit testing will also help to find requirements problems also. If you write the requirements
|
||||
(or use cases) for your component from the BeBook, hopefully the BeBook and your use cases will
|
||||
match the actual Be implementation. A good way to confirm that the BeBook documentation matches
|
||||
Be's implementation is to write your unit tests and run them against the original Be code.</P>
|
||||
|
||||
<P>Unit tests will also continue to be maintained and run in the future also. As the mailing
|
||||
lists obviously show, many people are looking forward to OpenBeOS post-R1 when new features
|
||||
will be introduced above and beyond BeOS R5. These unit tests will be critical to ensuring that
|
||||
any new feature or even just a bug fix doesn't break existing functionality.</P>
|
||||
|
||||
<P>Speaking of bug fixes, consider adding unit tests for any bugs you identify that slipped
|
||||
through your original unit test suite. This will ensure that this bug or a similar one is not
|
||||
re-introduced in the future.</P>
|
||||
|
||||
<P>Finally, unit testing is not the be all, end all of testing. As mentioned above, integration
|
||||
testing must be done to show that software components work together. If all unit tests cover
|
||||
all requirements and have run successfully against all components, then a failure has to be
|
||||
due to a bug in the interaction of two or more known working software components.</P>
|
||||
|
||||
<A NAME="when"></A><H2>When should I write my unit tests?</H2></LI>
|
||||
|
||||
<P>As the AppKit process document describes the recommended order for implementing a component
|
||||
is:</P>
|
||||
|
||||
<OL>
|
||||
<LI>Write an interface specification</LI>
|
||||
<LI>Write the use case specifications</LI>
|
||||
<LI>Write the unit tests</LI>
|
||||
<LI>Write an implementation plan</LI>
|
||||
<LI>Write the code</LI>
|
||||
</OL>
|
||||
|
||||
<P>Please see the AppKit process document for more details about the entire sequence. The unit
|
||||
test are to be written once the use cases are written and before any implementation work is
|
||||
done. The use cases must be done because they determine what the tests will be. You need to
|
||||
write as many tests are required so that all use cases for that component are tested. The use
|
||||
cases should be detailed enough that you can write your unit tests from them.</P>
|
||||
|
||||
<P>The unit tests are to be done before implementation for a very good reason. You should be able
|
||||
to run these unit tests against the Be implementation and confirm that they all pass. If they do
|
||||
not pass, then either there is a bug in the unit test itself or you have found a difference
|
||||
between your use cases and the actual implementation. Even if your use cases match the BeBook,
|
||||
if that is not how the actual Be implementation works, we must match the current implementation and
|
||||
not the BeBook. You should go back and modify the use case. Change the use case so that it
|
||||
matches Be's implementation and consider adding a note indicating this doesn't match the
|
||||
BeBook.</P>
|
||||
|
||||
<P>Imagine if you completed the implementation and then wrote and ran the unit tests. If you run
|
||||
the tests against your implementation and Be's implementation, you will notice the test passes
|
||||
for your code but fails on Be's. At this point, you will have to change the implementation, change
|
||||
the unit test and change the use case which is more work that if you write the unit tests before
|
||||
the implementation. Worse, if you only ran the unit tests against your implementation and not
|
||||
Be's, you may not notice the problem at all.</P>
|
||||
|
||||
<A NAME="whattest"></A><H2>What kinds of tests should be in a unit test?</H2>
|
||||
|
||||
<P>The unit tests you write should cover all the functionality of your software module. That
|
||||
means your unit tests should include:</P>
|
||||
|
||||
<UL>
|
||||
<LI>All standard expected functionality of the software component</LI>
|
||||
<LI>All error conditions handled by the software component</LI>
|
||||
<LI>Interaction with software components which cannot be decoupled from the target software
|
||||
component</LI>
|
||||
<LI>Concurrency tests to show that a software component which is expected to be thread safe (most
|
||||
things are under BeOS) is safe and free from deadlocks.</LI>
|
||||
</UL>
|
||||
|
||||
<A NAME="testframework"></A><H2>What framework is being used to do unit testing for the AppKit?</H2>
|
||||
|
||||
<P>The AppKit team has chosen to use CppUnit version 1.5 as the basis of all of our unit tests.
|
||||
This framework provides very useful features and ensures that all unit tests for AppKit code
|
||||
are consistent and can be executed from a single environment.</P>
|
||||
|
||||
<P>There are two key components to the framework. First, there is a library called libCppUnit.so
|
||||
which provides all the C++ classes for defining your own testcases. Secondly, there is an
|
||||
executable called "TestRunner" which is capable of executing a set of testcases.</P>
|
||||
|
||||
<P>For more information on CppUnit, please refer to
|
||||
<A HREF="http://cppunit.sourceforge.net/">this website</A>
|
||||
|
||||
<A NAME="frameworkmods"></A><H2>What AppKit specific modifications have been made to this framework?</H2>
|
||||
|
||||
<P>The following are the modifications that have been introduced into the CppUnit v1.5
|
||||
framework:</P>
|
||||
|
||||
<UL>
|
||||
<LI>A makefile has been added for the library and the TestRunner.</LI>
|
||||
<LI>Some "bugs" in CppUnit v1.5 which lead to it not compiling under BeOS v5.</LI>
|
||||
<LI>The TestRunner has been modified to support BeOS based addons. Each test which you can
|
||||
select from the TestRunner is found in the "add-ons" directory at runtime. The original
|
||||
TestRunner required you to change the TestRunner when new tests were added to it.</LI>
|
||||
<LI>Changed the output from TestRunner. The output includes a name of the test being run and
|
||||
a run time for the test in microseconds.</LI>
|
||||
<LI>Changed the arguments of the assert functions in the TestCase class from std::string to
|
||||
const char *'s due to apparent concurrency problems with std::string under BeOS when testing
|
||||
threaded tests.</LI>
|
||||
<LI>Added locking to the TestResults class so that multiple threads can safely add result
|
||||
information at the same time for a single test.</LI>
|
||||
<LI>The ThreadedTestCaller class was written to allow us to write tests which contain multiple
|
||||
threads. This is an important class because many BeOS components are thread safe and we need
|
||||
to confirm that the OpenBeOS implementation is also thread safe.</LI>
|
||||
</UL>
|
||||
|
||||
<P>This is the list of the important modifications done to CppUnit v1.5 at the time this document
|
||||
is being written. For the latest information about modifications to CppUnit, check the code
|
||||
which can be found in the OpenBeOS CVS repository.</P>
|
||||
|
||||
<A NAME="futuremods"></A><H2>What framework modifications might be required in the future?</H2>
|
||||
|
||||
<P>This framework will have to evolve as our needs grow. The main issues I think we need to
|
||||
solve are:</P>
|
||||
|
||||
<UL>
|
||||
<LI>The format of the test name is an encoded string representing the class definition of the
|
||||
test class from gcc. It is not a very readable format but given that the test class is often
|
||||
a template class and you would like different names for different instances of the template,
|
||||
this seemed the best compromise. Suggestions welcome.</LI>
|
||||
|
||||
<LI>The threaded test support added into CppUnit forces you to specify the entry point for each
|
||||
thread in your test. If you are doing a test with a BLooper or a BWindow, these classes start
|
||||
a thread of their own. This thread will not be started through the standard entry point so
|
||||
doing "assert's" from one of these threads will not work. Perhaps we need TestBLooper and
|
||||
TestBWindow classes which will work with the assert's.</LI>
|
||||
</UL>
|
||||
|
||||
<P>If you find you need some other features, feel free to add them to CppUnit.</P>
|
||||
|
||||
<A NAME="buildingtests"></A><H2>How do I build the framework and current tests for the AppKit?</H2>
|
||||
|
||||
<P>As of writing this document, you can build the framework and all the current AppKit tests
|
||||
by performing the following steps:</P>
|
||||
|
||||
<OL>
|
||||
|
||||
<LI>Checkout the "app_kit" sources or the entire repository from the OpenBeOS CVS repository.
|
||||
There is information at the OpenBeOS site about how to access the CVS repository.</LI>
|
||||
|
||||
<LI>In a terminal, "cd" into the "app_kit" directory in the CVS files you checked out.</LI>
|
||||
|
||||
<LI>Type "make".</LI>
|
||||
|
||||
</OL>
|
||||
|
||||
<P>Note that the build system for OpenBeOS is moving to jam so these steps may become obsolete.
|
||||
When you the make has finished, you should find the following files:</P>
|
||||
|
||||
<UL>
|
||||
|
||||
<LI><CODE>app_kit/test/CppUnit/TestRunner</CODE> - this is the executable to use to execute
|
||||
tests.</LI>
|
||||
<LI><CODE>app_kit/test/CppUnit/lib/libCppUnit.so</CODE> - this is CppUnit library which your tests
|
||||
must link against.</LI>
|
||||
<LI><CODE>app_kit/test/CppUnit/lib/libopenbeos.so</CODE> - this is library which contains OpenBeOS
|
||||
implementation of some Be classes (usually found in libbe.so, called libopenbeos.so to avoid a name
|
||||
clash at runtime).</LI>
|
||||
<LI><CODE>app_kit/test/add-ons/BAutolockTests</CODE> - this is the addon which contains the tests
|
||||
which are run against the Be and OpenBeOS implementation of BAutolock.</LI>
|
||||
<LI><CODE>app_kit/test/add-ons/BLockerTests</CODE> - this is the addon which contains the tests
|
||||
which are run against the Be and OpenBeOS implementation of BLocker.</LI>
|
||||
<LI><CODE>app_kit/test/add-ons/BMessageQueueTests</CODE> - this is the addon which contains the tests
|
||||
which are run against the Be and OpenBeOS implementation of BMessageQueue.</LI>
|
||||
|
||||
</UL>
|
||||
|
||||
<P>These are the key files which ensure that the tests can be run.</P>
|
||||
|
||||
<A NAME="runningtests"></A><H2>How do I run tests?</H2>
|
||||
|
||||
<P>You have a few different options for how you run a test or a series of tests. Before you start
|
||||
however, you must build the code as describe <A HREF="#buildingtests">in this section</A>. Once
|
||||
it is built, you can run tests any of these ways:</P>
|
||||
|
||||
<UL>
|
||||
<LI>Run "make test" from the app_kit directory. This will lead to all of the tests defined in
|
||||
app_kit/test/add-ons directory to be run.</LI>
|
||||
<LI>From the "app_kit/test" directory, execute the command "CppUnit/TestRunner -all". This will
|
||||
lead to all of the tests defined in the app_kit/test/add-ons directory to be run and is the same
|
||||
as what happens in the "make" example above. However, recompile any code that has changed in the
|
||||
process.</LI>
|
||||
<LI>From the "app_kit/test" directory, execute the command "CppUnit/TestRunner <TestName>"
|
||||
where <TestName> is one of the addons found in the "app_kit/test/add-ons" directory. Only
|
||||
the tests defined in that add-on will be run.</LI>
|
||||
</UL>
|
||||
|
||||
<A NAME="writingtests"></A><H2>How do I write tests for my component?</H2>
|
||||
|
||||
<P>The first step to writing your tests is to develop a plan for how you will test the
|
||||
functionality. For ideas of the kinds of tests you may want to consider, you should reference
|
||||
<A HREF="#whattests">this section</A>.</P>
|
||||
|
||||
<P>Once you know the kinds of tests you want, you need to:</P>
|
||||
|
||||
<UL>
|
||||
|
||||
<LI><P>For every test you want, define a class which derives from the "TestCase" class in the
|
||||
CppUnit framework.</P></LI>
|
||||
|
||||
<LI><P>Within each test class you define, create a "void setUp(void)" and "void tearDown(void)"
|
||||
member function if required. If before executing your test, you need to perform some actions,
|
||||
put those actions in the "setUp()" member. If you need to cleanup after your test, put those
|
||||
actions in the "tearDown()" member.</P></LI>
|
||||
|
||||
<LI><P>Within each test class you define, create a member function which takes "void" and
|
||||
returns "void". Within this member function, write the code to execute the test. Whenever you
|
||||
want to ensure that some condition is true during your test, add a line within the member function
|
||||
that looks like "assert(condition)". For example, if the variable "result" must have the value
|
||||
B_OK at a particular point in your test, you should add a line which reads
|
||||
"assert(result = B_OK)".</P></LI>
|
||||
|
||||
<LI><P>Create a constructor for all of your test classes that takes a "std::string name" argument
|
||||
and pass that onto the TestCase parent class. Add whatever actions you need to take in the
|
||||
constructor.</P></LI>
|
||||
|
||||
<LI><P>Create a destructor for all of your test classes and take whatever actions are
|
||||
appropriate.</P></LI>
|
||||
|
||||
<LI><P>Within each test class you define, create a member with the signature
|
||||
"static Test *suite(void)". For a simple test where only one test needs to be run for this class,
|
||||
the contents of this member should look like:</P>
|
||||
|
||||
<PRE>
|
||||
return(new TestCaller<ClassName>("", &ClassName::MemberName));
|
||||
</PRE>
|
||||
|
||||
<P>Replace "ClassName" with the name of your test class and "MemberName" with the name
|
||||
of the member function you defined your test in. If you need to define more than one test to run
|
||||
from this class, refer to instructions below on how to use the TestSuite class of CppUnit. If you
|
||||
are creating a threaded test, refer to <A HREF="#threadedtests">this section</A>.</P></LI>
|
||||
|
||||
<LI><P>Create one ".cpp" file for defining the "addonTestFunc()" function. This function must
|
||||
exist in global scope within your test addon. The contents of this ".cpp" file will look something
|
||||
like:</P>
|
||||
|
||||
<PRE>
|
||||
#include "TestAddon.h"
|
||||
|
||||
Test *addonTestFunc(void)
|
||||
{
|
||||
TestSuite *testSuite = new TestSuite("<TestSuiteName>");
|
||||
|
||||
testSuite->addTest(<ClassName1>::suite());
|
||||
testSuite->addTest(<ClassName2>::suite());
|
||||
/* etc */
|
||||
|
||||
return(testSuite);
|
||||
}
|
||||
</PRE>
|
||||
|
||||
<P>In the above example, replace <TestSuiteName> with an appropriate name for the group of
|
||||
tests and <ClassName1> and <ClassName2> with the names of the test classes you have
|
||||
defined.</P></LI>
|
||||
|
||||
<LI><P>Create a build system around a BeIDE project, Makefile or preferrably a jam file which
|
||||
builds all the necessary code you have written into an addon.</P></LI>
|
||||
|
||||
<LI><P>Put this addon into the app_kit/test/add-ons directory and follow the above instructions
|
||||
for how to run your tests.</P></LI>
|
||||
|
||||
</UL>
|
||||
|
||||
<A NAME="exampletests"></A><H2>Are there example tests to base mine on?</H2>
|
||||
|
||||
<P>There are example tests which you can find in the following directories:</P>
|
||||
|
||||
<UL>
|
||||
<LI><CODE>app_kit/test/lib/application/BMessageQueue</CODE></LI>
|
||||
<LI><CODE>app_kit/test/lib/support/BAutolock</CODE></LI>
|
||||
<LI><CODE>app_kit/test/lib/support/BLocker</CODE></LI>
|
||||
</UL>
|
||||
|
||||
<P>There are some things done in these tests which make things a bit more complex, but you may
|
||||
want to do similar things:</P>
|
||||
|
||||
<UL>
|
||||
|
||||
<LI>Most tests use a ThreadedTestCaller class even in some situations when there aren't actually
|
||||
more than one thread in the test.</LI>
|
||||
|
||||
<LI>All tests are defined as a template class. The test class is a template of the class to test
|
||||
(if that makes sense to you). For example, to test both the Be and OpenBeOS BLocker and not
|
||||
end up with a symbol conflict, the OpenBeOS implementation of BLocker is actually in a namespace
|
||||
called "OpenBeOS". So, the tests must be run against the classes "::BLocker" and
|
||||
"OpenBeOS::BLocker". The easiest way to do this was to make the class to be tested a template
|
||||
and define it for both "::BLocker" and "OpenBeOS::BLocker".</LI>
|
||||
|
||||
</UL>
|
||||
|
||||
<P>Even with the complexity, I think this code provides a pretty good example of how to write
|
||||
your tests.</P>
|
||||
|
||||
<A NAME="threadedtests"></A><H2>How do I write a test with multiple threads?</H2>
|
||||
|
||||
<P>If you have a test which you want to define that requires more than one thread of execution
|
||||
(most likely a concurrency test of you code), you need to use the ThreadedTestCaller class.
|
||||
The steps which differ from the above description on how to write a test case are:</P>
|
||||
|
||||
<UL>
|
||||
|
||||
<LI><P>In your test class, define a member function for each thread you will be starting. All of
|
||||
these member functions must take "void" and return "void". If all the threads in your test
|
||||
perform the exact same actions, it is OK to just define one member function. Usually in the
|
||||
tests I have written, I have called these member functions "TestThread1()", "TestThread2()",
|
||||
etc.</P></LI>
|
||||
|
||||
<LI><P>If your "static Test *suite()" function for your test class, you must return a
|
||||
ThreadedTestCaller. Imagine that the test class name is "MyTestClass" and you want two threads
|
||||
which run member functions "TestThread1()" and "TestThread2()". That code would look like:</P>
|
||||
|
||||
<PRE>
|
||||
Test *MyTestClass::suite(void)
|
||||
{
|
||||
MyTestClass *theTest = new MyTestClass("");
|
||||
ThreadedTestCaller<MyTestClass> *threadedTest = new TreadedTestCaller<MyTestClass>("", theTest);
|
||||
|
||||
threadedTest->addThread(":Thread1", &MyTestClass::TestThread1);
|
||||
threadedTest->addThread(":Thread2", &MyTestClass::TestThread2);
|
||||
|
||||
return(threadedTest);
|
||||
}
|
||||
</PRE>
|
||||
|
||||
<P>If you need to, you can put a number of ThreadedTestCaller instances into a TestSuite and return
|
||||
them in the suite() member function. Examples of this can be found in the BLocker and
|
||||
BMessageQueue test examples.</P></LI>
|
||||
|
||||
</UL>
|
||||
|
||||
<P>Otherwise the steps are the same as for other tests. The code gets much more complex if you
|
||||
define your test classes as templates as the examples do.</P>
|
||||
|
||||
</FONT>
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
After Width: | Height: | Size: 925 B |
|
After Width: | Height: | Size: 1021 B |
|
After Width: | Height: | Size: 186 B |
|
After Width: | Height: | Size: 988 B |
|
After Width: | Height: | Size: 1003 B |
|
After Width: | Height: | Size: 987 B |
|
After Width: | Height: | Size: 837 B |
@@ -0,0 +1,43 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Interface Kit Team Central</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Welcome to Interface Kit Team Central!</h1>
|
||||
<p>
|
||||
This is the IK Team's public face, where OpenBeOS folk and intrepid members of the
|
||||
BeOS community can find such goodies as:
|
||||
|
||||
<ul>
|
||||
<li>The IK Team <a href="IK_Process.html">Process</a></li>
|
||||
<li>The IK Team <a href="schedule/index.html">Schedule</a>, including:
|
||||
<ul>
|
||||
<li><a href="schedule/index.html#CurrentStatus">Current Status</a></li>
|
||||
<li>Project Milestones</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>IK Team <a href="schedule/assignments.html">assignments</a></li>
|
||||
<li>A tongue-in-cheek paper on
|
||||
<a href="BinCompat.html">Maintaining Binary Compatibility</a>
|
||||
</li>
|
||||
<li>An article on <a href="UnitTestingInfo.html">unit testing</a> by Jeremy Rand
|
||||
</li>
|
||||
</ul>
|
||||
With more sure to come.
|
||||
<br>
|
||||
<hr>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,71 @@
|
||||
<html>
|
||||
<title>Schedule Rationale</title>
|
||||
<body>
|
||||
<h1>Schedule Rationale</h1>
|
||||
Below is an informal discussion of the rationale behind the Interface Kit team's
|
||||
behemoth schedule. Various details may not reflect the current form of the schedule,
|
||||
but the basic gist is what's really important here.
|
||||
<br>
|
||||
<hr>
|
||||
<p>
|
||||
First, let me head off the suggestion that we formally split into 3 or 4 stand-alone
|
||||
projects: the Interface Kit, Application Kit and app_server are completely
|
||||
dependent on one another in a way that no other set of system components is. Each
|
||||
without the others can accomplish almost *nothing*; I think the existence of Integration
|
||||
highlights this fact.
|
||||
</p><p>
|
||||
Each milestone listed has a number of tasks associated with it; these need to be listed
|
||||
and the time for each estimated. These tasks should be as fine grained as possible.
|
||||
Taking BView as an example, I would expect each method on BView to have its own entry
|
||||
under milestones 1, 2, 3, 4 and 8 with entries added as necessary to milestones 18 to
|
||||
22. "Why so detailed?" you say. I'm glad you asked. ;)
|
||||
</p><p>
|
||||
First off, the finer the schedule's granularity, the more realistic estimate you have for
|
||||
the project as a whole. Asked to implement BView, one might be tempted to say "Oh, about
|
||||
3 weeks," whereas an estimate of the time needed for each method might yield a total of
|
||||
two to three times that. While the more realistic overall estimate may be more depressing
|
||||
initially, being able to hit goals on or near the estimated date is much better for
|
||||
morale in the long run than constantly being behind because all the estimates were too
|
||||
low. Trust me on this, I've worked on *way* too many projects that went south because of
|
||||
scheduling that was too broad -- usually because the project manager doesn't want to
|
||||
"distress" the client by making them pay for the time to schedule correctly. Or design
|
||||
correctly, but that's a different rant. =)
|
||||
</p><p>
|
||||
Second, a fine-grained schedule helps to ensure that nothing gets missed. You might
|
||||
think it would be hard to forget to implement a BView method, but if you don't expressly
|
||||
schedule for that method, there will be no interface, use case or technical specifications
|
||||
or unit tests to fail because the method isn't doing anything. In fact, we might not
|
||||
notice the missing functionality until some app that uses it dies a horrible death and
|
||||
we have to figure out why.
|
||||
</p><p>
|
||||
Third, it helps us figure out what functionality is dependent on what -- which helps us
|
||||
schedule our tasks in a logical sequence.
|
||||
</p><p>
|
||||
Fourth, it makes it much easier for someone that doesn't have a lot of time available or
|
||||
much experience to pick something that they can tackle and know that they will be making
|
||||
a meaningful contribution. It also makes it easier for us to keep track of who is doing
|
||||
what on large items like BView: instead of saying "there's a bunch of stuff on BView
|
||||
that needs doing," we can say "BView::StrokeEllipse() needs to be implemented" and know
|
||||
that a specific person is responsible for that deliverable.
|
||||
</p><p>
|
||||
Fifth, as daunting as a detailed schedule looks like out of the gate, tasks are getting
|
||||
completed *constantly* and it's very satisfying to see progress get made on a regular
|
||||
basis. Ideally, one would like to be able to check on the progress each week and find
|
||||
several items completed since the last time it was checked.
|
||||
</p>
|
||||
<hr>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,165 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Application Kit Milestones</title>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<h1>Application Kit Milestones<hr></h1>
|
||||
|
||||
<ol>
|
||||
<li>
|
||||
Interface specs completed for all classes, functions, structs
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="4" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="196" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="right">2%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
|
||||
</li>
|
||||
<li>
|
||||
Use cases completed for all classes, functions, structs
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="4" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="196" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">2%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
|
||||
</li>
|
||||
<li>
|
||||
Unit tests completed for all classes, functions, structs
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="4" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="196" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">2%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
|
||||
</li>
|
||||
<li>
|
||||
Design discussions completed for all classes, functions, structs
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="4" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="196" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">2%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="Messaging.html">Messaging</a> complete
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="38" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="162" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="35" align="right">19%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
<li>
|
||||
<a href="BHandler.html">BHandler</a> complete
|
||||
|
||||
<li>
|
||||
<a href="BLooper.html">BLooper</a> complete
|
||||
|
||||
<li>
|
||||
<a href="Roster.html">Roster</a> complete
|
||||
|
||||
<li>
|
||||
<a href="Clipboard.html">Clipboard</a> complete
|
||||
|
||||
<li>
|
||||
<a href="BCursor.html">BCursor</a> complete
|
||||
|
||||
<li>
|
||||
<a href="ScriptingSupport.html">Scripting Support</a> complete
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Alpha
|
||||
</li>
|
||||
<li>
|
||||
Beta 1
|
||||
</li>
|
||||
<li>
|
||||
Beta 2
|
||||
</li>
|
||||
<li>
|
||||
Release Candidate 1
|
||||
</li>
|
||||
<li>
|
||||
1.0!
|
||||
</li>
|
||||
</ol>
|
||||
<!-- Not implemented yet
|
||||
See the complete list of <a href="ApplicationKitTasks.html">Application Kit tasks</a>.
|
||||
|
||||
<br>
|
||||
-->
|
||||
<hr>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,305 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>BCursor Tasks</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>BCursor Tasks<hr></h1>
|
||||
|
||||
|
||||
<!-- summary table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th><strong>Task Summary</strong></th>
|
||||
<th><strong>Owner</strong></th>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td width="100%">
|
||||
BCursor
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td width="25%">
|
||||
Gabe Yoder
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<!-- detail table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th width="100%"><strong>Task Details</strong></th>
|
||||
<!-- <th><strong>Owner</strong></th> -->
|
||||
|
||||
<!-- Class header -->
|
||||
<tr>
|
||||
<td colspan="7"><center><strong>BCursor Class</strong></center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BCursor(const void* cursorData);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BCursor(BMessage* data);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual ~BCursor();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual status_t Archive(BMessage* into, bool deep = true) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
static BArchivable* Instantiate(BMessage* data);
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br><br>
|
||||
<hr>
|
||||
<br><br>
|
||||
|
||||
<!-- legend table -->
|
||||
<a name="legend">
|
||||
<table border>
|
||||
<tr>
|
||||
<td align="center"><strong>Legend</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td><img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td>Functional Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/User.gif" width="22" height="22" alt="Use Cases"></td>
|
||||
<td>Use Cases</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td>Unit Tests</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td>Technical Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation"></td>
|
||||
<td>Implementation</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Check.gif" width="22" height="22" alt="Completed"></td>
|
||||
<td>Completed</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</a>
|
||||
<br>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,930 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>BHandler Tasks</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>BHandler Tasks<hr></h1>
|
||||
|
||||
|
||||
<!-- summary table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th><strong>Task Summary</strong></th>
|
||||
<th><strong>Owner</strong></th>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td width="100%">
|
||||
BHandler
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td width="25%">
|
||||
Erik Jaesler
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<!-- detail table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th width="100%"><strong>Task Details</strong></th>
|
||||
<!-- <th><strong>Owner</strong></th> -->
|
||||
|
||||
<!-- Class header -->
|
||||
<tr>
|
||||
<td colspan="7"><center><strong>BHandler Class</strong></center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BHandler(const char* name = NULL);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BHandler(BMessage* data);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual ~BHandler();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
static BArchivable* Instantiate(BMessage* data);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual status_t Archive(BMessage* data, bool deep = true) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual void MessageReceived(BMessage* message);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BLooper* Looper() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
void SetName(const char* name);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
const char* Name() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual void SetNextHandler(BHandler* handler);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BHandler* NextHandler() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual void AddFilter(BMessageFilter* filter);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual bool RemoveFilter(BMessageFilter* filter);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual void SetFilterList(BList* filters);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BList* FilterList();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
bool LockLooper();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t LockLooperWithTimeout(bigtime_t timeout);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
void UnlockLooper();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* specifier, int32 form, const char* property);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual status_t GetSupportedSuites(BMessage* data);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t StartWatching(BMessenger, uint32 what);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t StartWatchingAll(BMessenger);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t StopWatching(BMessenger, uint32 what);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t StopWatchingAll(BMessenger);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t StartWatching(BHandler* , uint32 what);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t StartWatchingAll(BHandler* );
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t StopWatching(BHandler* , uint32 what);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t StopWatchingAll(BHandler* );
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual void SendNotices(uint32 what, const BMessage* = 0);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
bool IsWatched() const;
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br><br>
|
||||
<hr>
|
||||
<br><br>
|
||||
|
||||
<!-- legend table -->
|
||||
<a name="legend">
|
||||
<table border>
|
||||
<tr>
|
||||
<td align="center"><strong>Legend</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td><img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td>Functional Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/User.gif" width="22" height="22" alt="Use Cases"></td>
|
||||
<td>Use Cases</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td>Unit Tests</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td>Technical Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation"></td>
|
||||
<td>Implementation</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Check.gif" width="22" height="22" alt="Completed"></td>
|
||||
<td>Completed</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</a>
|
||||
<br>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,555 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Clipboard Tasks</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Clipboard Tasks<hr></h1>
|
||||
|
||||
|
||||
<!-- summary table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th><strong>Task Summary</strong></th>
|
||||
<th><strong>Owner</strong></th>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td width="100%">
|
||||
BClipboard
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td width="25%">
|
||||
Gabe Yoder
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<!-- detail table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th width="100%"><strong>Task Details</strong></th>
|
||||
<!-- <th><strong>Owner</strong></th> -->
|
||||
|
||||
<!-- Class header -->
|
||||
<tr>
|
||||
<td colspan="7"><center><strong>BClipboard Class</strong></center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BClipboard(const char* name, bool transient = false);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual ~BClipboard();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
const char* Name() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
uint32 LocalCount() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
uint32 SystemCount() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t StartWatching(BMessenger target);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t StopWatching(BMessenger target);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
bool Lock();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
void Unlock();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
bool IsLocked() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t Clear();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t Commit();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t Revert();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BMessenger DataSource() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BMessage* Data() const;
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br><br>
|
||||
<hr>
|
||||
<br><br>
|
||||
|
||||
<!-- legend table -->
|
||||
<a name="legend">
|
||||
<table border>
|
||||
<tr>
|
||||
<td align="center"><strong>Legend</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td><img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td>Functional Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/User.gif" width="22" height="22" alt="Use Cases"></td>
|
||||
<td>Use Cases</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td>Unit Tests</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td>Technical Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation"></td>
|
||||
<td>Implementation</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Check.gif" width="22" height="22" alt="Completed"></td>
|
||||
<td>Completed</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</a>
|
||||
<br>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,955 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Roster Tasks</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Roster Tasks<hr></h1>
|
||||
|
||||
|
||||
<!-- summary table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th><strong>Task Summary</strong></th>
|
||||
<th><strong>Owner</strong></th>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td width="100%">
|
||||
BRoster
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td width="25%">
|
||||
Joe Banafato
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<!-- detail table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th width="100%"><strong>Task Details</strong></th>
|
||||
<!-- <th><strong>Owner</strong></th> -->
|
||||
|
||||
<!-- Class header -->
|
||||
<tr>
|
||||
<td colspan="7"><center><strong>BRoster Class</strong></center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BRoster();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
~BRoster();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
bool IsRunning(const char* mime_sig) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
bool IsRunning(entry_ref* ref) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
team_id TeamFor(const char* mime_sig) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
team_id TeamFor(entry_ref* ref) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
void GetAppList(BList* team_id_list) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
void GetAppList(const char* sig, BList* team_id_list) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t GetAppInfo(const char* sig, app_info* info) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t GetAppInfo(entry_ref* ref, app_info* info) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t GetRunningAppInfo(team_id team, app_info* info) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t GetActiveAppInfo(app_info* info) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t FindApp(const char* mime_type, entry_ref* app) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t FindApp(entry_ref* ref, entry_ref* app) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t Broadcast(BMessage* msg) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t Broadcast(BMessage* msg, BMessenger reply_to) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t StartWatching(BMessenger target, uint32 event_mask = B_REQUEST_LAUNCHED | B_REQUEST_QUIT) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t StopWatching(BMessenger target) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t ActivateApp(team_id team) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t Launch(const char* mime_type, BMessage* initial_msgs = NULL, team_id* app_team = NULL) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t Launch(const char* mime_type, BList* message_list, team_id* app_team = NULL) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t Launch(const char* mime_type, int argc, char** args, team_id* app_team = NULL) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t Launch(const entry_ref* ref, const BMessage* initial_message = NULL, team_id* app_team = NULL) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t Launch(const entry_ref* ref, const BList* message_list, team_id* app_team = NULL) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t Launch(const entry_ref* ref, int argc, const char* const* args, team_id* app_team = NULL) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
void GetRecentDocuments(BMessage* refList, int32 maxCount, const char* ofType = NULL, const char* openedByAppSig = NULL) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
void GetRecentDocuments(BMessage* refList, int32 maxCount, const char* ofTypeList[], int32 ofTypeListCount, const char* openedByAppSig = NULL) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
void GetRecentFolders(BMessage* refList, int32 maxCount, const char* openedByAppSig = NULL) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
void GetRecentApps(BMessage* refList, int32 maxCount) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
void AddToRecentDocuments(const entry_ref* doc, const char* appSig = NULL) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
void AddToRecentFolders(const entry_ref* folder,const char* appSig = NULL) const;
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br><br>
|
||||
<hr>
|
||||
<br><br>
|
||||
|
||||
<!-- legend table -->
|
||||
<a name="legend">
|
||||
<table border>
|
||||
<tr>
|
||||
<td align="center"><strong>Legend</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td><img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td>Functional Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/User.gif" width="22" height="22" alt="Use Cases"></td>
|
||||
<td>Use Cases</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td>Unit Tests</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td>Technical Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation"></td>
|
||||
<td>Implementation</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Check.gif" width="22" height="22" alt="Completed"></td>
|
||||
<td>Completed</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</a>
|
||||
<br>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,580 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Scripting Support Tasks</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Scripting Support Tasks<hr></h1>
|
||||
|
||||
|
||||
<!-- summary table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th><strong>Task Summary</strong></th>
|
||||
<th><strong>Owner</strong></th>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td width="100%">
|
||||
BPropertyInfo
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td width="25%">
|
||||
Jeremy Rand
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<!-- detail table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th width="100%"><strong>Task Details</strong></th>
|
||||
<!-- <th><strong>Owner</strong></th> -->
|
||||
|
||||
<!-- Class header -->
|
||||
<tr>
|
||||
<td colspan="7"><center><strong>BPropertyInfo Class</strong></center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BPropertyInfo(property_info* p = NULL, value_info* ci = NULL, bool free_on_delete = false);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual ~BPropertyInfo();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual int32 FindMatch(BMessage* msg, int32 index, BMessage* spec, int32 form, const char* prop, void* data = NULL) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual bool IsFixedSize() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual type_code TypeCode() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual ssize_t FlattenedSize() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual status_t Flatten(void* buffer, ssize_t size) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual bool AllowsTypeCode(type_code code) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual status_t Unflatten(type_code c, const void* buf, ssize_t s);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
const property_info* Properties() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
const value_info* Values() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
int32 CountProperties() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
int32 CountValues() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
void PrintToStream() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
static bool FindCommand(uint32, int32, property_info* );
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
static bool FindSpecifier(uint32, property_info* );
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br><br>
|
||||
<hr>
|
||||
<br><br>
|
||||
|
||||
<!-- legend table -->
|
||||
<a name="legend">
|
||||
<table border>
|
||||
<tr>
|
||||
<td align="center"><strong>Legend</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td><img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td>Functional Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/User.gif" width="22" height="22" alt="Use Cases"></td>
|
||||
<td>Use Cases</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td>Unit Tests</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td>Technical Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation"></td>
|
||||
<td>Implementation</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Check.gif" width="22" height="22" alt="Completed"></td>
|
||||
<td>Completed</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</a>
|
||||
<br>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,789 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Interface Kit Team Assignments</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
Interface Kit Team Assignments and Open Tasks
|
||||
<hr>
|
||||
</h1>
|
||||
|
||||
<h2>
|
||||
Assignments:
|
||||
</h2>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
Erik Jaesler
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BMessageFilter
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BHandler
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BLooper
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BAlert
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BArchivable
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BArchivable
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BApplication
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Gabe Yoder
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BClipboard
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BCursor
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Graham Gilmore
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BBlockCache
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Graham Macdonald
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BPictureButton
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Greg Gelfond
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BPoint
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BShape
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BStringItem
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Issac Yonemoto
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BRect
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BRegion
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BList
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Jeremy Rand
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BMessageQueue
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BPropertyInfo
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BDeskbar
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BAutoLock
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BLocker
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Joe Banafato
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BRoster
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Justin Gasper
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BMenu
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BMenuBar
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BMenuItem
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Marc Flerackers
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BControl
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BButton
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BCheckBox
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BRadioButton
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BTab
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BTabView
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BBox
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BStatusBar
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Staffan Hellstrom
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BPolygon
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BSlider
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Steve Vallee
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BDataIO
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BMallocIO
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BMemoryIO
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BPositionIO
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
Misc
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BString Utility
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BString
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BStopWatch
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Ulrich Wimboeck
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BListItem
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BListView
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BOutlineListView
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
William Bull
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BMessage
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Xavier Castellan
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BBitmap
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
|
||||
<h2>
|
||||
Open Tasks:
|
||||
</h2>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
Application Kit
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BInvoker
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BMessageRunner
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BMessenger
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BMessenger Support
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Integration
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BWindow
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BView
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Interface Kit
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BPicture
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BScreen
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BShapeIterator
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
Screen Support
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BFont
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
Font Support
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BColorControl
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BStringView
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BScrollBar
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BScrollView
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
Scrollbar Config
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BSeparatorItem
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BMenuField
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BPopUpMenu
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
Menu Config
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BTextView
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BTextControl
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
unicode_block
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
Deskbar Support
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
Mouse Config
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
Workspace Support
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
Keyboard Config
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
UI Color Info
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
Miscellaneous
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BDragger
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BShelf
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BChannelControl
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BChannelSlider
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BMultiChannelControl
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BOptionControl
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
BOptionPopUp
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<br>
|
||||
<hr>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,147 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Interface Kit Team Schedule</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Interface Kit Team Schedule<hr></h1>
|
||||
<p>
|
||||
Here is the schedule for the Interface Kit Team. To help organize our work,
|
||||
tasks have been broken into 4 general areas:
|
||||
<ul>
|
||||
<li><a href="ApplicationKit/ApplicationKitMilestones.html">Application Kit</a></li>
|
||||
<li><a href="InterfaceKit/InterfaceKitMilestones.html">Interface Kit</a></li>
|
||||
<li><a href="Integration/IntegrationMilestones.html">Integration</a></li>
|
||||
<li><a href="SupportKit/SupportKitMilestones.html">Support Kit</a></li>
|
||||
|
||||
</ul>
|
||||
</p><p>
|
||||
Organizationally, it's best to consider these as separate projects within the
|
||||
scope of the IK Team's charter. As such, core contributors should pick a
|
||||
project and stick with it -- it will make things a lot easier to keep track of,
|
||||
and losing track of stuff would be a bad thing. =)
|
||||
</p><p>
|
||||
DarkWyrm is the technical lead for the app_server; he has done an enormous amount
|
||||
of research and he is currently in the best position to lead the effort.
|
||||
</p><p>
|
||||
Erik Jakowatz will continue in his capacity as overall project lead, as well as
|
||||
being directly involved in Integration as technical lead.
|
||||
</p><p>
|
||||
A word of warning: this schedule is downright huge because of the sheer number of
|
||||
items to be completed. There is a paper available in which the rationale behind the
|
||||
schedule is <a href="Discussion.html">discussed</a>.
|
||||
</p>
|
||||
<hr>
|
||||
<h2><a name="CurrentStatus"></a>Current Status</h2>
|
||||
Here are some fuzzy indicators of what progress the team has made base on the number of
|
||||
outstanding tasks completed. No warranty is made concerning the accuracy of these
|
||||
graphs. =)
|
||||
<br><br>
|
||||
|
||||
<!-- And here we go into table madness! -->
|
||||
<table cellspacing="0">
|
||||
<!-- sub-project header -->
|
||||
<tr>
|
||||
<td colspan="3" align="left"><strong>Overall</strong></td>
|
||||
</tr>
|
||||
<!-- progress graph -->
|
||||
<tr>
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- how much is done -->
|
||||
<td width="24" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="176" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">12%</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
</tr>
|
||||
|
||||
<!-- sub-project header -->
|
||||
<tr>
|
||||
<td colspan="3" align="left"><strong><br><br>Application Kit</strong></td>
|
||||
</tr>
|
||||
<!-- progress graph -->
|
||||
<tr>
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- how much is done -->
|
||||
<td width="4" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="196" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">2%</td>
|
||||
</tr>
|
||||
</table>
|
||||
</tr>
|
||||
<!-- sub-project header -->
|
||||
<tr>
|
||||
<td colspan="3" align="left"><strong><br><br>Interface Kit</strong></td>
|
||||
</tr>
|
||||
<!-- progress graph -->
|
||||
<tr>
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- how much is done -->
|
||||
<td width="8" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="192" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">4%</td>
|
||||
</tr>
|
||||
</table>
|
||||
</tr>
|
||||
<!-- sub-project header -->
|
||||
<tr>
|
||||
<td colspan="3" align="left"><strong><br><br>Integration</strong></td>
|
||||
</tr>
|
||||
<!-- progress graph -->
|
||||
<tr>
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- how much is done -->
|
||||
<td width="50" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="150" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">25%</td>
|
||||
</tr>
|
||||
</table>
|
||||
</tr>
|
||||
<!-- sub-project header -->
|
||||
<tr>
|
||||
<td colspan="3" align="left"><strong><br><br>Support Kit</strong></td>
|
||||
</tr>
|
||||
<!-- progress graph -->
|
||||
<tr>
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- how much is done -->
|
||||
<td width="40" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="160" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">20%</td>
|
||||
</tr>
|
||||
</table>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<br>
|
||||
<hr>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,513 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>BArchivable Tasks</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>BArchivable Tasks<hr></h1>
|
||||
|
||||
|
||||
<!-- summary table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th><strong>Task Summary</strong></th>
|
||||
<th><strong>Owner</strong></th>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td width="100%">
|
||||
BArchivable
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td width="25%">
|
||||
Erik Jaesler
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td width="100%">
|
||||
BArchivable
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td width="25%">
|
||||
Erik Jaesler
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<!-- detail table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th width="100%"><strong>Task Details</strong></th>
|
||||
<!-- <th><strong>Owner</strong></th> -->
|
||||
|
||||
<!-- Class header -->
|
||||
<tr>
|
||||
<td colspan="7"><center><strong>BArchivable Class</strong></center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BArchivable();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BArchivable(BMessage* from);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
~BArchivable();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual status_t Archive(BMessage* into, bool deep = true) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
static BArchivable* Instantiate(BMessage* from);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual status_t Perform(perform_code d, void* arg); ???
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Functions header -->
|
||||
<tr>
|
||||
<td colspan="7"><center><strong>BArchivable Functions</strong></center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BArchivable* instantiate_object(BMessage* from, image_id* id);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BArchivable* instantiate_object(BMessage* from);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
bool validate_instantiation(BMessage* from, const char* class_name);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
instantiation_func find_instantiation_func(const char* class_name, const char* sig);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
instantiation_func find_instantiation_func(const char* class_name);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
instantiation_func find_instantiation_func(BMessage* archive_data);
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br><br>
|
||||
<hr>
|
||||
<br><br>
|
||||
|
||||
<!-- legend table -->
|
||||
<a name="legend">
|
||||
<table border>
|
||||
<tr>
|
||||
<td align="center"><strong>Legend</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td><img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td>Functional Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/User.gif" width="22" height="22" alt="Use Cases"></td>
|
||||
<td>Use Cases</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td>Unit Tests</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td>Technical Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation"></td>
|
||||
<td>Implementation</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Check.gif" width="22" height="22" alt="Completed"></td>
|
||||
<td>Completed</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</a>
|
||||
<br>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,156 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Integration Milestones</title>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<h1>Integration Milestones<hr></h1>
|
||||
|
||||
<ol>
|
||||
<li>
|
||||
Interface specs completed for all classes, functions, structs
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="50" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="150" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="right">25%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
|
||||
</li>
|
||||
<li>
|
||||
Use cases completed for all classes, functions, structs
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="50" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="150" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">25%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
|
||||
</li>
|
||||
<li>
|
||||
Unit tests completed for all classes, functions, structs
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="50" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="150" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">25%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
|
||||
</li>
|
||||
<li>
|
||||
Design discussions completed for all classes, functions, structs
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="50" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="150" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">25%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="BArchivable.html">BArchivable</a> complete
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="200" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="0" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="35" align="right">100%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
<li>
|
||||
<a href="BApplication.html">BApplication</a> complete
|
||||
|
||||
<li>
|
||||
<a href="BWindow.html">BWindow</a> complete
|
||||
|
||||
<li>
|
||||
<a href="BView.html">BView</a> complete
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Alpha
|
||||
</li>
|
||||
<li>
|
||||
Beta 1
|
||||
</li>
|
||||
<li>
|
||||
Beta 2
|
||||
</li>
|
||||
<li>
|
||||
Release Candidate 1
|
||||
</li>
|
||||
<li>
|
||||
1.0!
|
||||
</li>
|
||||
</ol>
|
||||
<!-- Not implemented yet
|
||||
See the complete list of <a href="IntegrationTasks.html">Integration tasks</a>.
|
||||
|
||||
<br>
|
||||
-->
|
||||
<hr>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,195 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Interface Kit Milestones</title>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<h1>Interface Kit Milestones<hr></h1>
|
||||
|
||||
<ol>
|
||||
<li>
|
||||
Interface specs completed for all classes, functions, structs
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="6" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="194" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="right">3%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
|
||||
</li>
|
||||
<li>
|
||||
Use cases completed for all classes, functions, structs
|
||||
|
||||
|
||||
</li>
|
||||
<li>
|
||||
Unit tests completed for all classes, functions, structs
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="4" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="196" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">2%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
|
||||
</li>
|
||||
<li>
|
||||
Design discussions completed for all classes, functions, structs
|
||||
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="Group1Support.html">Group 1 Support</a> complete
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="50" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="150" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="35" align="right">25%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
<li>
|
||||
<a href="Group2Support.html">Group 2 Support</a> complete
|
||||
|
||||
<li>
|
||||
<a href="Group3Support.html">Group 3 Support</a> complete
|
||||
|
||||
<li>
|
||||
<a href="ControlWidgets.html">Control Widgets</a> complete
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="16" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="184" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="35" align="right">8%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
<li>
|
||||
<a href="Non-ControlWidgets.html">Non-Control Widgets</a> complete
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="26" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="174" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="35" align="right">13%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
<li>
|
||||
<a href="ScrollingSupport.html">Scrolling Support</a> complete
|
||||
|
||||
<li>
|
||||
<a href="MenuingSupport.html">Menuing Support</a> complete
|
||||
|
||||
<li>
|
||||
<a href="ListViewSupport.html">ListView Support</a> complete
|
||||
|
||||
<li>
|
||||
<a href="TextViewSupport.html">TextView Support</a> complete
|
||||
|
||||
<li>
|
||||
<a href="Miscellaneous.html">Miscellaneous</a> complete
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="8" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="192" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="35" align="right">4%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
<li>
|
||||
<a href="ReplicantSupport.html">Replicant Support</a> complete
|
||||
|
||||
<li>
|
||||
<a href="AdvancedControlWidgets.html">Advanced Control Widgets</a> complete
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Alpha
|
||||
</li>
|
||||
<li>
|
||||
Beta 1
|
||||
</li>
|
||||
<li>
|
||||
Beta 2
|
||||
</li>
|
||||
<li>
|
||||
Release Candidate 1
|
||||
</li>
|
||||
<li>
|
||||
1.0!
|
||||
</li>
|
||||
</ol>
|
||||
<!-- Not implemented yet
|
||||
See the complete list of <a href="InterfaceKitTasks.html">Interface Kit tasks</a>.
|
||||
|
||||
<br>
|
||||
-->
|
||||
<hr>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,339 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>BStopWatch Tasks</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>BStopWatch Tasks<hr></h1>
|
||||
|
||||
|
||||
<!-- master table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th><strong>Task</strong></th>
|
||||
<th><strong>Owner</strong></th>
|
||||
|
||||
<!-- Class header -->
|
||||
<tr>
|
||||
<td colspan="7"><center><strong>Class BStopWatch</strong></center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BStopWatch(const char *name, bool silent = false);
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual ~BStopWatch();
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
void Suspend();
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
void Resume();
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
bigtime_t Lap();
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
bigtime_t ElapsedTime() const;
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
void Reset();
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
const char* Name() const;
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br><br>
|
||||
<hr>
|
||||
<br><br>
|
||||
|
||||
<!-- legend table -->
|
||||
<a name="legend">
|
||||
<table border>
|
||||
<tr>
|
||||
<td align="center"><strong>Legend</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td><img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td>Functional Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/User.gif" width="22" height="22" alt="Use Cases"></td>
|
||||
<td>Use Cases</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td>Unit Tests</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td>Technical Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation"></td>
|
||||
<td>Implementation</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Check.gif" width="22" height="22" alt="Completed"></td>
|
||||
<td>Completed</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</a>
|
||||
<br>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>Hosted by:</small><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002 OpenBeOS Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,904 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>IO Tasks</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>IO Tasks<hr></h1>
|
||||
|
||||
|
||||
<!-- summary table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th><strong>Task Summary</strong></th>
|
||||
<th><strong>Owner</strong></th>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td width="100%">
|
||||
BDataIO
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td width="25%">
|
||||
Steve Vallee
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td width="100%">
|
||||
BMallocIO
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td width="25%">
|
||||
Steve Vallee
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td width="100%">
|
||||
BMemoryIO
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td width="25%">
|
||||
Steve Vallee
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td width="100%">
|
||||
BPositionIO
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td width="25%">
|
||||
Steve Vallee
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<!-- detail table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th width="100%"><strong>Task Details</strong></th>
|
||||
<!-- <th><strong>Owner</strong></th> -->
|
||||
|
||||
<!-- Class header -->
|
||||
<tr>
|
||||
<td colspan="7"><center><strong>BDataIO Class</strong></center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BDataIO
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual ~BDataIO();
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Class header -->
|
||||
<tr>
|
||||
<td colspan="7"><center><strong>BMallocIO Class</strong></center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BMallocIO();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual ~BMallocIO();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual ssize_t ReadAt(off_t pos, void *buffer, size_t size);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual ssize_t WriteAt(off_t pos, const void *buffer, size_t size);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual off_t Seek(off_t pos, uint32 seek_mode);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual off_t Position() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual status_t SetSize(off_t size);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
void SetBlockSize(size_t blocksize);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
const void* Buffer() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
size_t BufferLength() const;
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Class header -->
|
||||
<tr>
|
||||
<td colspan="7"><center><strong>BMemoryIO Class</strong></center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BMemoryIO(void *p, size_t len);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BMemoryIO(const void *p, size_t len);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual ~BMemoryIO();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual ssize_t ReadAt(off_t pos, void *buffer, size_t size);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual ssize_t WriteAt(off_t pos, const void *buffer, size_t size);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual off_t Seek(off_t pos, uint32 seek_mode);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual off_t Position() const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual status_t SetSize(off_t size);
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Class header -->
|
||||
<tr>
|
||||
<td colspan="7"><center><strong>BPositionIO Class</strong></center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BPositionIO();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual ~BPositionIO();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual ssize_t Read(void *buffer, size_t size);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual ssize_t Write(const void *buffer, size_t size);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual status_t SetSize(off_t size);
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br><br>
|
||||
<hr>
|
||||
<br><br>
|
||||
|
||||
<!-- legend table -->
|
||||
<a name="legend">
|
||||
<table border>
|
||||
<tr>
|
||||
<td align="center"><strong>Legend</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td><img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td>Functional Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/User.gif" width="22" height="22" alt="Use Cases"></td>
|
||||
<td>Use Cases</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td>Unit Tests</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td>Technical Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation"></td>
|
||||
<td>Implementation</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Check.gif" width="22" height="22" alt="Completed"></td>
|
||||
<td>Completed</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</a>
|
||||
<br>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,168 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Support Kit Milestones</title>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<h1>Support Kit Milestones<hr></h1>
|
||||
|
||||
<ol>
|
||||
<li>
|
||||
Interface specs completed for all classes, functions, structs
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="32" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="168" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="right">16%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
|
||||
</li>
|
||||
<li>
|
||||
Use cases completed for all classes, functions, structs
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="32" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="168" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">16%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
|
||||
</li>
|
||||
<li>
|
||||
Unit tests completed for all classes, functions, structs
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="32" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="168" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">16%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
|
||||
</li>
|
||||
<li>
|
||||
Design discussions completed for all classes, functions, structs
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="32" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="168" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">16%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="IO.html">IO</a> complete
|
||||
|
||||
<li>
|
||||
<a href="Utilities.html">Utilities</a> complete
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="6" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="194" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="35" align="right">3%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
<li>
|
||||
<a href="Synchronization.html">Synchronization</a> complete
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="120" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="80" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="35" align="right">60%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Alpha
|
||||
</li>
|
||||
<li>
|
||||
Beta 1
|
||||
</li>
|
||||
<li>
|
||||
Beta 2
|
||||
</li>
|
||||
<li>
|
||||
Release Candidate 1
|
||||
</li>
|
||||
<li>
|
||||
1.0!
|
||||
</li>
|
||||
</ol>
|
||||
<!-- Not implemented yet
|
||||
See the complete list of <a href="SupportKitTasks.html">Support Kit tasks</a>.
|
||||
|
||||
<br>
|
||||
-->
|
||||
<hr>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,688 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Synchronization Tasks</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Synchronization Tasks<hr></h1>
|
||||
|
||||
|
||||
<!-- summary table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th><strong>Task Summary</strong></th>
|
||||
<th><strong>Owner</strong></th>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td width="100%">
|
||||
BAutoLock
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td width="25%">
|
||||
Jeremy Rand
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td width="100%">
|
||||
BLocker
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td width="25%">
|
||||
Jeremy Rand
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<!-- detail table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th width="100%"><strong>Task Details</strong></th>
|
||||
<!-- <th><strong>Owner</strong></th> -->
|
||||
|
||||
<!-- Class header -->
|
||||
<tr>
|
||||
<td colspan="7"><center><strong>BAutoLock Class</strong></center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BAutolock(BLocker *lock);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BAutolock(BLocker &lock);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BAutolock(BLooper *looper);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
~BAutolock();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/blank-20.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
bool IsLocked();
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Class header -->
|
||||
<tr>
|
||||
<td colspan="7"><center><strong>BLocker Class</strong></center></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BLocker();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BLocker(const char *name);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BLocker(bool benaphore_style);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BLocker(const char *name, bool benaphore_style);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
BLocker(const char *name, bool benaphore_style, bool);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
virtual ~BLocker();
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
bool Lock(void);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
status_t LockWithTimeout(bigtime_t timeout);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
void Unlock(void);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
thread_id LockingThread(void) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
bool IsLocked(void) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
int32 CountLocks(void) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
int32 CountLockRequests(void) const;
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
../../images/Check.gif
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
sem_id Sem(void) const;
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<br><br>
|
||||
<hr>
|
||||
<br><br>
|
||||
|
||||
<!-- legend table -->
|
||||
<a name="legend">
|
||||
<table border>
|
||||
<tr>
|
||||
<td align="center"><strong>Legend</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td><img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td>Functional Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/User.gif" width="22" height="22" alt="Use Cases"></td>
|
||||
<td>Use Cases</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td>Unit Tests</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td>Technical Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation"></td>
|
||||
<td>Implementation</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Check.gif" width="22" height="22" alt="Completed"></td>
|
||||
<td>Completed</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</a>
|
||||
<br>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,83 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Interface Kit Team Assignments</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>
|
||||
Interface Kit Team Assignments and Open Tasks
|
||||
<hr>
|
||||
</h1>
|
||||
|
||||
<h2>
|
||||
Assignments:
|
||||
</h2>
|
||||
|
||||
<table>
|
||||
<scripting>
|
||||
@for_each engineer in $Assignments.engineers
|
||||
<tr>
|
||||
<td>
|
||||
$engineer.name
|
||||
</td>
|
||||
</tr>
|
||||
@for_each etask in $engineer.tasks
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
$etask.str
|
||||
</td>
|
||||
</tr>
|
||||
@end
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
@end
|
||||
</scripting>
|
||||
</table>
|
||||
|
||||
|
||||
<h2>
|
||||
Open Tasks:
|
||||
</h2>
|
||||
|
||||
<table>
|
||||
<scripting>
|
||||
@for_each section in $Assignments.sections
|
||||
<tr>
|
||||
<td>
|
||||
$section.name
|
||||
</td>
|
||||
</tr>
|
||||
@for_each stask in $section.tasks
|
||||
<tr>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
$stask.str
|
||||
</td>
|
||||
</tr>
|
||||
@end
|
||||
<tr>
|
||||
<td height="15" colspan="2"></td>
|
||||
</tr>
|
||||
@end
|
||||
</scripting>
|
||||
</table>
|
||||
<br>
|
||||
<hr>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,167 @@
|
||||
<html>
|
||||
<head>
|
||||
<scripting>
|
||||
<title>$GROUP.name Milestones</title>
|
||||
</scripting>
|
||||
</head>
|
||||
<body>
|
||||
<scripting>
|
||||
<h1>$GROUP.name Milestones<hr></h1>
|
||||
</scripting>
|
||||
<ol>
|
||||
<li>
|
||||
Interface specs completed for all classes, functions, structs
|
||||
<scripting>
|
||||
@if $GROUP.ispec_complete
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="$GROUP.ispec_table_complete" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="$GROUP.ispec_table_incomplete" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="right">$GROUP.ispec_complete%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
@end
|
||||
</scripting>
|
||||
</li>
|
||||
<li>
|
||||
Use cases completed for all classes, functions, structs
|
||||
<scripting>
|
||||
@if $GROUP.cases_complete
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="$GROUP.cases_table_complete" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="$GROUP.cases_table_incomplete" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">$GROUP.cases_complete%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
@end
|
||||
</scripting>
|
||||
</li>
|
||||
<li>
|
||||
Unit tests completed for all classes, functions, structs
|
||||
<scripting>
|
||||
@if $GROUP.tests_complete
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="$GROUP.tests_table_complete" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="$GROUP.tests_table_incomplete" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">$GROUP.tests_complete%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
@end
|
||||
</scripting>
|
||||
</li>
|
||||
<li>
|
||||
Design discussions completed for all classes, functions, structs
|
||||
<scripting>
|
||||
@if $GROUP.tspec_complete
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="$GROUP.tspec_table_complete" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="$GROUP.tspec_table_incomplete" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">$GROUP.tspec_complete%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
@end
|
||||
</scripting>
|
||||
</li>
|
||||
<scripting>
|
||||
@for_each milestone in $GROUP.milestones
|
||||
<li>
|
||||
<a href="$milestone.short_name##.html">$milestone.name</a>$milestone.note complete
|
||||
@if $milestone.complete
|
||||
<!-- Copy this table to each item when work begins on it -->
|
||||
<!-- progress graph -->
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- spacer -->
|
||||
<td width=10"></td>
|
||||
<!-- how much is done -->
|
||||
<td width="$milestone.table_complete" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="$milestone.table_incomplete" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="35" align="right">$milestone.complete%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br><br>
|
||||
<!-- end progress graph -->
|
||||
@end
|
||||
@end
|
||||
</li>
|
||||
</scripting>
|
||||
<li>
|
||||
Alpha
|
||||
</li>
|
||||
<li>
|
||||
Beta 1
|
||||
</li>
|
||||
<li>
|
||||
Beta 2
|
||||
</li>
|
||||
<li>
|
||||
Release Candidate 1
|
||||
</li>
|
||||
<li>
|
||||
1.0!
|
||||
</li>
|
||||
</ol>
|
||||
<!-- Not implemented yet
|
||||
<scripting>
|
||||
See the complete list of <a href="$GROUP.short_name##Tasks.html">$GROUP.name tasks</a>.
|
||||
</scripting>
|
||||
<br>
|
||||
-->
|
||||
<hr>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Interface Kit Team Schedule</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Interface Kit Team Schedule<hr></h1>
|
||||
<p>
|
||||
Here is the schedule for the Interface Kit Team. To help organize our work,
|
||||
tasks have been broken into 4 general areas:
|
||||
<ul>
|
||||
<scripting>
|
||||
@for_each group in $GROUPS
|
||||
<li><a href="$group.short_name/$group.short_name##Milestones.html">$group.name</a>$group.note</li>
|
||||
@end
|
||||
</scripting>
|
||||
</ul>
|
||||
</p><p>
|
||||
Organizationally, it's best to consider these as separate projects within the
|
||||
scope of the IK Team's charter. As such, core contributors should pick a
|
||||
project and stick with it -- it will make things a lot easier to keep track of,
|
||||
and losing track of stuff would be a bad thing. =)
|
||||
</p><p>
|
||||
DarkWyrm is the technical lead for the app_server; he has done an enormous amount
|
||||
of research and he is currently in the best position to lead the effort.
|
||||
</p><p>
|
||||
Erik Jakowatz will continue in his capacity as overall project lead, as well as
|
||||
being directly involved in Integration as technical lead.
|
||||
</p><p>
|
||||
A word of warning: this schedule is downright huge because of the sheer number of
|
||||
items to be completed. There is a paper available in which the rationale behind the
|
||||
schedule is <a href="Discussion.html">discussed</a>.
|
||||
</p>
|
||||
<hr>
|
||||
<h2><a name="CurrentStatus"></a>Current Status</h2>
|
||||
Here are some fuzzy indicators of what progress the team has made base on the number of
|
||||
outstanding tasks completed. No warranty is made concerning the accuracy of these
|
||||
graphs. =)
|
||||
<br><br>
|
||||
|
||||
<!-- And here we go into table madness! -->
|
||||
<table cellspacing="0">
|
||||
<!-- sub-project header -->
|
||||
<tr>
|
||||
<td colspan="3" align="left"><strong>Overall</strong></td>
|
||||
</tr>
|
||||
<!-- progress graph -->
|
||||
<tr>
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- how much is done -->
|
||||
<scripting>
|
||||
<td width="$GROUPS.table_complete" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="$GROUPS.table_incomplete" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">$GROUPS.complete%</td>
|
||||
</scripting>
|
||||
</tr>
|
||||
</table>
|
||||
</tr>
|
||||
|
||||
<scripting>
|
||||
@for_each group in $GROUPS
|
||||
<!-- sub-project header -->
|
||||
<tr>
|
||||
<td colspan="3" align="left"><strong><br><br>$group.name</strong></td>
|
||||
</tr>
|
||||
<!-- progress graph -->
|
||||
<tr>
|
||||
<table cellspacing="0">
|
||||
<tr>
|
||||
<!-- how much is done -->
|
||||
<td width="$group.table_complete" bgcolor="blue" align="left"></td>
|
||||
<!-- how much is left -->
|
||||
<td width="$group.table_incomplete" bgcolor="red" align="right"></td>
|
||||
<!-- the above two translated into a percentage -->
|
||||
<td width="25" align="center">$group.complete%</td>
|
||||
</tr>
|
||||
</table>
|
||||
</tr>
|
||||
@end
|
||||
</scripting>
|
||||
</table>
|
||||
<br>
|
||||
<hr>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,29 @@
|
||||
<html>
|
||||
<head>
|
||||
<scripting>
|
||||
<title>$GROUP.name Tasks</title>
|
||||
</scripting>
|
||||
<head>
|
||||
<body>
|
||||
<scripting>
|
||||
<h1>$GROUP.name Tasks<hr></h1>
|
||||
@for_each milestone in $GROUP.milestones
|
||||
<a href="$milestone.short_name##Tasks.html">$milestone.name</a><br>
|
||||
@end
|
||||
</scripting>
|
||||
<hr>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,254 @@
|
||||
<html>
|
||||
<head>
|
||||
<scripting>
|
||||
<title>$MILESTONE.name Tasks</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>$MILESTONE.name Tasks<hr></h1>
|
||||
</scripting>
|
||||
|
||||
<!-- summary table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th><strong>Task Summary</strong></th>
|
||||
<th><strong>Owner</strong></th>
|
||||
<scripting>
|
||||
@for_each s in $MILESTONE
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
@if $s.is_ispec_complete
|
||||
../../images/Check.gif
|
||||
@else
|
||||
../../images/blank-20.gif
|
||||
@end
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
@if $s.is_cases_complete
|
||||
../../images/Check.gif
|
||||
@else
|
||||
../../images/blank-20.gif
|
||||
@end
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
@if $s.is_tests_complete
|
||||
../../images/Check.gif
|
||||
@else
|
||||
../../images/blank-20.gif
|
||||
@end
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
@if $s.is_tspec_complete
|
||||
../../images/Check.gif
|
||||
@else
|
||||
../../images/blank-20.gif
|
||||
@end
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
@if $s.is_impl_complete
|
||||
../../images/Check.gif
|
||||
@else
|
||||
../../images/blank-20.gif
|
||||
@end
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td width="100%">
|
||||
$s.name
|
||||
</td>
|
||||
<!-- owner -->
|
||||
<td width="25%">
|
||||
$s.owner
|
||||
</td>
|
||||
</tr>
|
||||
@end
|
||||
</scripting>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<!-- detail table -->
|
||||
<table border>
|
||||
<!-- table column headers -->
|
||||
<th>
|
||||
<table>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/User.gif" width="22" height="22" alt="Use Cases" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec" border="0">
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#legend">
|
||||
<img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation" border="0">
|
||||
</a>
|
||||
</td>
|
||||
</table>
|
||||
</th>
|
||||
<th width="100%"><strong>Task Details</strong></th>
|
||||
<!-- <th><strong>Owner</strong></th> -->
|
||||
|
||||
<scripting>
|
||||
@for_each s in $MILESTONE
|
||||
<!-- $s.type header -->
|
||||
<tr>
|
||||
<td colspan="7"><center><strong>$s.name $s.type</strong></center></td>
|
||||
</tr>
|
||||
@for_each t in $s.tasks
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<td><img src="
|
||||
@if $t.ispec
|
||||
../../images/Check.gif
|
||||
@else
|
||||
../../images/blank-20.gif
|
||||
@end
|
||||
" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td><img src="
|
||||
@if $t.cases
|
||||
../../images/Check.gif
|
||||
@else
|
||||
../../images/blank-20.gif
|
||||
@end
|
||||
" width="22" height="22" alt="Use Cases"></td>
|
||||
<td><img src="
|
||||
@if $t.tests
|
||||
../../images/Check.gif
|
||||
@else
|
||||
../../images/blank-20.gif
|
||||
@end
|
||||
" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td><img src="
|
||||
@if $t.tspec
|
||||
../../images/Check.gif
|
||||
@else
|
||||
../../images/blank-20.gif
|
||||
@end
|
||||
" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td><img src="
|
||||
@if $t.impl
|
||||
../../images/Check.gif
|
||||
@else
|
||||
../../images/blank-20.gif
|
||||
@end
|
||||
" width="22" height="22" alt="Implementation"></td>
|
||||
</table>
|
||||
</td>
|
||||
<!-- task -->
|
||||
<td>
|
||||
$t.name
|
||||
</td>
|
||||
</tr>
|
||||
@end
|
||||
@end
|
||||
</scripting>
|
||||
</table>
|
||||
|
||||
<br><br>
|
||||
<hr>
|
||||
<br><br>
|
||||
|
||||
<!-- legend table -->
|
||||
<a name="legend">
|
||||
<table border>
|
||||
<tr>
|
||||
<td align="center"><strong>Legend</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td><img src="../../images/DocumentDraw.gif" width="22" height="22" alt="Functional Spec"></td>
|
||||
<td>Functional Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/User.gif" width="22" height="22" alt="Use Cases"></td>
|
||||
<td>Use Cases</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Help.gif" width="22" height="22" alt="Unit Tests"></td>
|
||||
<td>Unit Tests</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Hammer.gif" width="22" height="22" alt="Technical Spec"></td>
|
||||
<td>Technical Spec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/GoalFlag.gif" width="22" height="22" alt="Implementation"></td>
|
||||
<td>Implementation</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="../../images/Check.gif" width="22" height="22" alt="Completed"></td>
|
||||
<td>Completed</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</a>
|
||||
<br>
|
||||
|
||||
<!-- The obligatory SourceForge plug -->
|
||||
<center>
|
||||
<small>The OpenBeOS project is hosted by:</small><br><br>
|
||||
<a href="http://sourceforge.net">
|
||||
<img src="http://sourceforge.net/sflogo.php?group_id=33869&type=1" width="88" height="31" border="0" alt="SourceForge Logo">
|
||||
</a>
|
||||
<p>
|
||||
|
||||
<small>Copyright © 2001-2002
|
||||
<a href="http://www.openbeos.org">OpenBeOS</a> Project</small>
|
||||
</center>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,16 @@
|
||||
BInputServerDevice::_ReservedInputServerDevice4(void)
|
||||
BInputServerDevice::_ReservedInputServerDevice3(void)
|
||||
BInputServerDevice::_ReservedInputServerDevice2(void)
|
||||
BInputServerDevice::_ReservedInputServerDevice1(void)
|
||||
BInputServerDevice::StopMonitoringDevice(char
|
||||
BInputServerDevice::StartMonitoringDevice(char
|
||||
BInputServerDevice::EnqueueMessage(BMessage
|
||||
BInputServerDevice::UnregisterDevices(input_device_ref
|
||||
BInputServerDevice::RegisterDevices(input_device_ref
|
||||
BInputServerDevice::Control(char
|
||||
BInputServerDevice::Stop(char
|
||||
BInputServerDevice::Start(char
|
||||
BInputServerDevice::SystemShuttingDown(void)
|
||||
BInputServerDevice::InitCheck(void)
|
||||
BInputServerDevice::~BInputServerDevice(void)
|
||||
BInputServerDevice::BInputServerDevice(void)
|
||||
@@ -0,0 +1,9 @@
|
||||
BInputServerFilter::_ReservedInputServerFilter4(void)
|
||||
BInputServerFilter::_ReservedInputServerFilter3(void)
|
||||
BInputServerFilter::_ReservedInputServerFilter2(void)
|
||||
BInputServerFilter::_ReservedInputServerFilter1(void)
|
||||
BInputServerFilter::GetScreenRegion(BRegion
|
||||
BInputServerFilter::Filter(BMessage
|
||||
BInputServerFilter::InitCheck(void)
|
||||
BInputServerFilter::~BInputServerFilter(void)
|
||||
BInputServerFilter::BInputServerFilter(void)
|
||||
@@ -0,0 +1,11 @@
|
||||
BInputServerMethod::_ReservedInputServerMethod4(void)
|
||||
BInputServerMethod::_ReservedInputServerMethod3(void)
|
||||
BInputServerMethod::_ReservedInputServerMethod2(void)
|
||||
BInputServerMethod::_ReservedInputServerMethod1(void)
|
||||
BInputServerMethod::SetMenu(BMenu
|
||||
BInputServerMethod::SetIcon(unsigned
|
||||
BInputServerMethod::SetName(char
|
||||
BInputServerMethod::EnqueueMessage(BMessage
|
||||
BInputServerMethod::MethodActivated(bool)
|
||||
BInputServerMethod::~BInputServerMethod(void)
|
||||
BInputServerMethod::BInputServerMethod(char
|
||||
@@ -0,0 +1,32 @@
|
||||
**************** BInputServerDevice Section ***************
|
||||
|
||||
BInputServerDevice();
|
||||
virtual ~BInputServerDevice();
|
||||
virtual status_t InitCheck();
|
||||
virtual status_t SystemShuttingDown();
|
||||
virtual status_t Start(const char *device, void *cookie);
|
||||
virtual status_t Stop(const char *device, void *cookie);
|
||||
virtual status_t Control(const char *device, void *cookie, int32 code, BMessage *message);
|
||||
status_t RegisterDevices(input_device_ref **devices);
|
||||
status_t UnregisterDevices(input_device_ref **devices);
|
||||
status_t EnqueueMessage(BMessage *message);
|
||||
status_t StartMonitoringDevice(const char *device);
|
||||
status_t StopMonitoringDevice(const char *device);
|
||||
|
||||
**************** BInputServerFilter Section *****************
|
||||
|
||||
BInputServerFilter();
|
||||
virtual ~BInputServerFilter();
|
||||
virtual status_t InitCheck();
|
||||
virtual filter_result Filter(BMessage *message, BList *outList);
|
||||
status_t GetScreenRegion(BRegion *region) const;
|
||||
|
||||
***************** BInputServerMethod Section *****************
|
||||
|
||||
BInputServerMethod(const char *name, const uchar *icon);
|
||||
virtual ~BInputServerMethod();
|
||||
virtual status_t MethodActivated(bool active);
|
||||
status_t EnqueueMessage(BMessage *message);
|
||||
status_t SetName(const char *name);
|
||||
status_t SetIcon(const uchar *icon);
|
||||
status_t SetMenu(const BMenu *menu, const BMessenger target);
|
||||
@@ -0,0 +1,51 @@
|
||||
Function Specifications
|
||||
|
||||
|
||||
Public BInputServerDevice class interface:
|
||||
|
||||
BInputServerDevice();
|
||||
virtual ~BInputServerDevice();
|
||||
|
||||
virtual status_t InitCheck();
|
||||
virtual status_t SystemShuttingDown();
|
||||
|
||||
virtual status_t Start(const char *device, void *cookie);
|
||||
virtual status_t Stop(const char *device, void *cookie);
|
||||
virtual status_t Control(const char *device, void *cookie, uint32 code, BMessage *message);
|
||||
|
||||
status_t RegisterDevices(input_device_ref **devices);
|
||||
status_t UnregisterDevices(input_device_ref **devices);
|
||||
|
||||
status_t EnqueueMessage(BMessage *message);
|
||||
|
||||
status_t StartMonitoringDevice(const char *device);
|
||||
status_t StopMonitoringDevice(const char *device);
|
||||
}
|
||||
|
||||
|
||||
Public BInputServerFilter class interface:
|
||||
|
||||
BInputServerFilter();
|
||||
virtual ~BInputServerFilter();
|
||||
|
||||
virtual status_t InitCheck();
|
||||
|
||||
virtual filter_result Filter(BMessage *message, BList *outList);
|
||||
|
||||
status_t GetScreenRegion(BRegion *region) const;
|
||||
|
||||
}
|
||||
|
||||
Public BInputServerMethod class interface:
|
||||
|
||||
BInputServerMethod(const char *name, const uchar *icon);
|
||||
virtual ~BInputServerMethod();
|
||||
|
||||
virtual status_t MethodActivated(bool active);
|
||||
|
||||
status_t EnqueueMessage(BMessage *message);
|
||||
|
||||
status_t SetName(const char *name);
|
||||
status_t SetIcon(const uchar *icon);
|
||||
status_t SetMenu(const BMenu *menu, const BMessenger target);
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
class InputServer
|
||||
{
|
||||
InputServer(void);
|
||||
~InputServer(void);
|
||||
|
||||
ArgvReceived(long, char**);
|
||||
|
||||
InitKeyboardMouseStates(void)
|
||||
InitFilters(void)
|
||||
InitMethods(void)
|
||||
|
||||
QuitRequested(void)
|
||||
ReadyToRun(void)
|
||||
MessageReceived(BMessage*);
|
||||
|
||||
HandleSetMethod(BMessage*);
|
||||
HandleGetSetMouseType(BMessage*, BMessage*);
|
||||
HandleGetSetMouseAcceleration(BMessage*, BMessage*);
|
||||
HandleGetSetKeyRepeatDelay(BMessage*, BMessage*);
|
||||
HandleGetKeyInfo(BMessage*, BMessage*);
|
||||
HandleGetModifiers(BMessage*, BMessage*);
|
||||
HandleSetModifierKey(BMessage*, BMessage*);
|
||||
HandleSetKeyboardLocks(BMessage*, BMessage*);
|
||||
HandleGetSetMouseSpeed(BMessage*, BMessage*);
|
||||
HandleSetMousePosition(BMessage*, BMessage*);
|
||||
HandleGetSetMouseMap(BMessage*, BMessage*);
|
||||
HandleGetKeyboardID(BMessage*, BMessage*);
|
||||
HandleGetSetClickSpeed(BMessage*, BMessage*);
|
||||
HandleGetSetKeyRepeatRate(BMessage*, BMessage*);
|
||||
HandleGetSetKeyMap(BMessage*, BMessage*);
|
||||
HandleFocusUnfocusIMAwareView(BMessage*, BMessage*);
|
||||
|
||||
EnqueueDeviceMessage(BMessage*);
|
||||
EnqueueMethodMessage(BMessage*);
|
||||
UnlockMethodQueue(void);
|
||||
LockMethodQueue(void);
|
||||
SetNextMethod(bool);
|
||||
SetActiveMethod(_BMethodAddOn_*);
|
||||
MethodReplicant(void);
|
||||
|
||||
EventLoop(void*);
|
||||
EventLoopRunning(void);
|
||||
|
||||
DispatchEvents(BList*);
|
||||
CacheEvents(BList*);
|
||||
GetNextEvents(BList*);
|
||||
FilterEvents(BList*);
|
||||
SanitizeEvents(BList*);
|
||||
MethodizeEvents(BList*, bool);
|
||||
|
||||
StartStopDevices(char const*, input_device_type, bool); // device's name, type, 0 or 1 for start or stop)
|
||||
ControlDevices(char const*, input_device_type, unsigned long, BMessage*);
|
||||
|
||||
DoMouseAcceleration(long*, long*);
|
||||
SetMousePos(long*, long*, long, long);
|
||||
SetMousePos(long*, long*, BPoint);
|
||||
SetMousePos(long*, long*, float, float);
|
||||
|
||||
SafeMode(void)
|
||||
|
||||
private:
|
||||
sEventLoopRunning
|
||||
sSafeMode
|
||||
fMouseState
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
Input_server threads
|
||||
|
||||
input_server(10-Normal Priority)
|
||||
_input_server_event_loop_(103-Custom Priority)
|
||||
ScreenSaver Looper(10-Normal Priority)
|
||||
DevicesLooper(10-Normal Priority)
|
||||
w>Team Monitor(120-Real Time Priority)
|
||||
PS/2 Mouse(104-Custom Priority)
|
||||
AT Keyboard(104-Custom Priority)
|
||||
|
||||
Legend:
|
||||
w> This signifies that the thread is spawned from a parent process. (most likely from the input_server)
|
||||
@@ -0,0 +1,149 @@
|
||||
<BASE HREF="http://bedriven.be-in.org/articles/input_server/II_035-an%20introduction%20to%20the%20input%20server.html"><table border=1 width=100%><tr><td><table border=1 bgcolor=#ffffff cellpadding=10 cellspacing=0 width=100% color=#ffffff><tr><td><font face=arial,sans-serif color=black size=-1>This is <b><font color=#0039b6>G</font> <font color=#c41200>o</font> <font color=#f3c518>o</font> <font color=#0039b6>g</font> <font color=#30a72f>l</font> <font color=#c41200>e</font></b>'s <a href="http://www.google.com/help/features.html#cached"><font color=blue>cache</font></a> of <A HREF="http://bedriven.be-in.org/articles/input_server/II_035-an%20introduction%20to%20the%20input%20server.html"><font color=blue>http://bedriven.be-in.org/articles/input_server/II_035-an%20introduction%20to%20the%20input%20server.html</font></a>.<br>
|
||||
<b><font color=#0039b6>G</font> <font color=#c41200>o</font> <font color=#f3c518>o</font> <font color=#0039b6>g</font> <font color=#30a72f>l</font> <font color=#c41200>e</font></b>'s cache is the snapshot that we took of the page as we crawled the web.<br>
|
||||
The page may have changed since that time. Click here for the <A HREF="http://bedriven.be-in.org/articles/input_server/II_035-an%20introduction%20to%20the%20input%20server.html"><font color=blue>current page</font></a> without highlighting.</font><br><br><center><font size=-2><i>Google is not affiliated with the authors of this page nor responsible for its content.</i></font></center></td></tr>
|
||||
<tr><td>
|
||||
<table border=0 cellpadding=0 cellspacing=0><tr><td><font face=arial,sans-serif color=black size=-1>These search terms have been highlighted: </font></td><td bgcolor=#ffff66><B><font face=arial,sans-serif color=black size=-1>hiroshi </font></B></td><td bgcolor=#A0FFFF><B><font face=arial,sans-serif color=black size=-1>lockheimer </font></B></td></tr></table>
|
||||
<font face=arial,sans-serif color=black size=-1>These terms only appear in links pointing to this page: <B>input_server </B></font>
|
||||
</td></tr></table></td></tr></table>
|
||||
<hr>
|
||||
<HTML>
|
||||
<HEAD><TITLE>Be Newsletter, Volume II, Issue 35</TITLE></HEAD>
|
||||
<BODY BGCOLOR="#FFFFFF">
|
||||
|
||||
<HR><Center><B>Be Newsletter, Volume II, Issue 35; September 2, 1998</B></CENTER><HR>
|
||||
|
||||
|
||||
<FONT SIZE=+1><B><A NAME="Insight"></A>BE ENGINEERING INSIGHTS: <p>An Introduction to the Input Server</B></FONT>
|
||||
<br><B>By <B style="color:black;background-color:#ffff66">Hiroshi </B><B style="color:black;background-color:#A0FFFF">Lockheimer</B> <A HREF="mailto:[email protected]"><B style="color:black;background-color:#ffff66">hiroshi</B>@be.com</A></B>
|
||||
<P>One of the many upcoming changes in the BeOS is in the world
|
||||
of input devices and events. The Input Server, slated to
|
||||
debut in R4, is a server that deals with all things "input."
|
||||
Specifically, it serves three functions: manages input
|
||||
devices such as keyboards and mice; hosts a stream of events
|
||||
that those devices generate; and dispatches those events
|
||||
that make it through the stream.
|
||||
|
||||
|
||||
<P>
|
||||
<b>Managing Input Devices</b>
|
||||
|
||||
|
||||
<P>The Input Server is a pretty dumb piece of software. (Cue to
|
||||
Alex: roll your eyes and say, "What do you expect <B style="color:black;background-color:#ffff66">Hiroshi</B>,
|
||||
you wrote it.") On its own, the server doesn't know how a
|
||||
keyboard or a mouse works; it relies on <CODE>BInputServerDevice</CODE>
|
||||
add-ons to tell it.
|
||||
|
||||
|
||||
<P><CODE>BInputServerDevice</CODE> is a base class from which all input
|
||||
device add-ons must derive. It provides the basic framework
|
||||
of virtual hook functions and non-virtual member functions
|
||||
that the Input Server uses to communicate with an add-on,
|
||||
and that the add-on can use to talk back to the server. To
|
||||
give a sneak peak of the API, some of the virtuals include
|
||||
<CODE>InitCheck()</CODE>, <CODE>Start()</CODE>, <CODE>Stop()</CODE>, and <CODE>Control()</CODE>. The common
|
||||
sequence of the life of an input device is this:
|
||||
|
||||
<ol>
|
||||
|
||||
<li> The Input Server loads an add-on and constructs its
|
||||
<CODE><CODE>BInputServerDevice</CODE></CODE>-derived object.
|
||||
|
||||
|
||||
<P><li> The Input Server calls <CODE>InitCheck()</CODE> on the object. The
|
||||
object determines whether it is capable of doing its job
|
||||
-- that is, generating input events.
|
||||
|
||||
|
||||
<P><li> This task may involve the object sniffing around for
|
||||
hardware it can drive, or looking for a kernel device
|
||||
driver in <CODE>/dev</CODE>. If the object is happy, it registers with
|
||||
the Input Server any input device(s) it finds, and
|
||||
returns <CODE>B_NO_ERROR</CODE>. An error return causes the Input
|
||||
Server to promptly destruct the object and unload the
|
||||
add-on.
|
||||
|
||||
|
||||
<P><li> At some point in time, someone will tell the input
|
||||
devices registered with the Input Server to <CODE>Start()</CODE>. The
|
||||
system automatically starts keyboards and mice at boot
|
||||
time. Any other type of device (an "undefined" input
|
||||
device that the system doesn't have any special knowledge
|
||||
about) can be started by an application using new API in
|
||||
the Interface Kit.
|
||||
|
||||
|
||||
<P><li> A registered device, whether it has been started or
|
||||
not, may be <CODE>Control()</CODE>-ed at any time. Think of Control()
|
||||
as the <CODE>ioctl()</CODE> equivalent in input device parlance.
|
||||
Examples of system-defined control messages include
|
||||
keymap changes and mouse speed changes.
|
||||
</ol>
|
||||
|
||||
<P>
|
||||
<b>Generating Input Events</b>
|
||||
|
||||
|
||||
<P>Once a <CODE>BInputServerDevice</CODE>-derived object's input device is
|
||||
up and running, its primary task is to generate input
|
||||
events. These events are expressed as BMessages. For
|
||||
example, a keyboard input device will most likely generate
|
||||
<CODE>B_KEY_DOWN</CODE> and <CODE>B_KEY_UP</CODE> messages. Similarly, a mouse input
|
||||
device will probably generate <CODE>B_MOUSE_UP</CODE>, <CODE>B_MOUSE_DOWN</CODE>, and
|
||||
<CODE>B_MOUSE_MOVED</CODE> events.
|
||||
|
||||
|
||||
<P>There is nothing that prevents an input device from putting
|
||||
arbitrary data in any of the <CODE>BMessages</CODE> it generates. So, for
|
||||
example, a tablet may generate the aforementioned mouse
|
||||
events with extra data such as pressure and proximity. Any
|
||||
information packed into the <CODE>BMessages</CODE> is delivered
|
||||
unmolested by the input server.
|
||||
|
||||
|
||||
<P>When an event is ready to be shipped off, an input device
|
||||
enqueues it into the Input Server's event stream. Some
|
||||
<CODE>BHandler</CODE> (most likely a <CODE>BView</CODE>) down the line eventually
|
||||
receives the event by way of the usual hook functions such
|
||||
as <CODE>KeyDown()</CODE>, <CODE>MouseDown()</CODE>, and <CODE>MouseMoved()</CODE>.
|
||||
|
||||
|
||||
<P>
|
||||
<b>The Input Event Stream</b>
|
||||
|
||||
|
||||
<P>The Input Server's event stream is open for inspection and
|
||||
alteration by anyone in the system. This is achieved through
|
||||
another set of add-ons called <CODE>BInputServerFilter</CODE>. Like
|
||||
<CODE>BInputServerDevice</CODE>, <CODE>BInputServerFilter</CODE> is a base class for input filter add-ons to the Input Server.
|
||||
|
||||
|
||||
<P>An input filter add-on is privy to all the events that pass
|
||||
through the Input Server's event stream. A filter may
|
||||
inspect, alter, generate, or completely drop input events.
|
||||
It's similar in some ways to the Interface Kit's
|
||||
<CODE>BMessageFilter</CODE>, but much more low-level. A
|
||||
<CODE>BInputServerFilter</CODE> sees all events that exist in the system;
|
||||
<CODE>BMessageFilters</CODE> are associated with a specific <CODE>BLooper</CODE> and
|
||||
thus see only the events targeted to its <CODE>BLooper</CODE>. Also,
|
||||
filters in the Input Server can generate additional events
|
||||
in place of, or in addition to, the original input event
|
||||
that it was invoked with.
|
||||
|
||||
|
||||
<P>
|
||||
<b>Conclusion</b>
|
||||
|
||||
|
||||
<P>With the introduction of loadable input device objects, the
|
||||
Input Server enables the BeOS to be used with a wide variety
|
||||
of input devices (and more than one of them at once too).
|
||||
And with the advent of input filters, the Input Server opens
|
||||
the door to a new class of tricks, hacks, and (gulp) pranks
|
||||
for the creative developer. It's going to be fun.
|
||||
|
||||
|
||||
<P>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
@@ -0,0 +1,100 @@
|
||||
000124f0 T InputServer::InputServer(void)
|
||||
0001277c T InputServer::MessageReceived(BMessage *)
|
||||
00012e64 T InputServer::QuitRequested(void)
|
||||
0001306c T InputServer::InitKeyboardMouseStates(void)
|
||||
00013360 T InputServer::InitMethods(void)
|
||||
00013460 T InputServer::GetNextEvents(BList *)
|
||||
000135e8 T InputServer::DoMouseAcceleration(long *, long *)
|
||||
00013794 T InputServer::SanitizeEvents(BList *)
|
||||
00013ce0 T InputServer::MethodizeEvents(BList *, bool)
|
||||
00013ecc T InputServer::FilterEvents(BList *)
|
||||
000140dc T InputServer::CacheEvents(BList *)
|
||||
000144d0 T InputServer::DispatchEvents(BList *)
|
||||
00014800 T InputServer::HandleSetKeyboardLocks(BMessage *, BMessage *)
|
||||
000148e0 T InputServer::HandleSetModifierKey(BMessage *, BMessage *)
|
||||
00014ad0 T InputServer::HandleGetSetKeyMap(BMessage *, BMessage *)
|
||||
00014c3c T InputServer::HandleGetSetKeyRepeatDelay(BMessage *, BMessage *)
|
||||
00014d4c T InputServer::HandleGetSetKeyRepeatRate(BMessage *, BMessage *)
|
||||
00014e5c T InputServer::HandleGetSetMouseMap(BMessage *, BMessage *)
|
||||
00014f9c T InputServer::HandleGetSetMouseType(BMessage *, BMessage *)
|
||||
000150ac T InputServer::HandleGetSetMouseSpeed(BMessage *, BMessage *)
|
||||
000151bc T InputServer::HandleGetSetMouseAcceleration(BMessage *, BMessage *)
|
||||
000152cc T InputServer::HandleGetSetClickSpeed(BMessage *, BMessage *)
|
||||
000153dc T InputServer::HandleSetMousePosition(BMessage *, BMessage *)
|
||||
00015534 T InputServer::HandleFocusUnfocusIMAwareView(BMessage *, BMessage *)
|
||||
00015690 T InputServer::HandleSetMethod(BMessage *)
|
||||
000157f8 T InputServer::EventLoop(void *)
|
||||
00015b1c T InputServer::UnlockMethodQueue(void)
|
||||
00015b5c T InputServer::LockMethodQueue(void)
|
||||
00015ba4 T InputServer::HandleGetModifiers(BMessage *, BMessage *)
|
||||
00015bec T InputServer::HandleGetKeyInfo(BMessage *, BMessage *)
|
||||
00015c40 T InputServer::HandleGetKeyboardID(BMessage *, BMessage *)
|
||||
00015c88 T InputServer::SetActiveMethod(_BMethodAddOn_ *)
|
||||
00015d8c T InputServer::SetNextMethod(bool)
|
||||
00015e04 T InputServer::SetMousePos(long *, long *, float, float)
|
||||
00015ec4 T InputServer::SetMousePos(long *, long *, long, long)
|
||||
00015f14 T InputServer::SetMousePos(long *, long *, BPoint)
|
||||
00015fc8 T InputServer::InitFilters(void)
|
||||
00016008 T InputServer::EventLoopRunning(void)
|
||||
00016028 T InputServer::SafeMode(void)
|
||||
00016048 T InputServer::ControlDevices(char const *, input_device_type, unsigned long, BMessage *)
|
||||
0001612c T InputServer::StartStopDevices(char const *, input_device_type, bool)
|
||||
000161fc T InputServer::MethodReplicant(void) const
|
||||
0001620c T InputServer::EnqueueMethodMessage(BMessage *)
|
||||
000162ec T InputServer::EnqueueDeviceMessage(BMessage *)
|
||||
0001631c T InputServer::ReadyToRun(void)
|
||||
00016344 T InputServer::ArgvReceived(long, char **)
|
||||
0001647c T BInputServerDevice::_ReservedInputServerDevice4(void)
|
||||
00016484 T BInputServerDevice::_ReservedInputServerDevice3(void)
|
||||
0001648c T BInputServerDevice::_ReservedInputServerDevice2(void)
|
||||
00016494 T BInputServerDevice::_ReservedInputServerDevice1(void)
|
||||
0001649c T BInputServerDevice::StopMonitoringDevice(char const *)
|
||||
000164cc T BInputServerDevice::StartMonitoringDevice(char const *)
|
||||
000164fc T BInputServerDevice::EnqueueMessage(BMessage *)
|
||||
00016528 T BInputServerDevice::UnregisterDevices(input_device_ref **)
|
||||
00016550 T BInputServerDevice::RegisterDevices(input_device_ref **)
|
||||
00016578 T BInputServerDevice::Control(char const *, void *, unsigned long, BMessage *)
|
||||
00016584 T BInputServerDevice::Stop(char const *, void *)
|
||||
00016590 T BInputServerDevice::Start(char const *, void *)
|
||||
0001659c T BInputServerDevice::SystemShuttingDown(void)
|
||||
000165a8 T BInputServerDevice::InitCheck(void)
|
||||
000165b4 T BInputServerDevice::~BInputServerDevice(void)
|
||||
000165e4 T BInputServerDevice::BInputServerDevice(void)
|
||||
00016614 T BInputServerFilter::_ReservedInputServerFilter4(void)
|
||||
0001661c T BInputServerFilter::_ReservedInputServerFilter3(void)
|
||||
00016624 T BInputServerFilter::_ReservedInputServerFilter2(void)
|
||||
0001662c T BInputServerFilter::_ReservedInputServerFilter1(void)
|
||||
00016634 T BInputServerFilter::GetScreenRegion(BRegion *) const
|
||||
00016698 T BInputServerFilter::Filter(BMessage *, BList *)
|
||||
000166a4 T BInputServerFilter::InitCheck(void)
|
||||
000166b0 T BInputServerFilter::~BInputServerFilter(void)
|
||||
000166e0 T BInputServerFilter::BInputServerFilter(void)
|
||||
00016710 T BInputServerMethod::_ReservedInputServerMethod4(void)
|
||||
00016718 T BInputServerMethod::_ReservedInputServerMethod3(void)
|
||||
00016720 T BInputServerMethod::_ReservedInputServerMethod2(void)
|
||||
00016728 T BInputServerMethod::_ReservedInputServerMethod1(void)
|
||||
00016730 T BInputServerMethod::SetMenu(BMenu const *, BMessenger)
|
||||
000167ac T BInputServerMethod::SetIcon(unsigned char const *)
|
||||
000167d4 T BInputServerMethod::SetName(char const *)
|
||||
000167fc T BInputServerMethod::EnqueueMessage(BMessage *)
|
||||
00016828 T BInputServerMethod::MethodActivated(bool)
|
||||
00016834 T BInputServerMethod::~BInputServerMethod(void)
|
||||
00016864 T BInputServerMethod::BInputServerMethod(char const *, unsigned char const *)
|
||||
00018834 T MethodReplicant::SendToInputServer(BMessage *)
|
||||
00019d98 W InputServer type_info function
|
||||
00019ddc W InputServer::~InputServer(void)
|
||||
00019e68 W BInputServerDevice type_info function
|
||||
00019ea0 W BInputServerFilter type_info function
|
||||
00019ed8 W BInputServerMethod type_info function
|
||||
0001b000 R kInputServerSignature
|
||||
0001cd34 D InputServer::sSafeMode
|
||||
0001cd35 D InputServer::sEventLoopRunning
|
||||
0001fb60 W InputServer virtual table
|
||||
0001fce0 W BInputServerDevice virtual table
|
||||
0001fd40 W BInputServerFilter virtual table
|
||||
0001fd80 W BInputServerMethod virtual table
|
||||
00024580 B InputServer::fMouseState
|
||||
000245c0 B InputServer type_info node
|
||||
000245ec B BInputServerMethod type_info node
|
||||
00024620 B BInputServerFilter type_info node
|
||||
00024728 B BInputServerDevice type_info node
|
||||
@@ -0,0 +1,100 @@
|
||||
InputServer::InputServer(void)
|
||||
InputServer::MessageReceived(BMessage
|
||||
InputServer::QuitRequested(void)
|
||||
InputServer::InitKeyboardMouseStates(void)
|
||||
InputServer::InitMethods(void)
|
||||
InputServer::GetNextEvents(BList
|
||||
InputServer::DoMouseAcceleration(long
|
||||
InputServer::SanitizeEvents(BList
|
||||
InputServer::MethodizeEvents(BList
|
||||
InputServer::FilterEvents(BList
|
||||
InputServer::CacheEvents(BList
|
||||
InputServer::DispatchEvents(BList
|
||||
InputServer::HandleSetKeyboardLocks(BMessage
|
||||
InputServer::HandleSetModifierKey(BMessage
|
||||
InputServer::HandleGetSetKeyMap(BMessage
|
||||
InputServer::HandleGetSetKeyRepeatDelay(BMessage
|
||||
InputServer::HandleGetSetKeyRepeatRate(BMessage
|
||||
InputServer::HandleGetSetMouseMap(BMessage
|
||||
InputServer::HandleGetSetMouseType(BMessage
|
||||
InputServer::HandleGetSetMouseSpeed(BMessage
|
||||
InputServer::HandleGetSetMouseAcceleration(BMessage
|
||||
InputServer::HandleGetSetClickSpeed(BMessage
|
||||
InputServer::HandleSetMousePosition(BMessage
|
||||
InputServer::HandleFocusUnfocusIMAwareView(BMessage
|
||||
InputServer::HandleSetMethod(BMessage
|
||||
InputServer::EventLoop(void
|
||||
InputServer::UnlockMethodQueue(void)
|
||||
InputServer::LockMethodQueue(void)
|
||||
InputServer::HandleGetModifiers(BMessage
|
||||
InputServer::HandleGetKeyInfo(BMessage
|
||||
InputServer::HandleGetKeyboardID(BMessage
|
||||
InputServer::SetActiveMethod(_BMethodAddOn_
|
||||
InputServer::SetNextMethod(bool)
|
||||
InputServer::SetMousePos(long
|
||||
InputServer::SetMousePos(long
|
||||
InputServer::SetMousePos(long
|
||||
InputServer::InitFilters(void)
|
||||
InputServer::EventLoopRunning(void)
|
||||
InputServer::SafeMode(void)
|
||||
InputServer::ControlDevices(char
|
||||
InputServer::StartStopDevices(char
|
||||
InputServer::MethodReplicant(void)
|
||||
InputServer::EnqueueMethodMessage(BMessage
|
||||
InputServer::EnqueueDeviceMessage(BMessage
|
||||
InputServer::ReadyToRun(void)
|
||||
InputServer::ArgvReceived(long,
|
||||
BInputServerDevice::_ReservedInputServerDevice4(void)
|
||||
BInputServerDevice::_ReservedInputServerDevice3(void)
|
||||
BInputServerDevice::_ReservedInputServerDevice2(void)
|
||||
BInputServerDevice::_ReservedInputServerDevice1(void)
|
||||
BInputServerDevice::StopMonitoringDevice(char
|
||||
BInputServerDevice::StartMonitoringDevice(char
|
||||
BInputServerDevice::EnqueueMessage(BMessage
|
||||
BInputServerDevice::UnregisterDevices(input_device_ref
|
||||
BInputServerDevice::RegisterDevices(input_device_ref
|
||||
BInputServerDevice::Control(char
|
||||
BInputServerDevice::Stop(char
|
||||
BInputServerDevice::Start(char
|
||||
BInputServerDevice::SystemShuttingDown(void)
|
||||
BInputServerDevice::InitCheck(void)
|
||||
BInputServerDevice::~BInputServerDevice(void)
|
||||
BInputServerDevice::BInputServerDevice(void)
|
||||
BInputServerFilter::_ReservedInputServerFilter4(void)
|
||||
BInputServerFilter::_ReservedInputServerFilter3(void)
|
||||
BInputServerFilter::_ReservedInputServerFilter2(void)
|
||||
BInputServerFilter::_ReservedInputServerFilter1(void)
|
||||
BInputServerFilter::GetScreenRegion(BRegion
|
||||
BInputServerFilter::Filter(BMessage
|
||||
BInputServerFilter::InitCheck(void)
|
||||
BInputServerFilter::~BInputServerFilter(void)
|
||||
BInputServerFilter::BInputServerFilter(void)
|
||||
BInputServerMethod::_ReservedInputServerMethod4(void)
|
||||
BInputServerMethod::_ReservedInputServerMethod3(void)
|
||||
BInputServerMethod::_ReservedInputServerMethod2(void)
|
||||
BInputServerMethod::_ReservedInputServerMethod1(void)
|
||||
BInputServerMethod::SetMenu(BMenu
|
||||
BInputServerMethod::SetIcon(unsigned
|
||||
BInputServerMethod::SetName(char
|
||||
BInputServerMethod::EnqueueMessage(BMessage
|
||||
BInputServerMethod::MethodActivated(bool)
|
||||
BInputServerMethod::~BInputServerMethod(void)
|
||||
BInputServerMethod::BInputServerMethod(char
|
||||
MethodReplicant::SendToInputServer(BMessage
|
||||
InputServer
|
||||
InputServer::~InputServer(void)
|
||||
BInputServerDevice
|
||||
BInputServerFilter
|
||||
BInputServerMethod
|
||||
kInputServerSignature
|
||||
InputServer::sSafeMode
|
||||
InputServer::sEventLoopRunning
|
||||
InputServer
|
||||
BInputServerDevice
|
||||
BInputServerFilter
|
||||
BInputServerMethod
|
||||
InputServer::fMouseState
|
||||
InputServer
|
||||
BInputServerMethod
|
||||
BInputServerFilter
|
||||
BInputServerDevice
|
||||
@@ -0,0 +1,18 @@
|
||||
MethodReplicant::SendToInputServer(BMessage
|
||||
InputServer
|
||||
InputServer::~InputServer(void)
|
||||
BInputServerDevice
|
||||
BInputServerFilter
|
||||
BInputServerMethod
|
||||
kInputServerSignature
|
||||
InputServer::sSafeMode
|
||||
InputServer::sEventLoopRunning
|
||||
InputServer
|
||||
BInputServerDevice
|
||||
BInputServerFilter
|
||||
BInputServerMethod
|
||||
InputServer::fMouseState
|
||||
InputServer
|
||||
BInputServerMethod
|
||||
BInputServerFilter
|
||||
BInputServerDevice
|
||||
@@ -0,0 +1,104 @@
|
||||
00000000 l df *ABS* 00000000 InputServer.cpp
|
||||
00000000 l df *ABS* 00000000 InputServerDevice.cpp
|
||||
00000000 l df *ABS* 00000000 InputServerFilter.cpp
|
||||
00000000 l df *ABS* 00000000 InputServerMethod.cpp
|
||||
000245c0 g O .bss 0000000c InputServer type_info node
|
||||
000164cc g F .text 0000002f BInputServerDevice::StartMonitoringDevice(char const *)
|
||||
000245ec g O .bss 0000000c BInputServerMethod type_info node
|
||||
0001fce0 w O .data 00000058 BInputServerDevice virtual table
|
||||
00016584 g F .text 00000009 BInputServerDevice::Stop(char const *, void *)
|
||||
00016550 g F .text 00000026 BInputServerDevice::RegisterDevices(input_device_ref **)
|
||||
00012e64 g F .text 00000207 InputServer::QuitRequested(void)
|
||||
00024580 g O .bss 00000020 InputServer::fMouseState
|
||||
00016720 g F .text 00000007 BInputServerMethod::_ReservedInputServerMethod2(void)
|
||||
000151bc g F .text 0000010f InputServer::HandleGetSetMouseAcceleration(BMessage *, BMessage *)
|
||||
0001620c g F .text 000000df InputServer::EnqueueMethodMessage(BMessage *)
|
||||
00014f9c g F .text 0000010f InputServer::HandleGetSetMouseType(BMessage *, BMessage *)
|
||||
00016008 g F .text 0000001d InputServer::EventLoopRunning(void)
|
||||
00015b1c g F .text 0000003e InputServer::UnlockMethodQueue(void)
|
||||
0001612c g F .text 000000cf InputServer::StartStopDevices(char const *, input_device_type, bool)
|
||||
000157f8 g F .text 00000323 InputServer::EventLoop(void *)
|
||||
00018834 g F .text 00000157 MethodReplicant::SendToInputServer(BMessage *)
|
||||
0001b000 g O .rodata 00000022 kInputServerSignature
|
||||
00015690 g F .text 00000165 InputServer::HandleSetMethod(BMessage *)
|
||||
00016578 g F .text 00000009 BInputServerDevice::Control(char const *, void *, unsigned long, BMessage *)
|
||||
00024620 g O .bss 00000008 BInputServerFilter type_info node
|
||||
000166b0 g F .text 0000002f BInputServerFilter::~BInputServerFilter(void)
|
||||
00014c3c g F .text 0000010f InputServer::HandleGetSetKeyRepeatDelay(BMessage *, BMessage *)
|
||||
00013ce0 g F .text 000001ea InputServer::MethodizeEvents(BList *, bool)
|
||||
0001cd35 g O .data 00000001 InputServer::sEventLoopRunning
|
||||
00015bec g F .text 00000053 InputServer::HandleGetKeyInfo(BMessage *, BMessage *)
|
||||
00015b5c g F .text 00000048 InputServer::LockMethodQueue(void)
|
||||
00016834 g F .text 0000002d BInputServerMethod::~BInputServerMethod(void)
|
||||
00016494 g F .text 00000007 BInputServerDevice::_ReservedInputServerDevice1(void)
|
||||
0001631c g F .text 00000026 InputServer::ReadyToRun(void)
|
||||
0001fd40 w O .data 00000040 BInputServerFilter virtual table
|
||||
00015d8c g F .text 00000077 InputServer::SetNextMethod(bool)
|
||||
0001306c g F .text 000002f2 InputServer::InitKeyboardMouseStates(void)
|
||||
00013360 g F .text 000000ff InputServer::InitMethods(void)
|
||||
00019ddc w F .text 00000045 InputServer::~InputServer(void)
|
||||
0001662c g F .text 00000007 BInputServerFilter::_ReservedInputServerFilter1(void)
|
||||
0001649c g F .text 0000002f BInputServerDevice::StopMonitoringDevice(char const *)
|
||||
0001fb60 w O .data 00000180 InputServer virtual table
|
||||
00015ba4 g F .text 00000045 InputServer::HandleGetModifiers(BMessage *, BMessage *)
|
||||
000148e0 g F .text 000001ef InputServer::HandleSetModifierKey(BMessage *, BMessage *)
|
||||
000165a8 g F .text 00000009 BInputServerDevice::InitCheck(void)
|
||||
00013794 g F .text 00000549 InputServer::SanitizeEvents(BList *)
|
||||
00016710 g F .text 00000007 BInputServerMethod::_ReservedInputServerMethod4(void)
|
||||
000166e0 g F .text 00000023 BInputServerFilter::BInputServerFilter(void)
|
||||
000167ac g F .text 00000027 BInputServerMethod::SetIcon(unsigned char const *)
|
||||
00014800 g F .text 000000dd InputServer::HandleSetKeyboardLocks(BMessage *, BMessage *)
|
||||
00019d98 w F .text 00000041 InputServer type_info function
|
||||
000165b4 g F .text 0000002f BInputServerDevice::~BInputServerDevice(void)
|
||||
00016528 g F .text 00000026 BInputServerDevice::UnregisterDevices(input_device_ref **)
|
||||
000165e4 g F .text 0000002d BInputServerDevice::BInputServerDevice(void)
|
||||
00014e5c g F .text 0000013f InputServer::HandleGetSetMouseMap(BMessage *, BMessage *)
|
||||
000135e8 g F .text 000001ab InputServer::DoMouseAcceleration(long *, long *)
|
||||
00015ec4 g F .text 0000004e InputServer::SetMousePos(long *, long *, long, long)
|
||||
00015c88 g F .text 00000103 InputServer::SetActiveMethod(_BMethodAddOn_ *)
|
||||
00019ed8 w F .text 00000041 BInputServerMethod type_info function
|
||||
0001277c g F .text 000006e5 InputServer::MessageReceived(BMessage *)
|
||||
000162ec g F .text 0000002e InputServer::EnqueueDeviceMessage(BMessage *)
|
||||
000167d4 g F .text 00000027 BInputServerMethod::SetName(char const *)
|
||||
00016624 g F .text 00000007 BInputServerFilter::_ReservedInputServerFilter2(void)
|
||||
00016028 g F .text 0000001d InputServer::SafeMode(void)
|
||||
00016590 g F .text 00000009 BInputServerDevice::Start(char const *, void *)
|
||||
00016484 g F .text 00000007 BInputServerDevice::_ReservedInputServerDevice3(void)
|
||||
00016614 g F .text 00000007 BInputServerFilter::_ReservedInputServerFilter4(void)
|
||||
00016728 g F .text 00000007 BInputServerMethod::_ReservedInputServerMethod1(void)
|
||||
0001648c g F .text 00000007 BInputServerDevice::_ReservedInputServerDevice2(void)
|
||||
0001cd34 g O .data 00000001 InputServer::sSafeMode
|
||||
00016698 g F .text 0000000c BInputServerFilter::Filter(BMessage *, BList *)
|
||||
000144d0 g F .text 0000032e InputServer::DispatchEvents(BList *)
|
||||
000140dc g F .text 000003f4 InputServer::CacheEvents(BList *)
|
||||
000124f0 g F .text 0000028b InputServer::InputServer(void)
|
||||
0001647c g F .text 00000007 BInputServerDevice::_ReservedInputServerDevice4(void)
|
||||
00016828 g F .text 00000009 BInputServerMethod::MethodActivated(bool)
|
||||
00016344 g F .text 00000079 InputServer::ArgvReceived(long, char **)
|
||||
000150ac g F .text 0000010f InputServer::HandleGetSetMouseSpeed(BMessage *, BMessage *)
|
||||
00013460 g F .text 00000186 InputServer::GetNextEvents(BList *)
|
||||
000153dc g F .text 00000155 InputServer::HandleSetMousePosition(BMessage *, BMessage *)
|
||||
0001661c g F .text 00000007 BInputServerFilter::_ReservedInputServerFilter3(void)
|
||||
00019e68 w F .text 00000035 BInputServerDevice type_info function
|
||||
00016864 g F .text 00000097 BInputServerMethod::BInputServerMethod(char const *, unsigned char const *)
|
||||
000164fc g F .text 00000029 BInputServerDevice::EnqueueMessage(BMessage *)
|
||||
00015fc8 g F .text 0000003f InputServer::InitFilters(void)
|
||||
000166a4 g F .text 00000009 BInputServerFilter::InitCheck(void)
|
||||
000167fc g F .text 00000029 BInputServerMethod::EnqueueMessage(BMessage *)
|
||||
00013ecc g F .text 0000020d InputServer::FilterEvents(BList *)
|
||||
000161fc g F .text 00000010 InputServer::MethodReplicant(void) const
|
||||
00015c40 g F .text 00000046 InputServer::HandleGetKeyboardID(BMessage *, BMessage *)
|
||||
000152cc g F .text 0000010f InputServer::HandleGetSetClickSpeed(BMessage *, BMessage *)
|
||||
0001659c g F .text 00000009 BInputServerDevice::SystemShuttingDown(void)
|
||||
0001fd80 w O .data 00000068 BInputServerMethod virtual table
|
||||
00024728 g O .bss 00000008 BInputServerDevice type_info node
|
||||
00016730 g F .text 0000007c BInputServerMethod::SetMenu(BMenu const *, BMessenger)
|
||||
00016048 g F .text 000000e3 InputServer::ControlDevices(char const *, input_device_type, unsigned long, BMessage *)
|
||||
00015534 g F .text 0000015b InputServer::HandleFocusUnfocusIMAwareView(BMessage *, BMessage *)
|
||||
00019ea0 w F .text 00000035 BInputServerFilter type_info function
|
||||
00016718 g F .text 00000007 BInputServerMethod::_ReservedInputServerMethod3(void)
|
||||
00015f14 g F .text 000000b4 InputServer::SetMousePos(long *, long *, BPoint)
|
||||
00014d4c g F .text 0000010f InputServer::HandleGetSetKeyRepeatRate(BMessage *, BMessage *)
|
||||
00014ad0 g F .text 0000016c InputServer::HandleGetSetKeyMap(BMessage *, BMessage *)
|
||||
00015e04 g F .text 000000bf InputServer::SetMousePos(long *, long *, float, float)
|
||||
00016634 g F .text 00000061 BInputServerFilter::GetScreenRegion(BRegion *) const
|
||||
@@ -0,0 +1,72 @@
|
||||
static void init_pdentry(pdentry *e)
|
||||
Sets e's value to 0.
|
||||
|
||||
static void init_ptentry(ptentry *e)
|
||||
Sets e's value to 0.
|
||||
|
||||
static void _update_all_pgdirs(int index, pdentry e)
|
||||
For every entry in the translation map, set the index'th entry to e.
|
||||
|
||||
static int lock_tmap(vm_translation_map *map)
|
||||
Locks the map; if we are the only ones, sets invalidated page count to 0.
|
||||
|
||||
static int unlock_tmap(vm_translation_map *map)
|
||||
unlocks the map; if no one else has it, call flush_tmap
|
||||
|
||||
static void destroy_tmap(vm_translation_map *map)
|
||||
Iterate over the entries in the tmap list, removing map when found. Frees the pages associated with this map.
|
||||
|
||||
static void put_pgtable_in_pgdir(pdentry *e, addr pgtable_phys, int attributes)
|
||||
Populates the pdentry with pgtable_phys and attributes
|
||||
|
||||
static int map_tmap(vm_translation_map *map, addr va, addr pa, unsigned int attributes)
|
||||
Allocates, if necessary, a page table entry. Gets the page for the page table entry (new or not), populates the page tabel entry with pa and attributes. Puts back the page table entry. Updates the pages to invalidate list.
|
||||
|
||||
static int unmap_tmap(vm_translation_map *map, addr start, addr end)
|
||||
Loops over the pagetable, finding the page that is present that holds this address. Gets it, and marks the page as not present. Replaces the page and updates the pages to invalidate list.
|
||||
|
||||
static int query_tmap(vm_translation_map *map, addr va, addr *out_physical, unsigned int *out_flags)
|
||||
Finds the page table's entry for this virtual address. Returns the physical address and flags.
|
||||
|
||||
static addr get_mapped_size_tmap(vm_translation_map *map)
|
||||
Returns map_count.
|
||||
|
||||
static int protect_tmap(vm_translation_map *map, addr base, addr top, unsigned int attributes)
|
||||
Unimplemented.
|
||||
|
||||
static int clear_flags_tmap(vm_translation_map *map, addr va, unsigned int flags)
|
||||
Finds the PTE and clears the requested flags.
|
||||
|
||||
static void flush_tmap(vm_translation_map *map)
|
||||
Invalidates the TLBs. If too many are in the list, all of the TLBs are invalidated. If not, a list is invalidated.
|
||||
|
||||
static int map_iospace_chunk(addr va, addr pa)
|
||||
Creates 1024 page table entries, for io.
|
||||
|
||||
static int get_physical_page_tmap(addr pa, addr *va, int flags)
|
||||
Looks to see if pa is already mapped. If so, return its virtual address in va. If not, find a place to map it and do so.
|
||||
|
||||
static int put_physical_page_tmap(addr va)
|
||||
Releases a reference to a "checked out" virtual mapping
|
||||
|
||||
int vm_translation_map_create(vm_translation_map *new_map, bool kernel)
|
||||
Sets up new_map, allocating memory and setting its initial state.
|
||||
|
||||
int vm_translation_map_module_init(kernel_args *ka)
|
||||
Clears the bottom 2 gig of memory's page mapping. Allocates space for page maps. Initializes data structures. Puts the page tables in the kernel's pagedir.
|
||||
|
||||
void vm_translation_map_module_init_post_sem(kernel_args *ka)
|
||||
Initializes this module's semaphores and mutexes.
|
||||
|
||||
int vm_translation_map_module_init2(kernel_args *ka)
|
||||
Creates anonymous regions for the kernel pagedir, physical page mappings, iospaces' virtual chunk descriptors and iospaces' page tables. Creates a null region for iospace.
|
||||
|
||||
int vm_translation_map_quick_map(kernel_args *ka, addr va, addr pa, unsigned int attributes, addr (get_free_page)(kernel_args *))
|
||||
Maps a page, ignoring already set up info.
|
||||
|
||||
static int vm_translation_map_quick_query(addr va, addr *out_physical)
|
||||
Gets the physical address for a page.
|
||||
|
||||
addr vm_translation_map_get_pgdir(vm_translation_map *map)
|
||||
Returns the pagedirectory structure.
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
int arch_vm_init (kernel_args *ka)
|
||||
First round of initialization; does nothing.
|
||||
|
||||
int arch_vm_init2 (kernel_args *ka)
|
||||
Marks the bios and dma ranges as "in use".
|
||||
|
||||
int arch_vm_init_endvm (kernel_args *ka)
|
||||
Maps the dma region into kernel space
|
||||
|
||||
void arch_vm_aspace_swap(vm_address_space *aspace)
|
||||
Calls i386_swap_pgdir
|
||||
@@ -0,0 +1,210 @@
|
||||
Variables
|
||||
|
||||
static vm_address_space *kernel_aspace;
|
||||
static region_id next_region_id;
|
||||
static void *region_table;
|
||||
static sem_id region_hash_sem;
|
||||
static aspace_id next_aspace_id;
|
||||
static void *aspace_table;
|
||||
static sem_id aspace_hash_sem;
|
||||
static int max_commit;
|
||||
static spinlock_t max_commit_lock;
|
||||
|
||||
Functions
|
||||
|
||||
static int region_compare(void *_r, const void *key)
|
||||
Compares _r (a vm_region) to key to see if their id's are the same. If so, return 0, else return -1
|
||||
|
||||
static unsigned int region_hash(void *_r, const void *key, unsigned int range)
|
||||
If _r is null, return key (a region_id) mod range, else return _r's id mod range.
|
||||
|
||||
static int aspace_compare(void *_a, const void *key)
|
||||
Compares _a (an address space) to key to see if their id's are the same. If so, return 0, else return -1
|
||||
|
||||
static unsigned int aspace_hash(void *_a, const void *key, unsigned int range)
|
||||
If _a is null, return key (an aspace_id) mod range, else return _a's id mod range.
|
||||
|
||||
vm_address_space *vm_get_aspace_by_id(aspace_id aid)
|
||||
Does a hash lookup on aid to find a vm_address_space struct. Increments its reference count and returns it.
|
||||
|
||||
vm_region *vm_get_region_by_id(region_id rid)
|
||||
Does a hash lookup on rid to find a vm_region. Increments its reference count and returns it.
|
||||
|
||||
region_id vm_find_region_by_name(aspace_id aid, const char *name)
|
||||
Finds this address space's structure. Iterates over the region list, looking for a match for name. vm_put_aspace's the address space.
|
||||
|
||||
static vm_region *_vm_create_region_struct(vm_address_space *aspace, const char *name, int wiring, int lock)
|
||||
Allocates space for a region and its name. Populates the name. Gets a new region id and assigns it. Sets map to the address space's virtual map.
|
||||
|
||||
static int find_and_insert_region_slot(vm_virtual_map *map, addr start, addr size, addr end, int addr_type, vm_region *region)
|
||||
Loops over the map's region list until it finds where this region should be inserted. If addr_type is any address, find any spot where it will fit and set the region up to start at the end of the previous one + 1. If we are searching for an exact address, see if that area is free and if so, use it. Increment map's change count.
|
||||
|
||||
|
||||
static int map_backing_store(vm_address_space *aspace, vm_store *store, void **vaddr,off_t offset, addr size, int addr_type, int wiring, int lock, int mapping, vm_region **_region, const char *region_name)
|
||||
Creates a region structure for this address space, name, wiring and lock. If this is a private map, create a new store, cache and cache_ref for private copies of pages. If the store's commited size is too small, ask the store to attempt to commit more. Aquire a reference to the cache_ref. Ensure that no one is deleting this address space; if they are, exit with an error. Insert this region into the address space. Attaches the cache to the region. Inserts the region into the region hash table. Adds a reference to the address space. Releases the cache_ref reference.
|
||||
|
||||
region_id user_vm_create_anonymous_region(char *uname, void **uaddress, int addr_type, addr size, int wiring, int lock)
|
||||
Does some safety checking, copies the name and address to kernel space, calls vm_create_anonymous_region, then copies the return result to uaddress.
|
||||
|
||||
region_id vm_create_anonymous_region(aspace_id aid, char *name, void **address, int addr_type, addr size, int wiring, int lock)
|
||||
Gets the address space structure. Creates an anonymous store object, a (temporary) cache and a cache_ref. Acquires a ref to the cache_ref. Calls map_backing_store for this address and size. Releases the cache_ref. If wiring is lazy, do nothing. If wiring is wired, calls soft_fault to simulate a fault and force the mapping to occur. If the wiring is "wired already", i.e. we cheated at boot time to make this happen, then find the pages and call vm_cache_insert_page to insert the pages into the cache. If the wiring is contiguous, allocate the pages and put them into the cache.
|
||||
|
||||
|
||||
region_id vm_map_physical_memory(aspace_id aid, char *name, void **address, int addr_type, addr size, int lock, addr phys_addr)
|
||||
Get the address space structure. Create a device store object, a cache and a cache_ref. Acquire a reference for the cache_ref. map backing store to this space and size. release the reference to the cache_ref.
|
||||
|
||||
region_id vm_create_null_region(aspace_id aid, char *name, void **address, int addr_type, addr size)
|
||||
Get the address space structure. Create a null store object, a cache and a cache_ref. Acquire a reference for the cache_ref. map backing store to this space and size. release the reference to the cache_ref.
|
||||
|
||||
static region_id _vm_map_file(aspace_id aid, char *name, void **address, int addr_type,addr size, int lock, int mapping, const char *path, off_t offset, bool kernel)
|
||||
Get the address space structure. Get the vnode from the path. If this cache doesn't already exist:
|
||||
create a vnode store object, a cache and a cache_ref. Acquire a reference for the cache_ref. set the cache_ptr to this cache_ref, and keep retrying until it works. release the reference to the cache_ref.
|
||||
Acquire a ref to the cache_ref. map backing store, release the ref and put the address space.
|
||||
|
||||
region_id vm_map_file(aspace_id aid, char *name, void **address, int addr_type, addr size, int lock, int mapping, const char *path, off_t offset)
|
||||
Convenience function - calls _vm_map_file with a kernel param of true.
|
||||
|
||||
region_id user_vm_map_file(char *uname, void **uaddress, int addr_type, addr size, int lock, int mapping, const char *upath, off_t offset)
|
||||
Sanity checks the name, address and path. Copies those into kernel space and calls _vm_map_file with a kernel param of false.
|
||||
|
||||
region_id user_vm_clone_region(char *uname, void **uaddress, int addr_type, region_id source_region, int mapping, int lock)
|
||||
Sanity checks the name and address. Copies those into kernel space and calls vm_clone_region.
|
||||
|
||||
region_id vm_clone_region(aspace_id aid, char *name, void **address, int addr_type, region_id source_region, int mapping, int lock)
|
||||
Gets the address space and region structures. maps backing store and returns.
|
||||
|
||||
static int __vm_delete_region(vm_address_space *aspace, vm_region *region)
|
||||
If the region's address space matches aspace, put_region it.
|
||||
|
||||
static int _vm_delete_region(vm_address_space *aspace, region_id rid)
|
||||
Gets the region, calls __vm_delete_region, then puts the region.
|
||||
|
||||
int vm_delete_region(aspace_id aid, region_id rid)
|
||||
Gets the address space. Calls _vm_delete_region, puts the address space and returns.
|
||||
|
||||
static void _vm_put_region(vm_region *region, bool aspace_locked)
|
||||
Check to see if there are still references to this region. If not, remove it from the global list and return. Remove the region from the adress space's region list. Remove the region from the vm_cache. Unmap it from the translation map.
|
||||
|
||||
void vm_put_region(vm_region *region)
|
||||
Calls _vm_put_region with locked=false.
|
||||
|
||||
int user_vm_get_region_info(region_id id, vm_region_info *uinfo)
|
||||
Calls vm_get_region_info after sanity checking the vm_region_info pointer.
|
||||
|
||||
int vm_get_region_info(region_id id, vm_region_info *info)
|
||||
Fills in the vm_region_info structure with id, base, size, lock, wiring and name.
|
||||
|
||||
int vm_get_page_mapping(aspace_id aid, addr vaddr, addr *paddr)
|
||||
Returns a physical address, given a virtual one.
|
||||
|
||||
static void display_mem(int argc, char **argv)
|
||||
Displays a value in memory.
|
||||
|
||||
static void dump_cache_ref(int argc, char **argv)
|
||||
Dumps a cache ref to debugging terminal
|
||||
|
||||
static const char *page_state_to_text(int state)
|
||||
Converts a state enum to a descriptive string.
|
||||
|
||||
static void dump_cache(int argc, char **argv)
|
||||
Dumps a particular cache entry.
|
||||
|
||||
static void _dump_region(vm_region *region)
|
||||
Dumps a particular region
|
||||
|
||||
static void dump_region(int argc, char **argv)
|
||||
Finds region by id and dumps it.
|
||||
|
||||
static void dump_region_list(int argc, char **argv)
|
||||
Dumps info about every region.
|
||||
|
||||
static void _dump_aspace(vm_address_space *aspace)
|
||||
Dumps data about an address space.
|
||||
|
||||
static void dump_aspace(int argc, char **argv)
|
||||
Finds an address space by ID and dumps it.
|
||||
|
||||
static void dump_aspace_list(int argc, char **argv)
|
||||
Dumps data about every address space.
|
||||
|
||||
vm_address_space *vm_get_kernel_aspace(void)
|
||||
Returns a pointer to the kernel address space structure.
|
||||
|
||||
aspace_id vm_get_kernel_aspace_id(void)
|
||||
Returns the kernel's address space id.
|
||||
|
||||
vm_address_space *vm_get_current_user_aspace(void)
|
||||
Gets the current user address space, given an id.
|
||||
|
||||
aspace_id vm_get_current_user_aspace_id(void)
|
||||
Uses the thread structure to get the current address space id.
|
||||
|
||||
void vm_put_aspace(vm_address_space *aspace)
|
||||
Removes a reference to the adress space. If it is the last one, destory the aspace.
|
||||
|
||||
aspace_id vm_create_aspace(const char *name, addr base, addr size, bool kernel)
|
||||
Allocate space for the structure and the name. Set default state. Creates a translation map. Initializes the virtual map and adds the structure to the global address space list.
|
||||
|
||||
int vm_delete_aspace(aspace_id aid)
|
||||
Gets the aspace struct from the id. If someone is already deleting, bail out. Put all of the regions, and put the aspace twice to cause it to be deleted.
|
||||
|
||||
int vm_aspace_walk_start(struct hash_iterator *i)
|
||||
calls open_hash on the aspace table.
|
||||
|
||||
vm_address_space *vm_aspace_walk_next(struct hash_iterator *i)
|
||||
Get the next address space in the hash list.
|
||||
|
||||
static int vm_thread_dump_max_commit(void *unused)
|
||||
Calls the unused function, then loops forever, printing the max_commit changes. Weird.
|
||||
|
||||
int vm_init(kernel_args *ka)
|
||||
Calls translation_map_module_init, and arch_vm_init. Initializes its globals, maps in the new heap and initializes it. Initializes the page list and the cache list. Creates the region and address space hash maps. Creates the kernel address space. Calls arch_vm_init2 and vm_page_init2. Allocates vm space for the stuff that the boot loader already had (heap, kernel read only, kernel read write, bootdir and the kstacks. Calls arch_vm_init_endvm. Adds commands to the debugger.
|
||||
|
||||
int vm_init_postsem(kernel_args *ka)
|
||||
Calls vm_translation_map_module_init_post_sem, creates the vm locking semaphores, and calls heap_init_postsem.
|
||||
|
||||
int vm_init_postthread(kernel_args *ka)
|
||||
Creates a max_commit_thread, calling vm_thread_dump_max_commit.
|
||||
|
||||
int vm_page_fault(addr address, addr fault_address, bool is_write, bool is_user, addr *newip)
|
||||
Calls vm_soft_fault. If that fails then checks to see if there is a fault handler for this case. If so, ensures that it is called. If there is no such case, kernel_panic (is this a good thing?)
|
||||
|
||||
static int vm_soft_fault(addr address, bool is_write, bool is_user)
|
||||
Sanity checks the address, determining if it is kernel or user land and getting the appropriate address space. Looks up the region from the aspace's map and the address. On failure, fail. Checks permissions. Finds the regions's cache ref; if there is a fault function for that cache_ref, invoke it and return with the error that the fault function returns.
|
||||
Otherwise, iterates over the cache chain:
|
||||
If the page is found in the current cache, set that page as busy and stop iterating.
|
||||
Otherwise, insert a dummy page in this cache (to keep other threads of the same process from chasing us in fault land)
|
||||
See if this cache's store has a "has_page" function. If so, call it. If it finds the page (meaning that the page is in this cache's storage), allocate a new physical page, read the data into the page and stop iterating.
|
||||
If we didn't find a cache, pick one (if we are in write mode, the top, if not, the deepest cache).
|
||||
If we don't have a page at this point, make a new one and insert it into the cache. Replace the dummy page, if any, with our new page.
|
||||
If this is a writable page and we are not in the topmost cache, we need another physical page for writes. Find the original page and copy it to the new page. Replace the dummy page, if any, with our new page.
|
||||
Ensure that the address region is still legit.
|
||||
Map the new page into the address space.
|
||||
Replace the dummy page, if any, with our new page.
|
||||
Set the page to active. Release all locks.
|
||||
|
||||
|
||||
static vm_region *vm_virtual_map_lookup(vm_virtual_map *map, addr address)
|
||||
Walk the region list of this map, looking for a region containing this address and return it.
|
||||
|
||||
int vm_get_physical_page(addr paddr, addr *vaddr, int flags)
|
||||
Get the physical page for this virtual address.
|
||||
|
||||
int vm_put_physical_page(addr vaddr)
|
||||
Put the physical page for this virtual address.
|
||||
|
||||
void vm_increase_max_commit(addr delta)
|
||||
Lock everything, increase max_commit, then unlock everything.
|
||||
|
||||
int user_memcpy(void *to, const void *from, size_t size)
|
||||
Calls the arch_ version.
|
||||
|
||||
int user_strcpy(char *to, const char *from)
|
||||
Calls the arch_ version.
|
||||
|
||||
int user_strncpy(char *to, const char *from, size_t size)
|
||||
Calls the arch_ version.
|
||||
|
||||
int user_memset(void *s, char c, size_t count)
|
||||
Calls the arch_ version.
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
Variables
|
||||
static void *page_cache_table
|
||||
|
||||
static spinlock_t page_cache_table_lock
|
||||
|
||||
static int page_compare_func(void *_p, const void *_key)
|
||||
Compares a vm_page's cache_ref and offset to those of key. Returns 0 on match, -1 otherwise.
|
||||
|
||||
static unsigned int page_hash_func(void *_p, const void *_key, unsigned int range)
|
||||
If p is not null, use it otherwise use key; computes a hash value for offset and reference.
|
||||
|
||||
int vm_cache_init(kernel_args *ka)
|
||||
Calls hash_init, sets page_cache_table_lock to unlocked and returns 0.
|
||||
|
||||
vm_cache *vm_cache_create(vm_store *store)
|
||||
Allocates a vm_cache structure and populates with 0's and NULLs (except for store).
|
||||
|
||||
vm_cache_ref *vm_cache_ref_create(vm_cache *cache)
|
||||
Allocates a vm_cache_ref, setting it to point to the passed in cache. It initalizes the references lock and returns.
|
||||
|
||||
void vm_cache_acquire_ref(vm_cache_ref *cache_ref, bool acquire_store_ref)
|
||||
If the cache_ref is null, panic. Otherwise, if we are to aquire a reference and there is an aquire reference function for this cache's store, call that function. Finally, increment this cache references' count.
|
||||
|
||||
void vm_cache_release_ref(vm_cache_ref *cache_ref)
|
||||
If this cache_ref is the last reference to its cache, we call destroy on the store, remove all of its pages from the page_cache_table and set the state of them to free, increase max_commit by the size of the now freed storage, remove the reference to the original cache, destroy the reference's mutex and its space.
|
||||
Otherwise, we call the store's release ref and return.
|
||||
|
||||
vm_page *vm_cache_lookup_page(vm_cache_ref *cache_ref, off_t offset)
|
||||
Lock the page_cache_table_lock and lookup the offset and cache_ref in the page_cache_table, then unlock.
|
||||
|
||||
void vm_cache_insert_page(vm_cache_ref *cache_ref, vm_page *page, off_t offset)
|
||||
Add this page to the page_cache_table.
|
||||
|
||||
void vm_cache_remove_page(vm_cache_ref *cache_ref, vm_page *page)
|
||||
Find this page and remove it from the hash list. Clean up the linked lists.
|
||||
|
||||
int vm_cache_insert_region(vm_cache_ref *cache_ref, vm_region *region)
|
||||
Add this region to the cache_ref's region list.
|
||||
|
||||
int vm_cache_remove_region(vm_cache_ref *cache_ref, vm_region *region)
|
||||
Remove this region from the cache_ref's region list.
|
||||
@@ -0,0 +1,33 @@
|
||||
Variables
|
||||
|
||||
bool trimming_cycle;
|
||||
Do we need free space?
|
||||
|
||||
static addr free_memory_low_water;
|
||||
|
||||
static addr free_memory_high_water;
|
||||
|
||||
static void scan_pages(vm_address_space *aspace, addr free_target)
|
||||
Finds a region in this address space to scan.
|
||||
Locks the region's cache_ref.
|
||||
For each page,
|
||||
if the page is present, do nothing with this page
|
||||
Lookup the page structure. If this page doesn't exist, do nothing with this page.
|
||||
If the page is written to or is hard wired (unswapable), do nothing with it.
|
||||
If the page is not accessed and is active and we need space (free_target), unmap it. If this is the last reference to that mapped page, put it on the inactive list.
|
||||
If the page has been modified, but wasn't on the active list, put it there.
|
||||
Move to the next region in this address space, wrap around until we hit the first one.
|
||||
|
||||
static int page_daemon()
|
||||
Walk through every address space:
|
||||
Adjust the size of the processes' working set (i.e. memory allocation) to be larger or smaller, to tailor to faults.
|
||||
Set trimming cycle if free pages is below the high water mark.
|
||||
Clear trimming cycle if free pages is above high water mark.
|
||||
Set free memory target to be the processes' mapped size minus the working set
|
||||
Call scan_pages
|
||||
|
||||
|
||||
int vm_daemon_init()
|
||||
Sets high water to pages/4 and low water to pages/8.
|
||||
Creates the page daemon as a kernel thread.
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
Variables
|
||||
extern bool trimming_cycle;
|
||||
Determines if we are trimming - if we are nearly out of space
|
||||
|
||||
static page_queue page_free_queue;
|
||||
The queue that holds unused (but not cleared) pages
|
||||
|
||||
static page_queue page_clear_queue;
|
||||
The queue that holds cleared (0'ed) pages
|
||||
|
||||
static page_queue page_modified_queue;
|
||||
The queue that holds altered pages
|
||||
|
||||
static page_queue page_active_queue;
|
||||
The queue that holds in use pages that are not altered
|
||||
|
||||
static vm_page *all_pages;
|
||||
Every page in the system
|
||||
|
||||
static addr physical_page_offset;
|
||||
The first address of real ram
|
||||
|
||||
static unsigned int num_pages;
|
||||
Total number of pages in the system
|
||||
|
||||
static spinlock_t page_lock;
|
||||
A lock to protect the queues.
|
||||
|
||||
static sem_id modified_pages_available;
|
||||
A semaphore to indicate if there are pages that need to be written to disk
|
||||
|
||||
static void clear_page(addr pa);
|
||||
Sets all values in this page to 0.
|
||||
|
||||
static vm_page * dequeue_page(page_queue *q)
|
||||
Standard queue remove first page; has count; no locking
|
||||
|
||||
void dump_page_stats(int argc, char **argv);
|
||||
Dumps counts of each state (active, inactive, busy, not used, modified, free, cleared, wired)
|
||||
|
||||
void dump_free_page_table(int argc, char **argv)
|
||||
Not done.
|
||||
|
||||
static void enqueue_page(page_queue *q, vm_page *page)
|
||||
Standard queue add a page; has count; no locking; SPECIAL - for page_modified_queue, if there is only one page modified (new one), release semaphore
|
||||
|
||||
static bool is_page_in_phys_range(kernel_args *ka, addr paddr)
|
||||
Determines if a physical address is in the physical memory that exists.
|
||||
|
||||
static void move_page_to_queue(page_queue *from_q, page_queue *to_q, vm_page *page)
|
||||
Removes the page from the from_q and adds it to the to_q.
|
||||
|
||||
static int pageout_daemon()
|
||||
aquires the "modified pages available" semaphore. Gets first page from modified list. Sets it to busy, updates all processes mapping this page that it is no longer a modified page, writes it out to disk, then puts it on the active list (i.e. not modified). Doesn't write out "anonymous" blocks unless we are trimming.
|
||||
|
||||
static int page_scrubber(void *);
|
||||
Every 1/10 second, takes a page from the free queue, memsets it to 0's, then puts it on the clear queue.
|
||||
|
||||
static void remove_page_from_queue(page_queue *q, vm_page *page)
|
||||
Removes a given page from the given page queue. No locking.
|
||||
|
||||
addr vm_alloc_from_ka_struct(kernel_args *ka, unsigned int size, int lock)
|
||||
Gets virtual space in the ka using vm_alloc_vspace_from_ka_struct, then uses vm_alloc_ppage_from_kernel_struct to find a physical page to map it to.
|
||||
|
||||
static addr vm_alloc_ppage_from_kernel_struct(kernel_args *ka)
|
||||
Attempts to extend, by one page, one of the phys_alloc_range blocks in the kernel args.
|
||||
|
||||
static addr vm_alloc_vspace_from_ka_struct(kernel_args *ka, unsigned int size)
|
||||
Attempts to find an address range that can be extended to hold size bytes.
|
||||
|
||||
vm_page * vm_lookup_page(addr page_num)
|
||||
Does the math to get vm_page pointer from a page number.
|
||||
|
||||
int vm_mark_page_inuse(addr page)
|
||||
Calls vm_mark_page_range_inuse with len of 1.
|
||||
|
||||
int vm_mark_page_range_inuse(addr start_page, addr len)
|
||||
Sets state to PAGE_STATE_UNUSED for all pages in this range.
|
||||
|
||||
vm_page * vm_page_allocate_page(int page_state)
|
||||
Gets a single page from the clear or free queue (from page_state), fall back to the other.
|
||||
|
||||
vm_page * vm_page_allocate_page_run(int page_state, addr len)
|
||||
Attempts to find a run of pages "len" long that are either free or clear. If found, pulls them from their queues and calls vm_page_set_state_nolock on them
|
||||
|
||||
vm_page * vm_page_allocate_specific_page(addr page_num, int page_state)
|
||||
Finds this page, removes it from the clear or free queue, clears it if necessary and returns. Returns NULL for not found or page in use.
|
||||
|
||||
int vm_page_init(kernel_args *ka)
|
||||
Initializes the free, clear, modified and active queues. Sets up the vm structures.
|
||||
|
||||
int vm_page_init2(kernel_args *ka)
|
||||
Properly maps the vm structures allocated in vm_page_init.
|
||||
|
||||
int vm_page_init_postthread(kernel_args *ka)
|
||||
Creates the page scrubber and the pageout daemon.
|
||||
|
||||
addr vm_page_num_pages()
|
||||
Returns the total number of pages.
|
||||
|
||||
addr vm_page_num_free_pages()
|
||||
Returns count of pages in free and clear queues.
|
||||
|
||||
int vm_page_set_state(vm_page *page, int page_state)
|
||||
Locks, then calls vm_page_set_state_nolock, then unlocks.
|
||||
|
||||
static int vm_page_set_state_nolock(vm_page *page, int page_state);
|
||||
Moves a page from the state that it is in to the state specified, and moves it from the old queue to the new one.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
static void anonymous_destroy(struct vm_store *store)
|
||||
Free's the memory associated with store
|
||||
|
||||
static off_t anonymous_commit(struct vm_store *store, off_t size)
|
||||
Returns 0
|
||||
|
||||
static int anonymous_has_page(struct vm_store *store, off_t offset)
|
||||
Returns 0
|
||||
|
||||
static ssize_t anonymous_read(struct vm_store *store, off_t offset, iovecs *vecs)
|
||||
Returns unimplemented
|
||||
|
||||
static ssize_t anonymous_write(struct vm_store *store, off_t offset, iovecs *vecs)
|
||||
Returns 0
|
||||
/*
|
||||
static int anonymous_fault(struct vm_store *backing_store, struct vm_address_space *aspace, off_t offset)
|
||||
*/
|
||||
|
||||
|
||||
vm_store *vm_store_create_anonymous_noswap()
|
||||
Allocates space for a vm_store. Populates its ops with the above, sets its cache and data to none.
|
||||
@@ -0,0 +1,20 @@
|
||||
static void device_destroy(struct vm_store *store)
|
||||
Frees the space associated with this store
|
||||
|
||||
static off_t device_commit(struct vm_store *store, off_t size)
|
||||
Sets this store's commited size to size.
|
||||
|
||||
static int device_has_page(struct vm_store *store, off_t offset)
|
||||
Returns 0
|
||||
|
||||
static ssize_t device_read(struct vm_store *store, off_t offset, iovecs *vecs)
|
||||
Returns unimplemented.
|
||||
|
||||
static ssize_t device_write(struct vm_store *store, off_t offset, iovecs *vecs)
|
||||
Returns 0
|
||||
|
||||
static int device_fault(struct vm_store *store, struct vm_address_space *aspace, off_t offset)
|
||||
Should be called when a page is not mapped in. Locks the translation map, Finds the region in the cache that contains this page and maps it in. Unlocks the cache.
|
||||
|
||||
vm_store *vm_store_create_device(addr base_addr)
|
||||
Allocates memory for the vm_store structure, plus the data_store_device structure. Sets cache to null, and data to the device_store_data. Sets the device_store_data's base address to the base address passed in.
|
||||
@@ -0,0 +1,20 @@
|
||||
static void null_destroy(struct vm_store *store)
|
||||
Frees this stores space.
|
||||
|
||||
static off_t null_commit(struct vm_store *store, off_t size)
|
||||
Sets committed size to size and returns it.
|
||||
|
||||
static int null_has_page(struct vm_store *store, off_t offset)
|
||||
returns 1.
|
||||
|
||||
static ssize_t null_read(struct vm_store *store, off_t offset, iovecs *vecs)
|
||||
Returns -1.
|
||||
|
||||
static ssize_t null_write(struct vm_store *store, off_t offset, iovecs *vecs)
|
||||
Returns -1.
|
||||
|
||||
static int null_fault(struct vm_store *store, struct vm_address_space *aspace, off_t offset)
|
||||
Returns a Fatal page fault error.
|
||||
|
||||
vm_store *vm_store_create_null(void)
|
||||
Creates an empty vm_store struct.
|
||||
@@ -0,0 +1,23 @@
|
||||
static void vnode_destroy(struct vm_store *store)
|
||||
Frees memory associated with this store.
|
||||
|
||||
static off_t vnode_commit(struct vm_store *store, off_t size)
|
||||
Sets committed size to size and returns it.
|
||||
|
||||
static int vnode_has_page(struct vm_store *store, off_t offset)
|
||||
Returns 1.
|
||||
|
||||
static ssize_t vnode_read(struct vm_store *store, off_t offset, iovecs *vecs)
|
||||
Calls vfs_readpage.
|
||||
|
||||
static ssize_t vnode_write(struct vm_store *store, off_t offset, iovecs *vecs)
|
||||
calls vfs_writepage
|
||||
|
||||
static void vnode_acquire_ref(struct vm_store *store)
|
||||
Calls vfs_vnode_aquire_ref
|
||||
|
||||
static void vnode_release_ref(struct vm_store *store)
|
||||
Calls vfs_vnode_release_ref
|
||||
|
||||
vm_store *vm_store_create_vnode(void *vnode)
|
||||
Creates space for a vm_store and a vnode_store_data. Sets data = vnode_store_data. Sets the vnode_store_data's vnode to vnode.
|
||||
@@ -0,0 +1,38 @@
|
||||
OpenBeOS Keymap preferences
|
||||
|
||||
2002-05-16 - The input_server is restarted when a keymap is 'use'd. Hooray!
|
||||
|
||||
2002-05-11 - Ok, I have found the 'move keys around with the right mouse button' feature. Now I see the Revert button make sense. Sorry I doubted you JLG :)
|
||||
|
||||
2002-05-08 - Fixed switching from user- to system maps and vice versa and added revert button. Just like the original, it does abolutely nothing. Makes one wonder why it is there in the first place.
|
||||
|
||||
2002-02-16 - Moved message definitions to messages.h, chopped KeymapApplication::UseKeymap into smaller pieces, created member variable fApplication in KeymapWindow, applied OpenTracker guidelines
|
||||
|
||||
2002-02-15 - Added resource file and 'Use' button, made 'System' and 'User' lists mutually exclusive and implemented keymap file copying
|
||||
|
||||
2002-02-09 - Added resource file and 'Use' button and made 'System' and 'User' lists mutually exclusive - sort of
|
||||
|
||||
2002-02-08 - Initial checkin
|
||||
|
||||
|
||||
This version:
|
||||
Copies keymap files but doesn't do much else - you even have to restart the Input Server (try BeReset for that) for the new keymap to work. It seems bugfree at doing what it does though :)
|
||||
|
||||
|
||||
To do (likely in this order):
|
||||
- somehow inform Input Server to use the newly chosen keymap, or else restart the Input Server
|
||||
- preselect 'Current'
|
||||
- make the 'System' and 'User' labels show up (or: why are they invisible in the current version?)
|
||||
- layout the sources to conform to OBOS standards
|
||||
- find Be-defined constants for paths and/or files
|
||||
- check validity of keymap file before copying
|
||||
- add all the fancy stuff that's in the original Keymap application
|
||||
- switch to Jam
|
||||
- get rid of all excess symbols (or: what linker switch makes the linker remove all external symbols?)
|
||||
- hunt leaks and fix'em
|
||||
|
||||
|
||||
If anyone looks at my code and sees any major problems, please email me to tell me, I want to work hard on this app to make sure it's as stable and complete as it can get for the OpenBeOS project.
|
||||
|
||||
Sandor Vroemisse
|
||||
[email protected]
|
||||
@@ -0,0 +1,5 @@
|
||||
Milestones
|
||||
|
||||
1) Implement all MIDI1 classes.
|
||||
|
||||
2) Implement all MIDI2 classes.
|
||||
@@ -0,0 +1,19 @@
|
||||
|
||||
General:
|
||||
- Fill out headers.
|
||||
- Add copyright information to files.
|
||||
|
||||
BMidi:
|
||||
- Put semaphores in the right places if necessary.
|
||||
|
||||
BMidiStore:
|
||||
- Implement formats 1 and 2
|
||||
- Implement frame based timing
|
||||
- Implement export functionality.
|
||||
- Cleanup
|
||||
|
||||
BMidiText:
|
||||
- Nothing?
|
||||
|
||||
midi_server:
|
||||
- Get started.
|
||||
@@ -0,0 +1,97 @@
|
||||
Just some general thoughts that have occurred to me as I've started
|
||||
looking at stuff related to designing a network stack...
|
||||
|
||||
These are in no particular order.
|
||||
|
||||
General Jottings
|
||||
----------------
|
||||
|
||||
- zero-copy is a laudible aim, but in reality single copy is probably
|
||||
as good as we're going to get to. Basically this means that we copy data
|
||||
into the stack at some point.
|
||||
- we should use a version of the mbuff's that the BSD stack uses with changes
|
||||
so we use them more efficiently for our stack.
|
||||
- probably need an rx and tx queue for frames.
|
||||
- we should reallt be dealing with frames as soon as we can in the stack,
|
||||
though we don't want to fragment earlier than we need to - what a quandry!
|
||||
- it should be possible to stack/reorder modules as needed. This would be cool
|
||||
if we could deal with input from other sources, e.g. data from a USB port
|
||||
to be fed into a ppp stack, onto an atm/ethernet frame module and upwards.
|
||||
|
||||
|
||||
Userland vs Kernel Land
|
||||
-----------------------
|
||||
|
||||
This has been decided as follows...
|
||||
- initial stack will be userland
|
||||
- stack should be modular enough that it could be moved into kernel with
|
||||
little or no real work.
|
||||
|
||||
|
||||
Initial Protocols
|
||||
-----------------
|
||||
|
||||
- ethernet/802.x encapsulation (rx only for 802.x)
|
||||
- slip (?)
|
||||
- ppp (?)
|
||||
- arp
|
||||
- ipv4
|
||||
- icmp (v4)
|
||||
- udp
|
||||
- tcp
|
||||
|
||||
Extra's
|
||||
-------
|
||||
|
||||
- appletalk ?
|
||||
- ipv6
|
||||
- icmpv6
|
||||
- ipv6 discovery (arp for v6)
|
||||
- atm encapsulation module?
|
||||
- usb interface (net stack to usb??)
|
||||
|
||||
Stack Map
|
||||
=========
|
||||
|
||||
So, how does this all fit together???
|
||||
|
||||
[david: My ascii art is terrible, so hope this works out :)]
|
||||
|
||||
=================
|
||||
= User apps = USERLAND
|
||||
=================
|
||||
| | |
|
||||
| | |
|
||||
========= ========= =========
|
||||
= UDP = = ICMP* = = TCP =
|
||||
========= ========= =========
|
||||
\ | /
|
||||
\ | /
|
||||
===============
|
||||
MBUF = IP (v4/v6) =
|
||||
===============
|
||||
|
|
||||
-----------------------------
|
||||
| |
|
||||
=============== | =======
|
||||
BUFFER = Eth/802.x =----|---= ARP =
|
||||
=============== | =======
|
||||
| |
|
||||
----------------------------|-----
|
||||
| |
|
||||
=========== |
|
||||
= NIC IF = | KERNEL
|
||||
===========
|
||||
|
||||
* ICMP is used as a placeholder for both ICMPv4 and ICMPv6, which are very
|
||||
different from each other in scope and usage.
|
||||
|
||||
Basically every module only needs to be able to call the module that deal with the
|
||||
input/output of the protocol it find encapsulated, i.e. if IP finds a TCP packet
|
||||
it simply needs to be able to call tcp_input and pass the mbuf along. There is a
|
||||
requirement that each call to xxx_input gives the length of the header as they're
|
||||
variable in most protocols.
|
||||
|
||||
This just starts to scratch the surface, but I hope gives more of an idea
|
||||
of what's been bouncing around in my head. :)
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
Network Drivers - Milestone #1
|
||||
|
||||
Having done some work on the Tulip cards, here are some general
|
||||
comments.
|
||||
|
||||
- we should have both an rx and tx queue and pop/push from the queue
|
||||
in the system rx/tx_thread. this should provide good performance
|
||||
- order of calling is
|
||||
: detect
|
||||
: init
|
||||
- the driver is normally in 2 pieces, one for the general calls and
|
||||
one for the device specific stuff.
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
Net Cache - Milestone #2
|
||||
========================
|
||||
|
||||
Hmm, a general purpose net cache.
|
||||
|
||||
Types of Cache
|
||||
==============
|
||||
|
||||
What are we likely to need a fast cache for? Look below.
|
||||
|
||||
- ipv4 address to ethernet MAC address (ARP)
|
||||
- MAC address to IPv4 (RARP)
|
||||
- list of IPv6 neighbours/routers/prefix's
|
||||
|
||||
There remain problems in that for many of these needs additional
|
||||
information is required, this information being specific to the
|
||||
use at the time.
|
||||
|
||||
However, all these uses require an ability to quickly find information
|
||||
given a key that is a number of variable length, hence the conceptual
|
||||
idea of using a hash lookup.
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
Milestones
|
||||
==========
|
||||
|
||||
These were agreed 17th january 2002 in an IRC meeting.
|
||||
|
||||
IRC log http://www.darkest.org/openbeos/netkit/02.01.17.openbeosnetkit.log
|
||||
|
||||
Milestone Description
|
||||
|
||||
1 network drivers
|
||||
It was recognised that until the team members had
|
||||
working NIC's there was little point in trying to
|
||||
develop a network stack.
|
||||
|
||||
STATUS: rtl8139 in repository
|
||||
tulip driver written covering Netgear FA310TX
|
||||
Ne2000 driver started
|
||||
|
||||
2 Encapsulation
|
||||
Ethernet packets come in 2 basic forms,
|
||||
ethernet encapsulation (rfc 894)
|
||||
IEEE 802.2/3/4/5 (rfc1042)
|
||||
We need to be able to handle both. However, we only
|
||||
MUST be able to send ethernet compatible frames. In pactice
|
||||
we should try to send the frame in the same format that it
|
||||
was received. In fact we may want to store the format used by
|
||||
hosts?
|
||||
|
||||
David says this isn't easy to do with the current newos
|
||||
stack design.
|
||||
|
||||
STATUS: newos has ethernet support, but with the current
|
||||
architecture it's difficult to add fully transparent
|
||||
support for other encapsulations.
|
||||
|
||||
3 ARP module
|
||||
Once we can get frames from the network, one of the first
|
||||
things we need to do is start capturing and caching ARP
|
||||
requests.
|
||||
NB david thinks this should be aimed at providing more
|
||||
general purpose caching so it's useful beyond ARP. he
|
||||
suggests we call this a Net Cache module.
|
||||
|
||||
STATUS: newos has an arp module, though cache needs work
|
||||
and is limited to ipv4
|
||||
|
||||
4 IPv4 checksums + routing
|
||||
Implement IPv4 checksums and routing
|
||||
|
||||
STATUS: newos has a basic version of thisi
|
||||
|
||||
5 IPv4 ICMP
|
||||
Add ICMP support to out IPv4 module
|
||||
|
||||
6 IPv4 Fragmentation
|
||||
This will be interesting, adding support for reconstructing
|
||||
and deconstructing packets into suitable frames for transport.
|
||||
NB this needs to be abel to deal with different sizes of
|
||||
frame.
|
||||
|
||||
STATUS:
|
||||
|
||||
7 TCP/UDP
|
||||
|
||||
STATUS: newos has rudimentary UDP support
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
Document naming.
|
||||
|
||||
Well, I've been thinking about this and I've decided that maybe
|
||||
this formatting of the numbers we use will work. Maybe it won't,
|
||||
but until someone else shouts...
|
||||
|
||||
First digit is the milestone referred to, with 0 being for
|
||||
general design.
|
||||
|
||||
Second digit:
|
||||
- layer involved for general design
|
||||
- incremental for milestones
|
||||
- 0 for general design comments
|
||||
|
||||
So, 00 = general design principals
|
||||
01 = general design for layer 1
|
||||
10 = general design comments for milestone 1
|
||||
11 = first document about milestone 1
|
||||
|
||||
Does that work for people?
|
||||
@@ -0,0 +1,6 @@
|
||||
PrintServerApp::MessageReceived(): BMessage: what = selp (0x73656c70, or 1936026736)
|
||||
entry driver, type='CSTR', c=1, size=17, data[0]: "EPSON C40 Series"
|
||||
entry transport, type='CSTR', c=1, size=12, data[0]: "Serial Port"
|
||||
entry transport path, type='CSTR', c=1, size=8, data[0]: "serial1"
|
||||
entry printer name, type='CSTR', c=1, size=8, data[0]: "my_test"
|
||||
entry connection, type='CSTR', c=1, size=6, data[0]: "Local"
|
||||
@@ -0,0 +1,19 @@
|
||||
2x PageSetup
|
||||
1x Print
|
||||
|
||||
|
||||
config_page((null),0x80013478)
|
||||
BMessage: what = pgst (0x70677374, or 1885827956)
|
||||
entry printer, type='LONG', c=1, size= 4, data[0]: 0x80013218 (-2147405288, ী2')
|
||||
|
||||
|
||||
config_page((null),0x80013478)
|
||||
BMessage: what = pgst (0x70677374, or 1885827956)
|
||||
entry current_printer, type='CSTR', c=1, size=12, data[0]: "DemoPrinter"
|
||||
entry printer, type='LONG', c=1, size= 4, data[0]: 0x80013218 (-2147405288, ী2')
|
||||
|
||||
|
||||
config_job((null),0x80013478)
|
||||
BMessage: what = ppst (0x70707374, or 1886417780)
|
||||
entry current_printer, type='CSTR', c=1, size=12, data[0]: "DemoPrinter"
|
||||
entry printer, type='LONG', c=1, size= 4, data[0]: 0x80013218 (-2147405288, ী2')
|
||||
@@ -0,0 +1,72 @@
|
||||
BMessage: what = okok (0x6f6b6f6b, or 1869311851)
|
||||
entry printer, type='LONG', c=1, size= 4, data[0]: 0x8003b390 (-2147241072, ')
|
||||
entry page_format, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
|
||||
entry orientation, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
|
||||
entry scale, type='FLOT', c=1, size= 4, data[0]: 100.0000
|
||||
entry xres, type='LONG', c=1, size= 4, data[0]: 0x12c (300, '')
|
||||
entry yres, type='LONG', c=1, size= 4, data[0]: 0x12c (300, '')
|
||||
entry paper_rect, type='RECT', c=1, size=16, data[0]: BRect(l:0.0, t:0.0, r:612.0, b:792.0)
|
||||
entry printable_rect, type='RECT', c=1, size=16, data[0]: BRect(l:18.0, t:18.0, r:594.0, b:774.0)
|
||||
entry current_printer, type='CSTR', c=1, size=27, data[0]: "HPLaserJetPCL3Driver_BeInc"
|
||||
|
||||
BMessage: what = GOOD (0x474f4f44, or 1196379972)
|
||||
entry printer, type='LONG', c=1, size= 4, data[0]: 0x800131a8 (-2147405400, ী౨')
|
||||
entry EPST_copies, type='LONG', c=1, size= 4, data[0]: 0x1 (1, '')
|
||||
entry EPST_dst_idx_page, type='LONG', c=1, size= 4, data[0]: 0x5 (5, '')
|
||||
entry EPST_src_idx_page, type='LONG', c=1, size= 4, data[0]: 0x7 (7, '')
|
||||
entry EPST_orientation, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
|
||||
entry EPST_page_order, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
|
||||
entry EPST_centered, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
|
||||
entry EPST_extended, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
|
||||
entry EPST_rotate180, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
|
||||
entry EPST_page_state, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
|
||||
entry EPST_logic_userdef_width, type='FLOT', c=1, size= 4, data[0]: 0.0000
|
||||
entry EPST_logic_userdef_height, type='FLOT', c=1, size= 4, data[0]: 0.0000
|
||||
entry EPST_page_name, type='CSTR', c=1, size=3, data[0]: "A4"
|
||||
entry EPST_scale, type='FLOT', c=1, size= 4, data[0]: 100.0000
|
||||
entry paper_rect, type='RECT', c=1, size=16, data[0]: BRect(l:0.0, t:0.0, r:595.2, b:841.8)
|
||||
entry printable_rect, type='RECT', c=1, size=16, data[0]: BRect(l:8.4, t:8.4, r:586.8, b:802.2)
|
||||
entry EPST_page_rect, type='RECT', c=1, size=16, data[0]: BRect(l:0.0, t:0.0, r:2976.0, b:4209.0)
|
||||
entry EPST_printer_rect, type='RECT', c=1, size=16, data[0]: BRect(l:42.0, t:42.0, r:2934.0, b:4011.0)
|
||||
entry EPST_page_settings_dpi, type='FLOT', c=1, size= 4, data[0]: 72.0000
|
||||
entry EPST_printer_settings_dpi, type='FLOT', c=1, size= 4, data[0]: 360.0000
|
||||
entry EPST_paper_feed, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
|
||||
entry EPST_quality, type='LONG', c=1, size= 4, data[0]: 0x1 (1, '')
|
||||
entry EPST_resolution, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
|
||||
entry EPST_paper_type, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
|
||||
entry EPST_color, type='LONG', c=1, size= 4, data[0]: 0x6 (6, '')
|
||||
entry EPST_microweave, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
|
||||
entry EPST_unidirectionnal, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
|
||||
entry xres, type='LONG', c=1, size= 4, data[0]: 0x168 (360, '')
|
||||
entry yres, type='LONG', c=1, size= 4, data[0]: 0x168 (360, '')
|
||||
entry EPST_BEATWARE, type='BOOL', c=1, size= 1, data[0]: 0
|
||||
entry first_page, type='LONG', c=1, size= 4, data[0]: 0x1 (1, '')
|
||||
entry last_page, type='LONG', c=1, size= 4, data[0]: 0x7fffffff (2147483647, '')
|
||||
entry EPST_preview, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
|
||||
entry current_printer, type='CSTR', c=1, size=24, data[0]: "EPSONStylusDriver_BeInc"
|
||||
|
||||
BMessage: what = okok (0x6f6b6f6b, or 1869311851)
|
||||
entry printer, type='LONG', c=1, size= 4, data[0]: 0x8003b498 (-2147240808, ഘ')
|
||||
entry bitmap, type='BOOL', c=1, size= 1, data[0]: 0
|
||||
entry HighQuality, type='BOOL', c=1, size= 1, data[0]: 0
|
||||
entry in_color, type='BOOL', c=1, size= 1, data[0]: 0
|
||||
entry orientation, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
|
||||
entry page size, type='CSTR', c=1, size=7, data[0]: "Letter"
|
||||
entry ppd_item, type='MSGG', c=1, size= 0,
|
||||
entry xres, type='LLNG', c=1, size= 8, data[0]: 0x12c (300, '')
|
||||
entry yres, type='LLNG', c=1, size= 8, data[0]: 0x12c (300, '')
|
||||
entry paper_rect, type='RECT', c=1, size=16, data[0]: BRect(l:0.0, t:0.0, r:612.0, b:792.0)
|
||||
entry units, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
|
||||
entry printable_rect, type='RECT', c=1, size=16, data[0]: BRect(l:14.4, t:21.6, r:597.6, b:784.8)
|
||||
entry first up, type='BOOL', c=1, size= 1, data[0]: 1
|
||||
entry current_printer, type='CSTR', c=1, size=23, data[0]: "PostScriptDriver_BeInc"
|
||||
|
||||
BMessage: what = okok (0x6f6b6f6b, or 1869311851)
|
||||
entry printer, type='LONG', c=1, size= 4, data[0]: 0x80018af0 (-2147382544, 瀊')
|
||||
entry orientation, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
|
||||
entry scale, type='FLOT', c=1, size= 4, data[0]: 100.0000
|
||||
entry xres, type='LONG', c=1, size= 4, data[0]: 0x12c (300, '')
|
||||
entry yres, type='LONG', c=1, size= 4, data[0]: 0x12c (300, '')
|
||||
entry paper_rect, type='RECT', c=1, size=16, data[0]: BRect(l:0.0, t:0.0, r:612.0, b:792.0)
|
||||
entry printable_rect, type='RECT', c=1, size=16, data[0]: BRect(l:0.0, t:0.0, r:612.0, b:792.0)
|
||||
entry current_printer, type='CSTR', c=1, size=20, data[0]: "PreviewDriver_BeInc"
|
||||
|
After Width: | Height: | Size: 5.3 KiB |
@@ -0,0 +1,40 @@
|
||||
$ print_server
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
PAGE SETUP.........
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
PrintServerApp::MessageReceived(): BMessage: what = pgst (0x70677374, or 1885827956)
|
||||
PrintServerApp::MessageReceived(): BMessage: what = BRAW (0x42524157, or 1112686935)
|
||||
entry active, type='BOOL', c=1, size= 1, data[0]: 1
|
||||
PrintServerApp::MessageReceived(): BMessage: what = BRAW (0x42524157, or 1112686935)
|
||||
entry active, type='BOOL', c=1, size= 1, data[0]: 0
|
||||
PrintServerApp::MessageReceived(): BMessage: what = pgcp (0x70676370, or 1885823856)
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
PRINT.........
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
PrintServerApp::MessageReceived(): BMessage: what = pgcp (0x70676370, or 1885823856)
|
||||
PrintServerApp::MessageReceived(): BMessage: what = ppst (0x70707374, or 1886417780)
|
||||
entry orientation, type='LONG', c=1, size= 4, data[0]: 0x0 (0, '')
|
||||
entry scale, type='FLOT', c=1, size= 4, data[0]: 100.0000
|
||||
entry xres, type='LONG', c=1, size= 4, data[0]: 0x12c (300, '')
|
||||
entry yres, type='LONG', c=1, size= 4, data[0]: 0x12c (300, '')
|
||||
entry paper_rect, type='RECT', c=1, size=16, data[0]: BRect(l:0.0, t:0.0, r:612.0, b:792.0)
|
||||
entry printable_rect, type='RECT', c=1, size=16, data[0]: BRect(l:0.0, t:0.0, r:612.0, b:792.0)
|
||||
entry current_printer, type='CSTR', c=1, size=20, data[0]: "PreviewDriver_BeInc"
|
||||
PrintServerApp::MessageReceived(): BMessage: what = BRAW (0x42524157, or 1112686935)
|
||||
entry active, type='BOOL', c=1, size= 1, data[0]: 1
|
||||
PrintServerApp::MessageReceived(): BMessage: what = BRAW (0x42524157, or 1112686935)
|
||||
entry active, type='BOOL', c=1, size= 1, data[0]: 0
|
||||
PrintServerApp::MessageReceived(): BMessage: what = pgcp (0x70676370, or 1885823856)
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
After spooling:
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
PrintServerApp::MessageReceived(): BMessage: what = pgcp (0x70676370, or 1885823856)
|
||||
PrintServerApp::MessageReceived(): BMessage: what = psns (0x70736e73, or 1886613107)
|
||||
entry JobName, type='CSTR', c=1, size=15, data[0]: "InterestFields"
|
||||
entry Spool File, type='CSTR', c=1, size=79, data[0]: "/boot/home/config/settings/printers/PreviewDriver_BeInc/InterestFields@8257001"
|
||||
@@ -0,0 +1 @@
|
||||
BRect(78.0, 71.0, 561.0, 409.0)
|
||||
@@ -0,0 +1,5 @@
|
||||
Information from BeOS R5 implementation:
|
||||
|
||||
BPrintJob::ConfigPage()
|
||||
BPrintJob::ConfigJob()
|
||||
BPrintJob::TakeJob()
|
||||
@@ -0,0 +1,18 @@
|
||||
$ print_server
|
||||
Loaded addon /boot/home/config/add-ons/Print/DemoDriver
|
||||
Loaded addon /boot/beos/system/add-ons/Print/transport/Serial Port
|
||||
Loaded addon /boot/beos/system/add-ons/Print/EPSON Stylus Driver
|
||||
Loaded addon /boot/beos/system/add-ons/Print/transport/Parallel Port
|
||||
Loaded addon /boot/beos/system/add-ons/Print/HP PCL3 LaserJet Compatible
|
||||
Loaded addon /boot/beos/system/add-ons/Print/transport/USB Port
|
||||
Loaded addon /boot/beos/system/add-ons/Print/PostScript
|
||||
Loaded addon /boot/beos/system/add-ons/Print/transport/Print To File
|
||||
Loaded addon /boot/beos/system/add-ons/Print/Preview
|
||||
BMessage: what = pgst (0x70677374, or 1885827956)
|
||||
BMessage: what = pgcp (0x70676370, or 1885823856)
|
||||
-------------------------------------------------
|
||||
BMessage: what = pgcp (0x70676370, or 1885823856)
|
||||
BMessage: what = ppst (0x70707374, or 1886417780)
|
||||
entry current_printer, type='CSTR', c=1, size=24, data[0]: "EPSONStylusDriver_BeInc"
|
||||
BMessage: what = pdef (0x70646566, or 1885627750)
|
||||
BMessage: what = pgcp (0x70676370, or 1885823856)
|
||||