history state added
[CleanReadLine.git] / ReadLine.icl
index 4bb84d1..cb4cfbb 100644 (file)
@@ -21,6 +21,32 @@ usingHistory e = code inline {
                        ccall cleanUsingHistory "-"
        }
 
+historyGetHistoryState :: !*env -> (!HistoryState, !*env)
+historyGetHistoryState e
+# (offset, num, flags, e) = getState e
+# (entries, e) = getItems num e
+= ({HistoryState | entries=entries, offset=offset, flags=flags}, e)
+       where
+               getState :: !*env -> (!Int, !Int, !Int, !*env)
+               getState e= code inline {
+                       ccall cleanGetState "-III"
+               }
+               getItems :: !Int !*env -> (![HistoryItem], !*env)
+               getItems 0 e = ([], e)
+               getItems i e
+               # (line, timestamp, e) = getItem (i-1) e
+               # (rest, e) = getItems (i-1) e
+               = ([{line=line,timestamp=timestamp}:rest], e)
+
+               getItem :: !Int !*env -> (!String, !String, !*env)
+               getItem i e = code inline {
+                       ccall cleanGetHistoryItem "I-SS"
+               }
+               
+
+historySetHistoryState :: !HistoryState !*env -> !*env
+historySetHistoryState hs e = abort "Not Implemented"
+
 //History List Management
 addHistory :: !String !*env -> !*env
 addHistory s e = code inline {