Commit 45abdfbe authored by Tomáš Jakubec's avatar Tomáš Jakubec
Browse files

Omit sprintf in the name generation of the MeshDataContainer Traits

parent f1e674c9
Loading
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@
#include "../BinarySerializer.h"
#include "SerializeSimple.h"
#include <GTMesh/Debug/Debug.h>
#include <cstring> // memcpy
namespace Interface {
/**
 * Generic template for indexable interface
@@ -117,7 +118,7 @@ struct SerializeCompactContainer {
            Interface::Compact<T>::resize(data, size);
        }

        memcpy(Interface::Compact<T>::data(data),
        std::memcpy(Interface::Compact<T>::data(data),
               dataIterator.base(),
               size * sizeof(typename Interface::Compact<T>::value_type));
        dataIterator += size * sizeof (typename Interface::Compact<T>::value_type);
+16 −4
Original line number Diff line number Diff line
#ifndef MESHDATACONTAINERTRAITS_H
#define MESHDATACONTAINERTRAITS_H

#include <stdio.h>
#include <string>
#include "../MeshDataContainer.h"
#include <GTMesh/Traits/Traits.h>

#include <GTMesh/Debug/Debug.h>
template <typename T, unsigned int ...dims>
class Traits<MeshDataContainer<T, dims...>> {
public:
    template< unsigned int Index = 0,
              bool = (Index == sizeof... (dims)) > // stopping condition
    struct nameContainer : nameContainer<Index + 1>{
        char name[9] = {};
        char name[8] = "dim ";
        nameContainer() {
            sprintf_s(name, "dim: %d", MeshDataContainer<T, dims...>::template dimensionAt<Index>());
            unsigned int dim = MeshDataContainer<T, dims...>::template dimensionAt<Index>();
            static_assert (MeshDataContainer<T, dims...>::template dimensionAt<Index>() < 1000, "limit of the string is dimension 999");
            int i = 4;
            for (unsigned int mod = 100; mod > 0; mod /= 10){
                int digit = dim / mod;
                DBGVAR(digit, mod);
                if (digit > 0) {
                    name[i] = '0' + char(digit);
                    i++;
                }
                dim -= digit * mod;
            }
            name[i + 1] = '\0';
        }
    };