浏览代码

#52 - corrected autogenerated copy functions, renamed Vtable index function

fixed the problem of incorrect use of function UA_toIndex in the autogenerated copy functions. Renamed UA_toIndex (in consideration of #52) to UA_ns0ToVTableIndex to make the usage clear.
FlorianPalm 10 年之前
父节点
当前提交
014251a331
共有 4 个文件被更改,包括 8 次插入8 次删除
  1. 4 4
      src/ua_basictypes.c
  2. 1 1
      src/ua_services_attribute.c
  3. 1 1
      tools/generate_builtin.py
  4. 2 2
      tools/generate_namespace.py

+ 4 - 4
src/ua_basictypes.c

@@ -1450,7 +1450,7 @@ UA_Int32 UA_Variant_decodeBinary(UA_ByteString const * src, UA_Int32 *pos, UA_Va
 	UA_Int32 ns0Id = dst->encodingMask & UA_VARIANT_ENCODINGMASKTYPE_TYPEID_MASK;
 
 	// initialize vTable
-	UA_Int32 uaIdx = UA_toIndex(ns0Id);
+	UA_Int32 uaIdx = UA_ns0ToVTableIndex(ns0Id);
 	if(UA_VTable_isValidType(uaIdx) != UA_SUCCESS)
 		return UA_ERROR;
 	dst->vt = &UA_[uaIdx];
@@ -1483,7 +1483,7 @@ UA_TYPE_METHOD_DELETE_STRUCT(UA_Variant)
 UA_Int32 UA_Variant_deleteMembers(UA_Variant  * p) {
 	UA_Int32 retval = UA_SUCCESS;
 	if(p->data != UA_NULL) {
-		retval |= UA_Array_delete(&p->data,p->arrayLength,UA_toIndex(p->vt->ns0Id));
+		retval |= UA_Array_delete(&p->data,p->arrayLength,UA_ns0ToVTableIndex(p->vt->ns0Id));
 		retval |= UA_Array_delete(&p->data,p->arrayDimensionsLength,UA_INT32_NS0);
 	}
 	return retval;
@@ -1504,7 +1504,7 @@ UA_Int32 UA_Variant_copy(UA_Variant const *src, UA_Variant *dst)
 {
 	UA_Int32 retval = UA_SUCCESS;
 	UA_Int32 ns0Id = src->encodingMask & UA_VARIANT_ENCODINGMASKTYPE_TYPEID_MASK;
-	UA_Int32 uaIdx = UA_toIndex(ns0Id);
+	UA_Int32 uaIdx = UA_ns0ToVTableIndex(ns0Id);
 	void * pData;
 	if(UA_VTable_isValidType(uaIdx) != UA_SUCCESS){
 		return UA_ERROR;
@@ -1524,7 +1524,7 @@ UA_Int32 UA_Variant_copy(UA_Variant const *src, UA_Variant *dst)
 	}
 
 	if (src->encodingMask & UA_VARIANT_ENCODINGMASKTYPE_DIMENSIONS) {
-		retval |=  UA_Array_copy((const void * const *)(src->arrayDimensions),src->arrayDimensionsLength, UA_toIndex(UA_INT32_NS0),(void***)&(dst->arrayDimensions));
+		retval |=  UA_Array_copy((const void * const *)(src->arrayDimensions),src->arrayDimensionsLength, UA_ns0ToVTableIndex(UA_INT32_NS0),(void***)&(dst->arrayDimensions));
 	}
 	return retval;
 }

+ 1 - 1
src/ua_services_attribute.c

@@ -120,7 +120,7 @@ static UA_DataValue * service_read_node(Application *app, const UA_ReadValueId *
 		// FIXME: mockup code - we know that for 2255 we simply need to copy the array
 		if (node->nodeId.identifier.numeric == 2255) {
 			v->value = vn->value;
-			UA_Array_copy((void const*const*)vn->value.data,vn->value.arrayLength,UA_toIndex(vn->value.vt->ns0Id),(void***)&v->value.data);
+			UA_Array_copy((void const*const*)vn->value.data,vn->value.arrayLength,UA_ns0ToVTableIndex(vn->value.vt->ns0Id),(void***)&v->value.data);
 		} else {
 			v->encodingMask = UA_DATAVALUE_ENCODINGMASK_STATUSCODE;
 			v->status = UA_STATUSCODE_BADNOTREADABLE;

+ 1 - 1
tools/generate_builtin.py

@@ -252,7 +252,7 @@ def createStructured(element):
                 print('\tretval |= UA_'+t+'_copy(&(src->'+n+'),&(dst->'+n+'));', end='\n', file=fc)
             elif t.find("**") != -1:
                 print('\tretval |= UA_Int32_copy(&(src->'+n+'Size),&(dst->'+n+'Size)); // size of following array', end='\n', file=fc)
-		print("\tretval |= UA_Array_copy((void const* const*) (src->"+n+"), src->"+n+"Size," + "UA_toIndex(UA_"+t[0:t.find("*")].upper()+")"+",(void***)&(dst->"+n+"));", end='\n', file=fc)
+		print("\tretval |= UA_Array_copy((void const* const*) (src->"+n+"), src->"+n+"Size," + "UA_"+t[0:t.find("*")].upper()+",(void***)&(dst->"+n+"));", end='\n', file=fc)
             elif t.find("*") != -1:
                 print('\tretval |= UA_' + t[0:t.find("*")] + '_copy(src->' + n + ',dst->' + n + ');', end='\n', file=fc)
             else:

+ 2 - 2
tools/generate_namespace.py

@@ -62,7 +62,7 @@ print('''/**********************************************************
 
 #include "opcua.h"  // definition of UA_VTable and basic UA_Types
 
-UA_Int32 UA_toIndex(UA_Int32 id);
+UA_Int32 UA_ns0ToVTableIndex(UA_Int32 id);
 extern UA_VTable UA_[]; 
 
 enum UA_VTableIndex_enum {''', end='\n', file=fh)
@@ -76,7 +76,7 @@ print('''/**********************************************************
  
 #include "opcua.h"
 
-UA_Int32 UA_toIndex(UA_Int32 id) {
+UA_Int32 UA_ns0ToVTableIndex(UA_Int32 id) {
     UA_Int32 retval = UA_ERR_INVALID_VALUE;
     switch (id) { ''', end='\n',file=fc)