Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
Todo List
File cAVSink.h
proper define/use terms for whole stream vs 1 channel.
File cClientAddrObj.cpp
cClientAddrObj
File cDXGPUStream.h
merge with similar cDXVertexBatch ??
File cFtpClient.cpp
cFtpClient
File cGridArray.h
cGridArray Scroll
File cJobThread.h
Sort cJobThread array by time
File cJobThreadSeq.h
Sort cJobThread array by time
File cJobThreadSet.h
Sort cJobThread array by time
File cJSONWriter.cpp
Complete cJSONWriter.
File cMailPop3Client.h
Get Mail from a POP3 mail server.
File cModel.h
A format/render independent model storage definition.
File cRegion.cpp
FIX cRegion rects Optimize
File cSSL.h
http://en.wikipedia.org/wiki/Transport_Layer_Security
File cSSLChannel.h
http://en.wikipedia.org/wiki/Transport_Layer_Security
File cTaskProfiler.cpp
calculate cTaskProfiler time spent per thread only. subtract out time i was preempted.
File cThreadLockRW.cpp
cThreadLockRW
File cThreadLockRW.h
cThreadLockRW
File cThreadQueue.h
A Thread lockable cStreamQueue.
File cTypeInfo.h
cTypeInfo
Namespace Gray
http://stackoverflow.com/questions/1158374/portable-compare-and-swap-atomic-operations-c-c-library
Class Gray3D::cModelXMaterial
Sound this material would make if walked on ? friction, etc.
Member Gray3D::UNITTEST2_CLASS (cModel)
cModel::UnitTest
Class Gray::cAppState
What desktop/session is this app and user attached to?
Member Gray::cArraySortFacade< TYPE, TYPE_PTR, TYPE_KEY >::IsValidIndex (ITERATE_t i) const noexcept
RENAME THIS. Don't overload IsValidIndex. Make IsValidAt() ?
Member Gray::cIniFile::ReadIniStream (cStreamInput &s, bool bStripComments=false)
USE cIniSectionData::ReadSectionData() ??
Member Gray::cMem::IsValid (const void *pData, size_t nSize=1, bool bWriteAccess=false) noexcept
make a faster (less thorough) version of this ?
Member Gray::cMem::IsValidFailHandler (int nSig)
make s_CMem_IsValidFailJmpBuf thread safe.
Class Gray::cOSModImpl
Support _WIN32 DLL_THREAD_ATTACH and DLL_THREAD_DETACH ? Similar to MFC AFX_EXTENSION_MODULE DLLModule or CAtlDllModuleT This might have a corresponding cXObjModulePtr. cIUnkPtr can be used alternatively.
Class Gray::cOSModule
Get module footprint info. how much memory does it use?
Member Gray::cOSModule::CheckModuleTypeFile (const FILECHAR_t *pszPathName)
linux must check the MIME type on the actual file.
Member Gray::cPair< _TYPE_A, _TYPE_B >::FindSortedARetB (_TYPE_A a) const noexcept
binary search?
Member Gray::cQueueStatic< TYPE, _QTY >::ReadQty (TYPE *pBuf, ITERATE_t nCountMax)
use CopyElements?
Class Gray::cRefPtr< TYPE >
something like USE_IUNK_TRACE ??
Member Gray::cSingleton< TYPE >::get_Single ()
use CreateObject from cObjectFactory Like the MFC CreateObject() and "CRuntime?"
Class Gray::cThreadLockRW
cThreadLockRW cheap RW declaring thread locking mechanism. Recursive and upgradeable (i.e. i can start with read and upgrade to write permissions on the same thread) Only one thread may write lock something. multiple read locks may be released out of order, i.e first read locker releases with other readers = unknown read thread. similar to : Linux thread locking pthread_rwlock_wrlock()
Class Gray::cThreadLockRWS
cThreadLockRW NOT complete similar to https://msdn.microsoft.com/en-us/library/windows/desktop/aa904937(v=vs.85).aspx e.g. InitializeSRWLock()
Member Gray::cTimeDouble::GetTimeSpanStr (double dDays, TIMEUNIT_TYPE eUnitHigh=TIMEUNIT_Day, int iUnitsDesired=2, bool bShortText=false)
MERGE THIS WITH cTimeUnits::GetTimeSpanStr version?!
Member Gray::cTimeParser::ParseString (const GChar_t *pszTimeString, const GChar_t *pszSeparators=nullptr)

parse odd time zone storage . (-03:00)

parse odd time zone storage . (-03:00)

Class Gray::cTimeZoneMgr
Manage dynamic list of TZ from file or db.
Class Gray::cTypeInfo
cTypeInfo List of virtual members from vtable.
Member Gray::cTypeInfo::GetMemberName (int i) const
Get List of members.
Member Gray::HResult::AddCodesDefault ()
get rid of these in favor of dynamic loading of s_HResult_CodeSets from file.
Member Gray::HResultCode::FindCode (HRESULT hRes) const
ASSUME codes are sorted ?
Member Gray::StrFormat< TYPE >::FormatV (TYPE *pszOut, StrLen_t nLenOutMax, const TYPE *pszFormat, va_list vlist)
Allow .NET style "{0}" format for strings.
Member Gray::StrNum::ToValArray (OUT _TYPE *pOut, size_t iQtyMax, const char *pszInp)
Merge with cMem::ReadFromString Similar to StrT::ParseCmds()
Member Gray::StrNum::ValArrayToA (OUT char *pszOut, StrLen_t nDstMax, const _TYPE *pSrc, size_t nSrcSize)
Merge with cMem::ConvertToString Write bytes out to a string as comma separated base 10 number values. Try to use SetHexDigest() instead. opposite of cMem::ReadFromString().
Member Gray::StrNum::ValArrayToAF (OUT char *pszDst, StrLen_t iSizeDstMax, size_t nSrcQty,...)
ValArrayToAF
Class Gray::StrX< TYPE >
GetTableElem move here.
Class GrayCodec::cAudioOpus
compress/decompress Opus audio. replaces Speex. https://en.wikipedia.org/wiki/Opus_(audio_format) Works well for encoding speech or music. Can do anything.
Member GrayFTP::cClientFTP::FindCmd (const CFTPCmd *pCmds, const char *pszCmd)
binary search ? StrT
Member GrayLib::cAppConfigSection::s_GetByName (const ATOMCHAR_t *pszPropName, OUT cVariant &vValRet)
use input vValRet to suggest type. Also act as default value.
Member GrayLib::cASNWriterRev::WriteTagInt (int iVal)
FIXME negative values DER format assumes 2s complement for numbers, so the leftmost bit should be 0 for positive numbers and 1 for negative numbers.
Class GrayLib::cATModem
cATModem
Class GrayLib::cAudioADPCM
Native compress/decompress ADPCM audio. Includes ALaw and MULaw code. https://en.wikipedia.org/wiki/Adaptive_differential_pulse-code_modulation An ADPCM algorithm is used to map a series of 8 bit µ-law (or a-law) PCM samples into a series of 4 bit ADPCM samples. In this way, the effective (dynamic range) capacity of the line is doubled. The technique is detailed in the G.726 standard. WAVE_FORMAT_ADPCM, WAVE_FORMAT_ALAW, WAVE_FORMAT_MULAW, WAVE_FORMAT_DIGIADPCM
Member GrayLib::cAVIFileIndex::FindFrame (RIFF_SIZE_t dwChunkOffset) const
cAVIFileIndex::FindFrame.
Member GrayLib::cAVStreamInp::ProcessStreamPacket ()
Can we assume m_pStreamInput is really cStreamQueue ?? avoid double buffer ?
Class GrayLib::cClientAddrObj
Expose a cNetAddrTracker that may be stored and accessed via the scripting system
Member GrayLib::cECPGroupParams::SetCopyECP (const THIS_t &rSrc)
SetCopyECP
Member GrayLib::cFFT::cFFT (BIT_ENUM_t iLengthBits, bool bAutoScale=true)
Fix this to be calculated on demand for any window size. based on cValueCurve?
Member GrayLib::cFLVFileReader::ReadFrame (const cFLVTag &tag)
handle compression format change mid stream.
Class GrayLib::cFontMgr
cFontMgr
Class GrayLib::cFtpClient
Fix cFtpClient.
Member GrayLib::cHttpFactory::OnVerbFactory (cHttpProtocolStreamBase *pClient, const cHttpHeaderClient &request, cStringA sURLReq="")
Sort m_aControllerTypes?
Member GrayLib::cHttpProtocolStreamBase::ServePageStream (cHttpHeaderServer &Head, cStreamInput *pInp)
send HTTP compressed or chunked ?
Member GrayLib::cJobThreadMgr::ScheduleJob (cJobBase *pJob, TIMESYSD_t mSecDelay)
FIX ScheduleJob
Class GrayLib::cKeyRSA1
read and write CKeyRSA as .key or .pem files.
Member GrayLib::cMailMessage::CheckValidMessage () const
call CheckValidEmailAddressFormat ?
Class GrayLib::cManifestElemData
use a more advanced hash code for file instead of CRC or make it optional ???
Class GrayLib::cManifestRoot
? place all manifests in a single directory off root ?
Class GrayLib::cMKVFile
http://en.wikipedia.org/wiki/Matroska Royalty free, non patented format. Supported in windows 10.
Class GrayLib::cNetAddrMgr
block a range of addresses.
Class GrayLib::cNetServer
support UDP based protocols.
Class GrayLib::cRandomPerlinBase
use IRandomBase* ? instead of g_RandFloat directly?
Member GrayLib::cSQLStatement::ExecuteAndFetch (cSQLDatabase *pDatabase, cSQLCmd &oCmd, cExceptionHolder *pExceptionRet=nullptr)
Support Asynchronous response from query/command? Assume a FetchNext() will be called next if there are MORE expected results. (NOT insert or delete)
Member GrayLib::cSurfaceBase::GetPixColorRef (const void *pvLine, PIXELS_t x) const
Use cColorConv
Member GrayLib::cSurfaceBase::SetPixColorRef (void *pvLine, PIXELS_t x, COLORREF c)
Use cColorConv
Member GrayLib::cSurfaceBase::SetPixelData (const cSurfaceBase &rSurfSrc)
for each pixel in the new surface, it is potentially a average with its 4 neighbors. ??
Class GrayLib::cSurfaceDiff
Compute the rectangles of change from one surface/image to the next.
Member GrayLib::cSurfaceDiff::ComputeDiff (const cSurfaceBase *pOrig, const cSurfaceBase *pNew)
Get dirty rectangles indicating diff between to surfaces.
Member GrayLib::cSurfaceIcon::WriteStream1 (cStreamOutput *pFile) const
Write MIME_EXT_ico file.
Member GrayLib::cSyncContext::SyncDirPackage (cStringF sPathLocalDir)
fix this->m_pProgress
Class GrayLib::cThreadQueue
A Thread lockable cStreamQueue.
Member GrayLib::cUID::m_nUIDValue
Get/Put string. UID_t is usually a hex string starting with 0.
Member GrayLib::cVariant::SetArray (const ATOMCHAR_t **ppArgs, ITERATE_t iArgQty, ITERATE_t nQtyAppend=0)
VARTYPE_Vector3 ??
Member GrayLib::cVarMap::MakeKeyNameRef (const ATOMCHAR_t *&pszKey, bool bMustExist, bool bAllowDots)
If it is an array then correct for that. [] = (empty brackets) use the first empty spot.
Member GrayLib::cWaveFileWriter::OnFrame (const cAVHeaderFrame &head, const void *pData, size_t nSizeData) override
cWaveFileWriter::OnFrame
Member GrayLib::cX509Crt::VerifyCrl (const cX509Crt *pCrtCA, const cX509Crl *pCrl) const
if no CRL is present? Revocation state should be unknown ?
Member GrayLib::cX509Crt::VerifyKeyUsage (X509_KeyUsage_TYPE usage, bool bEndpointIsServer) const
m_nNSCertType ?
Member GrayLib::cXmlEntity::EncodeString (const cXmlString &sInp, cXmlString sPrefix="")
Allow "&#nnnn;" decimal format encode ?
Member GrayLib::INPUTKEY_TYPE
Similar to WIN32 VK*. MERGE THESE.
Member GrayLib::UNITTEST2_CLASS (cFFT)
Test FFT
Member GrayLib::UNITTEST2_CLASS (cFLVFileReader)
set proper timing.
Member GrayLib::UNITTEST2_CLASS (cWaveFile)
NOT WORKING.
Member GrayLib::UNITTEST2_CLASS (cSyncDir)
test if local and remote have a time differential. Write a test file and give it a time stamp. see if it holds.
Member GrayLib::UNITTEST2_CLASS (cHexahedron)
cHexahedron UnitTest
Member GrayLib::UNITTEST2_CLASS (cTimeSchedule)
UnitTest cTimeSchedule
Member GrayLib::UNITTEST2_CLASS (cTextLocMgr)
UnitTest cTextLocMgr. use g_Text ?
Member GrayLib::UNITTEST2_CLASS (cBigInteger)
Test cBigInteger
Member GrayLib::UNITTEST2_CLASS (cNetHostRanges)
FIXME . This is not working.
Member GrayLib::UNITTEST2_CLASS (cScriptableEventsMask)
UnitTest cScriptableEventsMask
Member GrayLib::UNITTEST2_CLASS (cJobThread)
FIX cJobThreadMgr
Member GrayLib::UnitTestAVBuilder (cAVBuilder &av, float fFrameRate, IVideoCompress *pVideoComp)
take default wave input device and compress out to m_pAVSink as well.
Class GraySQLite::cSQLiteColumn
merge this back into cSQLiteStatement ??
File SSLTypes.h
http://en.wikipedia.org/wiki/Transport_Layer_Security