You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Jessica James a6896899aa Some cleanup 6 years ago
build Some cleanup 6 years ago
src Some cleanup 6 years ago
.gitattributes Initial Commit 10 years ago
.gitignore Added `cmake_vs17.bat` for convenience 6 years ago
CMakeLists.txt Added `cmake_vs17.bat` for convenience 6 years ago
CONTRIBUTING.md Update CONTRIBUTING.md 9 years ago
LICENSE Update LICENSE 9 years ago
README.md Create README.md 10 years ago

README.md

Jupiter

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. Jupiter has been used to expediate the production of numerous projects ranging from ZIP code verifiers, to game administration systems.

Strings

Jupiter contains several efficient string implementations, all of which have the simple goals of simplifying string management and boosting performance. 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.

"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

Jupiter includes a Socket wrapper, allowing for simple interaction with sockets, while eliminating all of the platform-dependant code. Jupiter sockets are also IP agnostic, allowing for compatibility with IPv4, IPv6, and whatever the future may hold.

Secure Sockets

Jupiter also supports SSL/TLS, using the OpenSSL library, which is the only external code Jupiter depends on. The SecureSocket implementation simplifies usage of SSL, and easily allows for non-SSL sockets to switch to SSL after initialization using C++11 move constructor.

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. Plugins can do as little as adding a console command, or as much as creating a game administration system.

Events:

  • think()
  • OnRehash()
  • OnBadRehash()
  • shouldRemove()
  • OnConnect()
  • OnDisconnect()
  • OnReconnectAttempt()
  • OnRaw()
  • OnNumeric()
  • OnError()
  • OnChat()
  • OnNotice()
  • OnServerNotice()
  • OnCTCP()
  • OnAction()
  • OnInvite()
  • OnJoin()
  • OnPart()
  • OnNick()
  • OnKick()
  • OnQuit()
  • OnMode()
  • OnThink()

Pure Virtual Functions:

  • getName() - Returns the name of the plugin.