Rob Fahrni

Follow @fahrni on Micro.blog.

HSKit - Multi Platform C++

Duct Tape, fixer of all things!So far my – for personal use only, Cocoa inspired – framework is coming along. It’s not like I haven’t done some of these types of things in the past.

Cocoa Inspired Classes

  • HSString
  • HSArray
  • HSDictionary
  • HSThread

Of the classes above HSThread is not yet complete. It may become something like HSOperation. I’m not sure yet. Grand Central Dispatch is so good I could see using it under the hood. I could also go with modern C++ thread support. Which might be the easiest way to get my threading for any platform. We’ll see.

The String, Array, and Dictionary classes are working just fine. Complete with unit tests.

For the String class I’d like to add sub string finding and a split method. I’d imagine it will expand as I continue using it.

Not Cocoa

  • HSDatabase
  • HSResultSet
  • HSRef

The database and result set classes were inspired by the great FMDB.

HSRef is a smart pointer implementation. Used throughout the library.

These classes are mostly complete and what has been completed is fully unit tested.

Interfaces

Remember in C++ they’re interfaces, not protocols.

  • Enumerator
  • Database
  • Collection

Enumerator and Collection are used for HSArray and HSDictionary. Which, until a change is necessary, both use the same base class that uses a linked list for storage. If/when it becomes too inefficient to use I’ll change to something else. For my needs, it’s fine.

What’s Missing

Still need networking and parsing for HTML, XML, JSON. Which will lead to RSS, OPML, and JSON feed parsing.

Then Stream C++ models and view models will layer on top of those.

The framework code is currently building and unit tested on macOS. I’ll get everything running on Windows next.

Closing Thought

Will write C/C++ for foodRemember, this framework is purpose built to serve the needs of the underpinnings necessary to build a cross platform Stream. So, yes, it is definitely going to be missing stuff. A lot of stuff.

In the end I’m a bit undecided on what direction to go for the UI. On Apple platforms will I go UIKit and AppKit or SwiftUI? On Windows is it going to be all C++ or will I use C#? On Windows I am definitely building for Windows 11 using WinUI 3.

I figure this is going to take quite a while to complete. I need to get Stream for Mac out the door and do some more features, across the board, for both.