Templated function pointer class. Common utility that other classes are built on / with

Dependents:   Waldo_Embed_V2 MQTT MQTTSN MQTT ... more

Good resource about declaring templated types for the linker

Basic Use

#include "mbed.h"
#include "FP.h"
  
FP<void,bool>fp;
DigitalOut myled(LED1);
  
void handler(bool value)
{
    myled = value;
    return;
}
  
int main()
{
    fp.attach(&handler);
      
    while(1) 
    {
        fp(1);
        wait(0.2);
        fp(0);
        wait(0.2);
    }
}

Example using the FP Class with different class member functions

#include "mbed.h"
#include "FP.h"
  
FP<void,bool>fp;
DigitalOut myled(LED4);
  
class Wrapper
{
public:
    Wrapper(){}
  
    void handler(bool value)
    {
        myled = value;
        return;
    }
};
  
int main()
{
    Wrapper wrapped;
    fp.attach(&wrapped, &Wrapper::handler);
    
    while(1) 
    {
        fp(1);
        wait(0.2);
        fp(0);
        wait(0.2);
    }
}

Example using the FP Class with member FP and member function

#include "mbed.h"
#include "FP.h"
  
DigitalOut myled(LED2);
  
class Wrapper
{
public:
    Wrapper()
    {
        fp.attach(this, &Wrapper::handler);
    }
  
    void handler(bool value)
    {
        myled = value;
        return;
    }
      
    FP<void,bool>fp;
};
  
int main()
{
    Wrapper wrapped;
      
    while(1) 
    {
        wrapped.fp(1);
        wait(0.2);
        wrapped.fp(0);
        wait(0.2);
    }
}
Committer:
sam_grove
Date:
Tue May 14 23:16:09 2013 +0000
Revision:
1:e9a4765b560f
Parent:
0:a34f15741c5a
Child:
2:bc7c28fe64b6
Updated comments;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sam_grove 0:a34f15741c5a 1 /**
sam_grove 0:a34f15741c5a 2 * @file FP.cpp
sam_grove 0:a34f15741c5a 3 * @brief Core Utility - Templated Function Pointer Class
sam_grove 0:a34f15741c5a 4 * @author sam grove
sam_grove 0:a34f15741c5a 5 * @version 1.0
sam_grove 0:a34f15741c5a 6 * @see
sam_grove 0:a34f15741c5a 7 *
sam_grove 0:a34f15741c5a 8 * Copyright (c) 2013
sam_grove 0:a34f15741c5a 9 *
sam_grove 0:a34f15741c5a 10 * Licensed under the Apache License, Version 2.0 (the "License");
sam_grove 0:a34f15741c5a 11 * you may not use this file except in compliance with the License.
sam_grove 0:a34f15741c5a 12 * You may obtain a copy of the License at
sam_grove 0:a34f15741c5a 13 *
sam_grove 0:a34f15741c5a 14 * http://www.apache.org/licenses/LICENSE-2.0
sam_grove 0:a34f15741c5a 15 *
sam_grove 0:a34f15741c5a 16 * Unless required by applicable law or agreed to in writing, software
sam_grove 0:a34f15741c5a 17 * distributed under the License is distributed on an "AS IS" BASIS,
sam_grove 0:a34f15741c5a 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
sam_grove 0:a34f15741c5a 19 * See the License for the specific language governing permissions and
sam_grove 0:a34f15741c5a 20 * limitations under the License.
sam_grove 0:a34f15741c5a 21 */
sam_grove 0:a34f15741c5a 22
sam_grove 0:a34f15741c5a 23 #include "FP.h"
sam_grove 0:a34f15741c5a 24 #include <stdint.h>
sam_grove 0:a34f15741c5a 25
sam_grove 0:a34f15741c5a 26 template<class retT, class argT>
sam_grove 0:a34f15741c5a 27 FP<retT, argT>::FP()
sam_grove 0:a34f15741c5a 28 {
sam_grove 0:a34f15741c5a 29 obj_callback = 0;
sam_grove 0:a34f15741c5a 30 c_callback = 0;
sam_grove 0:a34f15741c5a 31 }
sam_grove 0:a34f15741c5a 32
sam_grove 0:a34f15741c5a 33 template<class retT, class argT>
sam_grove 0:a34f15741c5a 34 void FP<retT, argT>::attach(retT (*function)(argT))
sam_grove 0:a34f15741c5a 35 {
sam_grove 0:a34f15741c5a 36 c_callback = function;
sam_grove 0:a34f15741c5a 37 }
sam_grove 0:a34f15741c5a 38
sam_grove 0:a34f15741c5a 39 template<class retT, class argT>
sam_grove 0:a34f15741c5a 40 retT FP<retT, argT>::operator()(argT arg) const
sam_grove 0:a34f15741c5a 41 {
sam_grove 0:a34f15741c5a 42 if( 0 != c_callback )
sam_grove 0:a34f15741c5a 43 {
sam_grove 0:a34f15741c5a 44 return obj_callback ? (obj_callback->*method_callback)(arg) : (*c_callback)(arg);
sam_grove 0:a34f15741c5a 45 }
sam_grove 0:a34f15741c5a 46 return (retT)0;
sam_grove 0:a34f15741c5a 47 }
sam_grove 0:a34f15741c5a 48
sam_grove 1:e9a4765b560f 49 // pre-define the types for the linker
sam_grove 0:a34f15741c5a 50 template class FP<void,char>;
sam_grove 0:a34f15741c5a 51 template class FP<void,char*>;
sam_grove 0:a34f15741c5a 52 template class FP<void,int8_t>;
sam_grove 0:a34f15741c5a 53 template class FP<void,int8_t*>;
sam_grove 0:a34f15741c5a 54 template class FP<void,uint8_t>;
sam_grove 0:a34f15741c5a 55 template class FP<void,uint8_t*>;
sam_grove 0:a34f15741c5a 56 template class FP<void,int16_t>;
sam_grove 0:a34f15741c5a 57 template class FP<void,int16_t*>;
sam_grove 0:a34f15741c5a 58 template class FP<void,uint16_t>;
sam_grove 0:a34f15741c5a 59 template class FP<void,uint16_t*>;
sam_grove 0:a34f15741c5a 60 template class FP<void,int32_t>;
sam_grove 0:a34f15741c5a 61 template class FP<void,int32_t*>;
sam_grove 0:a34f15741c5a 62 template class FP<void,uint32_t>;
sam_grove 0:a34f15741c5a 63 template class FP<void,uint32_t*>;
sam_grove 0:a34f15741c5a 64 template class FP<void,int64_t>;
sam_grove 0:a34f15741c5a 65 template class FP<void,int64_t*>;
sam_grove 0:a34f15741c5a 66 template class FP<void,uint64_t>;
sam_grove 0:a34f15741c5a 67 template class FP<void,uint64_t*>;
sam_grove 0:a34f15741c5a 68 template class FP<void,bool>;
sam_grove 0:a34f15741c5a 69 template class FP<void,bool*>;
sam_grove 0:a34f15741c5a 70 template class FP<void,float>;
sam_grove 0:a34f15741c5a 71 template class FP<void,float*>;
sam_grove 0:a34f15741c5a 72 template class FP<void,double>;
sam_grove 0:a34f15741c5a 73 template class FP<void,double*>;
sam_grove 0:a34f15741c5a 74
sam_grove 0:a34f15741c5a 75 template class FP<int8_t,char>;
sam_grove 0:a34f15741c5a 76 template class FP<int8_t,char*>;
sam_grove 0:a34f15741c5a 77 template class FP<int8_t,int8_t>;
sam_grove 0:a34f15741c5a 78 template class FP<int8_t,int8_t*>;
sam_grove 0:a34f15741c5a 79 template class FP<int8_t,uint8_t>;
sam_grove 0:a34f15741c5a 80 template class FP<int8_t,uint8_t*>;
sam_grove 0:a34f15741c5a 81 template class FP<int8_t,int16_t>;
sam_grove 0:a34f15741c5a 82 template class FP<int8_t,int16_t*>;
sam_grove 0:a34f15741c5a 83 template class FP<int8_t,uint16_t>;
sam_grove 0:a34f15741c5a 84 template class FP<int8_t,uint16_t*>;
sam_grove 0:a34f15741c5a 85 template class FP<int8_t,int32_t>;
sam_grove 0:a34f15741c5a 86 template class FP<int8_t,int32_t*>;
sam_grove 0:a34f15741c5a 87 template class FP<int8_t,uint32_t>;
sam_grove 0:a34f15741c5a 88 template class FP<int8_t,uint32_t*>;
sam_grove 0:a34f15741c5a 89 template class FP<int8_t,int64_t>;
sam_grove 0:a34f15741c5a 90 template class FP<int8_t,int64_t*>;
sam_grove 0:a34f15741c5a 91 template class FP<int8_t,uint64_t>;
sam_grove 0:a34f15741c5a 92 template class FP<int8_t,uint64_t*>;
sam_grove 0:a34f15741c5a 93 template class FP<int8_t,bool>;
sam_grove 0:a34f15741c5a 94 template class FP<int8_t,bool*>;
sam_grove 0:a34f15741c5a 95 template class FP<int8_t,float>;
sam_grove 0:a34f15741c5a 96 template class FP<int8_t,float*>;
sam_grove 0:a34f15741c5a 97 template class FP<int8_t,double>;
sam_grove 0:a34f15741c5a 98 template class FP<int8_t,double*>;
sam_grove 0:a34f15741c5a 99
sam_grove 0:a34f15741c5a 100 template class FP<int8_t*,char>;
sam_grove 0:a34f15741c5a 101 template class FP<int8_t*,char*>;
sam_grove 0:a34f15741c5a 102 template class FP<int8_t*,int8_t>;
sam_grove 0:a34f15741c5a 103 template class FP<int8_t*,int8_t*>;
sam_grove 0:a34f15741c5a 104 template class FP<int8_t*,uint8_t>;
sam_grove 0:a34f15741c5a 105 template class FP<int8_t*,uint8_t*>;
sam_grove 0:a34f15741c5a 106 template class FP<int8_t*,int16_t>;
sam_grove 0:a34f15741c5a 107 template class FP<int8_t*,int16_t*>;
sam_grove 0:a34f15741c5a 108 template class FP<int8_t*,uint16_t>;
sam_grove 0:a34f15741c5a 109 template class FP<int8_t*,uint16_t*>;
sam_grove 0:a34f15741c5a 110 template class FP<int8_t*,int32_t>;
sam_grove 0:a34f15741c5a 111 template class FP<int8_t*,int32_t*>;
sam_grove 0:a34f15741c5a 112 template class FP<int8_t*,uint32_t>;
sam_grove 0:a34f15741c5a 113 template class FP<int8_t*,uint32_t*>;
sam_grove 0:a34f15741c5a 114 template class FP<int8_t*,int64_t>;
sam_grove 0:a34f15741c5a 115 template class FP<int8_t*,int64_t*>;
sam_grove 0:a34f15741c5a 116 template class FP<int8_t*,uint64_t>;
sam_grove 0:a34f15741c5a 117 template class FP<int8_t*,uint64_t*>;
sam_grove 0:a34f15741c5a 118 template class FP<int8_t*,bool>;
sam_grove 0:a34f15741c5a 119 template class FP<int8_t*,bool*>;
sam_grove 0:a34f15741c5a 120 template class FP<int8_t*,float>;
sam_grove 0:a34f15741c5a 121 template class FP<int8_t*,float*>;
sam_grove 0:a34f15741c5a 122 template class FP<int8_t*,double>;
sam_grove 0:a34f15741c5a 123 template class FP<int8_t*,double*>;
sam_grove 0:a34f15741c5a 124
sam_grove 0:a34f15741c5a 125 template class FP<uint8_t,char>;
sam_grove 0:a34f15741c5a 126 template class FP<uint8_t,char*>;
sam_grove 0:a34f15741c5a 127 template class FP<uint8_t,int8_t>;
sam_grove 0:a34f15741c5a 128 template class FP<uint8_t,int8_t*>;
sam_grove 0:a34f15741c5a 129 template class FP<uint8_t,uint8_t>;
sam_grove 0:a34f15741c5a 130 template class FP<uint8_t,uint8_t*>;
sam_grove 0:a34f15741c5a 131 template class FP<uint8_t,int16_t>;
sam_grove 0:a34f15741c5a 132 template class FP<uint8_t,int16_t*>;
sam_grove 0:a34f15741c5a 133 template class FP<uint8_t,uint16_t>;
sam_grove 0:a34f15741c5a 134 template class FP<uint8_t,uint16_t*>;
sam_grove 0:a34f15741c5a 135 template class FP<uint8_t,int32_t>;
sam_grove 0:a34f15741c5a 136 template class FP<uint8_t,int32_t*>;
sam_grove 0:a34f15741c5a 137 template class FP<uint8_t,uint32_t>;
sam_grove 0:a34f15741c5a 138 template class FP<uint8_t,uint32_t*>;
sam_grove 0:a34f15741c5a 139 template class FP<uint8_t,int64_t>;
sam_grove 0:a34f15741c5a 140 template class FP<uint8_t,int64_t*>;
sam_grove 0:a34f15741c5a 141 template class FP<uint8_t,uint64_t>;
sam_grove 0:a34f15741c5a 142 template class FP<uint8_t,uint64_t*>;
sam_grove 0:a34f15741c5a 143 template class FP<uint8_t,bool>;
sam_grove 0:a34f15741c5a 144 template class FP<uint8_t,bool*>;
sam_grove 0:a34f15741c5a 145 template class FP<uint8_t,float>;
sam_grove 0:a34f15741c5a 146 template class FP<uint8_t,float*>;
sam_grove 0:a34f15741c5a 147 template class FP<uint8_t,double>;
sam_grove 0:a34f15741c5a 148 template class FP<uint8_t,double*>;
sam_grove 0:a34f15741c5a 149
sam_grove 0:a34f15741c5a 150 template class FP<uint8_t*,char>;
sam_grove 0:a34f15741c5a 151 template class FP<uint8_t*,char*>;
sam_grove 0:a34f15741c5a 152 template class FP<uint8_t*,int8_t>;
sam_grove 0:a34f15741c5a 153 template class FP<uint8_t*,int8_t*>;
sam_grove 0:a34f15741c5a 154 template class FP<uint8_t*,uint8_t>;
sam_grove 0:a34f15741c5a 155 template class FP<uint8_t*,uint8_t*>;
sam_grove 0:a34f15741c5a 156 template class FP<uint8_t*,int16_t>;
sam_grove 0:a34f15741c5a 157 template class FP<uint8_t*,int16_t*>;
sam_grove 0:a34f15741c5a 158 template class FP<uint8_t*,uint16_t>;
sam_grove 0:a34f15741c5a 159 template class FP<uint8_t*,uint16_t*>;
sam_grove 0:a34f15741c5a 160 template class FP<uint8_t*,int32_t>;
sam_grove 0:a34f15741c5a 161 template class FP<uint8_t*,int32_t*>;
sam_grove 0:a34f15741c5a 162 template class FP<uint8_t*,uint32_t>;
sam_grove 0:a34f15741c5a 163 template class FP<uint8_t*,uint32_t*>;
sam_grove 0:a34f15741c5a 164 template class FP<uint8_t*,int64_t>;
sam_grove 0:a34f15741c5a 165 template class FP<uint8_t*,int64_t*>;
sam_grove 0:a34f15741c5a 166 template class FP<uint8_t*,uint64_t>;
sam_grove 0:a34f15741c5a 167 template class FP<uint8_t*,uint64_t*>;
sam_grove 0:a34f15741c5a 168 template class FP<uint8_t*,bool>;
sam_grove 0:a34f15741c5a 169 template class FP<uint8_t*,bool*>;
sam_grove 0:a34f15741c5a 170 template class FP<uint8_t*,float>;
sam_grove 0:a34f15741c5a 171 template class FP<uint8_t*,float*>;
sam_grove 0:a34f15741c5a 172 template class FP<uint8_t*,double>;
sam_grove 0:a34f15741c5a 173 template class FP<uint8_t*,double*>;
sam_grove 0:a34f15741c5a 174
sam_grove 0:a34f15741c5a 175 template class FP<int16_t,char>;
sam_grove 0:a34f15741c5a 176 template class FP<int16_t,char*>;
sam_grove 0:a34f15741c5a 177 template class FP<int16_t,int8_t>;
sam_grove 0:a34f15741c5a 178 template class FP<int16_t,int8_t*>;
sam_grove 0:a34f15741c5a 179 template class FP<int16_t,uint8_t>;
sam_grove 0:a34f15741c5a 180 template class FP<int16_t,uint8_t*>;
sam_grove 0:a34f15741c5a 181 template class FP<int16_t,int16_t>;
sam_grove 0:a34f15741c5a 182 template class FP<int16_t,int16_t*>;
sam_grove 0:a34f15741c5a 183 template class FP<int16_t,uint16_t>;
sam_grove 0:a34f15741c5a 184 template class FP<int16_t,uint16_t*>;
sam_grove 0:a34f15741c5a 185 template class FP<int16_t,int32_t>;
sam_grove 0:a34f15741c5a 186 template class FP<int16_t,int32_t*>;
sam_grove 0:a34f15741c5a 187 template class FP<int16_t,uint32_t>;
sam_grove 0:a34f15741c5a 188 template class FP<int16_t,uint32_t*>;
sam_grove 0:a34f15741c5a 189 template class FP<int16_t,int64_t>;
sam_grove 0:a34f15741c5a 190 template class FP<int16_t,int64_t*>;
sam_grove 0:a34f15741c5a 191 template class FP<int16_t,uint64_t>;
sam_grove 0:a34f15741c5a 192 template class FP<int16_t,uint64_t*>;
sam_grove 0:a34f15741c5a 193 template class FP<int16_t,bool>;
sam_grove 0:a34f15741c5a 194 template class FP<int16_t,bool*>;
sam_grove 0:a34f15741c5a 195 template class FP<int16_t,float>;
sam_grove 0:a34f15741c5a 196 template class FP<int16_t,float*>;
sam_grove 0:a34f15741c5a 197 template class FP<int16_t,double>;
sam_grove 0:a34f15741c5a 198 template class FP<int16_t,double*>;
sam_grove 0:a34f15741c5a 199
sam_grove 0:a34f15741c5a 200 template class FP<int16_t*,char>;
sam_grove 0:a34f15741c5a 201 template class FP<int16_t*,char*>;
sam_grove 0:a34f15741c5a 202 template class FP<int16_t*,int8_t>;
sam_grove 0:a34f15741c5a 203 template class FP<int16_t*,int8_t*>;
sam_grove 0:a34f15741c5a 204 template class FP<int16_t*,uint8_t>;
sam_grove 0:a34f15741c5a 205 template class FP<int16_t*,uint8_t*>;
sam_grove 0:a34f15741c5a 206 template class FP<int16_t*,int16_t>;
sam_grove 0:a34f15741c5a 207 template class FP<int16_t*,int16_t*>;
sam_grove 0:a34f15741c5a 208 template class FP<int16_t*,uint16_t>;
sam_grove 0:a34f15741c5a 209 template class FP<int16_t*,uint16_t*>;
sam_grove 0:a34f15741c5a 210 template class FP<int16_t*,int32_t>;
sam_grove 0:a34f15741c5a 211 template class FP<int16_t*,int32_t*>;
sam_grove 0:a34f15741c5a 212 template class FP<int16_t*,uint32_t>;
sam_grove 0:a34f15741c5a 213 template class FP<int16_t*,uint32_t*>;
sam_grove 0:a34f15741c5a 214 template class FP<int16_t*,int64_t>;
sam_grove 0:a34f15741c5a 215 template class FP<int16_t*,int64_t*>;
sam_grove 0:a34f15741c5a 216 template class FP<int16_t*,uint64_t>;
sam_grove 0:a34f15741c5a 217 template class FP<int16_t*,uint64_t*>;
sam_grove 0:a34f15741c5a 218 template class FP<int16_t*,bool>;
sam_grove 0:a34f15741c5a 219 template class FP<int16_t*,bool*>;
sam_grove 0:a34f15741c5a 220 template class FP<int16_t*,float>;
sam_grove 0:a34f15741c5a 221 template class FP<int16_t*,float*>;
sam_grove 0:a34f15741c5a 222 template class FP<int16_t*,double>;
sam_grove 0:a34f15741c5a 223 template class FP<int16_t*,double*>;
sam_grove 0:a34f15741c5a 224
sam_grove 0:a34f15741c5a 225 template class FP<uint16_t,char>;
sam_grove 0:a34f15741c5a 226 template class FP<uint16_t,char*>;
sam_grove 0:a34f15741c5a 227 template class FP<uint16_t,int8_t>;
sam_grove 0:a34f15741c5a 228 template class FP<uint16_t,int8_t*>;
sam_grove 0:a34f15741c5a 229 template class FP<uint16_t,uint8_t>;
sam_grove 0:a34f15741c5a 230 template class FP<uint16_t,uint8_t*>;
sam_grove 0:a34f15741c5a 231 template class FP<uint16_t,int16_t>;
sam_grove 0:a34f15741c5a 232 template class FP<uint16_t,int16_t*>;
sam_grove 0:a34f15741c5a 233 template class FP<uint16_t,uint16_t>;
sam_grove 0:a34f15741c5a 234 template class FP<uint16_t,uint16_t*>;
sam_grove 0:a34f15741c5a 235 template class FP<uint16_t,int32_t>;
sam_grove 0:a34f15741c5a 236 template class FP<uint16_t,int32_t*>;
sam_grove 0:a34f15741c5a 237 template class FP<uint16_t,uint32_t>;
sam_grove 0:a34f15741c5a 238 template class FP<uint16_t,uint32_t*>;
sam_grove 0:a34f15741c5a 239 template class FP<uint16_t,int64_t>;
sam_grove 0:a34f15741c5a 240 template class FP<uint16_t,int64_t*>;
sam_grove 0:a34f15741c5a 241 template class FP<uint16_t,uint64_t>;
sam_grove 0:a34f15741c5a 242 template class FP<uint16_t,uint64_t*>;
sam_grove 0:a34f15741c5a 243 template class FP<uint16_t,bool>;
sam_grove 0:a34f15741c5a 244 template class FP<uint16_t,bool*>;
sam_grove 0:a34f15741c5a 245 template class FP<uint16_t,float>;
sam_grove 0:a34f15741c5a 246 template class FP<uint16_t,float*>;
sam_grove 0:a34f15741c5a 247 template class FP<uint16_t,double>;
sam_grove 0:a34f15741c5a 248 template class FP<uint16_t,double*>;
sam_grove 0:a34f15741c5a 249
sam_grove 0:a34f15741c5a 250 template class FP<uint16_t*,char>;
sam_grove 0:a34f15741c5a 251 template class FP<uint16_t*,char*>;
sam_grove 0:a34f15741c5a 252 template class FP<uint16_t*,int8_t>;
sam_grove 0:a34f15741c5a 253 template class FP<uint16_t*,int8_t*>;
sam_grove 0:a34f15741c5a 254 template class FP<uint16_t*,uint8_t>;
sam_grove 0:a34f15741c5a 255 template class FP<uint16_t*,uint8_t*>;
sam_grove 0:a34f15741c5a 256 template class FP<uint16_t*,int16_t>;
sam_grove 0:a34f15741c5a 257 template class FP<uint16_t*,int16_t*>;
sam_grove 0:a34f15741c5a 258 template class FP<uint16_t*,uint16_t>;
sam_grove 0:a34f15741c5a 259 template class FP<uint16_t*,uint16_t*>;
sam_grove 0:a34f15741c5a 260 template class FP<uint16_t*,int32_t>;
sam_grove 0:a34f15741c5a 261 template class FP<uint16_t*,int32_t*>;
sam_grove 0:a34f15741c5a 262 template class FP<uint16_t*,uint32_t>;
sam_grove 0:a34f15741c5a 263 template class FP<uint16_t*,uint32_t*>;
sam_grove 0:a34f15741c5a 264 template class FP<uint16_t*,int64_t>;
sam_grove 0:a34f15741c5a 265 template class FP<uint16_t*,int64_t*>;
sam_grove 0:a34f15741c5a 266 template class FP<uint16_t*,uint64_t>;
sam_grove 0:a34f15741c5a 267 template class FP<uint16_t*,uint64_t*>;
sam_grove 0:a34f15741c5a 268 template class FP<uint16_t*,bool>;
sam_grove 0:a34f15741c5a 269 template class FP<uint16_t*,bool*>;
sam_grove 0:a34f15741c5a 270 template class FP<uint16_t*,float>;
sam_grove 0:a34f15741c5a 271 template class FP<uint16_t*,float*>;
sam_grove 0:a34f15741c5a 272 template class FP<uint16_t*,double>;
sam_grove 0:a34f15741c5a 273 template class FP<uint16_t*,double*>;
sam_grove 0:a34f15741c5a 274
sam_grove 0:a34f15741c5a 275 template class FP<int32_t,char>;
sam_grove 0:a34f15741c5a 276 template class FP<int32_t,char*>;
sam_grove 0:a34f15741c5a 277 template class FP<int32_t,int8_t>;
sam_grove 0:a34f15741c5a 278 template class FP<int32_t,int8_t*>;
sam_grove 0:a34f15741c5a 279 template class FP<int32_t,uint8_t>;
sam_grove 0:a34f15741c5a 280 template class FP<int32_t,uint8_t*>;
sam_grove 0:a34f15741c5a 281 template class FP<int32_t,int16_t>;
sam_grove 0:a34f15741c5a 282 template class FP<int32_t,int16_t*>;
sam_grove 0:a34f15741c5a 283 template class FP<int32_t,uint16_t>;
sam_grove 0:a34f15741c5a 284 template class FP<int32_t,uint16_t*>;
sam_grove 0:a34f15741c5a 285 template class FP<int32_t,int32_t>;
sam_grove 0:a34f15741c5a 286 template class FP<int32_t,int32_t*>;
sam_grove 0:a34f15741c5a 287 template class FP<int32_t,uint32_t>;
sam_grove 0:a34f15741c5a 288 template class FP<int32_t,uint32_t*>;
sam_grove 0:a34f15741c5a 289 template class FP<int32_t,int64_t>;
sam_grove 0:a34f15741c5a 290 template class FP<int32_t,int64_t*>;
sam_grove 0:a34f15741c5a 291 template class FP<int32_t,uint64_t>;
sam_grove 0:a34f15741c5a 292 template class FP<int32_t,uint64_t*>;
sam_grove 0:a34f15741c5a 293 template class FP<int32_t,bool>;
sam_grove 0:a34f15741c5a 294 template class FP<int32_t,bool*>;
sam_grove 0:a34f15741c5a 295 template class FP<int32_t,float>;
sam_grove 0:a34f15741c5a 296 template class FP<int32_t,float*>;
sam_grove 0:a34f15741c5a 297 template class FP<int32_t,double>;
sam_grove 0:a34f15741c5a 298 template class FP<int32_t,double*>;
sam_grove 0:a34f15741c5a 299
sam_grove 0:a34f15741c5a 300 template class FP<int32_t*,char>;
sam_grove 0:a34f15741c5a 301 template class FP<int32_t*,char*>;
sam_grove 0:a34f15741c5a 302 template class FP<int32_t*,int8_t>;
sam_grove 0:a34f15741c5a 303 template class FP<int32_t*,int8_t*>;
sam_grove 0:a34f15741c5a 304 template class FP<int32_t*,uint8_t>;
sam_grove 0:a34f15741c5a 305 template class FP<int32_t*,uint8_t*>;
sam_grove 0:a34f15741c5a 306 template class FP<int32_t*,int16_t>;
sam_grove 0:a34f15741c5a 307 template class FP<int32_t*,int16_t*>;
sam_grove 0:a34f15741c5a 308 template class FP<int32_t*,uint16_t>;
sam_grove 0:a34f15741c5a 309 template class FP<int32_t*,uint16_t*>;
sam_grove 0:a34f15741c5a 310 template class FP<int32_t*,int32_t>;
sam_grove 0:a34f15741c5a 311 template class FP<int32_t*,int32_t*>;
sam_grove 0:a34f15741c5a 312 template class FP<int32_t*,uint32_t>;
sam_grove 0:a34f15741c5a 313 template class FP<int32_t*,uint32_t*>;
sam_grove 0:a34f15741c5a 314 template class FP<int32_t*,int64_t>;
sam_grove 0:a34f15741c5a 315 template class FP<int32_t*,int64_t*>;
sam_grove 0:a34f15741c5a 316 template class FP<int32_t*,uint64_t>;
sam_grove 0:a34f15741c5a 317 template class FP<int32_t*,uint64_t*>;
sam_grove 0:a34f15741c5a 318 template class FP<int32_t*,bool>;
sam_grove 0:a34f15741c5a 319 template class FP<int32_t*,bool*>;
sam_grove 0:a34f15741c5a 320 template class FP<int32_t*,float>;
sam_grove 0:a34f15741c5a 321 template class FP<int32_t*,float*>;
sam_grove 0:a34f15741c5a 322 template class FP<int32_t*,double>;
sam_grove 0:a34f15741c5a 323 template class FP<int32_t*,double*>;
sam_grove 0:a34f15741c5a 324
sam_grove 0:a34f15741c5a 325 template class FP<uint32_t,char>;
sam_grove 0:a34f15741c5a 326 template class FP<uint32_t,char*>;
sam_grove 0:a34f15741c5a 327 template class FP<uint32_t,int8_t>;
sam_grove 0:a34f15741c5a 328 template class FP<uint32_t,int8_t*>;
sam_grove 0:a34f15741c5a 329 template class FP<uint32_t,uint8_t>;
sam_grove 0:a34f15741c5a 330 template class FP<uint32_t,uint8_t*>;
sam_grove 0:a34f15741c5a 331 template class FP<uint32_t,int16_t>;
sam_grove 0:a34f15741c5a 332 template class FP<uint32_t,int16_t*>;
sam_grove 0:a34f15741c5a 333 template class FP<uint32_t,uint16_t>;
sam_grove 0:a34f15741c5a 334 template class FP<uint32_t,uint16_t*>;
sam_grove 0:a34f15741c5a 335 template class FP<uint32_t,int32_t>;
sam_grove 0:a34f15741c5a 336 template class FP<uint32_t,int32_t*>;
sam_grove 0:a34f15741c5a 337 template class FP<uint32_t,uint32_t>;
sam_grove 0:a34f15741c5a 338 template class FP<uint32_t,uint32_t*>;
sam_grove 0:a34f15741c5a 339 template class FP<uint32_t,int64_t>;
sam_grove 0:a34f15741c5a 340 template class FP<uint32_t,int64_t*>;
sam_grove 0:a34f15741c5a 341 template class FP<uint32_t,uint64_t>;
sam_grove 0:a34f15741c5a 342 template class FP<uint32_t,uint64_t*>;
sam_grove 0:a34f15741c5a 343 template class FP<uint32_t,bool>;
sam_grove 0:a34f15741c5a 344 template class FP<uint32_t,bool*>;
sam_grove 0:a34f15741c5a 345 template class FP<uint32_t,float>;
sam_grove 0:a34f15741c5a 346 template class FP<uint32_t,float*>;
sam_grove 0:a34f15741c5a 347 template class FP<uint32_t,double>;
sam_grove 0:a34f15741c5a 348 template class FP<uint32_t,double*>;
sam_grove 0:a34f15741c5a 349
sam_grove 0:a34f15741c5a 350 template class FP<uint32_t*,char>;
sam_grove 0:a34f15741c5a 351 template class FP<uint32_t*,char*>;
sam_grove 0:a34f15741c5a 352 template class FP<uint32_t*,int8_t>;
sam_grove 0:a34f15741c5a 353 template class FP<uint32_t*,int8_t*>;
sam_grove 0:a34f15741c5a 354 template class FP<uint32_t*,uint8_t>;
sam_grove 0:a34f15741c5a 355 template class FP<uint32_t*,uint8_t*>;
sam_grove 0:a34f15741c5a 356 template class FP<uint32_t*,int16_t>;
sam_grove 0:a34f15741c5a 357 template class FP<uint32_t*,int16_t*>;
sam_grove 0:a34f15741c5a 358 template class FP<uint32_t*,uint16_t>;
sam_grove 0:a34f15741c5a 359 template class FP<uint32_t*,uint16_t*>;
sam_grove 0:a34f15741c5a 360 template class FP<uint32_t*,int32_t>;
sam_grove 0:a34f15741c5a 361 template class FP<uint32_t*,int32_t*>;
sam_grove 0:a34f15741c5a 362 template class FP<uint32_t*,uint32_t>;
sam_grove 0:a34f15741c5a 363 template class FP<uint32_t*,uint32_t*>;
sam_grove 0:a34f15741c5a 364 template class FP<uint32_t*,int64_t>;
sam_grove 0:a34f15741c5a 365 template class FP<uint32_t*,int64_t*>;
sam_grove 0:a34f15741c5a 366 template class FP<uint32_t*,uint64_t>;
sam_grove 0:a34f15741c5a 367 template class FP<uint32_t*,uint64_t*>;
sam_grove 0:a34f15741c5a 368 template class FP<uint32_t*,bool>;
sam_grove 0:a34f15741c5a 369 template class FP<uint32_t*,bool*>;
sam_grove 0:a34f15741c5a 370 template class FP<uint32_t*,float>;
sam_grove 0:a34f15741c5a 371 template class FP<uint32_t*,float*>;
sam_grove 0:a34f15741c5a 372 template class FP<uint32_t*,double>;
sam_grove 0:a34f15741c5a 373 template class FP<uint32_t*,double*>;
sam_grove 0:a34f15741c5a 374
sam_grove 0:a34f15741c5a 375 template class FP<int64_t,char>;
sam_grove 0:a34f15741c5a 376 template class FP<int64_t,char*>;
sam_grove 0:a34f15741c5a 377 template class FP<int64_t,int8_t>;
sam_grove 0:a34f15741c5a 378 template class FP<int64_t,int8_t*>;
sam_grove 0:a34f15741c5a 379 template class FP<int64_t,uint8_t>;
sam_grove 0:a34f15741c5a 380 template class FP<int64_t,uint8_t*>;
sam_grove 0:a34f15741c5a 381 template class FP<int64_t,int16_t>;
sam_grove 0:a34f15741c5a 382 template class FP<int64_t,int16_t*>;
sam_grove 0:a34f15741c5a 383 template class FP<int64_t,uint16_t>;
sam_grove 0:a34f15741c5a 384 template class FP<int64_t,uint16_t*>;
sam_grove 0:a34f15741c5a 385 template class FP<int64_t,int32_t>;
sam_grove 0:a34f15741c5a 386 template class FP<int64_t,int32_t*>;
sam_grove 0:a34f15741c5a 387 template class FP<int64_t,uint32_t>;
sam_grove 0:a34f15741c5a 388 template class FP<int64_t,uint32_t*>;
sam_grove 0:a34f15741c5a 389 template class FP<int64_t,int64_t>;
sam_grove 0:a34f15741c5a 390 template class FP<int64_t,int64_t*>;
sam_grove 0:a34f15741c5a 391 template class FP<int64_t,uint64_t>;
sam_grove 0:a34f15741c5a 392 template class FP<int64_t,uint64_t*>;
sam_grove 0:a34f15741c5a 393 template class FP<int64_t,bool>;
sam_grove 0:a34f15741c5a 394 template class FP<int64_t,bool*>;
sam_grove 0:a34f15741c5a 395 template class FP<int64_t,float>;
sam_grove 0:a34f15741c5a 396 template class FP<int64_t,float*>;
sam_grove 0:a34f15741c5a 397 template class FP<int64_t,double>;
sam_grove 0:a34f15741c5a 398 template class FP<int64_t,double*>;
sam_grove 0:a34f15741c5a 399
sam_grove 0:a34f15741c5a 400 template class FP<int64_t*,char>;
sam_grove 0:a34f15741c5a 401 template class FP<int64_t*,char*>;
sam_grove 0:a34f15741c5a 402 template class FP<int64_t*,int8_t>;
sam_grove 0:a34f15741c5a 403 template class FP<int64_t*,int8_t*>;
sam_grove 0:a34f15741c5a 404 template class FP<int64_t*,uint8_t>;
sam_grove 0:a34f15741c5a 405 template class FP<int64_t*,uint8_t*>;
sam_grove 0:a34f15741c5a 406 template class FP<int64_t*,int16_t>;
sam_grove 0:a34f15741c5a 407 template class FP<int64_t*,int16_t*>;
sam_grove 0:a34f15741c5a 408 template class FP<int64_t*,uint16_t>;
sam_grove 0:a34f15741c5a 409 template class FP<int64_t*,uint16_t*>;
sam_grove 0:a34f15741c5a 410 template class FP<int64_t*,int32_t>;
sam_grove 0:a34f15741c5a 411 template class FP<int64_t*,int32_t*>;
sam_grove 0:a34f15741c5a 412 template class FP<int64_t*,uint32_t>;
sam_grove 0:a34f15741c5a 413 template class FP<int64_t*,uint32_t*>;
sam_grove 0:a34f15741c5a 414 template class FP<int64_t*,int64_t>;
sam_grove 0:a34f15741c5a 415 template class FP<int64_t*,int64_t*>;
sam_grove 0:a34f15741c5a 416 template class FP<int64_t*,uint64_t>;
sam_grove 0:a34f15741c5a 417 template class FP<int64_t*,uint64_t*>;
sam_grove 0:a34f15741c5a 418 template class FP<int64_t*,bool>;
sam_grove 0:a34f15741c5a 419 template class FP<int64_t*,bool*>;
sam_grove 0:a34f15741c5a 420 template class FP<int64_t*,float>;
sam_grove 0:a34f15741c5a 421 template class FP<int64_t*,float*>;
sam_grove 0:a34f15741c5a 422 template class FP<int64_t*,double>;
sam_grove 0:a34f15741c5a 423 template class FP<int64_t*,double*>;
sam_grove 0:a34f15741c5a 424
sam_grove 0:a34f15741c5a 425 template class FP<uint64_t,char>;
sam_grove 0:a34f15741c5a 426 template class FP<uint64_t,char*>;
sam_grove 0:a34f15741c5a 427 template class FP<uint64_t,int8_t>;
sam_grove 0:a34f15741c5a 428 template class FP<uint64_t,int8_t*>;
sam_grove 0:a34f15741c5a 429 template class FP<uint64_t,uint8_t>;
sam_grove 0:a34f15741c5a 430 template class FP<uint64_t,uint8_t*>;
sam_grove 0:a34f15741c5a 431 template class FP<uint64_t,int16_t>;
sam_grove 0:a34f15741c5a 432 template class FP<uint64_t,int16_t*>;
sam_grove 0:a34f15741c5a 433 template class FP<uint64_t,uint16_t>;
sam_grove 0:a34f15741c5a 434 template class FP<uint64_t,uint16_t*>;
sam_grove 0:a34f15741c5a 435 template class FP<uint64_t,int32_t>;
sam_grove 0:a34f15741c5a 436 template class FP<uint64_t,int32_t*>;
sam_grove 0:a34f15741c5a 437 template class FP<uint64_t,uint32_t>;
sam_grove 0:a34f15741c5a 438 template class FP<uint64_t,uint32_t*>;
sam_grove 0:a34f15741c5a 439 template class FP<uint64_t,int64_t>;
sam_grove 0:a34f15741c5a 440 template class FP<uint64_t,int64_t*>;
sam_grove 0:a34f15741c5a 441 template class FP<uint64_t,uint64_t>;
sam_grove 0:a34f15741c5a 442 template class FP<uint64_t,uint64_t*>;
sam_grove 0:a34f15741c5a 443 template class FP<uint64_t,bool>;
sam_grove 0:a34f15741c5a 444 template class FP<uint64_t,bool*>;
sam_grove 0:a34f15741c5a 445 template class FP<uint64_t,float>;
sam_grove 0:a34f15741c5a 446 template class FP<uint64_t,float*>;
sam_grove 0:a34f15741c5a 447 template class FP<uint64_t,double>;
sam_grove 0:a34f15741c5a 448 template class FP<uint64_t,double*>;
sam_grove 0:a34f15741c5a 449
sam_grove 0:a34f15741c5a 450 template class FP<uint64_t*,char>;
sam_grove 0:a34f15741c5a 451 template class FP<uint64_t*,char*>;
sam_grove 0:a34f15741c5a 452 template class FP<uint64_t*,int8_t>;
sam_grove 0:a34f15741c5a 453 template class FP<uint64_t*,int8_t*>;
sam_grove 0:a34f15741c5a 454 template class FP<uint64_t*,uint8_t>;
sam_grove 0:a34f15741c5a 455 template class FP<uint64_t*,uint8_t*>;
sam_grove 0:a34f15741c5a 456 template class FP<uint64_t*,int16_t>;
sam_grove 0:a34f15741c5a 457 template class FP<uint64_t*,int16_t*>;
sam_grove 0:a34f15741c5a 458 template class FP<uint64_t*,uint16_t>;
sam_grove 0:a34f15741c5a 459 template class FP<uint64_t*,uint16_t*>;
sam_grove 0:a34f15741c5a 460 template class FP<uint64_t*,int32_t>;
sam_grove 0:a34f15741c5a 461 template class FP<uint64_t*,int32_t*>;
sam_grove 0:a34f15741c5a 462 template class FP<uint64_t*,uint32_t>;
sam_grove 0:a34f15741c5a 463 template class FP<uint64_t*,uint32_t*>;
sam_grove 0:a34f15741c5a 464 template class FP<uint64_t*,int64_t>;
sam_grove 0:a34f15741c5a 465 template class FP<uint64_t*,int64_t*>;
sam_grove 0:a34f15741c5a 466 template class FP<uint64_t*,uint64_t>;
sam_grove 0:a34f15741c5a 467 template class FP<uint64_t*,uint64_t*>;
sam_grove 0:a34f15741c5a 468 template class FP<uint64_t*,bool>;
sam_grove 0:a34f15741c5a 469 template class FP<uint64_t*,bool*>;
sam_grove 0:a34f15741c5a 470 template class FP<uint64_t*,float>;
sam_grove 0:a34f15741c5a 471 template class FP<uint64_t*,float*>;
sam_grove 0:a34f15741c5a 472 template class FP<uint64_t*,double>;
sam_grove 0:a34f15741c5a 473 template class FP<uint64_t*,double*>;
sam_grove 0:a34f15741c5a 474
sam_grove 0:a34f15741c5a 475 template class FP<float,char>;
sam_grove 0:a34f15741c5a 476 template class FP<float,char*>;
sam_grove 0:a34f15741c5a 477 template class FP<float,int8_t>;
sam_grove 0:a34f15741c5a 478 template class FP<float,int8_t*>;
sam_grove 0:a34f15741c5a 479 template class FP<float,uint8_t>;
sam_grove 0:a34f15741c5a 480 template class FP<float,uint8_t*>;
sam_grove 0:a34f15741c5a 481 template class FP<float,int16_t>;
sam_grove 0:a34f15741c5a 482 template class FP<float,int16_t*>;
sam_grove 0:a34f15741c5a 483 template class FP<float,uint16_t>;
sam_grove 0:a34f15741c5a 484 template class FP<float,uint16_t*>;
sam_grove 0:a34f15741c5a 485 template class FP<float,int32_t>;
sam_grove 0:a34f15741c5a 486 template class FP<float,int32_t*>;
sam_grove 0:a34f15741c5a 487 template class FP<float,uint32_t>;
sam_grove 0:a34f15741c5a 488 template class FP<float,uint32_t*>;
sam_grove 0:a34f15741c5a 489 template class FP<float,int64_t>;
sam_grove 0:a34f15741c5a 490 template class FP<float,int64_t*>;
sam_grove 0:a34f15741c5a 491 template class FP<float,uint64_t>;
sam_grove 0:a34f15741c5a 492 template class FP<float,uint64_t*>;
sam_grove 0:a34f15741c5a 493 template class FP<float,bool>;
sam_grove 0:a34f15741c5a 494 template class FP<float,bool*>;
sam_grove 0:a34f15741c5a 495 template class FP<float,float>;
sam_grove 0:a34f15741c5a 496 template class FP<float,float*>;
sam_grove 0:a34f15741c5a 497 template class FP<float,double>;
sam_grove 0:a34f15741c5a 498 template class FP<float,double*>;
sam_grove 0:a34f15741c5a 499
sam_grove 0:a34f15741c5a 500 template class FP<float*,char>;
sam_grove 0:a34f15741c5a 501 template class FP<float*,char*>;
sam_grove 0:a34f15741c5a 502 template class FP<float*,int8_t>;
sam_grove 0:a34f15741c5a 503 template class FP<float*,int8_t*>;
sam_grove 0:a34f15741c5a 504 template class FP<float*,uint8_t>;
sam_grove 0:a34f15741c5a 505 template class FP<float*,uint8_t*>;
sam_grove 0:a34f15741c5a 506 template class FP<float*,int16_t>;
sam_grove 0:a34f15741c5a 507 template class FP<float*,int16_t*>;
sam_grove 0:a34f15741c5a 508 template class FP<float*,uint16_t>;
sam_grove 0:a34f15741c5a 509 template class FP<float*,uint16_t*>;
sam_grove 0:a34f15741c5a 510 template class FP<float*,int32_t>;
sam_grove 0:a34f15741c5a 511 template class FP<float*,int32_t*>;
sam_grove 0:a34f15741c5a 512 template class FP<float*,uint32_t>;
sam_grove 0:a34f15741c5a 513 template class FP<float*,uint32_t*>;
sam_grove 0:a34f15741c5a 514 template class FP<float*,int64_t>;
sam_grove 0:a34f15741c5a 515 template class FP<float*,int64_t*>;
sam_grove 0:a34f15741c5a 516 template class FP<float*,uint64_t>;
sam_grove 0:a34f15741c5a 517 template class FP<float*,uint64_t*>;
sam_grove 0:a34f15741c5a 518 template class FP<float*,bool>;
sam_grove 0:a34f15741c5a 519 template class FP<float*,bool*>;
sam_grove 0:a34f15741c5a 520 template class FP<float*,float>;
sam_grove 0:a34f15741c5a 521 template class FP<float*,float*>;
sam_grove 0:a34f15741c5a 522 template class FP<float*,double>;
sam_grove 0:a34f15741c5a 523 template class FP<float*,double*>;
sam_grove 0:a34f15741c5a 524
sam_grove 0:a34f15741c5a 525 template class FP<double,char>;
sam_grove 0:a34f15741c5a 526 template class FP<double,char*>;
sam_grove 0:a34f15741c5a 527 template class FP<double,int8_t>;
sam_grove 0:a34f15741c5a 528 template class FP<double,int8_t*>;
sam_grove 0:a34f15741c5a 529 template class FP<double,uint8_t>;
sam_grove 0:a34f15741c5a 530 template class FP<double,uint8_t*>;
sam_grove 0:a34f15741c5a 531 template class FP<double,int16_t>;
sam_grove 0:a34f15741c5a 532 template class FP<double,int16_t*>;
sam_grove 0:a34f15741c5a 533 template class FP<double,uint16_t>;
sam_grove 0:a34f15741c5a 534 template class FP<double,uint16_t*>;
sam_grove 0:a34f15741c5a 535 template class FP<double,int32_t>;
sam_grove 0:a34f15741c5a 536 template class FP<double,int32_t*>;
sam_grove 0:a34f15741c5a 537 template class FP<double,uint32_t>;
sam_grove 0:a34f15741c5a 538 template class FP<double,uint32_t*>;
sam_grove 0:a34f15741c5a 539 template class FP<double,int64_t>;
sam_grove 0:a34f15741c5a 540 template class FP<double,int64_t*>;
sam_grove 0:a34f15741c5a 541 template class FP<double,uint64_t>;
sam_grove 0:a34f15741c5a 542 template class FP<double,uint64_t*>;
sam_grove 0:a34f15741c5a 543 template class FP<double,bool>;
sam_grove 0:a34f15741c5a 544 template class FP<double,bool*>;
sam_grove 0:a34f15741c5a 545 template class FP<double,float>;
sam_grove 0:a34f15741c5a 546 template class FP<double,float*>;
sam_grove 0:a34f15741c5a 547 template class FP<double,double>;
sam_grove 0:a34f15741c5a 548 template class FP<double,double*>;
sam_grove 0:a34f15741c5a 549
sam_grove 0:a34f15741c5a 550 template class FP<double*,char>;
sam_grove 0:a34f15741c5a 551 template class FP<double*,char*>;
sam_grove 0:a34f15741c5a 552 template class FP<double*,int8_t>;
sam_grove 0:a34f15741c5a 553 template class FP<double*,int8_t*>;
sam_grove 0:a34f15741c5a 554 template class FP<double*,uint8_t>;
sam_grove 0:a34f15741c5a 555 template class FP<double*,uint8_t*>;
sam_grove 0:a34f15741c5a 556 template class FP<double*,int16_t>;
sam_grove 0:a34f15741c5a 557 template class FP<double*,int16_t*>;
sam_grove 0:a34f15741c5a 558 template class FP<double*,uint16_t>;
sam_grove 0:a34f15741c5a 559 template class FP<double*,uint16_t*>;
sam_grove 0:a34f15741c5a 560 template class FP<double*,int32_t>;
sam_grove 0:a34f15741c5a 561 template class FP<double*,int32_t*>;
sam_grove 0:a34f15741c5a 562 template class FP<double*,uint32_t>;
sam_grove 0:a34f15741c5a 563 template class FP<double*,uint32_t*>;
sam_grove 0:a34f15741c5a 564 template class FP<double*,int64_t>;
sam_grove 0:a34f15741c5a 565 template class FP<double*,int64_t*>;
sam_grove 0:a34f15741c5a 566 template class FP<double*,uint64_t>;
sam_grove 0:a34f15741c5a 567 template class FP<double*,uint64_t*>;
sam_grove 0:a34f15741c5a 568 template class FP<double*,bool>;
sam_grove 0:a34f15741c5a 569 template class FP<double*,bool*>;
sam_grove 0:a34f15741c5a 570 template class FP<double*,float>;
sam_grove 0:a34f15741c5a 571 template class FP<double*,float*>;
sam_grove 0:a34f15741c5a 572 template class FP<double*,double>;
sam_grove 0:a34f15741c5a 573 template class FP<double*,double*>;
sam_grove 0:a34f15741c5a 574
sam_grove 0:a34f15741c5a 575 template class FP<char, char>;
sam_grove 0:a34f15741c5a 576 template class FP<char, char*>;
sam_grove 0:a34f15741c5a 577 template class FP<char, const char*>;
sam_grove 0:a34f15741c5a 578
sam_grove 0:a34f15741c5a 579 template class FP<char*, char>;
sam_grove 0:a34f15741c5a 580 template class FP<char*, char*>;
sam_grove 0:a34f15741c5a 581 template class FP<char*, const char*>;
sam_grove 0:a34f15741c5a 582
sam_grove 0:a34f15741c5a 583