private void BeginArray(FLArray *a)
        {
            FLArrayIterator i;

            Native.FLArrayIterator_Begin(a, &i);
            _sequenceStack.Push(i);
        }
Esempio n. 2
0
 public static extern bool FLArray_IsEmpty(FLArray *array);
Esempio n. 3
0
 public static extern uint FLArray_Count(FLArray *array);
Esempio n. 4
0
        private uint InsertDocs(FLArray *docs)
        {
            var typeKey    = NativeRaw.FLDictKey_Init(FLSlice.Constant("Track Type"), true);
            var idKey      = NativeRaw.FLDictKey_Init(FLSlice.Constant("Persistent ID"), true);
            var nameKey    = NativeRaw.FLDictKey_Init(FLSlice.Constant("Name"), true);
            var albumKey   = NativeRaw.FLDictKey_Init(FLSlice.Constant("Album"), true);
            var artistKey  = NativeRaw.FLDictKey_Init(FLSlice.Constant("Artist"), true);
            var timeKey    = NativeRaw.FLDictKey_Init(FLSlice.Constant("Total Time"), true);
            var genreKey   = NativeRaw.FLDictKey_Init(FLSlice.Constant("Genre"), true);
            var yearKey    = NativeRaw.FLDictKey_Init(FLSlice.Constant("Year"), true);
            var trackNoKey = NativeRaw.FLDictKey_Init(FLSlice.Constant("Track Number"), true);
            var compKey    = NativeRaw.FLDictKey_Init(FLSlice.Constant("Compilation"), true);

            LiteCoreBridge.Check(err => Native.c4db_beginTransaction(Db, err));
            try {
                var             enc = Native.FLEncoder_New();
                FLArrayIterator iter;
                Native.FLArrayIterator_Begin(docs, &iter);
                uint numDocs = 0;
                while (Native.FLArrayIterator_Next(&iter))
                {
                    // Check that track is correct type:
                    var track     = Native.FLValue_AsDict(Native.FLArrayIterator_GetValue(&iter));
                    var trackType = NativeRaw.FLValue_AsString(Native.FLDict_GetWithKey(track, &typeKey));
                    if (!trackType.Equals(FLSlice.Constant("File")) && !trackType.Equals(FLSlice.Constant("Remote")))
                    {
                        continue;
                    }

                    var trackID = NativeRaw.FLValue_AsString(Native.FLDict_GetWithKey(track, &idKey));
                    ((long)trackID.buf).Should().NotBe(0, "because otherwise the data was not read correctly");

                    // Encode doc body:
                    Native.FLEncoder_BeginDict(enc, 0);
                    CopyValue(track, &nameKey, enc).Should().BeTrue("because otherwise the copy failed");
                    CopyValue(track, &albumKey, enc);
                    CopyValue(track, &artistKey, enc);
                    CopyValue(track, &timeKey, enc);
                    CopyValue(track, &genreKey, enc);
                    CopyValue(track, &yearKey, enc);
                    CopyValue(track, &trackNoKey, enc);
                    CopyValue(track, &compKey, enc);
                    Native.FLEncoder_EndDict(enc);
                    FLError err;
                    var     body = NativeRaw.FLEncoder_Finish(enc, &err);
                    body.Should().NotBeNull("because otherwise the encoding process failed");
                    Native.FLEncoder_Reset(enc);

                    // Save Document:
                    var rq = new C4DocPutRequest();
                    rq.docID = (C4Slice)trackID;
                    rq.body  = body;
                    rq.save  = true;
                    var doc = (C4Document *)LiteCoreBridge.Check(c4err => {
                        var localRq = rq;
                        return(Native.c4doc_put(Db, &localRq, null, c4err));
                    });

                    Native.c4doc_free(doc);
                    ++numDocs;
                }

                Native.FLEncoder_Free(enc);
                return(numDocs);
            } finally {
                LiteCoreBridge.Check(err => Native.c4db_endTransaction(Db, true, err));
            }
        }
 public static extern FLMutableArray FLArray_AsMutable(FLArray *array);
 public static extern FLMutableArray FLArray_MutableCopy(FLArray *array);
 public FLValue *FLArray_Get(FLArray *array, uint index) => Native.FLArray_Get(array, index);
Esempio n. 8
0
 public static extern FLMutableArray *FLArray_MutableCopy(FLArray *array, FLCopyFlags x);
 public uint FLArray_Count(FLArray *array) => Native.FLArray_Count(array);
 public bool FLArray_IsEmpty(FLArray *array) => Native.FLArray_IsEmpty(array);
 public static void FLArrayIterator_Begin(FLArray *array, FLArrayIterator *i) => Impl.FLArrayIterator_Begin(array, i);
 public static FLValue *FLArray_Get(FLArray *array, uint index) => Impl.FLArray_Get(array, index);
 public static uint FLArray_Count(FLArray *array) => Impl.FLArray_Count(array);
Esempio n. 14
0
 public static extern FLValue *FLArray_Get(FLArray *array, uint index);
 public void FLArrayIterator_Begin(FLArray *array, FLArrayIterator *i) => Native.FLArrayIterator_Begin(array, i);
Esempio n. 16
0
 public static extern void FLArrayIterator_Begin(FLArray *array, FLArrayIterator *i);
 public static bool FLArray_IsEmpty(FLArray *array) => Impl.FLArray_IsEmpty(array);