tests/python/c_code@c_ext/cfile.xml
branch1.1 Korean release
changeset 1280 72a826dfcfbb
parent 1125 1b1472e76f07
child 1401 611fded24ce4
--- a/tests/python/c_code@c_ext/cfile.xml	Wed Mar 13 12:34:55 2013 +0900
+++ b/tests/python/c_code@c_ext/cfile.xml	Wed Jul 31 10:45:07 2013 +0900
@@ -1,16 +1,20 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<CFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="cext_xsd.xsd">
+<CFile>
   <includes>
-<![CDATA[#include "stdio.h"]]>
+<![CDATA[
+]]>
   </includes>
   <variables>
-    <variable name="TestInput" type="SINT" class="input"/>
-    <variable name="TestOutput" type="SINT" class="output"/>
+    <variable name="TestInput" type="SINT" initial="0"/>
+    <variable name="TestOutput" type="SINT"/>
   </variables>
   <globals>
-<![CDATA[volatile long Lock=0;
+<![CDATA[
+volatile long Lock=0;
 volatile char PtoC=1,CtoP=2;
 
+extern long AtomicCompareExchange(long*,long, long);
+
 int Simple_C_Call(int val){
   return val+1;
 }
@@ -23,10 +27,10 @@
      beremiz' runtime implementation */
 
   int res = 0;
-  if(!AtomicCompareExchange(&Lock, 0, 1)){
+  if(!AtomicCompareExchange((long*)&Lock, 0, 1)){
     PtoC=toC;
     *fromC=CtoP;
-    AtomicCompareExchange(&Lock, 1, 0);
+    AtomicCompareExchange((long*)&Lock, 1, 0);
     res=1;
   }
   printf("C code called by Python: toC %d fromC %d\n",toC,*fromC);
@@ -36,29 +40,34 @@
 int PLC_C_Call(char fromPLC, char *toPLC){
   /* PLC also have to be realy carefull not to 
      conflict with asynchronous python access */
-  int res;
-  if(!AtomicCompareExchange(&Lock, 0, 1)){
+  if(!AtomicCompareExchange((long*)&Lock, 0, 1)){
       CtoP = fromPLC;
       *toPLC = PtoC;
-      AtomicCompareExchange(&Lock, 1, 0);
+      AtomicCompareExchange((long*)&Lock, 1, 0);
       return 1;
   }
   return 0;
-}]]>
+}
+]]>
   </globals>
   <initFunction>
-<![CDATA[]]>
+<![CDATA[
+]]>
   </initFunction>
   <cleanUpFunction>
-<![CDATA[]]>
+<![CDATA[
+]]>
   </cleanUpFunction>
   <retrieveFunction>
-<![CDATA[]]>
+<![CDATA[
+]]>
   </retrieveFunction>
   <publishFunction>
-<![CDATA[if(!AtomicCompareExchange(&Lock, 0, 1)){
+<![CDATA[
+if(!AtomicCompareExchange((long*)&Lock, 0, 1)){
     TestInput = CtoP + PtoC + TestOutput;
-    AtomicCompareExchange(&Lock, 1, 0);
-}]]>
+    AtomicCompareExchange((long*)&Lock, 1, 0);
+}
+]]>
   </publishFunction>
 </CFile>