AminetAminet
Search:
84782 packages online
About
Recent
Browse
Search
Upload
Setup
Services

dev/e/sortobj.lha

Mirror:Random
Showing: ppc-morphos icongeneric icon
No screenshot available
Short:Abstract sortobj object for Amiga E
Author:Joseph E. Van Riper III
Uploader:jvanriper uncavx unca edu
Type:dev/e
Architecture:m68k-amigaos
Date:1995-02-13
Download:dev/e/sortobj.lha - View contents
Readme:dev/e/sortobj.readme
Downloads:629

Long:

SortObj for Amiga E

This set of objects was created by Trey Van Riper of the
Cheese Olfactory Workshop for use with Amiga E.  Wear it in
good health.

This archive has SortObj, String, Integer, and Address.

PURPOSE
-------

To supply the Amiga E community with an extensible OT class
that might help provide for some extreme functionality in
the future through reuse (for example, I will very likely
create a sorted list class based on this object class) I
took the trouble to create SortObj.

The basic idea behind 'SortObj' is to have a single object
from which other objects can be derived that might allow for
sorting in a list or somesuch.  I have not yet made such a
list, but these objects will still be useful to OT
developers working in Amiga E.

NOTE: As this is an abstract class, it's extremely
low-level.  Initially, this object looks on the face of it
to be darned useless, but as people start deriving more
objects from this one, its flexibility will become more
obvious.

I am hoping this will help encourage people to release OT
objects to help extend Amiga E's usefulness.

HOW TO USE
----------

Well.. I suppose I'd best give the SortObj ShowModule output
first:

ShowModule v1.9 (c) 1992 $#%!
now showing: "sortobj.m"
NOTE: don't use this output in your code, use the module instead.

/* this module contains 620 bytes of code! */

(---) OBJECT sortobj
        new(a)
        opts(a)
        init()
        lt(a)
        gt(a)
        et(a)
        le(a)
        ge(a)
        ne(a)
        cmp(a)
        set(a)
        write()
        get()
	id()
        end()
(---) ENDOBJECT     /* SIZEOF=4 */

-- new(a)

   This method is intended to be an intializer.  You can
   pass options to it; I would recommend one passes an Amiga
   E list rather than a simple value; this will help keep
   your code extensible.  Basically, one shouldn't have to
   worry about creating their own new() methods as this one
   calls 'init()' and 'opts()'.

-- opts(a)

   This method allows you to pass special options to the
   object, in case your object requires several things to be
   set at various values (examine the Address object).
 
-- init()

   This method is intended to help you initialize the
   object, in case it needs it.  Maybe you need to NEW some
   pointers or something.

-- cmp(a)

   This method is VERY important... to get the most out of
   sortobj, you will want to define this.  Basically, this
   should perform a comparison between something within your
   object, and something within object 'a' (which should be
   the same as your own object).

   Not that the above makes a lot of sense.

   Generally, 'a' is supposed to be an instance of the
   object you're creating.  'cmp()' is supposed to compare
   something within that instance with something inside your
   'self' instance.

   It should return '1' if the 'self' value is greater than
   the 'a' value, '0' if the two are equal, and '-1' if
   'self' is less than the 'a' value.

   Then, a whole bunch of other functions will become
   enabled for your procedure... lt()/gt()/le()/ge()/ne()/et()
   will all instantly start working for you.

   I recommend you try to make this function work as quickly
   as possible, as in some cases it might be called twice
   (eg ge() and le()).

-- lt(a)

   This tests to see if self is less than a.

-- gt(a)

   This tests to see if self is greater than a.

-- et(a)

   This tests to see if self is equal to a.

-- le(a)

   This tests to see if self is less than or equal to a.

-- ge(a)

   This tests to see if self is greater than or equal to a.

-- ne(a)

   This tests to see if self is not equal to a.

-- write()

   This method should return a string to be written by
   someone else.  Perhaps, in the far future, this class
   could be extended by creating an output object that could
   be used by sortobj or something.. in the meantime, you
   can try using this.

   Basically, make sure this method returns something you
   could WriteF().

-- get()

   This method should return the data within the object.
   This isn't exactly easy to judge in the case of objects
   with multiple members (such as the Address object), but
   its useful for such things as strings and integers.
   Perhaps this could return an OBJECT with normal pointers
   to strings and stuff like that... it'll have to be your
   own call how to use it, but you hopefully get the general
   drift.  Use the other objects derived from sortobj as a
   guide.

-- id()

   This method returns a number describing the kind of
   object it is.  This can be handy for making lists of
   objects of unknown types.

-- end()

   Of course, this is the deallocator.  This function will
   be called when someone ENDs the object, so it should be
   useful for something <grin>.

SO WHAT, WHO CARES
------------------

I know it doesn't seem like such a big deal to have these
objects, especially since I'm not yet supplying a sorted
list, but consider how useful this would be when used with
something like queuestack (yeah, I know, cheap
advertisement, but hey, it's a cheap product)... then again,
someone else might beat me to the creation of an object
oriented sorted list!

You could store pointers to different kinds of sortobjs
within queuestack, dropping them into the queuestack
willy-nilly, without any idea what they might be, then pull
them out again as needed, id()ing them to figure out what
they are.

You could even iterate through the queuestack, write()ing
the values to some kind of variable to be printed out in a
WriteF() or something, without having to worry about what
the object in the queuestack is!

I've taken the trouble to provide you with a string and
integer object as subclasses of sortobj, as well as an
example of a more complex object 'address'.  Still to be
written are a float and fraction object.

The string and integer classes need further work; the string
class should have some means by which someone could append
new strings to it, as well as number conversions and all
that happy stuff (basically, all the various Amiga
Efunctions put into the class itself), while the integer
object could use various functions to handle arithmatic
matters.

In fact, the entire integer class will be reworked in the
future to be derived from a higher abstract class 'number' that
I'm going to create sometime later... but I wanted to get a
quick version out in the meantime.

DISTRIBUTION
------------

You are granted full rights to use and distribute this.
I am not requiring money for its use.  In fact, I encourage
as many people as possible to use this, and to possibly
extend this as much as possible.  Hell, fix any screwup you
find!

Basically, this is Public Domain; even the source has been
made available so you can have yet another example of OT
programming.  I ask that you do not modify the source code
under my name; let me be responsible for my own mistakes,
nobody else's.  I also ask you do not take credit for work
I've done; OT programming seems to be tricky for some folks
to handle, and I want to be sure to get the credit where
it's due.

Consider this a contribution to the Amiga E community to
encourage the development of object tools in the Amiga E
language.

As ever, Wouter van Ootmerson has full permission to include
this in his next release of Amiga E, as he sees fit, without
having to pay me anything but credit.


Contents of dev/e/sortobj.lha
 PERMSSN    UID  GID    PACKED    SIZE  RATIO     CRC       STAMP          NAME
---------- ----------- ------- ------- ------ ---------- ------------ -------------
[generic]                  802    2275  35.3% -lh5- 31a9 Feb 11  1995 address.e
[generic]                  757    2114  35.8% -lh5- bf7d Feb 11  1995 address.m
[generic]                  471     923  51.0% -lh5- 3d43 Feb 11  1995 integer.e
[generic]                  361     636  56.8% -lh5- 3ccc Feb 11  1995 integer.m
[generic]                 1018    2601  39.1% -lh5- dea9 Feb 11  1995 sortobj.e
[generic]                  352     916  38.4% -lh5- 3c3a Feb 11  1995 sortobj.m
[generic]                 3260    7527  43.3% -lh5- 6bc0 Feb 11  1995 sortobj.readme
[generic]                  738    1682  43.9% -lh5- 19c6 Feb 11  1995 string.e
[generic]                  578    1202  48.1% -lh5- 6382 Feb 11  1995 string.m
[generic]                 2357    5840  40.4% -lh5- afee Feb 11  1995 test
[generic]                  511    1447  35.3% -lh5- 23f3 Feb 11  1995 test.e
---------- ----------- ------- ------- ------ ---------- ------------ -------------
 Total        11 files   11205   27163  41.3%            Feb 13  1995
Page generated in 0.01 seconds
Aminet © 1992-2024 Urban Müller and the Aminet team. Aminet contact address: <aminetaminet net>