Code Monkey home page Code Monkey logo

realbasic-common-kfs-bsd's Introduction

This is the REALbasic Common KFS BSD library.

LIBRARY CONTENTS

The purpose of this repository is to provide additional classes and functionality to the REALbasic language.  This library is setup as a GUI application, where the library code is in the Common folder.  The purpose of the library application is to run the library's unit tests.

In addition to some individual useful functions, this library also contains the following classes and frameworks:

  - AutoDeletingFolderItemKFS - A FolderItem that automatically deletes itself when nothing else references it.

  - AutoreleaseStubKFS - A simple class that executes a given delegate when it get deallocated.  Can greatly simplify cleanup code in some cases.

  - BigStringKFS - A String class that automatically swaps to disk with large strings, and seamlessly works with Strings, BinaryStreams, MemoryBlocks, and FolderItems.

  - ClosuresKFS - A class that generates closures around delegates.

  - DataChainKFS - A simple class that adds stack and queue functionality.

  - DurationKFS - A class that represents a measure of time accurate to microseconds and with a ceiling of a few hundred centuries.

  - DeletePoolKFS - A class that deletes things asynchronously.

  - LinearArgDesequencerKFS - A class that assists in parsing command-line arguments.

  - MainThreadInvokerKFS - A class that invokes a delegate in the main thread.

  - NodeKFS - Not much more than a data structure that aids in creating other data structures.

  - ProgressDelegateKFS - A class that allows for easy calculation of overall progress in hierarchal or parallel algorithms.

  - PropertyListKFS - A class similar to the Dictionary except that it is designed for trees of data.

  - UnitTestArbiterKFS, UnitTestBaseClassKFs, UnitTestExceptionKFS, UnitTestWindowKFS - A unit testing framework for REALbasic.


REVISION USAGE

In this library, the revision tags are used to specify how much of a change occurred between any two revisions.  Revisions can have up to 3 segments.  If the third segment changes, then something very basic changed, and you will likely be able to update to the newer revision without modification of your own code.  If the second segment changes, then the usage or behavior of something changed.  Depending on the situation, you might or might not need to update code in the parent project.  If the first segment changes, then a file was added or deleted in the library, and you will need to re-add the library to your project.


REPOSITORY USAGE

If you would simply like a copy of the library, and do not want version control, then simply open up the library application, and copy-and-paste the entire "Common" folder from the library's project tab into your project.  It might then be useful to rename it to something memorable, like RB Common KFS BSD.

If you would like to use this library in conjunction with version control, then you should know that this library is designed to be used with a host project that is saved in REAL Studio's Version Control format.  The following command should successfully add this repository as a submodule in your repository, assuming you are using Git:

  git submodule add git://github.com/andrewkeller/REALbasic-Common-KFS-BSD.git "Libraries/RB Common KFS BSD"

Once this library has been successfully cloned, simply drag the entire Libraries folder into your project (or just the RB Common KFS BSD folder, if you already have another library).  Then, in the project editor, inside the RB Common KFS BSD folder, delete everything except the Common folder.  Your project editor should now look something like this:

  Project Editor
  |
  |- Foo.rbres
  |- Foo.rbvcp
  |- Local/
  |  |- App.rbbas
  |  |- Build Automation.rbbas
  |  |- MenuBar1.rbmnu
  |  |- Window1.rbfrm
  |
  |- RB Common KFS BSD/
     |- Common/
        |- Lots
        |- And
        |- Lots
        |- Of
        |- Classes

At this point, you should have full access to the whole library from your main project.  See http://kellerfarm.com/life/rbvcp/ for a more detailed article on this approach to using libraries with REAL Studio.

realbasic-common-kfs-bsd's People

Contributors

andrewkeller avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

realbasic-common-kfs-bsd's Issues

BigStringKFS should drop support of SwapGlobalsKFS

The AutoDeletingFolderItemKFS class has the ability to replace the SwapGlobalsKFS module. One of the features of the AutoDeletingFolderItemKFS class is that you don't need to consciously support it - it just works - so that means that the change to the BigStringKFS class is only to drop support of the SwapGlobalsKFS module.

The BigStringKFS class is the last thing to use the SwapGlobalsKFS module. Separately, the SwapGlobalsKFS module is the last thing to use the Logging framework. So, with this one change, we can finally depreciate the last of the old buggy code written before this library was created.

DescriptionKFS needs test cases.

No test cases currently exist for the DescriptionKFS method (part of BSDGlobalsKFS_String).

Don't forget its counterpart, ObjectDescriptionKFS.

Add DCR Support

It would be nice if there was a framework for supporting Database Change Requests (DCRs).

Optimal functionality:

An ordered set of DCRs should be able to be applied to a database just like a set of commits is applied to a working tree. This should work with both existing databases and with a database that contains literally nothing.

An existing database should be able to be compared to an ordered set of DCRs, and the version of the database schema (and possibly data) should be able to be determined relative to a position in the set of DCRs.

Compiler warnings should be minimized.

When analyzing the project for errors or warnings, the number of warnings found should be minimized, so that the list isn't so long that you just ignore it.

At the time of writing this, there are 64 warnings. I'm not weeding through that list to find specific items.

Open Item: Which warnings should be enabled while gauging the number of warnings? All of them, or the default set?

EqualsKFS needs maintainance.

The EqualsKFS function (part of BSDGlobalsKFS_FileIO) uses deprecated methods to do its work. It should be updated to work without using deprecated methods.

Deprecate the Logging Framework

The logging framework is known to have some pretty significant bugs, and so many of my programming paradigms have changed since I wrote that code that fixing the bugs might result in a complete rewrite of the framework.

Since nothing besides the SwapGlobalsKFS module (which is scheduled for deprecation) uses the Logging Framework, I say we deprecate the Logging Framework.

Deprecate SwapGlobalsKFS

The AutoDeletingFolderItemKFS class does almost exactly the same thing as the SwapGlobalsKFS module, except that it takes less effort to be functionally perfect.

On top of this, deprecating the SwapGlobalsKFS module would allow us to deprecate the Logging Framework.

TypeDescriptionKFS needs test cases.

No test cases currently exist for the TypeDescriptionKFS method (part of BSDGlobalsKFS_String).

Don't forget its counterpart, ObjectTypeDescriptionKFS.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.