2 votes

Outil de génération de code ciblant C++ et C#

J'ai un ensemble d'applications qui sont construites en utilisant une combinaison de C# et C++. Nous avons un ensemble d'objets partagés entre les deux langages, et plutôt que de définir chacun d'eux séparément dans chaque langage, je préférerais utiliser un outil de génération de code. Idéalement, un tel outil serait FOSS, bien que ce ne soit pas une exigence absolue. Les objets eux-mêmes sont relativement simples, bien qu'il y ait l'héritage des classes de base, l'implémentation d'interfaces, le confinement d'autres types d'objets, et les collections d'autres types d'objets.

L'environnement cible C++ est Visual C++ 2008.

Quelqu'un peut-il me recommander un outil capable de réaliser ce genre de tâche ?

Exemple de code :

public class Tax 
{ 
private static Dictionary<string, double> _TaxRates; 
public Dictionary<string,double> TaxRates { get { return _TaxRates; } }
}

7voto

Martin Peck Points 8078

Pour tout problème de génération de code, je jetterais un coup d'œil attentif à T4 (la fonctionnalité de modélisation de texte apparue dans VS.NET 2008).

Un bon endroit pour commencer avec le T4 est...

http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx

Vous auriez besoin de modèles différents pour C++ et C#, et vous piloteriez votre génération de code à partir d'autres métadonnées.

L'alternative est d'utiliser l'API de CodeDom. Celle-ci comporte deux CodeDomProviders (CppCodeProvider et CSharpCodeProvider) qui peuvent cibler chaque langue.

Pour plus d'informations :

http://msdn.microsoft.com/en-us/library/system.codedom.compiler.aspx

Il y a des liens connexes sur SO :

http://stackoverflow.com/questions/491900/t4-vs-codedom-vs-oslo http://stackoverflow.com/questions/826398/is-it-possible-to-dynamically-compile-and-execute-c-code-fragments

2voto

Ryan Ginstrom Points 8354

denture est un outil de génération de code qui vous permet d'intégrer du code python de génération de code dans vos fichiers C++/C#. Son avantage est qu'il est vraiment facile à utiliser, surtout si vous connaissez déjà python.

1voto

ChrisW Points 37322

Les classes .Net pour l'émission du code source, par exemple la classe GenerateCodeFromCompileUnit de la méthode CodeDomProvider peut être utilisée pour émettre du code source dans plusieurs langues à partir d'une seule définition : par exemple, il existe une classe de base CppCodeProvider ainsi qu'un CSharpCodeProvider . Il ne s'agit peut-être que de C++ géré, mais vous avez dit "relativement simple".

1voto

Klaim Points 24511

Google Protobuf pourrait être l'une des meilleures solutions disponibles gratuitement.

Voir le page de langue .

1voto

Rad Points 6308

Vous pouvez également enquêter CodeSmith . Vous pouvez écrire des modèles dans un langage similaire à celui d'asp.net pour générer n'importe quel type de code.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X