ESYS13  Revision_
IndexList.h
Go to the documentation of this file.
00001 
00002 /*******************************************************
00003 *
00004 * Copyright (c) 2003-2012 by University of Queensland
00005 * Earth Systems Science Computational Center (ESSCC)
00006 * http://www.uq.edu.au/esscc
00007 *
00008 * Primary Business: Queensland, Australia
00009 * Licensed under the Open Software License version 3.0
00010 * http://www.opensource.org/licenses/osl-3.0.php
00011 *
00012 *******************************************************/
00013 
00014 
00015 /**************************************************************/
00016 
00017 /*   Paso: pattern                                            */
00018 
00019 /**************************************************************/
00020 
00021 /*   Author: Lutz Gross, l.gross@uq.edu.au */
00022 
00023 /**************************************************************/
00024 
00025 #ifndef INC_PASO_INDEX_LIST
00026 #define INC_PASO_INDEX_LIST
00027 
00028 #include "Common.h"
00029 
00030 /**************************************************************/
00031 
00032 #define INDEXLIST_LENGTH 85
00033 
00034 typedef struct Paso_IndexList {
00035   index_t index[INDEXLIST_LENGTH];
00036   dim_t n;
00037   struct Paso_IndexList *extension;
00038 } Paso_IndexList;
00039 
00040 typedef struct Paso_IndexListArray {
00041    dim_t n;
00042    Paso_IndexList* index_list;
00043 } Paso_IndexListArray;
00044 
00045 PASO_DLL_API
00046 void Paso_IndexList_insertIndex(Paso_IndexList*, index_t);
00047 
00048 PASO_DLL_API
00049 void Paso_IndexList_toArray(Paso_IndexList*, index_t*, index_t, index_t, index_t);
00050 
00051 PASO_DLL_API
00052 dim_t Paso_IndexList_count(Paso_IndexList*,  index_t, index_t);
00053 
00054 PASO_DLL_API
00055 void Paso_IndexList_free(Paso_IndexList*);
00056 
00057 PASO_DLL_API
00058 Paso_IndexListArray* Paso_IndexListArray_alloc(const dim_t n);
00059 
00060 PASO_DLL_API
00061 void Paso_IndexListArray_free(Paso_IndexListArray* in);
00062 
00063 #define Paso_IndexListArray_insertIndex(__a__,i,j) Paso_IndexList_insertIndex(&((__a__)->index_list[i]),j);
00064 
00065 #endif /* #ifndef INC_PASO_INDEX_LIST */