mirror of
https://github.com/ilyakooo0/Idris-dev.git
synced 2024-09-22 14:38:20 +03:00
Foreign pointer equality
Can be useful when dealing with values originating in foreign functions. Intended in particular for checking sending VM in message passing concurrency.
This commit is contained in:
parent
1dfc8fdb20
commit
f44fe3290f
@ -532,12 +532,16 @@ ferror (FHandle h) = do err <- do_ferror h
|
||||
partial
|
||||
nullPtr : Ptr -> IO Bool
|
||||
nullPtr p = do ok <- mkForeign (FFun "isNull" [FPtr] FInt) p
|
||||
return (ok /= 0);
|
||||
return (ok /= 0)
|
||||
|
||||
partial
|
||||
nullStr : String -> IO Bool
|
||||
nullStr p = do ok <- mkForeign (FFun "isNull" [FString] FInt) p
|
||||
return (ok /= 0);
|
||||
return (ok /= 0)
|
||||
|
||||
eqPtr : Ptr -> Ptr -> IO Bool
|
||||
eqPtr x y = do eq <- mkForeign (FFun "idris_eqPtr" [FPtr, FPtr] FInt) x y
|
||||
return (eq /= 0)
|
||||
|
||||
partial
|
||||
validFile : File -> IO Bool
|
||||
|
@ -36,6 +36,10 @@ int isNull(void* ptr) {
|
||||
return ptr==NULL;
|
||||
}
|
||||
|
||||
int idris_eqPtr(void* x, void* y) {
|
||||
return x==y;
|
||||
}
|
||||
|
||||
void* idris_stdin() {
|
||||
return (void*)stdin;
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ int fileEOF(void* h);
|
||||
int fileError(void* h);
|
||||
void fputStr(void*h, char* str);
|
||||
|
||||
int idris_eqPtr(void* x, void* y);
|
||||
int isNull(void* ptr);
|
||||
void* idris_stdin();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user