BuckoSoft Animation Controller

Class Hierarchy

Overview

This document describes the class hierarchy for the BuckoSoft Animation Controller.
The class table listing below is complete but obviously the details of the classes below still needs work.

bsac consists of 5 modules:

String
Obj
+- file
+- LString
+- user
|  +- bsacuser
+- project
+- ObjList
|  +- FilterList
|  +- PersList
|  +- World
+- Network
|  +- Agent
|  |  +- cserver
|  |  +- sproject
|  |  +- mclient
|  |  +- mserver
|  |  +- mailagent
|  |  +- metabsac
|  |     +- cmeta
|  |     |- smeta
|  +- HttpListen
|  +- Http
|     +- httpbsac
|        +- httpc
|        +- https
|        +- httpm
+- mproject
+- msproject
+- renderobj
renderreq
framefetch
BuckoRoot
BuckoRoot
BuckoRoot
BuckoRoot
BuckoRoot
common
client
BuckoRoot
client
BuckoRoot
BuckoRoot
BuckoRoot
BuckoRoot
client
server
meta
meta
BuckoRoot
common
client
server
BuckoRoot
BuckoRoot
common
client
server
meta
meta
meta
common
common
common

String

A String is an object that holds a dynamic sized zero terminated string.
cstring.cpp cstring.h

Attributes

 

Methods


Obj

obj is the root class.  It is a named object and supports linked lists.
Obj.cpp Obj.h

Attributes

String name The name of this object.  Very useful for finding objects
otype type pointer to a string that is the type of the object.  I wanted to use an IsKindOf() scheme, but couldn't find a portable one.
Obj* prev The previous object on a list. (So far, i have only used one-way lists, really)
Obj* next The next object on a list.

Methods

obj* obj() Construct an empty object.
obj* obj(PCSTR name) Construct a named object.
next obj* The next object on a list
obj* GetNext() Returns the next object in the linked list


objlist | obj

objlist is a linked list of objs.
obj.cpp obj.h

Attributes

obj* head Pointer to the first node in the list.
obj* tail Pointer to the last node in the list.

Methods

obj* GetHead() Construct an empty object.
obj* GetTail() Construct a named object.
void Add(obj* o) Appends obj o to the end of the list.
void Remove(obj* o) Removes obj o from the list.
obj* RemoveHead() Removes and returns the obj at the beginning of the list.
void Empty() Makes the list have no entries.
int GetCount() Return the number of items in the list.
bool IsEmpty() Returns whether the list is empty or not.
obj* Find(PCSTR s) Finds an obj on the list named by s.


perslist | objlist | obj

persistent objlist.  A list of objects that can be saved and loaded to/from disk.
A list can be marked as Dirty, which is a low priority timed scan to see if the list needs saving.
Messy is like Dirty, only an even lower priority.
A Dirty or Messy list is always saved upon exit.
obj.cpp obj.h

Attributes

String filename name of the file as loaded/saved to disk.
btime_t lastSave The last time this list was saved.
int dirtyDelay How long to wait before saving a dirty list.

Methods

void Load() Fills a (usually empty) perslist from a file.
void Save() Saves the perslist to the file.
void DoDirtySave() Save the list only if it is dirty.
void SetDirty() Marks the list as being dirty and requires saving.
bool IsDirty() Returns whether or not the list is dirty.
void SetMessy() Being messy is like being dirty, only the save poll occurs much slower.
bool IsMessy() Returns whether or not the list is messy.


network | obj

A basic TCP/IP network connection.
network.cpp network.h

Attributes

SOCKET sock The socket of this connection.
int retryCount Number of attempts to make this connection or perform current operation.

Methods

int SetBlockingMode() Sets blocking mode.  Returns the result of the operation.
int SetNonBlockingMode() Sets non-blocking mode.  Returns the result of the operation.
void printf(PCSTR lpszFormat, ...) printf to the socket of this network.
int send(PCSTR buf, uint length) sends length bytes from buf down the socket.