Primarily developed in C++, Jupiter is an open-source omni-library initially intended for the purpose of creating IRC bots, but is by no means restricted to IRC bots.
Primarily developed in C++, Jupiter is an open-source multi-purpose library initially intended for the purpose of creating IRC bots, but is by no means restricted to IRC bots.
Jupiter has been used to expediate the production of numerous projects ranging from ZIP code verifiers, to game administration systems.
Jupiter has been used to expedite the production of numerous projects ranging from ZIP code verifiers, to game administration systems, to game leaderboards and web APIs.
## Strings
## Strings
Jupiter contains several efficient string implementations, all of which have the simple goals of simplifying string management and boosting performance.
Jupiter contains a number of deprecated string classes, which are deprecated in favor of std::string_view and std::string.
All of the string implementations are easily adaptable to data types other than simple characters. Adapting these implementations is as simple as a type definition.
These will be removed in the future, with any useful string utilities being replaced by equivalents in jessilib.
### "Loose" Strings
Loose strings (i.e: String_Loose or CString_Loose) grow by doubling their buffer size whenever they run out of buffer space, and generally allocate more space than needed. This allows for fast append() operations.
### "Strict" Strings
Strict strings (i.e: String_Strict or CString_Strict) always allocate the bare minimum amount of space necessary, in order to conserve memory. However, these still do not shrink their buffer size automatically, allowing for fast truncate() operations.
### Shift Strings
Shift strings allow shifting of the base position of a string, eliminating the need to generate substrings just to remove the beginning of a string.
### Reference Strings
A reference string is, as the name implies, a reference to a string. It contains no internal buffer, copies no data, and never modifies the base string. While you can shift the base of the string, or truncate elements from the end of the string, you can not modify the actual contents of the string.
These are useful not only for referencing string literals, but also for parsing data, as it entirely eliminates the need to constantly copy substrings just to operate on a single token.
## Sockets
## Sockets
Jupiter includes a Socket wrapper, allowing for simple interaction with sockets, while eliminating all of the platform-dependant code.
Jupiter includes a Socket wrapper, allowing for simple interaction with sockets, while eliminating all of the platform-dependant code.
@ -28,7 +15,7 @@ Jupiter also supports SSL/TLS, using the OpenSSL library, which is the only exte
## Plugins
## Plugins
Jupiter supports dynamic plugins, allowing for event-driven programming, without modifying the library. Plugins can easily be loaded and unloaded as a user desires. All plugins are rehashable, allowing for settings to be reloaded without a doing a full unload-load sequence.
Jupiter supports dynamic plugins, allowing for event-driven programming, without modifying the library. Plugins can easily be loaded and unloaded as a user desires. All plugins are rehashable, allowing for settings to be reloaded without a doing a full unload-load sequence.
Plugins can do as little as adding a console command, or as much as creating a game administration system.
Plugins can do as little as adding a console command, or as much as adding support for a protocol or creating a game administration system.