Advertisement

Support for template functions is now implemented in 2.38.0 WIP

Started by August 18, 2024 01:29 AM
10 comments, last by metastellaris 17 hours, 30 minutes ago

@WitchLord

In the application that run AngelScript I first declare engine properties


	m_pAsScriptEngine = asCreateScriptEngine(ANGELSCRIPT_VERSION);

	m_pAsScriptEngine->SetEngineProperty(asEP_ALTER_SYNTAX_NAMED_ARGS, 2);
	m_pAsScriptEngine->SetEngineProperty(asEP_ALLOW_UNICODE_IDENTIFIERS, true);
	m_pAsScriptEngine->SetEngineProperty(asEP_AUTO_GARBAGE_COLLECT, true);

	m_pAsScriptEngine->SetMessageCallback(asFUNCTION(MessageCallback), (void*)this, asCALL_CDECL);

Then registering global objects…

	RegisterScriptAny(m_pAsScriptEngine);
	RegisterEizString(m_pAsScriptEngine);
	RegisterScriptArray(m_pAsScriptEngine, true);
	RegisterScriptDictionary(m_pAsScriptEngine);
	RegisterScriptMath(m_pAsScriptEngine);
	RegisterScriptMathComplex(m_pAsScriptEngine);

And add some script extensions like global properties

extension->registerScriptExtention(m_pAsScriptEngine);

After that, I export the compiler's configuration into a file thanks to WriteConfigToStream :

std::ostringstream str;
WriteConfigToStream(d_ptr->m_pScriptEngineWorker->m_pAsScriptEngine, str);

In an other application, I use the generated file to compile code and with :

    // Offline compiler configuration
    std::istringstream configStream(compilerConfig.toStdString());
    returnValue = ConfigEngineFromStream(engine, configStream, "config", &stringFactory);

And just after “ConfigEngineFromStream()” I have the result below :

ERR : System function (1, 27) : Identifier 'T' is not a data type in namespace 'IO' or parent
ERR : System function (1, 39) : Identifier 'T' is not a data type in namespace 'IO' or parent
ERR :  (0, 0) : Failed in call to function 'RegisterFuncdef' with 'bool array<T>::less(const T&in, const T&in)' (Code: asINVALID_DECLARATION, -10)
ERR : config (69, 0) : Failed to register funcdef
Compiler's configuration failed

I can just say that this issue appears when I upgraded AS version 2.36.0 to 2.38.0 WIP and for exactly the same script code. On v2.36.0 I had a warning about template declaration missing but the script was able to execute normally.

Just for information, the content of the compiler's config file is :

 �// AngelScript 2.38.0 WIP DEBUG
// Lib options  AS_DEBUG AS_64BIT_PTR AS_WIN AS_X64_MSVC 
// Engine properties
ep 0 0
ep 1 0
ep 2 1
ep 3 1
ep 4 0
ep 5 0
ep 6 0
ep 7 0
ep 8 0
ep 9 1
ep 10 0
ep 11 1
ep 12 0
ep 13 0
ep 14 3
ep 15 0
ep 16 1
ep 17 0
ep 18 0
ep 19 1
ep 20 0
ep 21 2
ep 22 0
ep 23 0
ep 24 0
ep 25 1
ep 26 1
ep 27 100
ep 28 1
ep 29 4096
ep 30 10
ep 31 0
ep 32 0
ep 33 0
ep 34 0
ep 35 1
ep 36 0
ep 37 0
ep 38 1
ep 39 0
ep 40 1

// Enums

// Types
access ffffffff
objtype "any" 5
objtype "string" 7938
objtype "array<T>" 69
objtype "dictionaryValue" 6022
objtype "dictionary" 5
objtype "dictionaryIter" 1
objtype "complex" 137994
namespace "IO"
objtype "SmartDeviceObject_GenericDigitalInputDevice" 17
objtype "SmartDeviceObject_GenericDigitalOutputDevice" 17
objtype "SmartDeviceObject_KikusuiPbz4010Device" 17
objtype "SmartDeviceObject_GenericAxisCtrlDevice" 17
objtype "SmartDeviceObject_GenericNumericOutputDevice" 17
objtype "SmartDeviceObject_DatabaseAccessDevice" 17
objtype "SmartDeviceObject_RvdtSteeringControlDevice" 17
objtype "SmartDeviceObject_GenericNumericInputDevice" 17
objtype "SmartDeviceObject_LecteurRfidDevice" 17
objtype "SmartDeviceObject_MaitreModbus" 17
objtype "SmartDeviceObject_StauffParticleCounterDevice" 17
funcdef "bool array<T>::less(const T&in, const T&in)"

// Template type members
namespace ""
objbeh "array<T>" 3 "array<T>@ array(int&in)"
objbeh "array<T>" 3 "array<T>@ array(int&in, uint)"
objbeh "array<T>" 3 "array<T>@ array(int&in, uint, const T&in)"
objbeh "array<T>" 5 "void $beh5()"
objbeh "array<T>" 6 "void $beh6()"
objbeh "array<T>" 9 "int $beh9()"
objbeh "array<T>" 10 "void $beh10()"
objbeh "array<T>" 11 "bool $beh11()"
objbeh "array<T>" 12 "void $beh12(int&in)"
objbeh "array<T>" 13 "void $beh13(int&in)"
objbeh "array<T>" 8 "bool $beh8(int&in, bool&out)"
objbeh "array<T>" 4 "array<T>@ $list(int&in, int&in) { repeat T }"
objmthd "array<T>" "T& opIndex(uint)"
objmthd "array<T>" "const T& opIndex(uint) const"
objmthd "array<T>" "uint opForBegin() const"
objmthd "array<T>" "bool opForEnd(uint) const"
objmthd "array<T>" "uint opForNext(uint) const"
objmthd "array<T>" "const T& opForValue0(uint) const"
objmthd "array<T>" "uint opForValue1(uint) const"
objmthd "array<T>" "array<T>& opAssign(const array<T>&in)"
objmthd "array<T>" "void insertAt(uint, const T&in)"
objmthd "array<T>" "void insertAt(uint, const array<T>&inout)"
objmthd "array<T>" "void insertLast(const T&in)"
objmthd "array<T>" "void removeAt(uint)"
objmthd "array<T>" "void removeLast()"
objmthd "array<T>" "void removeRange(uint, uint)"
objmthd "array<T>" "uint length() const"
objmthd "array<T>" "void reserve(uint)"
objmthd "array<T>" "void resize(uint)"
objmthd "array<T>" "void sortAsc()"
objmthd "array<T>" "void sortAsc(uint, uint)"
objmthd "array<T>" "void sortDesc()"
objmthd "array<T>" "void sortDesc(uint, uint)"
objmthd "array<T>" "void reverse()"
objmthd "array<T>" "int find(const T&in) const"
objmthd "array<T>" "int find(uint, const T&in) const"
objmthd "array<T>" "int findByRef(const T&in) const"
objmthd "array<T>" "int findByRef(uint, const T&in) const"
objmthd "array<T>" "bool opEquals(const array<T>&in) const"
objmthd "array<T>" "bool isEmpty() const"
objmthd "array<T>" "void sort(array<T>::less&in, uint = 0, uint = uint(-1))"
objmthd "array<T>" "uint size() const"
objmthd "array<T>" "bool empty() const"
objmthd "array<T>" "void push_back(const T&in)"
objmthd "array<T>" "void pop_back()"
objmthd "array<T>" "void insert(uint, const T&in)"
objmthd "array<T>" "void insert(uint, const array<T>&inout)"
objmthd "array<T>" "void erase(uint)"

// Type members
objbeh "any" 3 "any@ any()"
objbeh "any" 3 "any@ any(?&in)"
objbeh "any" 3 "any@ any(const int64&in)"
objbeh "any" 3 "any@ any(const double&in)"
objbeh "any" 5 "void $beh5()"
objbeh "any" 6 "void $beh6()"
objbeh "any" 9 "int $beh9()"
objbeh "any" 10 "void $beh10()"
objbeh "any" 11 "bool $beh11()"
objbeh "any" 12 "void $beh12(int&in)"
objbeh "any" 13 "void $beh13(int&in)"
objmthd "any" "any& opAssign(any&in)"
objmthd "any" "void store(?&in)"
objmthd "any" "void store(const int64&in)"
objmthd "any" "void store(const double&in)"
objmthd "any" "bool retrieve(?&out) const"
objmthd "any" "bool retrieve(int64&out) const"
objmthd "any" "bool retrieve(double&out) const"
objbeh "string" 2 "void string()"
objbeh "string" 0 "void string()"
objbeh "string" 0 "void string(const string&in)"
objbeh "string" 0 "void string(double)"
objbeh "string" 0 "void string(float)"
objbeh "string" 0 "void string(int64)"
objmthd "string" "string& opAssign(const string&in)"
objmthd "string" "string& opAddAssign(const string&in)"
objmthd "string" "bool opEquals(const string&in) const"
objmthd "string" "int opCmp(const string&in) const"
objmthd "string" "string opAdd(const string&in) const"
objmthd "string" "uint length() const"
objmthd "string" "void resize(uint)"
objmthd "string" "bool isEmpty() const"
objmthd "string" "uint8& opIndex(uint)"
objmthd "string" "const uint8& opIndex(uint) const"
objmthd "string" "string& opAssign(double)"
objmthd "string" "string& opAddAssign(double)"
objmthd "string" "string opAdd(double) const"
objmthd "string" "string opAdd_r(double) const"
objmthd "string" "string& opAssign(float)"
objmthd "string" "string& opAddAssign(float)"
objmthd "string" "string opAdd(float) const"
objmthd "string" "string opAdd_r(float) const"
objmthd "string" "string& opAssign(int64)"
objmthd "string" "string& opAddAssign(int64)"
objmthd "string" "string opAdd(int64) const"
objmthd "string" "string opAdd_r(int64) const"
objmthd "string" "string& opAssign(uint64)"
objmthd "string" "string& opAddAssign(uint64)"
objmthd "string" "string opAdd(uint64) const"
objmthd "string" "string opAdd_r(uint64) const"
objmthd "string" "string& opAssign(bool)"
objmthd "string" "string& opAddAssign(bool)"
objmthd "string" "string opAdd(bool) const"
objmthd "string" "string opAdd_r(bool) const"
objmthd "string" "string substr(uint = 0, int = -1) const"
objmthd "string" "int findFirst(const string&in, uint = 0) const"
objmthd "string" "int findFirstOf(const string&in, uint = 0) const"
objmthd "string" "int findFirstNotOf(const string&in, uint = 0) const"
objmthd "string" "int findLast(const string&in, int = -1) const"
objmthd "string" "int findLastOf(const string&in, int = -1) const"
objmthd "string" "int findLastNotOf(const string&in, int = -1) const"
objmthd "string" "void insert(uint, const string&in)"
objmthd "string" "void erase(uint, int = -1)"
objmthd "string" "string& replace(const string&in, const string&in, int = 1)"
objmthd "string" "double toDouble(bool&out)"
objmthd "string" "double toDouble()"
objmthd "string" "int toInt(bool&out, int = 10)"
objmthd "string" "int toInt(int = 10)"
objmthd "string" "uint size() const"
objmthd "string" "bool empty() const"
objmthd "string" "int find(const string&in, uint = 0) const"
objmthd "string" "int rfind(const string&in, int = -1) const"
objmthd "string" "string returnTypeString(const string&in, const string&in)"
objbeh "dictionaryValue" 2 "void dictionaryValue()"
objbeh "dictionaryValue" 12 "void $beh12(int&in)"
objbeh "dictionaryValue" 13 "void $beh13(int&in)"
objbeh "dictionaryValue" 0 "void dictionaryValue()"
objmthd "dictionaryValue" "dictionaryValue& opAssign(const dictionaryValue&in)"
objmthd "dictionaryValue" "dictionaryValue& opHndlAssign(const ?&in)"
objmthd "dictionaryValue" "dictionaryValue& opHndlAssign(const dictionaryValue&in)"
objmthd "dictionaryValue" "dictionaryValue& opAssign(const ?&in)"
objmthd "dictionaryValue" "dictionaryValue& opAssign(double)"
objmthd "dictionaryValue" "dictionaryValue& opAssign(int64)"
objmthd "dictionaryValue" "void opCast(?&out)"
objmthd "dictionaryValue" "void opConv(?&out)"
objmthd "dictionaryValue" "int64 opConv()"
objmthd "dictionaryValue" "double opConv()"
objbeh "dictionary" 3 "dictionary@ dictionary()"
objbeh "dictionary" 5 "void $beh5()"
objbeh "dictionary" 6 "void $beh6()"
objbeh "dictionary" 9 "int $beh9()"
objbeh "dictionary" 10 "void $beh10()"
objbeh "dictionary" 11 "bool $beh11()"
objbeh "dictionary" 12 "void $beh12(int&in)"
objbeh "dictionary" 13 "void $beh13(int&in)"
objbeh "dictionary" 4 "dictionary@ $list(int&in) { repeat { string, ? } }"
objmthd "dictionary" "dictionary& opAssign(const dictionary&in)"
objmthd "dictionary" "void set(const string&in, const ?&in)"
objmthd "dictionary" "bool get(const string&in, ?&out) const"
objmthd "dictionary" "void set(const string&in, const int64&in)"
objmthd "dictionary" "bool get(const string&in, int64&out) const"
objmthd "dictionary" "void set(const string&in, const double&in)"
objmthd "dictionary" "bool get(const string&in, double&out) const"
objmthd "dictionary" "bool exists(const string&in) const"
objmthd "dictionary" "bool isEmpty() const"
objmthd "dictionary" "uint getSize() const"
objmthd "dictionary" "bool delete(const string&in)"
objmthd "dictionary" "void deleteAll()"
objmthd "dictionary" "array<string>@ getKeys() const"
objmthd "dictionary" "dictionaryValue& opIndex(const string&in)"
objmthd "dictionary" "const dictionaryValue& opIndex(const string&in) const"
objmthd "dictionary" "dictionaryIter@ opForBegin() const"
objmthd "dictionary" "bool opForEnd(dictionaryIter@) const"
objmthd "dictionary" "dictionaryIter@ opForNext(dictionaryIter@) const"
objmthd "dictionary" "const dictionaryValue& opForValue0(dictionaryIter@) const"
objmthd "dictionary" "const string& opForValue1(dictionaryIter@) const"
objmthd "dictionary" "bool empty() const"
objmthd "dictionary" "uint size() const"
objmthd "dictionary" "void erase(const string&in)"
objmthd "dictionary" "void clear()"
objbeh "dictionaryIter" 5 "void $beh5()"
objbeh "dictionaryIter" 6 "void $beh6()"
objbeh "complex" 1 "void $list(const int&in) { float, float }"
objbeh "complex" 0 "void complex()"
objbeh "complex" 0 "void complex(const complex&in)"
objbeh "complex" 0 "void complex(float)"
objbeh "complex" 0 "void complex(float, float)"
objmthd "complex" "complex& opAddAssign(const complex&in)"
objmthd "complex" "complex& opSubAssign(const complex&in)"
objmthd "complex" "complex& opMulAssign(const complex&in)"
objmthd "complex" "complex& opDivAssign(const complex&in)"
objmthd "complex" "bool opEquals(const complex&in) const"
objmthd "complex" "complex opAdd(const complex&in) const"
objmthd "complex" "complex opSub(const complex&in) const"
objmthd "complex" "complex opMul(const complex&in) const"
objmthd "complex" "complex opDiv(const complex&in) const"
objmthd "complex" "float abs() const"
objmthd "complex" "complex get_ri() const property"
objmthd "complex" "complex get_ir() const property"
objmthd "complex" "void set_ri(const complex&in) property"
objmthd "complex" "void set_ir(const complex&in) property"
objprop "complex" "float r" 0 0
objprop "complex" "float i" 0 0
namespace "IO"
objmthd "SmartDeviceObject_GenericDigitalInputDevice" "bool opImplConv()"
objmthd "SmartDeviceObject_GenericDigitalInputDevice" "void setValue(bool)"
objmthd "SmartDeviceObject_GenericDigitalInputDevice" "bool value()"
objmthd "SmartDeviceObject_GenericDigitalInputDevice" "string description()"
objmthd "SmartDeviceObject_GenericDigitalOutputDevice" "IO::SmartDeviceObject_GenericDigitalOutputDevice& opAssign(bool)"
objmthd "SmartDeviceObject_GenericDigitalOutputDevice" "IO::SmartDeviceObject_GenericDigitalOutputDevice& opAssign(int)"
objmthd "SmartDeviceObject_GenericDigitalOutputDevice" "bool opImplConv()"
objmthd "SmartDeviceObject_GenericDigitalOutputDevice" "void setValue(bool)"
objmthd "SmartDeviceObject_GenericDigitalOutputDevice" "bool value()"
objmthd "SmartDeviceObject_GenericDigitalOutputDevice" "string description()"
objmthd "SmartDeviceObject_KikusuiPbz4010Device" "IO::SmartDeviceObject_KikusuiPbz4010Device& opAssign(const string&in)"
objmthd "SmartDeviceObject_KikusuiPbz4010Device" "IO::SmartDeviceObject_KikusuiPbz4010Device& opAssign(bool)"
objmthd "SmartDeviceObject_KikusuiPbz4010Device" "IO::SmartDeviceObject_KikusuiPbz4010Device& opAssign(int)"
objmthd "SmartDeviceObject_KikusuiPbz4010Device" "string description()"
objmthd "SmartDeviceObject_GenericAxisCtrlDevice" "double opCall(const string&in)"
objmthd "SmartDeviceObject_GenericAxisCtrlDevice" "string description()"
objmthd "SmartDeviceObject_GenericAxisCtrlDevice" "int codeDefaut() const"
objmthd "SmartDeviceObject_GenericAxisCtrlDevice" "bool absoluteMovementsAllowed() const"
objmthd "SmartDeviceObject_GenericAxisCtrlDevice" "void setReferencingCmd(bool)"
objmthd "SmartDeviceObject_GenericAxisCtrlDevice" "void cmdReferencement(bool)"
objmthd "SmartDeviceObject_GenericAxisCtrlDevice" "void setSoftwareLimitsDeactivation(bool)"
objmthd "SmartDeviceObject_GenericAxisCtrlDevice" "void desactivationLimites(bool)"
objmthd "SmartDeviceObject_GenericNumericOutputDevice" "IO::SmartDeviceObject_GenericNumericOutputDevice& opAssign(double)"
objmthd "SmartDeviceObject_GenericNumericOutputDevice" "double opImplConv()"
objmthd "SmartDeviceObject_GenericNumericOutputDevice" "void setRawValue(int64)"
objmthd "SmartDeviceObject_GenericNumericOutputDevice" "int64 rawValue()"
objmthd "SmartDeviceObject_GenericNumericOutputDevice" "void setValue(double)"
objmthd "SmartDeviceObject_GenericNumericOutputDevice" "double value()"
objmthd "SmartDeviceObject_GenericNumericOutputDevice" "string description()"
objmthd "SmartDeviceObject_DatabaseAccessDevice" "string opCall(const string&in)"
objmthd "SmartDeviceObject_DatabaseAccessDevice" "string description()"
objmthd "SmartDeviceObject_DatabaseAccessDevice" "string lireVariable(const string&in, const string&in)"
objmthd "SmartDeviceObject_DatabaseAccessDevice" "void ecrireVariable(const string&in, const string&in, const string&in)"
objmthd "SmartDeviceObject_DatabaseAccessDevice" "string lireConstante(const string&in, const string&in)"
objmthd "SmartDeviceObject_RvdtSteeringControlDevice" "double opCall(const string&in)"
objmthd "SmartDeviceObject_RvdtSteeringControlDevice" "string description()"
objmthd "SmartDeviceObject_RvdtSteeringControlDevice" "void setPidActive(bool)"
objmthd "SmartDeviceObject_RvdtSteeringControlDevice" "bool pidActive() const"
objmthd "SmartDeviceObject_RvdtSteeringControlDevice" "void setPositionSetpoint(double)"
objmthd "SmartDeviceObject_RvdtSteeringControlDevice" "double positionSetpoint() const"
objmthd "SmartDeviceObject_GenericNumericInputDevice" "double opImplConv()"
objmthd "SmartDeviceObject_GenericNumericInputDevice" "void setRawValue(double)"
objmthd "SmartDeviceObject_GenericNumericInputDevice" "double rawValue()"
objmthd "SmartDeviceObject_GenericNumericInputDevice" "void setValue(double)"
objmthd "SmartDeviceObject_GenericNumericInputDevice" "double value()"
objmthd "SmartDeviceObject_GenericNumericInputDevice" "string description()"
objmthd "SmartDeviceObject_LecteurRfidDevice" "string idInterface()"
objmthd "SmartDeviceObject_LecteurRfidDevice" "string typeInterface()"
objmthd "SmartDeviceObject_StauffParticleCounterDevice" "IO::SmartDeviceObject_StauffParticleCounterDevice& opAssign(const string&in)"
objmthd "SmartDeviceObject_StauffParticleCounterDevice" "string opCall(const string&in)"
objmthd "SmartDeviceObject_StauffParticleCounterDevice" "int statut() const"
objmthd "SmartDeviceObject_StauffParticleCounterDevice" "string description()"

// Functions
namespace ""
func "string formatInt(int64, const string&in = \"\", uint = 0)"
func "string formatUInt(uint64, const string&in = \"\", uint = 0)"
func "string formatFloat(double, const string&in = \"\", uint = 0, uint = 0)"
func "int64 parseInt(const string&in, uint = 10, uint&out = 0)"
func "uint64 parseUInt(const string&in, uint = 10, uint&out = 0)"
func "double parseFloat(const string&in, uint&out = 0)"
func "float fpFromIEEE(uint)"
func "uint fpToIEEE(float)"
func "double fpFromIEEE(uint64)"
func "uint64 fpToIEEE(double)"
func "bool closeTo(float, float, float = 0.00001f)"
func "bool closeTo(double, double, double = 0.0000000001)"
func "float cos(float)"
func "float sin(float)"
func "float tan(float)"
func "float acos(float)"
func "float asin(float)"
func "float atan(float)"
func "float atan2(float, float)"
func "float cosh(float)"
func "float sinh(float)"
func "float tanh(float)"
func "float log(float)"
func "float log10(float)"
func "float pow(float, float)"
func "float sqrt(float)"
func "float ceil(float)"
func "float abs(float)"
func "float floor(float)"
func "float fraction(float)"
func "void print(const any&in)"
func "void print(const string&in)"
func "void print(int)"
func "void print(double)"
func "any@ returnTypeAny()"
func "void ata(const array<any>&in)"
namespace "Script"
func "void waitMicroSec(uint64)"
func "void waitMilliSec(uint64)"
func "void waitSecond(uint64)"
func "void waitSecond(double)"
func "void abortExecution()"
func "uint64 clockTime()"
func "string legType()"
func "string interfaceNumber()"
func "string serialNumber()"
func "string productRef()"
func "string operatorId()"
func "string testIterationNumber()"
func "string resultDataDirectory()"
func "bool productSamplingMode()"
func "string contextualData(int)"
func "void setContextualData(int, const string&in)"
func "void setUserExecStatusToFailed()"
func "void writeToLocalReport(const string&in)"
func "void writeToFinalReport(const string&in, const string&in, const string&in)"
func "void writeToLog(const string&in, const string&in)"
func "void saveGraphToleranceMask(const array<array<double>>&in, const array<array<double>>&in, bool)"
func "void saveGraphArrayData(const string&in, const array<string>&in, const array<array<double>>&in)"
namespace "InteractivePanel"
func "void appendMsgBoxText(const string&in)"
func "void clearMsgBox()"
func "void activateInteractiveButton(int, const string&in)"
func "string lastButtonNamePressed()"
func "void openContextualView(const string&in)"
func "void openValueDialogBox(const string&in, const string&in, const string&in)"
func "bool valueDialogBoxButtonOkClicked()"
func "string valueDialogBoxValueReturned()"
func "void setCountdownTimer(uint64)"
func "void setGraphParameters(string, string, double, double, string, double, double, bool)"
func "void setGraphColumnNames(const array<string>&in)"
func "void appendPointsToGraph(const array<double>&in)"
func "void setGraphToleranceMask(const array<array<double>>&in, const array<array<double>>&in, bool)"
func "void saveGraph(string, string, string, string, string, string, string)"
namespace ""
func "void throw(const string&in)"
func "string getExceptionInfo()"

// Properties
namespace "IO"
prop "SmartDeviceObject_GenericDigitalInputDevice AUArm"
prop "SmartDeviceObject_GenericDigitalInputDevice AUArmGeneMilH"
prop "SmartDeviceObject_GenericDigitalInputDevice AUArmRegulMilH"
prop "SmartDeviceObject_GenericDigitalInputDevice AUArmRegulSkydrol"
prop "SmartDeviceObject_GenericDigitalInputDevice AUBaie"
prop "SmartDeviceObject_GenericDigitalInputDevice AUEnceinte"
prop "SmartDeviceObject_GenericDigitalInputDevice AUPupitreOp"
prop "SmartDeviceObject_GenericDigitalOutputDevice AcquitterDefauts"
prop "SmartDeviceObject_KikusuiPbz4010Device AlimRVDT"
prop "SmartDeviceObject_GenericAxisCtrlDevice AxeBasculement"
prop "SmartDeviceObject_GenericAxisCtrlDevice AxeRotationATR"
prop "SmartDeviceObject_GenericAxisCtrlDevice AxeRotationTete"
prop "SmartDeviceObject_GenericAxisCtrlDevice AxeVertical"
prop "SmartDeviceObject_GenericDigitalOutputDevice BPAxeBascHorizontal"
prop "SmartDeviceObject_GenericDigitalOutputDevice BPAxeBascPosCharg"
prop "SmartDeviceObject_GenericDigitalOutputDevice BPAxeBascVertical"
prop "SmartDeviceObject_GenericDigitalOutputDevice BPAxeRotCCW"
prop "SmartDeviceObject_GenericDigitalOutputDevice BPAxeRotCW"
prop "SmartDeviceObject_GenericDigitalOutputDevice BPAxeRotPosCharg"
prop "SmartDeviceObject_GenericDigitalOutputDevice BPAxeVerticalDescendre"
prop "SmartDeviceObject_GenericDigitalOutputDevice BPAxeVerticalMonter"
prop "SmartDeviceObject_GenericDigitalOutputDevice BPAxeVerticalVersChargement"
prop "SmartDeviceObject_GenericDigitalInputDevice BPBridageTrain"
prop "SmartDeviceObject_GenericDigitalOutputDevice BPIndexagePlateau"
prop "SmartDeviceObject_GenericNumericOutputDevice BasculementPosCharg"
prop "SmartDeviceObject_DatabaseAccessDevice BaseDeDonnees"
prop "SmartDeviceObject_GenericDigitalOutputDevice BlocageZone"
prop "SmartDeviceObject_GenericDigitalOutputDevice BridageTrain"
prop "SmartDeviceObject_GenericDigitalOutputDevice CmdRelaisRVDT"
prop "SmartDeviceObject_RvdtSteeringControlDevice CommandeORA"
prop "SmartDeviceObject_GenericDigitalInputDevice ContactEssieuDroit"
prop "SmartDeviceObject_GenericDigitalInputDevice ContactEssieuGauche"
prop "SmartDeviceObject_GenericNumericInputDevice CouplePlateau"
prop "SmartDeviceObject_GenericNumericInputDevice CoupleVisVerticale"
prop "SmartDeviceObject_GenericNumericOutputDevice CourantServovalve"
prop "SmartDeviceObject_GenericDigitalOutputDevice DebridageTrain"
prop "SmartDeviceObject_GenericDigitalInputDevice DefautAnglePlateauHorsPlageBridage"
prop "SmartDeviceObject_GenericDigitalInputDevice DefautDetectionChariotBridage"
prop "SmartDeviceObject_GenericDigitalInputDevice DefautDetectionTrainBridage"
prop "SmartDeviceObject_GenericDigitalInputDevice DefautOuvertureFrein"
prop "SmartDeviceObject_GenericDigitalInputDevice DefautPresenceHarnaisDebridage"
prop "SmartDeviceObject_GenericDigitalInputDevice DemandeAccesZone"
prop "SmartDeviceObject_GenericDigitalInputDevice DetecteurChariotDroit"
prop "SmartDeviceObject_GenericDigitalInputDevice DetecteurChariotGauche"
prop "SmartDeviceObject_GenericDigitalInputDevice DetecteurMassesSupportDroit"
prop "SmartDeviceObject_GenericDigitalInputDevice DetecteurMassesSupportGauche"
prop "SmartDeviceObject_GenericDigitalInputDevice DetecteurProximite1"
prop "SmartDeviceObject_GenericDigitalInputDevice DetecteurProximite2"
prop "SmartDeviceObject_GenericDigitalInputDevice DetecteurProximite3"
prop "SmartDeviceObject_GenericNumericInputDevice DetectionTypeTrain"
prop "SmartDeviceObject_GenericDigitalOutputDevice EV117"
prop "SmartDeviceObject_GenericDigitalOutputDevice EV118"
prop "SmartDeviceObject_GenericDigitalOutputDevice EVBypass"
prop "SmartDeviceObject_GenericDigitalOutputDevice EV_GonflageAzote"
prop "SmartDeviceObject_GenericDigitalOutputDevice EV_PurgeAzote"
prop "SmartDeviceObject_GenericDigitalInputDevice EldecDroit"
prop "SmartDeviceObject_GenericDigitalInputDevice EldecGauche"
prop "SmartDeviceObject_GenericNumericInputDevice ErrComPfbArmElec"
prop "SmartDeviceObject_GenericNumericInputDevice ErrComPfbCodeurPlateau"
prop "SmartDeviceObject_GenericNumericInputDevice ErrComPfbCouplePlateau"
prop "SmartDeviceObject_GenericNumericInputDevice ErrComPfbET200SP"
prop "SmartDeviceObject_GenericNumericInputDevice ErrComPfbRegSky"
prop "SmartDeviceObject_GenericNumericInputDevice ErrComProfibus"
prop "SmartDeviceObject_GenericNumericInputDevice ErrCycleIndexage"
prop "SmartDeviceObject_GenericDigitalInputDevice EtatClavier"
prop "SmartDeviceObject_GenericDigitalOutputDevice EtatPorte"
prop "SmartDeviceObject_GenericDigitalInputDevice FinDeCourseNF"
prop "SmartDeviceObject_GenericDigitalInputDevice FinDeCourseNO"
prop "SmartDeviceObject_GenericDigitalInputDevice FinDeCourseRafale"
prop "SmartDeviceObject_GenericDigitalInputDevice FreinAxeVerticalDeserre"
prop "SmartDeviceObject_GenericDigitalInputDevice FreinAxeVerticalSerre"
prop "SmartDeviceObject_GenericDigitalOutputDevice IndexagePlateau"
prop "SmartDeviceObject_LecteurRfidDevice LecteurRfid"
prop "SmartDeviceObject_MaitreModbus MaitreModbus"
prop "SmartDeviceObject_GenericDigitalInputDevice MesOk"
prop "SmartDeviceObject_GenericNumericOutputDevice ModeFonctionnement"
prop "SmartDeviceObject_GenericDigitalInputDevice PlateauDesindexe"
prop "SmartDeviceObject_GenericDigitalInputDevice PlateauIndexe"
prop "SmartDeviceObject_GenericNumericInputDevice PosAngulairePlateau"
prop "SmartDeviceObject_GenericNumericInputDevice PosEffCourseOk"
prop "SmartDeviceObject_GenericNumericInputDevice PosTransversalePlateau"
prop "SmartDeviceObject_GenericNumericInputDevice PosVerticaleAppui"
prop "SmartDeviceObject_GenericDigitalInputDevice PresenceAirComprime"
prop "SmartDeviceObject_GenericDigitalInputDevice PresenceAzote"
prop "SmartDeviceObject_GenericDigitalInputDevice PresenceChariot"
prop "SmartDeviceObject_GenericNumericInputDevice PressionAzote"
prop "SmartDeviceObject_GenericDigitalOutputDevice RAZAnglePlateau"
prop "SmartDeviceObject_GenericDigitalInputDevice RegrpAU"
prop "SmartDeviceObject_GenericNumericOutputDevice RotTetePosBridage"
prop "SmartDeviceObject_GenericNumericOutputDevice RotTetePosCharg"
prop "SmartDeviceObject_GenericDigitalOutputDevice SKY_AlimCompteurParticules"
prop "SmartDeviceObject_GenericDigitalInputDevice SKY_ArretUrgence"
prop "SmartDeviceObject_GenericNumericInputDevice SKY_CP2"
prop "SmartDeviceObject_GenericNumericInputDevice SKY_CP3"
prop "SmartDeviceObject_GenericNumericInputDevice SKY_CP4"
prop "SmartDeviceObject_GenericNumericInputDevice SKY_CP5"
prop "SmartDeviceObject_GenericNumericInputDevice SKY_CP6"
prop "SmartDeviceObject_GenericNumericInputDevice SKY_CP7"
prop "SmartDeviceObject_StauffParticleCounterDevice SKY_CompteurParticules"
prop "SmartDeviceObject_GenericNumericInputDevice SKY_DB1"
prop "SmartDeviceObject_GenericDigitalInputDevice SKY_DefDisjPompe"
prop "SmartDeviceObject_GenericDigitalOutputDevice SKY_EV1"
prop "SmartDeviceObject_GenericDigitalOutputDevice SKY_EV10"
prop "SmartDeviceObject_GenericDigitalOutputDevice SKY_EV11"
prop "SmartDeviceObject_GenericDigitalOutputDevice SKY_EV15"
prop "SmartDeviceObject_GenericDigitalOutputDevice SKY_EV24"
prop "SmartDeviceObject_GenericDigitalOutputDevice SKY_EV5"
prop "SmartDeviceObject_GenericDigitalOutputDevice SKY_EV6"
prop "SmartDeviceObject_GenericDigitalOutputDevice SKY_EV7"
prop "SmartDeviceObject_GenericDigitalOutputDevice SKY_EV8"
prop "SmartDeviceObject_GenericDigitalOutputDevice SKY_EV9"
prop "SmartDeviceObject_GenericDigitalOutputDevice SKY_EVRincage"
prop "SmartDeviceObject_GenericDigitalInputDevice SKY_FiltreColmate"
prop "SmartDeviceObject_GenericDigitalInputDevice SKY_KA110"
prop "SmartDeviceObject_GenericDigitalInputDevice SKY_KA111"
prop "SmartDeviceObject_GenericDigitalInputDevice SKY_KA112"
prop "SmartDeviceObject_GenericDigitalInputDevice SKY_MT1"
prop "SmartDeviceObject_GenericDigitalInputDevice SKY_MT2"
prop "SmartDeviceObject_GenericDigitalInputDevice SKY_MT3"
prop "SmartDeviceObject_GenericDigitalInputDevice SKY_NiveauMaxReservoirRecup"
prop "SmartDeviceObject_GenericDigitalInputDevice SKY_PompeEnMarche"
prop "SmartDeviceObject_GenericNumericOutputDevice SKY_RDP1"
prop "SmartDeviceObject_GenericNumericOutputDevice SKY_RPP1"
prop "SmartDeviceObject_GenericNumericOutputDevice SKY_RPP2"
prop "SmartDeviceObject_GenericNumericInputDevice SKY_TH1"
prop "SmartDeviceObject_GenericDigitalInputDevice SafOk"
prop "SmartDeviceObject_GenericNumericOutputDevice SeuilEffCourse"
prop "SmartDeviceObject_GenericNumericOutputDevice SeuilRefContact"
prop "SmartDeviceObject_GenericDigitalOutputDevice SignalHarnaisConnecte"
prop "SmartDeviceObject_GenericDigitalInputDevice SurcouplePlateauCCW"
prop "SmartDeviceObject_GenericDigitalInputDevice SurcouplePlateauCW"
prop "SmartDeviceObject_GenericNumericInputDevice TestAI"
prop "SmartDeviceObject_GenericNumericOutputDevice TestAO"
prop "SmartDeviceObject_GenericDigitalInputDevice TestDI"
prop "SmartDeviceObject_GenericDigitalOutputDevice TestDO"
prop "SmartDeviceObject_GenericNumericInputDevice TrainBride"
prop "SmartDeviceObject_GenericDigitalOutputDevice ValveAlimAirComprime"
prop "SmartDeviceObject_GenericDigitalOutputDevice ValveAlimAzote"
prop "SmartDeviceObject_GenericDigitalOutputDevice VerrineBleue"
prop "SmartDeviceObject_GenericDigitalOutputDevice VerrineBleueClign"
prop "SmartDeviceObject_GenericDigitalOutputDevice VerrineBuzzer"
prop "SmartDeviceObject_GenericDigitalOutputDevice VerrineBuzzerAppelOp"
prop "SmartDeviceObject_GenericDigitalOutputDevice VerrineRouge"
prop "SmartDeviceObject_GenericDigitalOutputDevice VerrineRougeClign"
prop "SmartDeviceObject_GenericNumericOutputDevice VerticalPosCharg"
prop "SmartDeviceObject_GenericDigitalOutputDevice VoyantBridageOk"
prop "SmartDeviceObject_GenericDigitalOutputDevice VoyantPlateauIndexe"
prop "SmartDeviceObject_GenericDigitalOutputDevice VoyantPositionDCY"
prop "SmartDeviceObject_GenericNumericInputDevice testni"

// String factory
namespace ""
strfactory "string"

// Default array type
defarray "array<T>"

Thank you

Advertisement