Update CLAUDE.md, .gitkeep, Server.pb, and 11 more files
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
|
||||
|
||||
XIncludeFile "../../Commons/HashMap/HashMap.pbi"
|
||||
|
||||
Structure YassObject
|
||||
|
||||
Id.s
|
||||
Type.s
|
||||
|
||||
EndStructure
|
||||
|
||||
Macro YassObjectPtr : i : EndMacro
|
||||
|
||||
; Returns the raw value with its surrounding double quotes removed.
|
||||
Procedure.s UnquoteValue(Value.s)
|
||||
ProcedureReturn Trim(Trim(Value), #DQUOTE$)
|
||||
EndProcedure
|
||||
|
||||
Procedure FreeYassObject(*Object.YassObject)
|
||||
FreeStructure(*Object)
|
||||
EndProcedure
|
||||
|
||||
; Returns a newly allocated YassObject, or #Null if the file can't be opened or lacks core values.
|
||||
; The caller owns the returned object and must free it with FreeYassObject().
|
||||
Procedure.YassObjectPtr FromDefinitionFile(DefFilePath.s)
|
||||
Protected *Object.YassObject
|
||||
|
||||
; 1. Load Ini
|
||||
If Not OpenPreferences(DefFilePath)
|
||||
Debug "Failed to open definition file: " + DefFilePath
|
||||
ProcedureReturn #Null
|
||||
EndIf
|
||||
|
||||
; 2. Read "Object" group
|
||||
If Not PreferenceGroup("Object")
|
||||
Debug "Missing [Object] group in: " + DefFilePath
|
||||
ClosePreferences()
|
||||
ProcedureReturn #Null
|
||||
EndIf
|
||||
|
||||
; 3. Read core values
|
||||
*Object = AllocateStructure(YassObject)
|
||||
*Object\Id = UnquoteValue(ReadPreferenceString("id", ""))
|
||||
*Object\Type = UnquoteValue(ReadPreferenceString("type", ""))
|
||||
|
||||
If *Object\Id = "" Or *Object\Type = ""
|
||||
Debug "Missing 'id' or 'type' in: " + DefFilePath
|
||||
FreeYassObject(*Object)
|
||||
ClosePreferences()
|
||||
ProcedureReturn #Null
|
||||
EndIf
|
||||
|
||||
; 4. For each other group, iterate
|
||||
ExaminePreferenceGroups()
|
||||
While NextPreferenceGroup()
|
||||
If PreferenceGroupName() = "Object"
|
||||
Continue
|
||||
EndIf
|
||||
|
||||
; 4.1 For each value, Debug it
|
||||
ExaminePreferenceKeys()
|
||||
While NextPreferenceKey()
|
||||
If Left(PreferenceKeyName(), 1) = "#"
|
||||
Continue
|
||||
EndIf
|
||||
Debug PreferenceKeyName() + " = " + UnquoteValue(PreferenceKeyValue())
|
||||
Wend
|
||||
Wend
|
||||
|
||||
ClosePreferences()
|
||||
ProcedureReturn *Object
|
||||
EndProcedure
|
||||
Reference in New Issue
Block a user