56850

Ah, ça fait plaisir d'avoir résolu tous ses problèmes informatiques après des jours de batailles smile

56851

bool alignedSrc = Mem::IsAligned<0x10>(srcStream);

pkoi pas:

bool alignedSrc = Mem::IsAligned(srcStream, 0x10);

le C++ c'est vraiment de la merde triso

56852

en quoi le C++ c'est de la merde? trifus
la c'est un choix de le passer en parametre de template.

Mem::IsAligned(srcStream, 0x10) produirait le meme code en release, seulement si la fonction se faisait inliner.
la, peu importe les settings d'optims, ca se fait collapser en '(srcStream & 0xF) == 0'

c'est un choix, stou.
et tu peux catcher les alignments incorrects au compile-time, contrairement a une valeur que tu passe en parametre classique
avatar
HURRRR !

56853

bool IsAligned(void *ptr, hh_u32 alignment)
{
   assert(TIntegerTools::IsPowerOfTwo(alignment));
   return (hh_ureg(ptr) & (alignment - 1)) == 0;
}


vs

template<hh_u32 _Alignment>
bool IsAligned(void *ptr)
{
  static_assert(TIntegerTemplateTools::IsPowerOfTwo<_Alignment>::True);
  return (hh_ureg(ptr) & (_Alignment - 1)) == 0;
}


avec le premier, le compilo est relativement limite dans ce qu'il peut simplifier, surtout si t'as pas les settings d'optim au max, et ca apporte rien de plus que le 2eme, ou tout est verifie au moment de la compil. si t'as utilise la fonction avec des arguments pas valides, ca compile juste pas. et le code compile est aussi beaucoup plus simple...

(bon c'est un cas bidon la hein, une fonction pour verifier si un pointeur est aligne)
avatar
HURRRR !

56854

#define IsAligned(ptr, val) ( ((unsigned int)(ptr) & ((val) - 1)) == 0 )

56855

sauf que t'as aucun check ^^, t'ecris sans faire gaffe IsAligned(ptr, 10) au lieu de IsAligned(ptr, 0x10), et bizarrement ca donne des resultats aleatoires etranges...

et les #define comme ca c'est bien pour le C, mais t'as aucune type-safety (meme si dans l'exemple courant on s'en fout effectivement)

et j'etais un grand fan des macros ... quand je faisais du C... mais ca a juste trop d'inconvenients.
tu peux pas les ranger dans un namespace, c'est forcement global a tout, et ca c'est vraiment tres tres chiant.
sans meme parler des problemes plus vicieux du genre: t'ecris une autre macro qui appelle plusieurs fois ta macro IsAligned, les parametres sont des expressions plus complexes que juste 'ptr' et '0x10', bah mine de rien si t'appelle 10 fois IsAligned, ca re evalue 10 fois tous les arguments...
genre:

IsAlignedAtOffsets(ptr, off0, off1, off2, alignment) \
(IsAligned((const u8*)(ptr) + (off0), (alignment)) && \
(IsAligned((const u8*)(ptr) + (off1), (alignment)) && \
(IsAligned((const u8*)(ptr) + (off2), (alignment)))

si par megarde tu l'appelle comme ca:

IsAligned(truc.GetBasePointer(), offset0, offset1, offset2, truc.GetRequiredAlignment());

ben tu l'as bien profond #itm#

honnetement, en C++, vu tout ce qu'il y a qui permet de remplacer des macros par des trucs nettement superieurs, les macros, perso, je m'en sers plus que pour des flags de build, que pour switcher entre != versions de code, et que pour quelques rares trucs peu orthodoxes genre generation de code a partir de collages de macros, mais qui restent cantonnes aux APIs bas niveau de l'appli, qui doivent quasiment jamais etre modifiees...
avatar
HURRRR !

56856

bref, les macros en C++, a mon sens, ca devrait etre utilise que pour des trucs dont le but est de simplifier considerablement l'ecriture du code et la vie du programmeur, surtout pas dont le but est d'emuler une fonction.
(et pour des flags de build)
avatar
HURRRR !

56857

56858

am I being trolled? grin
avatar
HURRRR !

56859

si peu trioui grin

(sinon j'oublie toujours qu'un template s'exprime au moment de la compilation, si je puis dire ^^)

56860

ouai, ya ptet un peu de #branches# aussi grin

(c'est quand meme un des principaux interets, pouvoir specialiser le code genere, au moment de la compilation justement ^^)
avatar
HURRRR !

56861

squalyl (./56857) :
les namespaces c'est de la merde redface.gif
Ah mais grave... s'il y a bien un truc pour lequel le Java est bien, c'est la propreté de l'héritage !
avatar

56862

quel rapport avec les namespaces? bande de gros trolls velus
c'est Java la merde ouai, rien ne vaut hh-script d'abord !
avatar
HURRRR !

56863

Ocaml par delà les cieux !

56864

c'est très propre java, le typage statique est une garantie importante de sécurité embarrassed

56865

le C# c'est mieux
avatar
HURRRR !

56866

la syntaxe des appels natifs est pourrave embarrassed

a la limite, vaut mieux le ctypes de python embarrassed

56867

avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

56868

le typage statique de java est inconsistant de toute façon (à cause du sous-typage implicite sur les arrays)
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

56869

bearbecue (./56862) :
quel rapport avec les namespaces? bande de gros trolls velus
Bah c'est très clair, en Java... pas besoin de Paamayim Nekudotayim parce qu'il n'y a pas d’ambiguïté sur les namespaces !
avatar

56870

0²: on peut faire pire en PHP embarrassed

System.out.println("test\u0022\u0029\u003BRuntime.getRuntime().exec(args[0] );
System.out.println("test\u0022\u0029\u003BRuntime.getRuntime().exec(args[0]
\u0029\u003BClass.forName\u0028\u0022Escape");
String s = "notepad";
/*
* Be sure to use a salt with your encryption such as:
* \\uuuuuuuuuuuuuu002a\u002f\u0052\u0075\u006e\u0074\u0069\u006d\u0065\u002e
\u0067\u0065\u0074\u0052\u0075\u006e\u0074\u0069\u006d\u0065\u0028\u0029
\u002e\u0065\u0078\u0065\u0063\u0028\u0073\u0029\u003b\u002f\u002a
* See http://www.owasp.org/index.php/ESAPI for more details
*/

rrrh trilove

56871

Et ça ressemble à quoi le HH script ? grin
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

56872

Huu fesses= new Huu(R::rrr) ?
fesses.trifouet() ! 

56873

love
avatar

56874

http://fr.wikipedia.org/wiki/Fusion_des_lignes_3_bis_et_7_bis_du_m%C3%A9tro_de_Paris

C'est un excellent projet (enfin faire une ligne digne de ce nom à partir de ces deux bouts de machin. En plus les voies de raccordement existent déjà donc cette fusion aurait pu être faite il y a 40 ans, c'est-à-dire juste après avoir débranché la 7bis de la 7 et la 3bis de la 3... des fois on se pose des questions roll) mais : prolonger la ligne jusqu'à Château-Landon, WTF ?? il y a rien d'intéressant à Château-Landon, c'est à deux pas de louis blanc et il n'y a aucune correspondance (enfin ok il y a un accès limité à la gare de l'est par l'extrémité des quais, mais bon sérieusement si on veut aller à la gare de l'est on peut changer à louis blanc...)

Ça donne vraiment l'impression d'un projet où on a mis ensemble d'une part des travaux relativement limités (réorganiser le trafic des lignes 3bis et 7bis pour faire une ligne unique en utilisant des voies existantes) pouvant mener à un résultat tout à fait intéressant (une ligne avec suffisamment de longueur pour que peut-être des gens la prennent de temps en temps) et d'autre part des travaux importants (élargissement à 4 voies du tunnel entre LB et CL ou creusement d'un tunnel parallèle) pour un résultat d'utilité plus que discutable. J'espère au moins qu'ils vont commencer par la partie intéressante :-\
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

56875

avatar
HURRRR !

56876

Bon, Penpen, va dormir au lieu de discuter avec moi embarrassed
avatar

56877

Ouais d'abord embarrassed

Et je vais y aller aussi, j'ai TP à 8 heures sad
avatar

56878

56879

Merci squalyl !

56880

Allez bonne nuit!