{
  "defines": [
    {
      "name": "RMEM_H",
      "type": "GUARD",
      "value": "",
      "description": ""
    },
    {
      "name": "RMEMAPI",
      "type": "UNKNOWN",
      "value": "__declspec(dllexport)",
      "description": "We are building library as a Win32 shared library (.dll)"
    },
    {
      "name": "RMEM_VERSION",
      "type": "STRING",
      "value": "v1.3",
      "description": "changelog at bottom of header."
    }
  ],
  "structs": [
    {
      "name": "MemNode",
      "description": "Memory pool node",
      "fields": [
        {
          "type": "size_t",
          "name": "size",
          "description": ""
        },
        {
          "type": "MemNode *",
          "name": "next",
          "description": ""
        },
        {
          "type": "MemNode *",
          "name": "prev",
          "description": ""
        }
      ]
    },
    {
      "name": "AllocList",
      "description": "Freelist implementation",
      "fields": [
        {
          "type": "MemNode *",
          "name": "head",
          "description": ""
        },
        {
          "type": "MemNode *",
          "name": "tail",
          "description": ""
        },
        {
          "type": "size_t",
          "name": "len",
          "description": ""
        }
      ]
    },
    {
      "name": "Arena",
      "description": "Arena allocator",
      "fields": [
        {
          "type": "uintptr_t",
          "name": "mem",
          "description": ""
        },
        {
          "type": "uintptr_t",
          "name": "offs",
          "description": ""
        },
        {
          "type": "size_t",
          "name": "size",
          "description": ""
        }
      ]
    },
    {
      "name": "MemPool",
      "description": "Memory pool",
      "fields": [
        {
          "type": "AllocList",
          "name": "large",
          "description": ""
        },
        {
          "type": "AllocList[MEMPOOL_BUCKET_SIZE]",
          "name": "buckets",
          "description": ""
        },
        {
          "type": "Arena",
          "name": "arena",
          "description": ""
        }
      ]
    },
    {
      "name": "ObjPool",
      "description": "Object pool",
      "fields": [
        {
          "type": "uintptr_t",
          "name": "mem",
          "description": ""
        },
        {
          "type": "uintptr_t",
          "name": "offs",
          "description": ""
        },
        {
          "type": "size_t",
          "name": "objSize",
          "description": ""
        },
        {
          "type": "size_t",
          "name": "freeBlocks",
          "description": ""
        },
        {
          "type": "size_t",
          "name": "memSize",
          "description": ""
        }
      ]
    },
    {
      "name": "BiStack",
      "description": "Double-ended stack (aka Deque)",
      "fields": [
        {
          "type": "uintptr_t",
          "name": "mem",
          "description": ""
        },
        {
          "type": "uintptr_t",
          "name": "front",
          "description": ""
        },
        {
          "type": "uintptr_t",
          "name": "back",
          "description": ""
        },
        {
          "type": "size_t",
          "name": "size",
          "description": ""
        }
      ]
    }
  ],
  "aliases": [
  ],
  "enums": [
  ],
  "callbacks": [
  ],
  "functions": [
    {
      "name": "CreateMemPool",
      "description": "",
      "returnType": "MemPool",
      "params": [
        {
          "type": "size_t",
          "name": "bytes"
        }
      ]
    },
    {
      "name": "CreateMemPoolFromBuffer",
      "description": "",
      "returnType": "MemPool",
      "params": [
        {
          "type": "void *",
          "name": "buf"
        },
        {
          "type": "size_t",
          "name": "bytes"
        }
      ]
    },
    {
      "name": "DestroyMemPool",
      "description": "",
      "returnType": "void",
      "params": [
        {
          "type": "MemPool *",
          "name": "mempool"
        }
      ]
    },
    {
      "name": "MemPoolAlloc",
      "description": "",
      "returnType": "void *",
      "params": [
        {
          "type": "MemPool *",
          "name": "mempool"
        },
        {
          "type": "size_t",
          "name": "bytes"
        }
      ]
    },
    {
      "name": "MemPoolRealloc",
      "description": "",
      "returnType": "void *",
      "params": [
        {
          "type": "MemPool *",
          "name": "mempool"
        },
        {
          "type": "void *",
          "name": "ptr"
        },
        {
          "type": "size_t",
          "name": "bytes"
        }
      ]
    },
    {
      "name": "MemPoolFree",
      "description": "",
      "returnType": "void",
      "params": [
        {
          "type": "MemPool *",
          "name": "mempool"
        },
        {
          "type": "void *",
          "name": "ptr"
        }
      ]
    },
    {
      "name": "MemPoolCleanUp",
      "description": "",
      "returnType": "void",
      "params": [
        {
          "type": "MemPool *",
          "name": "mempool"
        },
        {
          "type": "void **",
          "name": "ptrref"
        }
      ]
    },
    {
      "name": "MemPoolReset",
      "description": "",
      "returnType": "void",
      "params": [
        {
          "type": "MemPool *",
          "name": "mempool"
        }
      ]
    },
    {
      "name": "GetMemPoolFreeMemory",
      "description": "",
      "returnType": "size_t",
      "params": [
        {
          "type": "const MemPool",
          "name": "mempool"
        }
      ]
    },
    {
      "name": "CreateObjPool",
      "description": "",
      "returnType": "ObjPool",
      "params": [
        {
          "type": "size_t",
          "name": "objsize"
        },
        {
          "type": "size_t",
          "name": "len"
        }
      ]
    },
    {
      "name": "CreateObjPoolFromBuffer",
      "description": "",
      "returnType": "ObjPool",
      "params": [
        {
          "type": "void *",
          "name": "buf"
        },
        {
          "type": "size_t",
          "name": "objsize"
        },
        {
          "type": "size_t",
          "name": "len"
        }
      ]
    },
    {
      "name": "DestroyObjPool",
      "description": "",
      "returnType": "void",
      "params": [
        {
          "type": "ObjPool *",
          "name": "objpool"
        }
      ]
    },
    {
      "name": "ObjPoolAlloc",
      "description": "",
      "returnType": "void *",
      "params": [
        {
          "type": "ObjPool *",
          "name": "objpool"
        }
      ]
    },
    {
      "name": "ObjPoolFree",
      "description": "",
      "returnType": "void",
      "params": [
        {
          "type": "ObjPool *",
          "name": "objpool"
        },
        {
          "type": "void *",
          "name": "ptr"
        }
      ]
    },
    {
      "name": "ObjPoolCleanUp",
      "description": "",
      "returnType": "void",
      "params": [
        {
          "type": "ObjPool *",
          "name": "objpool"
        },
        {
          "type": "void **",
          "name": "ptrref"
        }
      ]
    },
    {
      "name": "CreateBiStack",
      "description": "",
      "returnType": "BiStack",
      "params": [
        {
          "type": "size_t",
          "name": "len"
        }
      ]
    },
    {
      "name": "CreateBiStackFromBuffer",
      "description": "",
      "returnType": "BiStack",
      "params": [
        {
          "type": "void *",
          "name": "buf"
        },
        {
          "type": "size_t",
          "name": "len"
        }
      ]
    },
    {
      "name": "DestroyBiStack",
      "description": "",
      "returnType": "void",
      "params": [
        {
          "type": "BiStack *",
          "name": "destack"
        }
      ]
    },
    {
      "name": "BiStackAllocFront",
      "description": "",
      "returnType": "void *",
      "params": [
        {
          "type": "BiStack *",
          "name": "destack"
        },
        {
          "type": "size_t",
          "name": "len"
        }
      ]
    },
    {
      "name": "BiStackAllocBack",
      "description": "",
      "returnType": "void *",
      "params": [
        {
          "type": "BiStack *",
          "name": "destack"
        },
        {
          "type": "size_t",
          "name": "len"
        }
      ]
    },
    {
      "name": "BiStackResetFront",
      "description": "",
      "returnType": "void",
      "params": [
        {
          "type": "BiStack *",
          "name": "destack"
        }
      ]
    },
    {
      "name": "BiStackResetBack",
      "description": "",
      "returnType": "void",
      "params": [
        {
          "type": "BiStack *",
          "name": "destack"
        }
      ]
    },
    {
      "name": "BiStackResetAll",
      "description": "",
      "returnType": "void",
      "params": [
        {
          "type": "BiStack *",
          "name": "destack"
        }
      ]
    },
    {
      "name": "BiStackMargins",
      "description": "",
      "returnType": "intptr_t",
      "params": [
        {
          "type": "BiStack",
          "name": "destack"
        }
      ]
    }
  ]
}
