using System; using Microsoft.SPOT; using System.Text; namespace miniCPF { public static class SBQue { private const int defaultCapacity = 512; private const int defaultMessageLength = 256; private static StringBuilder[] que = new StringBuilder[defaultCapacity]; private static StringBuilder sbTemp = new StringBuilder(defaultMessageLength); private static int i = 0; private static int head = 0; private static int tail = 0; private static int count = 0; private static int capacity = defaultCapacity; public static void init() { for (i = 0; i < 512; i++) que[i] = new StringBuilder(defaultMessageLength); } public static void Enqueue(StringBuilder sbIn) { if (count >= capacity) { throw new InvalidOperationException("Queue is full"); } else { que[head].Clear(); que[head].Append(sbIn); head = (head + 1) % capacity; count++; } } public static StringBuilder Dequeue() { if (count == 0) { throw new InvalidOperationException("Queue is empty"); } else { sbTemp.Clear(); sbTemp.Append(que[tail]); tail = (tail + 1) % capacity; count--; return (sbTemp); } } public static int Count { get { return count; } } public static void Clear() { count = 0; tail = head; } } }