00001
00009 #ifndef BS_BOS_CORE_PP_INDEX_H_
00010 #define BS_BOS_CORE_PP_INDEX_H_
00011
00012 namespace blue_sky {
00013 namespace detail {
00014
00019 template <size_t, bool, bool>
00020 struct pp_index
00021 {
00022 };
00023
00024 template <bool is_w, bool is_g>
00025 struct pp_index <1, is_w, is_g>
00026 {
00027 enum
00028 {
00029 gas_po = 0,
00030 oil_po = 0,
00031 wat_po = 0,
00032
00033 gas_sg = -1, gas_so = -1,
00034 oil_sg = -1, oil_so = -1,
00035 wat_sg = -1, wat_so = -1,
00036 };
00037 };
00038
00039 template <>
00040 struct pp_index <2, true, false>
00041 {
00042 enum
00043 {
00044 oil_so = 0,
00045 oil_po = 1,
00046 wat_so = 2,
00047 wat_po = 3,
00048
00049 gas_sg = -1, gas_so = -1, gas_po = -1,
00050 oil_sg = -1,
00051 wat_sg = -1,
00052 };
00053 };
00054 template <>
00055 struct pp_index <2, false, true>
00056 {
00057 enum
00058 {
00059 gas_sg = 0,
00060 gas_po = 1,
00061 oil_sg = 2,
00062 oil_po = 3,
00063 gas_so = 4,
00064 oil_so = 5,
00065
00066 wat_sg = -1, wat_so = -1, wat_po = -1,
00067 };
00068 };
00069
00070 template <bool is_w, bool is_g>
00071 struct pp_index <3, is_w, is_g>
00072 {
00073 enum
00074 {
00075 gas_sg = 0, gas_so = 1, gas_po = 2,
00076 oil_sg = 3, oil_so = 4, oil_po = 5,
00077 wat_sg = 6, wat_so = 7, wat_po = 8,
00078 };
00079 };
00080
00081 }
00082 }
00083
00084
00085 #endif // #ifndef BS_BOS_CORE_PP_INDEX_H_