Our “Ready to customize” SOFTWARE solution
NEXVISION offers a growing family of off-the-shelf software solutions through our class path brain.
ClassPath functions Describtion
1. Base modules
(All other functions depends on these base modules)
- Circular buffers : A simple two head and size limited buffer AKA circular/ring buffer
- HashTable : A policy based and highly optimized hash table that also supports an iterative interface
- SizeLimitedQueue : A multithread specialized queue with empty and full events
- Queue : A multithread specialized unlimited size queue with empty events
- Array : A highly optimized plain basic order-keeping array for storing copy constructible and plain old data objects
- IndexList : A highly optimized pointer based order-keeping array for storing any object
- ChainedList : A highly optimized double-linked list
- Algorithms : Search and sort above containers with the most efficient implementation possible
- FIFO/LIFO : An efficient stack class with FIFO or LIFO component
- Bitstream : A bitstream specialized stack that buffers a bitstream and provide a convenient interface to extract bits from it optionally applying processing (decryption) on it.
- UTF-8 String : A very capable UTF-8 specialized String class (with RegEx, Fluent interface, Type conversion, Semantic convertion, etc.)
- Unicode String : A simple wchar_t based string class that can convert to/from UTF-8 string class
- ReadOnly String : A read only class that’s very efficient for parsing with a fluent interface
- StringArrays : A array like interface for strings, with spliting and joinning à la Python.
- BoyerMoore : A text searching class using BoyerMoore/TurboBoyerMoore for unknown text.
- TernarySearchTree : A very efficient string searching tree O(log N) for dictionnaries with approximate searching functions (Levenshtein, Hamming, etc.)
- AVL : A self balanced binary tree where operations are all O(log N)
- NTree : A hierarchical tree with any number of children per node. Used in DOM implementation
- Rtree : A structural tree base for geographical information system storage
- Zlib : Zlib based compressor and decompressor
- Gzip : Gzip based compressor and decompressor
- EBSC : BSC based compressor and decompressor (BSC behaves faster and better than LZMA)
1.6.1 Asymmetric algorithms
- RSA : A mathematically correct RSA implementation (no optimizations)
- DSA : A mathematically correct DSA implementation (no optimizations)
- OAEP PKCS : OAEP implementation for padding messages
- OSSL_RSA : RSA implementation that makes use of system’s OpenSSL library
- OSSL_DSA : DSA implementation that makes use of system’s OpenSSL library
- OSSL_RSASign : RSA signature implementation that makes use of system’s OpenSSL library
- OSSL_ECIES : Elliptic curves based asymmetric cryptography using system’s OpenSSL library
- OSSL_ECDSA : Elliptic curve DSA implementation that makes use of system’s OpenSSL library
- OSSL_ECDH : Elliptic curve Diffie Hellman implementation for secret exchange that makes use of system’s OpenSSL library
1.6.2 Symmetric algorithms
- AES : A mathematically correct AES implementation (official code implementation)
- OSSL_AES : An AES primitive using system’s OpenSSL library
1.6.3 Hashing
- Adler32 : Adler32 checksum that also support rolling checksum interface
- CRC16/CRC32 : Classical CRC algorithm
- MD5 : Classical MD5 hashing algorithm
- SHA1/SHA256 : SHA hashing functions (160 bits for SHA1, 256 for SHA256)
- HMAC : A template based HMAC class that can HMAC with any hashing primitive
- KDF/PBKDF1/PBKDF2 : Key derivation functions (password based) that can use any hashing primitive.
1.6.4 Random
- MersenneTwister : A pseudo random generator based on MersenneTwister, collecting true entropy from the Hardware scanner
1.7.1 InputStream Input streams provide an abstracted and common interface to handle all kind of source data
- ForwardInputStream : Used for wrapper streams class
- RangeInputStream : A range limiter input stream
- StdInStream : A stream based on the standard input file descriptor (STDIN)
- LineBasedInputStream : A wrapper that allow reading an input stream line by line
- InputFileStream : An input stream whose source is a file
- InputStringStream : An input stream whose source is a string
- MemoryBlockStream : An input stream made from a pre-allocated memory buffer
- MemoryBufferedInputStream : An input stream wrapper that’s completely reading the given input stream in a memory buffer for caching
- SuccessiveStream : An input stream that’s reading from 2 input streams successively
- Base64InputStream : An input stream that’s decoding Base64 data on the fly
- AESInputStream : An input stream that’s decoding AES encrypted data on the fly
- SocketInputStream : An input stream that’s reading from a socket
- BufferedInputStream : An input stream that’s reading the given input stream block by block
- DecompressInputStream : An input stream that’s decompressing data on the fly
1.7.2 OutputStream Output streams provide an abstracted and common interface to handle all kind of source data
- OutputFileStream : An output stream that writes to a file
- OutputStringStream : An output stream that’s filling a string
- OutputMemStream : An output stream that’s filling a MemoryBlock
- MemoryBlockOutStream : An output stream that’s filling a pre-allocated memory buffer
- MemoryBufferedOutputStream : An output stream wrapper that’s filling a memory buffer and then write to the given output stream
- NullOutputStream : An output stream that just keeps track of the amount written, but does not write anything
- TeeStream : An output stream that duplicate its action on two output streams
- Base64OutputStream : An output stream that’s encoding in Base64 on the fly
- AESOutputStream : An output stream that’s encoding AES encrypted data on the fly
- HashStream : An output stream that’s computing a Hash on the fly while still writing to an output stream
- SocketOutputStream : An output stream that’s writing to a socket
- CompressOutputStream : An output stream that’s compressing data on the fly
- HeaderBodyStream : An output stream based on a memory buffer for an fixed size header and a output stream for data, that allow out-of time write to the header after data is written.
1.8.2 BoundingBox/FlatRectangles/Point : Basic N-Dimension primitives
1.8.3 Rtree : Efficient geographic specialized storage structure
1.8.4 LongNumber : Unlimited precision number
1.10.2 SQLite : A Database driver for SQLite3
1.10.3 MySQL : A Database driver for MySQL
1.10.4 Query based interface : A compile-time based statement construction with automatic prepared statement for safe database usage
1.10.5 Constraints : A constraint based view on database area that automatically sync itself
1.11.2 Time/Duration : A common interface for Time parsing, conversion from different timezone (localtime, including time correct DST consistency)
1.11.3 Chrono : A very accurate Chrono
1.11.4 ScopeProfiler : A scope based profiler that allows profiling code per function / per scope with and without accumulation
1.12.2 Lock/Event/RWLock : Basic synchronization primitive (shared code section locking, event mechanism, read / write locks)
1.12.3 Atomic classes : Atomic class that makes use of C++ compiler features if available, else defaults to compiler intrinsics, and finally to OS’s functions
1.12.4 Jobs : A job based scheduler that runs in its own thread
1.12.5 AsyncThread : Easy to use asynchronous « call me later » primitive
1.12.6 TimerThread : A best effort time based scheduling thread with callbacks
1.13.2 Xpath : A complete Xpath processing engine
1.13.3 FastExtract : Extract information from XML by compile-time base searching in a XML tree
1.14.1 Common primitives
- BaseAddress/IPV4/IPV6/URL/UDT : Provides a common and class specific interface for Network address manipulation with complete support for routing table querying, ARP, DNS, etc
- BaseSocket/BerkeleySocket/SSLSocket : Provides a common interface for Network socket functions with safe and easy to use interface.
- BaseConnection/Stream/PseudoStream/Datagram : Abstract away differences from the underlying sockets to focus on the application solutions
- Detection : Detect devices on the network either by using UPNP, NATPMP, MulticastDNS, Multicast broadcasting
- NAT : NAT passthrough technics
- Pools Cross platform : pool of sockets polling system that makes use of the best OS primitives
1.14.2 Clients
- HTTP : A HTTP1.0/1.1 compatible client with full feature support, including manual and automatic session management
- AsMuchAsYouCan : A proof of concept read as much as possible client
- Authentication : A authentication based client
- FTP : A FTP client
- PTZ : A pan tilt zoom abstract interface client for IP camera with PTZ functionality
- RTSP/RTP : A real time streaming server compatible client with clean and easy to understand interface
- SMTP : A SMTP client for sending emails
- SDP : A session description protocol compatible client
- MIME : A MIME parsing compatible client
- SOAP : A SOAP compatible client to connect on SOAP services
- Websocket : A websocket compliant client
- OnVIF : OnVIF compliant client
- Fetcher : An abstraction on stream fetching client (can be via HTTP/Multipart, RTSP/RTP, RTPoverRTSP, File, etc…)
- Recorder : An abstraction on stream recording capabilities (to .MP4/.MJPG/.NVF files)
1.14.3 Servers
All servers support both monothread (via polling) and multithread interfaces
- HTTP : A full feature complient HTTP server
- EventHTTP : A event base HTTP server
- Websocket : A websocket capable server that can reuse the client from an EventHTTP servers
- WSDiscovery : A WS-Discovery server that broadcast the service on the network.
- RTSP/RTP : A RTSP compliant server
- SDP : A session description protocol compatible service for RTSP server
1.15.2 DOM : A DOM 2.0 compliant interface
1.15.3 XMLSession : A XML processing engine that can simulate user browsing to a given website, posting forms, and extracting data
1.16.2 AAC/MP3 : Demuxer for these codecs used in the streaming clients and servers.
1.16.3 MPEG4 layer 2 (file parser) : A MPEG4 archive parser
1.16.4 Bitratestats : Bitrate statistics
1.17.2 Platform : A cross platform implementation of platform specific features (like dynamic library loading, etc…)
1.19.2 Scanner : A very fast, callback based directory scanner with filtering capabilities
1.19.3 DirectoryIteractor : An iterator for enumerating files in a directory
1.19.4 Async/Stream/Pool : A block and asynchronous file reading and writing classes with pool capabilities
1.19.5 Metadata extractor : A file metadata extractor that can be combined with FFMPEG to get additional information about files
1.20.2 PDF : A PDF object reader format
1.20.3 EPUB : An EPUB file reader class
1.21.2 PNG : An optimized for size PNG decoder and encoder
1.22.3 PPM/PBM/PGM : A Netpbm decoder and encoder
1.22.4 Image : A very simple and fast Image processing class
1.22.5 Colour : A multiple colourspace capable colour processing class
1.22.2 File : File bases logging
1.22.3 Structure file : File based logging with structure so it can be searched easily
1.22.4 Debug : A debug console based logging
1.23.2 Units : A template based unit system for compiletime checked mathematical and physical equations
1.23.3 Value : A template based unit system for compiletime checked mathematical and physical equations
1.23.4 Expression : A mathematical expression parser with scope definable functions
1.23.5 Variant : A true type safe variant class with elegant heap/stack storage based on the stored type
1.23.6 JSON : A JSON compliant parser and writer
1.23.7 DynObj : A dynamic object class with an elegant interface that allows runtime based code modification
1.23.8 UUID : A UUID compliant parsing class
1.23.9 UniversalTypeIdentifier : A registry for type to allow dynamic type conversion based on pseudo XML implementation
1.25.2 ScopePtr : A scope based pointer class
1.25.3 OwnPtr : A owned modifiable pointer class
1.25.4 RefPtr : A reference counter pointer class (deprecated)
1.25.5 Dump : A hexadecimal dumper for debugging
1.26.2 Callstack dump : A callstack dumping feature
1.26.3 TypeOf : Return a textual representation of a type available even when compiled without RTTI
1.26.4 Assert / CompileTimeAssert : Runtime and compiletime based assertions checking
1.27.2 Translate : A very optimized translation macro and function for string conversion based on external file resource
Check also our Electronic module architecture HW & IP Core FPGA libraries.