From da87ec4993d71fd986e8c079f5fad5a355be83cd Mon Sep 17 00:00:00 2001 From: Ground0 Date: Thu, 21 Sep 2023 15:55:24 +0200 Subject: [PATCH] Initial imss Basic Module --- .gitmodules | 3 ++ imss.pb | 26 ++++++++++++ imss.pbi | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++++ lhs_lib | 1 + 4 files changed, 145 insertions(+) create mode 100644 .gitmodules create mode 100644 imss.pb create mode 100644 imss.pbi create mode 160000 lhs_lib diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..2d9d56c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "lhs_lib"] + path = lhs_lib + url = https://gitea.lihaso.com/PB_Includes/lhs_lib.git diff --git a/imss.pb b/imss.pb new file mode 100644 index 0000000..676f89c --- /dev/null +++ b/imss.pb @@ -0,0 +1,26 @@ +;*************************************************************** +;* +;* IMSS Sample +;* +;* (c) 2023 by Linder Hard- und Software +;* +;* GPL v2.0 Only +;* +;* +;*************************************************************** + +EnableExplicit + +Define MyUUID.s +XIncludeFile "imss.pbi" + +MyUUID = imss::Create() + +Debug "Database Created:"+MyUUID + +imss::Save(MyUUID, "TestName", "TestValue") +Debug "Test:"+imss::Get(MyUUID, "TestName") +imss::Del(MyUUID, "TestName") +Debug "Test:"+imss::Get(MyUUID, "TestName") +imss::Kill(MyUUID) +Debug "Killed" diff --git a/imss.pbi b/imss.pbi new file mode 100644 index 0000000..6731c2c --- /dev/null +++ b/imss.pbi @@ -0,0 +1,115 @@ +;*************************************************************** +;* +;* IMSS Main Module +;* +;* (c) 2023 by Linder Hard- und Software +;* +;* GPL v2.0 Only +;* +;* +;*************************************************************** + +EnableExplicit + + +DeclareModule IMSS + Declare.s Create() + Declare Save(UUID.s, ValueName.s, Value.s, UID.s = "", LockID = 0 , Lock = 0) + Declare.s Get(UUID.s, ValueName.s, UID.s = "", LockID = 0 , Lock = 0) + Declare Del(UUID.s, ValueName.s, UID.s = "", LockID = 0 , Lock = 0) + Declare DelUID(UUID.s, UID.s, LockID = 0 , Lock = 0) + Declare Lock(UUID.s, ValueName.s, UID.s = "", LockID = 0, Lock = 0) + Declare LockUID(UUID.s, UID.s, LockID, Lock) + Declare UnLock(UUID.s, ValueName.s, UID.s = "", LockID = 0 , Lock = 0) + Declare UnLockUID(UUID.s, UID.s, LockID, Lock) + Declare Kill(UUID.s) +EndDeclareModule + +Module IMSS + + IncludeFile "lhs_lib/SYS/lhs_uuid.pbi" + + Structure Imss_Object + Map Value.s() + Lock.i + LockID.i + EndStructure + + Structure Imss_Database + Map Database.Imss_Object() + Lock.i + LockID.i + EndStructure + + Global NewMap IMSSDB.Imss_Database() + + Procedure.s Create() + Protected.s UUID + UUID.s = CreateUUID() + IMSSDB(UUID)\Lock = 0 + ProcedureReturn UUID + EndProcedure + + Procedure Save(UUID.s, ValueName.s, Value.s, UID.s = "") + If FindMapElement(IMSSDB(), UUID) + If UID = "" + IMSSDB(UUID)\Database(ValueName)\Value("Value") = Value + Else + IMSSDB(UUID)\Database(UID)\Value(ValueName) = Value + EndIf + ProcedureReturn #True + Else + ProcedureReturn #False + EndIf + EndProcedure + + Procedure.s Get(UUID.s, ValueName.s, UID.s = "") + If FindMapElement(IMSSDB(), UUID) + If UID = "" + If FindMapElement(IMSSDB(UUID)\Database(), ValueName) + ProcedureReturn IMSSDB(UUID)\Database(ValueName)\Value("Value") + Else + ProcedureReturn "" + EndIf + Else + If FindMapElement(IMSSDB(UUID)\Database(), UID) + If FindMapElement(IMSSDB(UUID)\Database(UID)\Value(), ValueName) + ProcedureReturn IMSSDB(UUID)\Database(UID)\Value(ValueName) + EndIf + EndIf + EndIf + EndIf + EndProcedure + + Procedure Del(UUID.s, ValueName.s, UID.s = "") + If FindMapElement(IMSSDB(), UUID) + If UID = "" + If FindMapElement(IMSSDB(UUID)\Database(), ValueName) + DeleteMapElement(IMSSDB(UUID)\Database(), ValueName) + EndIf + Else + If FindMapElement(IMSSDB(UUID)\Database(), UID) + If FindMapElement(IMSSDB(UUID)\Database(UID)\Value(), ValueName) + DeleteMapElement(IMSSDB(UUID)\Database(UID)\Value(), ValueName) + EndIf + EndIf + EndIf + EndIf + + EndProcedure + + Procedure DelUID(UUID.s, UID.s) + If FindMapElement(IMSSDB(), UUID) + If FindMapElement(IMSSDB(UUID)\Database(), UID) + DeleteMapElement(IMSSDB(UUID)\Database(), UID) + EndIf + EndIf + EndProcedure + + Procedure Kill(UUID.s) + If FindMapElement(IMSSDB(), UUID) + DeleteMapElement(IMSSDB(), UUID) + EndIf + EndProcedure + +EndModule diff --git a/lhs_lib b/lhs_lib new file mode 160000 index 0000000..28ddc32 --- /dev/null +++ b/lhs_lib @@ -0,0 +1 @@ +Subproject commit 28ddc320e56090f5fc0fd827d83e97aa9863f116