use std::collections::HashSet;
use std::sync::LazyLock;
pub static CALLBACK_NAMES: LazyLock<HashSet<&'static str>> = LazyLock::new(|| {
let mut s = HashSet::new();
s.insert("SequenceFileLoad");
s.insert("SequenceFileUnload");
s.insert("ProcessCleanup");
s.insert("ProcessSetup");
s.insert("PreBatch");
s.insert("PostBatch");
s.insert("PreBatchLoop");
s.insert("PostBatchLoop");
s.insert("TestReport");
s.insert("PostStepRuntimeError");
s.insert("GetReportFilePath");
s.insert("PreUUT");
s.insert("PostUUT");
s.insert("PreUUTLoop");
s.insert("PostUUTLoop");
s.insert("PreMainSequence");
s.insert("PostMainSequence");
s.insert("PreSubSequence");
s.insert("PostSubSequence");
s.insert("SequenceFilePreStep");
s.insert("SequenceFilePostStep");
s.insert("SequenceFilePreInteractive");
s.insert("SequenceFilePostInteractive");
s.insert("SequenceFilePostResultListEntry");
s.insert("SequenceFilePostResults");
s.insert("SequenceFilePostStepRuntimeError");
s.insert("SequenceFilePostStepFailure");
s.insert("ProcessModelPreStep");
s.insert("ProcessModelPostStep");
s.insert("ProcessModelPreInteractive");
s.insert("ProcessModelPostInteractive");
s.insert("ProcessModelPostResultListEntry");
s.insert("ProcessModelPostResults");
s.insert("ProcessModelPostStepRuntimeError");
s.insert("ProcessModelPostStepFailure");
s.insert("StationPreStep");
s.insert("StationPostStep");
s.insert("StationPreInteractive");
s.insert("StationPostInteractive");
s.insert("StationPostResultListEntry");
s.insert("StationPostResults");
s.insert("StationPostStepRuntimeError");
s.insert("StationPostStepFailure");
s.insert("LoginLogout");
s
});
pub const PROCESS_MODEL_PATTERNS: &[&str] = &[
"components\\models",
"components/models",
"model.sequence",
"modelsupport.sequence",
];
pub const PROCESS_MODEL_FILENAMES: &[&str] = &[
"sequentialmodel.seq",
"parallelmodel.seq",
"batchmodel.seq",
"sequentialmodel.sequence",
"parallelmodel.sequence",
"batchmodel.sequence",
];
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum AdapterType {
Builtin,
LabVIEW,
DotNet,
Cvi,
Dll,
Sequence,
Python,
ActiveX,
Unknown,
}
impl AdapterType {
#[must_use]
pub const fn as_str(self) -> &'static str {
match self {
Self::Builtin => "Built-in",
Self::LabVIEW => "LabVIEW",
Self::DotNet => ".NET",
Self::Cvi => "LabWindows/CVI",
Self::Dll => "C/C++ DLL",
Self::Sequence => "Sequence",
Self::Python => "Python",
Self::ActiveX => "ActiveX/COM",
Self::Unknown => "Unknown",
}
}
}
pub mod property_path {
pub const LIMITS_LOW: &str = "Limits.Low";
pub const LIMITS_HIGH: &str = "Limits.High";
pub const LIMITS_STRING: &str = "Limits.String";
pub const COMP: &str = "Comp";
pub const UNITS: &str = "Units";
pub const RESULT_UNITS: &str = "Result.Units";
pub const VI_PATH: &str = "TS.SData.ViCall.VIPath";
pub const CALL_FUNC: &str = "TS.SData.Call.Func";
pub const DOTNET_ASSEMBLY: &str = "TS.SData.AssemblyPath";
pub const DOTNET_CLASS: &str = "TS.SData.ClassName";
pub const DOTNET_MEMBER: &str = "TS.SData.Calls[0].MemberName";
pub const DOTNET_MEMBER_NEXT: &str = "TS.SData.Calls[1].MemberName";
pub const DOTNET_NO_MEMBER: &str = "Use Existing Object";
pub const PYTHON_MODULE: &str = "TS.SData.PythonCall.ModulePath";
pub const PYTHON_FUNCTION: &str = "TS.SData.PythonCall.FunctionOrAttributeName";
pub const PYTHON_CLASS: &str = "TS.SData.PythonCall.ClassName";
pub const CALL_LIB_PATH: &str = "TS.SData.Call.LibPath";
pub const CALL_PROJECT_PATH: &str = "TS.SData.Call.ProjectPath";
pub const USE_CUR_FILE: &str = "TS.SData.UseCurFile";
pub const SEQ_FILE_PATH: &str = "TS.SData.SFPath";
pub const SEQ_FILE_PATH_EXPR: &str = "TS.SData.SFPathExpr";
pub const TARGET_SEQUENCE: &str = "TS.SData.SeqName";
pub const TARGET_SEQUENCE_EXPR: &str = "TS.SData.SeqNameExpr";
pub const MODULE_PATH: &str = "ModulePath";
pub const DLL_PATH: &str = "DllPath";
pub const PROJECT_FILE_PATH: &str = "ProjectFilePath";
pub const SOURCE_FILE_PATH: &str = "SourceFilePath";
pub const CLASS_NAME: &str = "ClassName";
pub const FUNCTION_OR_ATTRIBUTE_NAME: &str = "FunctionOrAttributeName";
pub const FILE_GLOBALS: &str = "Data.SeqFileGlobals";
pub const FILE_GLOBALS_NAME: &str = "SeqFileGlobals";
}