Changing API for gr_skiphead to use uint64_t for the offset instead of size_t (still...
[debian/gnuradio] / gnuradio-core / src / lib / general / gr_skiphead.cc
index 82b3390cf2e99fcbbc53077e5753c0e5cc5608d0..1670eb7cf38dd7bdcee413589e8655fd3a350d7b 100644 (file)
@@ -1,6 +1,6 @@
 /* -*- c++ -*- */
 /*
- * Copyright 2005,2007 Free Software Foundation, Inc.
+ * Copyright 2005,2007,2010 Free Software Foundation, Inc.
  * 
  * This file is part of GNU Radio
  * 
@@ -25,8 +25,9 @@
 #endif
 #include <gr_skiphead.h>
 #include <gr_io_signature.h>
+#include <string.h>
 
-gr_skiphead::gr_skiphead (size_t itemsize, size_t nitems_to_skip)
+gr_skiphead::gr_skiphead (size_t itemsize, uint64_t nitems_to_skip)
   : gr_block ("skiphead",
              gr_make_io_signature(1, 1, itemsize),
              gr_make_io_signature(1, 1, itemsize)),
@@ -35,9 +36,9 @@ gr_skiphead::gr_skiphead (size_t itemsize, size_t nitems_to_skip)
 }
 
 gr_skiphead_sptr
-gr_make_skiphead (size_t itemsize, size_t nitems_to_skip)
+gr_make_skiphead (size_t itemsize, uint64_t nitems_to_skip)
 {
-  return gr_skiphead_sptr (new gr_skiphead (itemsize, nitems_to_skip));
+  return gnuradio::get_initial_sptr(new gr_skiphead (itemsize, nitems_to_skip));
 }
 
 int
@@ -54,11 +55,11 @@ gr_skiphead::general_work(int noutput_items,
 
   while (ii < ninput_items){
 
-    long long ni_total = ii + d_nitems;        // total items processed so far
+    uint64_t ni_total = ii + d_nitems;         // total items processed so far
     if (ni_total < d_nitems_to_skip){          // need to skip some more
 
       int n_to_skip = (int) std::min(d_nitems_to_skip - ni_total,
-                                    (long long)(ninput_items - ii));
+                                    (uint64_t)(ninput_items - ii));
       ii += n_to_skip;
     }