- Contents in this wiki are for entertainment purposes only
Vintage VB6
Jump to navigation
Jump to search
QuasiMatrix tertiary pair with a coincidentality-table supporting emergent computing
This is the VB6 header of the QuasiMatrix class —2023
'' File: quasiMatrix.cls '' Module name: clsQuasiMatrix w/big(0) access, plus category membership '' as the teriary data widget. '' '' Copyright XenoEngineer@groupKOS.com 2023 All rights reserved. '' '' Coding conventions: '' CSV delimitation is used with text data files. '' User defined data types (UDT) are used to organize all variables. '' UDT data types are passed by reference to private class functions '' as the first function parameter, emulating Lua-style receiver methods. '' '' * Config filespec is programmatically assigned as appname.cfg.ini. (Class_Initialize) '' * The data filespec (et al configuration) is restored from appname.cfg.ini. '' * Coding convention: lower-case property names of configuration values are not persisted between runtime by this class. Option Explicit ' Variable declaration required. Public Event mxInitialized(msg As String) Public Event mxLoaded(msg As String) Public Event mxStructured(msg As String) Public Event mxCombined(msg As String) Public Event mxProgress(ByRef msg As String) Public Event mxUnloaded(msg As String) '' Constants for default class property values '' Private Const DEF_FIELD_DELIMITER = "," ' CSV field delimiter Private Const DEF_ROW_DELIMITER = vbCrLf ' CSV row delimiter Private Const DEF_ROW_HEADER_NDX = 1 Private Const DEF_ROW_CHUNK = 1024 Private Const DEF_PAIRS_CHUNK = 256 Private Const DEF_AUTO_INIT = True Private Const DEF_AUTO_EXIT = True Private Const DEF_AUTO_LOAD = True Private Const DEF_AUTO_STRUCTURE = True Private Const DEF_AUTO_COMBINE = True Private Const DEF_AUTO_UNATTENDED = True Private Const DEF_DATA_FILESPEC_EXTANT = ".csv" Private Const DEF_ATOMS_COLUMN_NDX = 1 Private Const DEF_LINKS_COLUMN_NDX = 2 Private Type udtAutomation AutoInit As Boolean AutoLoad As Boolean AutoStructure As Boolean AutoCombine As Boolean AutoExit As Boolean Unattended As Boolean: End Type Private Type udtPerformance start As Long finish As Long lapsed As Long: End Type Private Enum enumMxStati '' Data processes '' enumMx0Uninitialized = 0 enumMx1Initialized = 1 enumMx2Loaded enumMx3Structured enumMx4AtomsLinksCombined End Enum '' Coding convention: Only upper-case property names of class variables are '' persisted between runtimes ( with storeMx() and restoreMx() ) '' Private Type udtMatrixNode '' Datum as a signed 32 bit integer (or a pointer to a data store of other data types) datum As Long '' Binary compared relationships greater As Long lesser As Long '' Trinary-equivalence natural-order relationships prev As Long next As Long '' Caching accelerators equivCount As Long ' Count cache increases per equivalence as an ordinal index of occurrence. first As Long last As Long End Type Private Type udtMatrix node() As udtMatrixNode ' Allocation-tests checks Ubound(data) nodeCount As Long End Type Private Type udtAtomLinkPair atom As Long link As Long End Type Private Type udtQuasiMatrix ' Class data storage and properties CfgFileSpec As String DataFileSpec As String FieldDelimiter As String ' Delimits fields within a text line, defaulting to CSV delimiters. RowDelimiter As String ' Delimits text lines of a CSV file. rowBuffer() As String RowHeaderNdx As Long rowCount As Long ' Taken from atom channel, synchronous with the link channel. RowChunk As Long ' Storage array allocation chunck size. Pairs() As udtAtomLinkPair PairsChunk As Long '' Data storage '' MXs() As udtMatrix mxCount As Long ' Set in loadMX '' Conjecture selections '' AtomsColumnNdx As Long LinksColumnNdx As Long tsstart As Long ' Time stamps. tsFinish As Long tslapsed As Long ' Duration of timer ticks from start to tsFinish. cancel As Boolean ' Checked intermittently during long iterations: Combinatoric generation per Atom-Link conjecture match. mxStatus As enumMxStati End Type Private mtQmx As udtQuasiMatrix ' Class UDT for the Prueitt Warehouse,renamed Matrix (of pointers), a pair of matrices support QAT analysis. Private mtAuto As udtAutomation ' Class automation functions for multi-step process flow control. Private mtPerf As udtPerformance ' Timer capture utility for timing performance. Public mtMsgs As VBA.Collection ' Process messages with public access
Win32 wrapper code for VB6
'' File: win32INI.bas '' Module name: modINI '' Author: XenoEngineer@groupKOS.com '' Posted August 9, 2023 at https://groupKOS.com/dev '' '' Description: This module wraps VB6 around Win32 API methods to save/retreive data to an INI file by keyword by section. Option Explicit Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Private Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long Private Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpApplicationName As String, ByVal lpString As String, ByVal lpFileName As String) As Long ' Loads the default variables from our private profile (INI file) Public Function INIGetBool( _ ByVal fileSpec As String, _ ByVal Section As String, _ ByVal Key As String, _ Optional ByVal Default As String = "0" _ ) As Boolean Dim szBool As String Dim lngLength As Long ' Load Boolean options szBool = String$(6, Chr(0)) lngLength = GetPrivateProfileString(Section, Key, Default, szBool, 5, fileSpec) szBool = Left$(szBool, lngLength) Select Case True Case Val(szBool) > 0, _ LCase(szBool) = "true", _ LCase(szBool) = "yes" INIGetBool = True End Select End Function Public Function INIGetInteger( _ ByVal fileSpec As String, _ ByVal Section As String, _ ByVal Key As String, _ Optional ByVal Default As String = "" _ ) As Long On Error Resume Next Dim szStr As String Dim lngLength As Long szStr = String$(256, Chr(0)) lngLength = GetPrivateProfileString(Section, Key, Default, szStr, 255, fileSpec) szStr = Left$(szStr, lngLength) If Val(szStr) > 0 Then INIGetInteger = CInt(szStr) Else INIGetInteger = 0 End If End Function Public Function INIGetString( _ ByVal fileSpec As String, _ ByVal Section As String, _ ByVal Key As String, _ Optional ByVal Default As String = "" _ ) As String Dim szStr As String Dim lngLength As Long szStr = String$(256, Chr(0)) ' Load szStr with the INI setting lngLength = GetPrivateProfileString(Section, Key, Default, szStr, 255, fileSpec) szStr = Left$(szStr, lngLength) INIGetString = szStr End Function Public Function INIGetSection( _ ByVal fileSpec As String, _ ByVal Section As String) As String() ' Gets the entire section of Name=Value lines as an array of ' string values of lines within the section of the INI file. Dim strBuffer As String On Error Resume Next ' Read the INI section into the buffer string strBuffer = String$(2048, " ") strBuffer = Left$(strBuffer, GetPrivateProfileSection(Section, strBuffer, Len(strBuffer), fileSpec)) strBuffer = Left$(strBuffer, Len(strBuffer) - 1) 'remove trailing null strBuffer = Replace(strBuffer, Chr$(0), vbCr) INIGetSection = Split(strBuffer, vbCr) End Function Public Sub INIDeleteSection( _ ByVal fileSpec As String, _ ByVal Key As String) Dim Result As Long Dim NullList As String NullList = Chr(0) & Chr(0) Result = WritePrivateProfileSection(Key, NullList, fileSpec) Debug.Assert Result <> 0 End Sub Public Function INIWrite( _ ByVal fileSpec As String, _ ByVal Section As String, _ Optional ByVal Key As String = "", _ Optional ByVal Value As String = "" _ ) As Long ' Writes or deletes Key and Value Select Case True Case (Len(Key) > 0) And (Len(Value) > 0) INIWrite = WritePrivateProfileString(Section, ByVal Key, ByVal Value, fileSpec) Case (Len(Key) > 0) 'delete key's value INIWrite = WritePrivateProfileString(Section, ByVal Key, vbNullString, fileSpec) Case Else 'delete entire section INIWrite = WritePrivateProfileString(Section, vbNullString, vbNullString, fileSpec) End Select End Function