 بسم اللہ الرحمن الرحیم، موڈیول 16، آج ہم دسکس کریں گے، موڈیول 16 ہمیں یہ بتا رہا ہے کہ یونی کورڈ اور جناریک کریکٹس کے ساتھ آپ کیس طرح سے دیل کریں گے وینڈوز جو ہے آپ کو پتا ہے کہ یونی کورڈ کو سپورٹ کرتی ہے اور وینڈوز ویسٹا کے بعد جو یونی کورڈ کی سپورٹ ہے وہ اور زیادہ پریویلنٹ ہوگی بھی ہے آس کی کہ آپ کو لگے گا کہ شاید سپورٹ کم ہے وینڈوز کے اندر اور یونی کورڈ کی سپورٹ میں بھی زیادہ ہے کیونکہ موست اور دو ایپی آئیز رکھوائر کرتی ہیں کہ آپ ان کو یونی کورڈ پرامیٹرز جب بھی سٹرنگ کے ساتھ دیل کریں تو ان کو یونی کورڈ کے اندر ویلوز جویں وہ پاس کریں تو اس موڈیول کے اندر ہم یہ دیکھیں گے کہ اگر آپ ایسا پوگرام کیسے بنا سکتے ہیں جو کہ یونی کورڈ کے ساتھ بھی دیل کر سکے اور ملٹی بائٹ کرکٹرز سٹرنگ کے ساتھ بھی دیل کر سکے پریویس لی آپ نے کچھ ایسے پوگرام بنائے ہوں گے جس کے اندر کہ آپ کو یونی کورڈ کے اندر ویلو پاس کرنی پڑی لیکن actually وہ آس کی سٹرنگ تھی تو آس کی سٹرنگ کو یونی کورڈ میں کنورٹ کیا اور پھر پاس کیا اگر ایپی آئیز ایسی ہوتی جو کہ یونی کورڈ کو نہیں use کرے جو آس کی کو use کری ہے تو آپ کو یونی کورڈ کے اندر چینجز وہ والا پوگرام جو یونی کورڈ کے لیے آپ نے بنائے وہ آس کی کے لیے پوگرام جو work نہیں کرے گا تو ہم جنارےک کسم کے پوگرام سکتے ہیں جو کہ یونی کورڈ کے لیے بھی work کریں اور اماری آس کی سٹرنگs کے لیے بھی ملٹی بائٹ کرکٹرز سٹرنگs کے لیے بھی اسی طرح سے work کریں ہمیں پوگرام کے اندر چینجز نہ کرنے پڑے یا کم سے کم چینجز کرنے پڑے یہ سم موڈیول کے اندر دیسکا سکریں گے آس کی جس طرح کیا آپ کو پتہ ہے ایٹ بٹ کورڈ ہوتی ہے جبکہ یونی کورڈ جو that is a 16 bit کورڈ 16 bit کورڈ اب windows کے اندر ہم نے دیکھا ہے کہ تقریبا جتنی بھی ipa's ہیں وہ یونی کورڈ کو سپورٹ کر رہے ہیں اور جو previous version ان کی compared ability کے لیے اسی ipa's بھی available ہیں جو آس کی کو بھی سپورٹ کر رہے ہیں اگر انٹرنلی ہم دیکھیں تو windows کے اندر دو دران کی ipa's ہوتی ہیں ایک کوئی بھی ipa لیں تو اس کے اندر انٹرنلی اس کے دو version exist کرتے ہیں ایک version جو وہ یونی کورڈ کے لیے ہوتا اور ایک آس کی کورڈ کے لیے ہوتا تو windows یہ run time بھی دیسائٹ کرتی ہے کہ اس نے آس کی کورڈ والا version call کرنے یا یونی کورڈ والا version call کرنے یونی کورڈ ہمارے لیے تب بہت امپورٹنڈ ہے جب ہم دوسری لنگجز کے ساتھ دیل کر رہے ہیں جیسے کہ عربیک ہے اور دو ہے جس کے اندر کے بہت زیادہ کرکٹرز ہیں جس طرح چینیز ہے چینیز itself کے اندر maybe 2000 سے زیادہ کرکٹرز exist کرتے ہیں تو of course 256 کی لیمرٹ سے کہیں زیادہ ایک seed کرتا تو وہاں پہ ان کرکٹرز کے ساتھ دیل کرنے کے لیے آپ کو ایک زیادہ بڑی کرکٹر کورڈ چاہی ہے which is unicode اور اگر آپ ایک پوریم آس کی کے لیے لکھرے ہیں تو اس کا structure ہو سکتا ڈفرنٹ ہو کیونکہ وہاں پہ ملٹی بائٹ کرکٹرز سٹرنگز use ہوں گی وہاں پہ different کسم کے variables use ہوں گے اگر وہی کام کرنے والا پوریم آپ unicode کے لیے لکھ رہے ہیں تو ہوسکتا اس کا structure ڈفرنٹ ہو کیونکہ اس کے لیے وائیٹ کرکٹرز سٹرنگز use ہوں گی different set of API's بھی ہو سکتے ہیں use ہوں تو اس وجہ سے پوریم ویری کر سکتے ہیں جو اسکی کے لیے لکھیں میں unicode کے لیے ہم uniformity جاتے ہیں ہم جاتے ہیں کہ ہم ایک دفعہ پوریم لکھنا بڑے اور اگر unicode استمال ہو رہی ہے تو وہی پوریم لکھ رہے ہیں اس پوریم کے اندران میں چینج نہ کرنے ایسے جناریک پوریمز ہم کیسے لکھ سکتے ہیں تو یہ ہم آگے ابھی اسی module کے اندر دیسکس کریں گے جناریک پوریمز لکھنے کے لیے ایک type windows provide کرتی ہے that is t4 تو t4 کا ہم استمال کریں گے ایسی types کا استمال کریں گے جو جناریک types ہیں windows ایک set of types پوریٹ کرتی ہے for اسکی ایک set of types پوریٹ کرتی ہے for unicode اور اس کے علاوہ ایک اور set of type پوریٹ کرتی ہے which is generic تو ہم generic types کا استمال کریں گے rather than asky ہم unicode use کریں ہم جناریک types use کریں گے جناریک type of variables کا استمال کریں گے for example جسنا t4 ہے t4 جو ہے یہ کرکٹر کے لیے جناریک type ہے اسی طرح string کے لیے جناریک type ہے that is long pointer to tstr tstr is again generic string اور اسی طرح constant string کے لیے long pointer تو ctst آپ use کر سکتے ہیں پھر جب آپ نے اگر unicode use کرنا تو unicode جب آپ use کریں گے تو آپ اس macro کو استمال کریں گے بلکہ دو macros کو استمال کریں گے ان کو define کرنا پڑے گا ایک unicode اور ایک underscore unicode جب آپ windows.h کو include کرتے ہیں تو windows.h کو include کرنے سے پہلے آپ کو یہ دونوں macros define کرنے پڑیں گے ایک define unicode اور دوسرا define underscore unicode جو unicode ہے یہ windows api کو control کرتا جب آپ نے یہ والا macro define کیا ہوگا تو جب pre-processing ہوگی تو صرف یہ انی functions کے ہیڈرز include کرے گا جو functions unicode کے لیے استمال ہوتے اور دوسرا آپ کا macros underscore unicode اگر آپ نے اس کو define کیا ہوگا تو pre-processing کے دوران یہ صرف انی variable types کو include کرے گا جو unicode کے لیے variable types use ہوتی ہیں اور جو آپ نے generic data types define کیا ہے generic data types کی جگہ unicode کی data types وہ replace ہو جائیں گے یعنی کہ کہیں اگر آپ نے teacher اپنے program کے اندر use کیا تو اس کی جگہ وہ w4 کو use کرے گا اگر آپ نے ان دونوں macros کو define کیا unicode اور underscore unicode پھر اگر آپ کو کہیں strength کا size specify کرنے کی ضرورت پڑتی ہے تو بجائے اس کے کہ آپ اس کو size کو hard code کریں آپ وہاں پہ size of operator use کریں یعنی کہ اگر وہ multi byte character strength ہوگی تو size of that multi byte character strength کا size آپ کو دے گا جو کے جس کے اندر کے 8 bit کا character ہوگا اگر 16 bit کا character ہوگا تو size ڈبل ہو جاتا ہے تو آپ اس کو hard code نہ کریں آپ size of operator use کریں پھر اسی دنا generic c library functions ہیں پھر اگر اندر score ito t underscore st printf underscore t cs copy tcs copy جو ہے وہ strength copy کیلئے use ہو رہا ہے st printf جو ہے اس پرنٹف والا کام کر رہا ہے اس طرح ہر جتے بھی آپ نے functions use کیا میں ان کے لئے کوئے generic type available ہے آپ msd n میں سے مزید help لے سکتے ہیں ان generic functions کو دیکھنے کے لئے اور ان generic functions کو آپ use کریں پھر اس کے لئے اگر کہیں strength literals ہیں strength constants ہیں تو اس کے ساتھ آپ اپنا یہ والا macro use کریں underscore text یا underscore t جس طرح اس اجامل کے اندر آپ دیکھ سکتے ہیں my text لکھا ہے تو my text سے پہلے آپ macro use کریں underscore t underscore t کا macro جو ہے اس text کو transform کر دے گا into unicode اگر صرف my text لکھا ہے تو وہ اس کو consider کرے گا as askey multibyte character string اور اگر آپ نے else specify کیا تو اس کو وہ certainly convert کر دے گا into unicode underscore t کے اندر وہ دیکھ گا کہ آپ نے کیا define کیا ہوئے اگر آپ نے unicode اوپر define کیا ہوئے تو اس case کے اندر اس کو unicode میں convert کر دے گا otherwise اس کو askey میں ہی رہنے دے گا اور پھر اگر آپ نے اس طرح کی generic functions use کرنے تو اس کے لئے آپ کو یہ header file include کرنے پڑے گی t4.h تو اس کو استمال کرنے اس پہلے ضرور include کرنا آپ نے اور یہ والا جو ہمارا macro ہے unicode والا macro just یہ ایک سامل تھوڑا ساپ کو اس کا flavor دے رہی ہے کہ یہ کس طرح سے work کرتا اس اگر ایک سامل کے اندر آپ دیکھ سکتے ہیں کہ وہ جو بھی آپ کی header files وہ یہ چک کریں گی کہ unicode کا macro defined ہے اگر unicode کا macro defined ہے تو وہ کیا کرہا ہے وہ t4 کو define کرہا ہے as w4 یعنی کہ pre-processing کے دوران جہاں بھی t4 لکھا ہے اس کی جگہ automatically w4 آ دے گا which is the wide character اور اگر unicode defined نہیں ہے تو t4 کی جگہ 4 آ جائے گا 4 is the multi-wide character تو یعنی کہ askی character ہے تو اس طرح کے decision pre-processing کے دوران کیا دائے گا تو آپ دیکھ سکتے ہیں کہ یہ unicode کا macro internally کیس طرح سے work کرہا ہے اور ایسا یہ work کرہا ہے for api proto-types کے لیے بھی بالکل اسی طرح work کرہا ہے اور جتنی بھی data-types ان ساروں کے لیے اسی طرح سے generic data-types ہیں اسی طرح سے work کرہا ہے کیونکہ جتنے بھی اب latest versions آ رہے ہیں windows کے اندر اس کے اندر زیادہ unicode کا استعمال ہو رہا ہے زیادہ تر api جو ہیں وہ یہ ایک سپکت کریں گے آپ ان کو پیرامیٹرزیں وہ unicode میں پاس کریں گے اس لی آپ کا program ہے compatible ہونے کے لیے ضروری ہے کہ وہ اس طرح کی generic code کے اندر لکھا دیں را دے انکہ وہ as کی code کی لیے لکھا دیں کیونکہ unicode کا آگے چلکے استعمال ہوگا تو پھر آپ کا وہ program زایہ ہو جائے گا اور more over جو file systems بھی رہا ہے جو اس کے اپنے windows کے internal data structures ہیں ntfs ہیں ntfs کے اندر master file table ہوتا اس کے اندر بھی جو ساری files کے انفرمشن ہے وہ بھی unicode کے اندر store ہو رہی تو unicode کا استعمال بھاڑا اس لیے ضرورت ہے کہ جو program لکھے جائیں وہ generic nature کیوں