memo.txt


\ memo
needs core-ext
needs toolkit
needs zstrings
needs ids
needs DataMgr

ID DATA    ID memo
2variable _MemoDBR
: MemoDBR  _MemoDBR 2@ ;
variable index

: OpenMemoDB ( -- )
  dmModeReadWrite memo DATA DmOpenDatabaseByTypeCreator
  2dup or 0= throw  _MemoDBR 2! ;

: CloseMemoDB ( -- )
  MemoDBR DmCloseDatabase throw ;

: WriteNewMemo ( zstring length -- )
  0 index !   1+ s>d  2dup  index >abs
    MemoDBR  ( len. &index. DBR. )
      DmNewRecord  ( handle. )
  MemHandleLock 2>r ( R: pointer. )
    rot >abs  0.  2r@
    ( length. &data. offset. DBR. )
      DmWrite throw
  2r> MemPtrUnlock throw
  true  index @  MemoDBR DmReleaseRecord throw ;

: testdata  z" One test memo." ;
: testdata1  z" Another test memo..." ;

: test
  OpenMemoDB
    testdata WriteNewMemo
    testdata1 WriteNewMemo
  CloseMemoDB ;

create buffer 40 allot
: t  bounds ?do i c@ dup bl <
  if drop unloop cr exit then
  emit loop cr ;
: dir
  OpenMemoDB
  MemoDBR DmNumRecords
  1- 0 ?do
    i MemoDBR DmQueryRecord
   2dup MemHandleSize drop .
    MemHandleLock 2dup
    40. 2swap buffer >abs MemMove drop
   buffer 40 t
   MemPtrUnlock drop
   0 i MemoDBR DmReleaseRecord drop
  loop
  CloseMemoDB .s ;


  HTMLized by Forth2HTML