コード例 #1
0
ファイル: ParseFunction.cpp プロジェクト: BigEd/Cores
void CheckParameterListMatch(SYM *s1, SYM *s2)
{
	s1 = s1->parms;
	s2 = s2->parms;
	if (!SameType(s1->tp,s2->tp))
		error(ERR_PARMLIST_MISMATCH);
}
コード例 #2
0
ファイル: ParseFunction.cpp プロジェクト: BigEd/Cores
static bool SameType(TYP *tp1, TYP *tp2)
{
	bool ret;

	printf("Enter SameType\r\n");
	while(false) {
		if (tp1->type == tp2->type) {
			if (!tp1->GetBtp() && !tp2->GetBtp()) {
				ret = true;
				break;
			}
			if (tp1->GetBtp() && !tp2->GetBtp()) {
				ret = false;
				break;
			}
			if (!tp1->GetBtp() && tp2->GetBtp()) {
				ret = false;
				break;
			}
			ret = SameType(tp1->GetBtp(),tp2->GetBtp());
			break;
		}
		else {
			ret = false;
			break;
		}
	}
xit:
	printf("Leave SameType\r\n");
	return ret;
}
コード例 #3
0
void ImageProximityFFT::SqrDistance_Norm(Image& Source, Image& Template, Image& Dest)
{
   CheckFloat(Dest);
   CheckSameNbChannels(Source, Template);
   CheckSameNbChannels(Source, Dest);
   CheckSameSize(Source, Dest);

   // Verify image size
   if (Template.Width() > Source.Width() || Template.Height() > Source.Height())
      throw cl::Error(CL_IMAGE_FORMAT_NOT_SUPPORTED, "The template image must be smaller than source image.");

   // Verify image types
   if(!SameType(Source, Template))
      throw cl::Error(CL_IMAGE_FORMAT_MISMATCH, "The source image and the template image must be same type.");

   PrepareFor(Source, Template);

   m_integral.SqrIntegral(Source, *m_image_sqsums);

   double templ_sqsum[4] = {0};
   m_statistics.SumSqr(Template, templ_sqsum);

   CrossCorr(Source, Template, Dest);
   MatchSquareDiffNorm(Template.Width(), Template.Height(), *m_image_sqsums, templ_sqsum, Dest);
}
コード例 #4
0
void ImageProximityFFT::CrossCorr(Image& Source, Image& Template, Image& Dest)
{
   CheckFloat(Dest);
   CheckSameNbChannels(Source, Template);
   CheckSameNbChannels(Source, Dest);
   CheckSameSize(Source, Dest);

   // Verify image size
   if (Template.Width() > Source.Width() || Template.Height() > Source.Height())
      throw cl::Error(CL_IMAGE_FORMAT_NOT_SUPPORTED, "The template image must be smaller than source image.");

   // Verify image types
   if(!SameType(Source, Template))
      throw cl::Error(CL_IMAGE_FORMAT_MISMATCH, "The source image and the template image must be same type.");

   PrepareFor(Source, Template);

   Convolve(Source, Template, Dest);   // Computes the cross correlation using FFT
}
コード例 #5
0
ファイル: Conversions.cpp プロジェクト: CRVI/OpenCLIPP
void Conversions::Convert(Image& Source, Image& Dest)
{
   CheckSameSize(Source, Dest);

   if (SameType(Source, Dest))
   {
      Copy(Source, Dest);
      return;
   }

   switch (Dest.DataType())
   {
   case SImage::U8:
      Kernel(to_uchar, Source, Dest, Source.Step(), Dest.Step());
      break;
   case SImage::S8:
      Kernel(to_char, Source, Dest, Source.Step(), Dest.Step());
      break;
   case SImage::U16:
      Kernel(to_ushort, Source, Dest, Source.Step(), Dest.Step());
      break;
   case SImage::S16:
      Kernel(to_short, Source, Dest, Source.Step(), Dest.Step());
      break;
   case SImage::U32:
      Kernel(to_uint, Source, Dest, Source.Step(), Dest.Step());
      break;
   case SImage::S32:
      Kernel(to_int, Source, Dest, Source.Step(), Dest.Step());
      break;
   case SImage::F32:
      Kernel(to_float, Source, Dest, Source.Step(), Dest.Step());
      break;
   case SImage::F64:
      Kernel(to_double, Source, Dest, Source.Step(), Dest.Step());
      break;
   case SImage::NbDataTypes:
   default:
      throw cl::Error(CL_IMAGE_FORMAT_NOT_SUPPORTED, "Unsupported data type");
   }
   
}
コード例 #6
0
ファイル: RT0.c プロジェクト: AlexIljin/oo2c
static OOC_BOOLEAN SameType(RT0__Struct t1, RT0__Struct t2,
                            RT0__Struct receiverTag) {
    RESOLVE_TYPE_VAR(t1, receiverTag);
    RESOLVE_TYPE_VAR(t2, receiverTag);

    if (t1 == t2) {
        return OOC_TRUE;
    } else if ((t1->form == RT0__strQualType) &&
               (t2->form == RT0__strQualType) &&
               (t1->typeArgs[0] == t2->typeArgs[0])) {
        int i=1;
        while ((t1->typeArgs[i] != NULL) &&
                SameType(t1->typeArgs[i], t2->typeArgs[i], receiverTag)) {
            i++;
        }
        return (t1->typeArgs[i] == NULL);
    } else {
        return OOC_FALSE;
    }
}
コード例 #7
0
ファイル: RT0.c プロジェクト: AlexIljin/oo2c
OOC_BOOLEAN RT0__TypeTest(RT0__Struct tag, RT0__Struct td,
                          RT0__Struct receiverTag) {
    RESOLVE_TYPE_VAR(td, receiverTag);
    return (tag->len >= td->len) &&
           SameType(tag->baseTypes[td->len], td, receiverTag);
}