|
Evolution of A
software Engineer(programmer)

High School/Jr.High
10
PRINT "HELLO WORLD"
20 END
OUTPUT: Hello World
First year in College
program
Hello (input, output)
begin
writeln
('Hello World')
end.
OUTPUT: Hello World
Senior year in College
(define
hello
(print
(cons 'Hello (list 'World))))
OUTPUT: Hello World
New professional
#include <stdio.h>
void
main(void)
{
char
*message[] = {"Hello ", "World"};
int i;
for(i
= 0; i < 2; ++i)
printf("%s",
message[i]);
printf("\n");
}
OUTPUT: Hello World
Seasoned professional
#include <iostream.h>
#include <string.h>
class
string
{
private:
int
size;
char
*ptr;
public:
string() : size(0), ptr(new char('\0')) {}
string(const
string &s) : size( s.size)
{
ptr = new char[size + 1];
strcpy(ptr,
s.ptr);
}
~string()
{
delete [] ptr;
}
friend ostream &operator <<(ostream &, const string &);
string &operator=(const char *);
};
ostream
&operator<<(ostream &stream, const string &s)
{
return(stream
<< s.ptr );
}
string
&string::operator=(const char *chrs)
{
if
(this != &chrs)
{
delete [] ptr;
size
= strlen(chrs);
ptr
= new char[size + 1];
strcpy(ptr,
chrs);
}
return(*this);
}
int
main()
{
string str;
str =
"Hello World";
cout
<< str << endl;
return(0);
}
OUTPUT: Hello World
Master Programmer
[
uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
]
library
LHello
{
//
bring in the master library
importlib("actimp.tlb");
importlib("actexp.tlb");
//
bring in my interfaces
#include "pshlo.idl"
[
uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
]
cotype
THello
{
interface IHello;
interface IPersistFile;
};
};
[
exe,
uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
]
module
CHelloLib
{
//
some code related header files
importheader(<
windows.h>);
importheader(<
ole2.h>);
importheader(<
except.hxx>);
importheader("
pshlo.h");
importheader("
shlo.hxx");
importheader("
mycls.hxx");
//
needed typelibs
importlib("actimp.tlb");
importlib("
actexp.tlb");
importlib("thlo.tlb");
[
uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
aggregatable
]
coclass
CHello
{
cotype
THello;
};
};
#include "ipfix.hxx "
extern
HANDLE hEvent;
class
CHello : public CHelloBase
{
public:
IPFIX(CLSID_CHello);
CHello(IUnknown
*pUnk);
~CHello();
HRESULT
__stdcall PrintSz(LPWSTR pwszString);
private:
static int cObjRef;
};
#include < windows.h >
#include < ole2.h >
#include < stdio.h>
#include < stdlib.h>
#include " thlo.h"
#include " pshlo.h"
#include " shlo.hxx "
#include " mycls.hxx"
int
CHello::cObjRef = 0;
CHello::CHello(IUnknown
*pUnk) : CHelloBase(pUnk)
{
cObjRef++;
return;
}
HRESULT
__stdcall CHello::PrintSz(LPWSTR pwszString)
{
printf("%ws\n",
pwszString);
return(ResultFromScode(S_OK));
}
CHello::~CHello(void)
{
// when
the object count goes to zero, stop the server
cObjRef--;
if(
cObjRef == 0 )
PulseEvent(hEvent);
return;
}
#include <windows.h>
#include < ole2.h>
#include "pshlo.h"
#include "shlo.hxx"
#include "mycls.hxx"
HANDLE
hEvent;
int _cdecl
main(
int
argc,
char *
argv[]
) {
ULONG
ulRef;
DWORD
dwRegistration;
CHelloCF
*pCF = new CHelloCF();
hEvent
= CreateEvent(NULL, FALSE, FALSE, NULL);
//
Initialize the OLE libraries
CoInitializeEx(NULL,
COINIT_MULTITHREADED);
CoRegisterClassObject(CLSID_CHello,
pCF, CLSCTX_LOCAL_SERVER,
REGCLS_MULTIPLEUSE,
&dwRegistration);
// wait
on an event to stop
WaitForSingleObject(hEvent,
INFINITE);
//
revoke and release the class object
CoRevokeClassObject(dwRegistration);
ulRef =
pCF->Release();
// Tell
OLE we are going away.
CoUninitialize();
return(0);
}
extern
CLSID CLSID_CHello;
extern
UUID LIBID_CHelloLib;
CLSID
CLSID_CHello = { _/* 2573F891-CFEE-101A-9A9F-00AA00342820 */
0x2573F891,
0xCFEE,
0x101A,
{
0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};
UUID
LIBID_CHelloLib = { _/* 2573F890-CFEE-101A-9A9F-00AA00342820 */
0x2573F890,
0xCFEE,
0x101A,
{
0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};
#include <windows.h >
#include < ole2.h >
#include < stdlib.h>
#include < string.h>
#include < stdio.h>
#include " pshlo.h"
#include "shlo.hxx "
#include " clsid.h"
int _cdecl
main(
int
argc,
char *
argv[]
) {
HRESULT
hRslt;
IHello
*pHello;
ULONG ulCnt;
IMoniker
* pmk;
WCHAR
wcsT[_MAX_PATH];
WCHAR
wcsPath[2 * _MAX_PATH];
// get
object path
wcsPath[0] = '\0';
wcsT[0]
= '\0';
if(
argc > 1) {
mbstowcs(wcsPath,
argv[1], strlen(argv[1]) + 1);
wcsupr(wcsPath);
}
else {
fprintf(stderr,
"Object path must be specified\n");
return(1);
}
// get
print string
if(argc
> 2)
mbstowcs(wcsT,
argv[2], strlen(argv[2]) + 1);
else
wcscpy(wcsT,
L"Hello World");
printf("Linking
to object %ws\n", wcsPath);
printf("Text
String %ws\n", wcsT);
//
Initialize the OLE libraries
hRslt =
CoInitializeEx(NULL, COINIT_MULTITHREADED);
if(SUCCEEDED(hRslt))
{
hRslt
= CreateFileMoniker(wcsPath, &pmk);
if(SUCCEEDED(hRslt))
hRslt
= BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);
if(SUCCEEDED(hRslt))
{
//
print a string out
pHello->PrintSz(wcsT);
Sleep(2000);
ulCnt
= pHello->Release();
}
else
printf("Failure to connect, status: %lx", hRslt);
//
Tell OLE we are going away.
CoUninitialize();
}
return(0);
}
OUTPUT: Hello World
|