IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Problemes avec les Parametres template


Sujet :

C#

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Points : 9
    Points
    9
    Par défaut Problemes avec les Parametres template
    Bonjour, en codant mon emulateur nes pour PS VITA je me heurte a un probleme, je doit convertir une structure c++ en c# mais je bloque sur les parametre template apres de nombreuse recherche je n'ai toujours pas trouver comment faire, voila la structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    template<unsigned bitno, unsigned nbits=1, typename T=u8>
    struct RegBit
    {
        T data;
        enum { mask = (1u << nbits) - 1u };
        template<typename T2>
        RegBit& operator=(T2 val)
        {
            data = (data & ~(mask << bitno)) | ((nbits > 1 ? val & mask : !!val) << bitno);
            return *this;
        }
        operator unsigned() const { return (data >> bitno) & mask; }
        RegBit& operator++ ()     { return *this = *this + 1; }
        unsigned operator++ (int) { unsigned r = *this; ++*this; return r; }
    };

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Il n'y a pas d'équivalent C# à cette fonctionnalité ; les paramètres des types génériques ne peuvent être que des types, pas des nombres.

    A vue de nez cette structure se contente de faire des manipulations de bits ; tu peux sans doute reproduire la même fonctionnalité en C# sans "traduire" littéralement cette structure.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Merci de ta reponse mais je vois pas trop comment faire

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Tu peux donner des exemples de l'utilisation de cette structure ? Là j'ai un peu de mal à comprendre à quoi ça sert exactement

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Je m'en sert pour des union principalement pour le moteur de rendu audio de mon emulateur nes.

    Jai reussie a faire sa en attendant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    	class RegBitSupplies
    	{
    		public static System.Collections.Hashtable Data = new System.Collections.Hashtable();
    	};
     
    	struct RegBit<T>
    	{
    	    public T Data;
     
    		public RegBit(uint bitno, uint nbits, T p_DefaultValue)
    		{
    			Data = p_DefaultValue;
    			RegBitSupplies.Data.Add(this, new Tuple<uint, uint>(bitno, nbits ));
    		}
     
    		public uint GetMask()
    		{
    			return (uint)((1 << ((int)(RegBitSupplies.Data[this] as Tuple<uint, uint>).Item2)) - 1);
    		}
     
    	    public RegBit<T> Set<T2>(T2 p_Val)
    	    {
    			uint l_BitNo = (RegBitSupplies.Data[this] as Tuple<uint, uint>).Item1; 
    			uint l_NBits = (RegBitSupplies.Data[this] as Tuple<uint, uint>).Item2;
     
    			Int32 l_Part1 = ((Int32)Convert.ChangeType(Data, TypeCode.Int32)) & ~(((Int32)GetMask() << (Int32)(l_BitNo)));
    			Int32 l_Part2 = (((Int32)(l_NBits) > 1 ? (Int32)Convert.ChangeType(p_Val, TypeCode.Int32) & (Int32)GetMask() : (Int32)Convert.ChangeType(p_Val, TypeCode.Int32)) << (Int32)(l_BitNo));
     
    			Data = (T)Convert.ChangeType((Int32)(l_Part1 | l_Part2),  typeof(T));
     
    	        return this;
    	    }
     
    	    public static explicit operator uint(RegBit<T> p_RegBit) 
    		{ 
    			return (uint)(((Int32)Convert.ChangeType(p_RegBit.Data, TypeCode.Int32) >> (Int32)(RegBitSupplies.Data[p_RegBit] as Tuple<uint, uint>).Item1) & (Int32)p_RegBit.GetMask()); 
    		}
     
    	  /*  RegBit& operator++ ()     { return *this = *this + 1; }
    	    uint operator++ (int) { uint r = *this; ++*this; return r; }*/
    	};
    Mais jai un autre probleme qui est apparue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	  /*  RegBit& operator++ ()     { return *this = *this + 1; }
    	    uint operator++ (int) { uint r = *this; ++*this; return r; }*/
    Comment adapter sa en c# sans les pointeurs x)

Discussions similaires

  1. [Débutant] Probleme avec les parametres
    Par Tchiii dans le forum ASP.NET
    Réponses: 0
    Dernier message: 20/05/2013, 22h31
  2. [2K8] Probleme avec les parametres
    Par spezet29 dans le forum SSRS
    Réponses: 1
    Dernier message: 02/12/2010, 09h37
  3. wpf: probleme avec les templates
    Par mk.wassim dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 18/03/2009, 17h54
  4. Probleme avec les parametre de shellexecute
    Par Djekill dans le forum Access
    Réponses: 8
    Dernier message: 18/07/2006, 11h32
  5. Probleme avec les templates
    Par TeC_MaN dans le forum C++
    Réponses: 2
    Dernier message: 08/01/2006, 14h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo