matcommon.h

Go to the documentation of this file.
00001 
00006 #if !defined(INC_OSKI_MATCOMMON_H) && !defined(OSKI_UNBIND)
00007 
00008 #define INC_OSKI_MATCOMMON_H
00009 
00010 #include <oski/common.h>
00011 #include <oski/mangle.h>
00012 
00013 #if defined(DO_NAME_MANGLING)
00014 
00016 #define oski_matcommon_t    MANGLE_(oski_matcommon_t)
00017 #define oski_matspecific_t  MANGLE_(oski_matspecific_t)
00018 
00019 #define oski_TransposePatternProp MANGLE_(oski_TransposePatternProp)
00020 #define oski_TransposeProps  MANGLE_(oski_TransposeProps)
00021 
00022 #endif
00023 
00030 typedef struct
00031 {
00032   oski_index_t num_rows;        
00033   oski_index_t num_cols;        
00034   oski_index_t num_nonzeros;        
00036   int has_unit_diag;       
00039   struct
00040   {
00041     int is_symm;         
00042     int is_herm;         
00043     int is_tri_upper;
00045     int is_tri_lower;
00047   } pattern;
00048 }
00049 oski_matcommon_t;
00050 
00055 #define OSKI_MATPROP_IS_SQUARE(props) ((props)->num_rows == (props)->num_cols)
00056 
00061 #define OSKI_MATPROP_IS_TRI(props) \
00062     ((props)->pattern.is_tri_upper || (props)->pattern.is_tri_lower)
00063 
00070 oski_inmatprop_t oski_TransposePatternProp (oski_inmatprop_t pattern);
00071 
00073 void oski_TransposeProps (oski_matcommon_t * props);
00074 
00075 /* ---------------------------------------------------------- */
00076 
00083 typedef struct
00084 {
00085   oski_id_t type_id;         
00086   void *repr;             
00087 }
00088 oski_matspecific_t;
00089 
00090 #endif /* !defined(INC_OSKI_MATCOMMON_H) */
00091 
00092 #if defined(OSKI_UNBIND)
00093 #  include <oski/common.h>
00094 #  include <oski/mangle.h>
00095 #  undef INC_OSKI_MATCOMMON_H
00096 #  undef oski_matcommon_t
00097 #  undef oski_matspecific_t
00098 #  undef oski_TransposePatternProp
00099 #  undef oski_TransposeProps
00100 #  undef OSKI_MATPROP_IS_SQUARE
00101 #  undef OSKI_MATPROP_IS_TRI
00102 #endif
00103 
00104 /* eof */

Generated on Wed Sep 19 16:41:18 2007 for BeBOP Optimized Sparse Kernel Interface Library by  doxygen 1.4.6