[m-rev.] diff: allow semaphore mutables in hlc grades
    Peter Wang 
    novalazy at gmail.com
       
    Thu Nov  3 12:03:58 AEDT 2011
    
    
  
Branches: main
Work around bug #19 for `thread.semaphore'.  In general, foreign type
mutables don't work in high-level C grades due to the order of variable
declarations and header file #includes.
library/thread.semaphore.m:
	Change the foreign_type of `thread.semaphore' to use the struct tag
	so that the variable declaration works without having seen the
	typedef for `ML_Semaphore'.
diff --git a/library/thread.semaphore.m b/library/thread.semaphore.m
index 19c2004..0a050db 100644
--- a/library/thread.semaphore.m
+++ b/library/thread.semaphore.m
@@ -100,7 +100,8 @@ public class ML_Semaphore {
 };
 ").
 
-:- pragma foreign_type("C",  semaphore, "ML_Semaphore *",
+    % XXX the struct tag works around bug #19 in high-level C grades
+:- pragma foreign_type("C",  semaphore, "struct ML_SEMAPHORE_STRUCT *",
     [can_pass_as_mercury_type]).
 :- pragma foreign_type("IL", semaphore,
     "class [mercury]mercury.thread.semaphore__csharp_code.mercury_code.ML_Semaphore").
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to:       mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions:          mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------
    
    
More information about the reviews
mailing list