Statistics
| Branch: | Revision:

root / src / sim / ChangeLog @ e1750c09

History | View | Annotate | Download (91.6 KB)

1
2010-06-11  ------ omnetpp-4.1 released ------
2

    
3
2010-06-09  Andras Varga
4

    
5
	* eliminated warning while compiling sim_std_m.cc
6

    
7
2010-05-31  ------ omnetpp-4.1rc2 released ------
8

    
9
2010-05-10  Rudolf Hornig
10

    
11
	* cDynamicExpression: assigning an integer parameter to a double 
12
	parameter lost the unit during conversion, resulting in a 'cannot
13
	convert none to unit XXX' error message.
14

    
15
2010-05-09  Andras Varga
16

    
17
	* cPar: isNumeric() now returns false for boolean parameters. This is
18
	done for consistency, as calling doubleValue() and longValue() has
19
	already resulted in a "cannot cast non-numeric type" exception in the
20
	4.0 version.
21

    
22
2010-05-03  Andras Varga
23

    
24
	* std_sim.msg: "contents[]" is now displayed as "defaultList[]"; 
25
	group label "general" renamed to "fields"
26

    
27
	* cSimulation doesn't need to be cOwnedObject, cNamedObject is enough;
28
	this prevents "undisposed object cSimulation" message when simulation
29
	is killed via Ctrl+C.
30

    
31
	* disabled "Warning: cStaticFlag flag still set while shutting down"
32
	message, as it was always printed when exiting Tkenv via Ctrl+C.
33
	Can still be enabled when debugging an app that embeds simulation.
34

    
35
2010-04-30  Rudolf Hornig
36

    
37
	* added simTime() NED function to return the current simulation time 
38
          in NED expessions.
39

    
40
2010-04-27  Andras Varga
41

    
42
	* removed Enter_Method() from callInitialize() and scheduleStart(), as
43
	flashing "method call" arrows made it impossible to run in Tkenv 
44
	models that generates lots of modules dynamically.
45

    
46
2010-04-23  Andras Varga
47

    
48
	* fix of bug #43: exponential(), normal(), truncnormal() and geometric()
49
	could  produce +INF, due to log(dblrand()) in their code where dblrand() 
50
	can produce zero. Solution: use 1.0-dblrand() instead, i.e. (0,1] instead
51
	of [0,1). Side effect: fingerprint change for all simulations that use 
52
	those distributions as input.
53

    
54
2010-04-20  ------ omnetpp-4.1b4 released ------
55

    
56
2010-03-29  Andras Varga
57

    
58
	* histogram classes (cHistogram, cLongHistogram, cDoubleHistogram): 
59
	 - fix: setNumFirstVals() took no effect if no setRange..() method was
60
	   called
61
	 - save/load/pack/unpack used slots in firstvals[] only
62
	 - support for dup()
63
	 - in integer mode, use whole numbers as cell boundaries (not halfs);
64
	   the lower bound of a cell is inclusive, the upper limit is exclusive
65
	   just as with doubles
66
	 - default number of cells changed (30 in integer mode, 200 in dbl mode)
67
	 - in result files, an integer histogram is now denoted with the line 
68
	   "attr type int" instead of "attr isDiscrete 1".
69

    
70
2010-03-14  ------ omnetpp-4.1b3 released ------
71

    
72
2010-03-11  Andras Varga
73

    
74
	* cComponent::recordParametersAsScalars(): recording a boolean parameter
75
	caused an error [reported by Alberto Cortes]
76

    
77
2010-03-10  Andras Varga
78

    
79
	* The transform() methods of histogram classes now throw an exception
80
	if the histogram was already transformed. Clients may call isTrans-
81
	formed() to determine whether transform() needs to or may be called.
82

    
83
2010-02-27  Andras Varga
84

    
85
	* created cHistogram class by merging cDoubleHistogram and cLongHistogram
86
	functionality.
87

    
88
2010-01-26  Andras Varga
89

    
90
	* fix: cProperties::getNames() and getIndicesFor() were broken
91

    
92
2010-01-23  Andras Varga
93

    
94
	* implemented signals mechanism. See include/ChangeLog for details
95

    
96
2010-01-22  Andras Varga
97

    
98
	* componenttype.cc: fix: crash if module object ctor throws exception
99

    
100
	* cdynamicexpression.cc: change: operands of the '%' (integer modulo)
101
	NED operator must be dimensionless (otherwise the result of truncation
102
	depends on the choice of the measurement units)
103

    
104
2009-12-17  Andras Varga
105

    
106
	* fixed bug #116: cPacketQueue::remove() incorrect behavior when called
107
	with a packet that was not in the queue
108

    
109
2009-10-14  Andras Varga
110

    
111
	* dynamic network builder: cComponentType::create() sets NED parameters
112
	as well from the similarly named submodule section of the parent
113
	compound module's NED file
114

    
115
2009-07-26  Andras Varga
116

    
117
	* bugfix: cpar.cc: parse() and some other cPar methods did not cause
118
	handleParameterChanged() to be invoked on the owner module [ViRe]
119

    
120
2009-07-26  Andras Varga
121

    
122
	* bugfix: opp_typename(): gcc demangling of pointer type names (Foo*)
123
	were not handled (they are needed for correct error messages in
124
	check_and_cast<>()).
125

    
126
2009-07-25  Andras Varga
127

    
128
	* cmessageheap.cc: FES performance improvement. cMessageHeap was
129
	changed to more efficiently handle the insertion and removal of events
130
	scheduled for the current simulation time. Such events are actually
131
	quite common due to plain (zero delay, zero datarate) connections
132
	between modules. The idea is to handle these events separately,
133
	without touching the normal FES data structure (binary heap).
134

    
135
	  Such messages (i.e. with arrivalTime==simTime() and priority==0)
136
	are added at the tail of a circular buffer, an O(1) operation.
137
	removeFirst() also checks the circular buffer first: if the buffer is
138
	not empty, it removes and returns the head element from it (also O(1));
139
	it only goes to the heap if the buffer is empty. This way the O(log n)
140
	heap insertion and removal operations are eliminated for these
141
	messages and are replaced with a small O(1) cost; the overall
142
	performance gain can be quite significant if the FES contains a lot
143
	of events (a few thousand or more). The extra overhead for non-matching
144
	messages is nominal. The circular buffer is reallocated when it gets
145
	full.
146

    
147
	  The observed performance gain was ~5% for a wireless INET model
148
	with an average FES length of ~500 events; a higher gain can be
149
	expected with larger models where FES handling dominates the runtime.
150
	For small models (FES size ~10) the performance gain is about 1%.
151

    
152
	* cmessageheap.cc: minor performance improvement: implemented operator>
153
	for cMessage instead of operator<=. This results in some performance
154
	gain for debug builds (not in optimized builds though where the compiler
155
	performs inlining and other optimizations).
156

    
157
2009-06-25  Andras Varga
158

    
159
	* ccomponenttype.cc, cdynamiccomponenttype.cc: made it possible to use
160
	a custom C++ class for compound modules as well (@class() property)
161

    
162
2009-06-22  Andras Varga
163

    
164
	* geometric(): assert that parameter p is in range [0,1)
165

    
166
2009-03-12  ------ omnetpp-4.0 released ------
167

    
168
2009-03-25  Andras Varga
169

    
170
	* bugfix: cArray::clear() crashed if there was a hole (NULL element)
171
	in the array; the bug got introduced in 4.0 [reported by Roland Bless]
172

    
173
2009-02-27  ------ omnetpp-4.0rc2 released ------
174

    
175
2009-02-24  Andras Varga
176

    
177
	* cStringPool: commented out dump() call in the destructor
178

    
179
2009-02-07  Andras Varga
180

    
181
	* cNEDFunction and Define_NED_Function(): changed signature string
182
	to a C-like syntax.
183

    
184
	* added description field to both cNEDFunctions and cMathFunctions
185

    
186
	* removed obsolete NED functions (genk_*: genk_uniform, genk_normal,
187
	genk_exponential, etc)
188

    
189
	* debug-on-errors: changes to the printed message
190

    
191
2009-02-04  Andras Varga
192

    
193
	* nedsupport.cc: fix: NED: a channel type could not refer to local
194
	parameters ("this.param" caused an error)
195

    
196
2009-01-10  Andras Varga
197

    
198
	* csimulation.cc: simulation.init() gets called automatically, via
199
	EXECUTE_ON_STARTUP()
200

    
201
	* csimulation.cc: calls to scheduler->startRun()/endRun() merged into
202
	cSimulation::startRun()/endRun()
203

    
204
	* csimulation.cc: scheduler object now gets deleted by cSimulation, not
205
	externally by Envir
206

    
207
2008-12-14  Andras Varga
208

    
209
	* sim_std.msg: fixed bug #33
210

    
211
2008-12-12  ------ omnetpp-4.0rc1 released ------
212

    
213
2008-11-26  Andras Varga
214

    
215
	* library renamed to oppsim
216

    
217
2008-02-25  Andras Varga
218

    
219
	* see include/ChangeLog for the summary of changes done for
220
	omnetpp-4.0, in the period 2006..2008.
221

    
222
2006-10-21  ------ omnetpp-3.3 released ------
223

    
224
2006-10-19  Andras Varga
225

    
226
	* csimplemodule.cc: bugfix: worked around Visual C++ bug that causes
227
	exception handling to mess up when SwitchToFiber() is called within
228
	a catch block. See Microsoft forum patch:
229
	http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=835791&SiteID=1&mode=1
230

    
231
2006-09-28  Andras Varga
232

    
233
	* cmessage.cc: fix in refcounting code: when decrementing refcount
234
	for encapsulated msg, its ownerp should be NULL'ed out if it
235
	originally pointed to this message. This bug caused Tkenv to crash
236
	when the encapsulated message's inspector was open (as it tried
237
	to print fullPath()).
238

    
239
2006-03-19  Andras Varga
240

    
241
	* csimul.cc: added implementation of guessNextEvent() etc. Removed
242
	updating simTime() from doOneEvent() which interfered with some
243
	parallel simulation algorithms (caused false "causality violation"
244
	errors).
245

    
246
2006-03-15  Andras Varga
247

    
248
	* distrib.cc: gamma_d() was bogus for the alpha<1 case [reported by
249
	Patrick McDonnell]. For alpha>1, use Marsaglia2000 instead of
250
	Cheng-Feast79.
251

    
252
2006-02-27  Andras Varga
253

    
254
	* cmersennetwister.cc, clcg32.cc: initialize() updated for parallel
255
	simulation
256

    
257
2006-01-12  ------ omnetpp-3.2p1 released ------
258

    
259
2005-10-19  ------ omnetpp-3.2 released ------
260

    
261
2005-10-05  Andras Varga
262

    
263
	* cgate.cc: performance: made fullname creation on-demand
264

    
265
2005-09-15  Andras Varga
266

    
267
	* csimplemodule.cc: added method cancelAndDelete(cMessage *msg).
268

    
269
2005-09-14  Andras Varga
270

    
271
	* cpolymorphic.cc, etc: dup() moved up to cPolymorphic, and return type
272
	changed to cPolymorphic. See include/ChangeLog.
273

    
274
	* cmodule.cc, csimplemodule.cc, etc: module constructor signature
275
	change, see comment in include/ChangeLog
276

    
277
2005-09-12  Andras Varga
278

    
279
	* cxmlelement.cc, minixpath.cc: fixed getElementByPath() bug
280
	introduced 2005-08-09.
281

    
282
	* cdefaultlist.cc: destructor to use ev.undisposedObject().
283

    
284
2005-08-09  Andras Varga
285

    
286
	* cxmlelement.cc: bugfixes in the mini-XPath interpreter (leading
287
	'//' was handled incorrectly), and stripped minixpath.cc/h from it.
288

    
289
2005-08-07  Andras Varga
290

    
291
	* cxmlelement.cc: the builtin mini-XPath interpreter turned into a
292
	class (MiniXPath), and it now understands parameters ($PARAM) inside
293
	predicates; parameter values come from a cXMLElement::ParamResolver
294
	object.
295

    
296
	* cmessage.cc: implemented reference counting of encapsulated messages.
297
	See include/ChangeLog for more comments.
298

    
299
2005-07-25  Andras Varga
300

    
301
	* coutvect.cc: implemented recordWithTimestamp() functions.
302

    
303
	* cpar.cc: added call to omodp->handleParameterChange() to cModulePar
304
	each time the parameter's value changes.
305

    
306
	* cpar.cc: removed beforeChange()/afterChange() calls from setInput()
307
	and setPrompt(), because these methods don't change the stored value.
308

    
309
	* several files: adopted to cCommBuffer change (packObject(),
310
	unpackObject() moved into the class)
311

    
312
	* cstat.cc: cStdDev::info() now prints mean, stddev, min, max as well
313

    
314
2005-07-24  Andras Varga
315

    
316
	* cdispstr.cc: added setTagArg() method for numeric (long) argument.
317

    
318
	* cpar.cc: added isConstant() member to cPar
319

    
320
	* cmessage.cc: arrivedOn() impl change, see include/ChangeLog
321

    
322
	* cxmlelement.cc: added getFirstChildWithTagName(const char *tagname)
323
	and getNextSiblingByTagName(const char *tagname) to cXMLElement
324

    
325
	* ctypes.cc: cModuleType::createScheduleInit(): NULL is not allowed
326
	as parent module
327

    
328
2005-07-23  Andras Varga
329

    
330
	* cwatch.cc: WATCH implementation changed
331

    
332
	* added cstlwatch.cc
333

    
334
2005-04-27  Andras Varga
335

    
336
	* cobject.cc: fixed bug in cObject copy ctor. Problem hasn't surfaced
337
	earlier because no subclass used this ctor (they use op=) [reported by
338
	Shanti]
339

    
340
2005-04-21  Andras Varga
341

    
342
	* util.cc: implemented simtimeToStrShort().
343

    
344
	* cmessage.cc: changed cMessage::info() to display time *until*
345
	arrivaltime as well
346

    
347
2005-04-05  Andras Varga
348

    
349
	* cstringtokenizer.cc: fix: prepared cStringTokenizer for receiving
350
	NULL as input/delimiter string. [reported by Tom Parker]
351

    
352
2005-03-31  ------ omnetpp-3.1 released ------
353

    
354
2005-03-22  Andras Varga
355

    
356
	* cpar.cc: updated for changed cEnvir::getParameter() return type, see
357
	include/ChangeLog and src/envir/ChangeLog.
358

    
359
2005-03-19  Andras Varga
360

    
361
	* cdispstr.cc: fixed incorrect handling of terminating stray backlash
362
	during parsing
363

    
364
2005-03-18  Andras Varga
365

    
366
	* added cstrtokenizer.cc
367

    
368
2005-03-17  Andras Varga
369

    
370
	* cscheduler.cc: implemented executionResumed() in cRealtimeScheduler
371

    
372
2005-03-15  Andras Varga
373

    
374
	* cexception.cc: implemented cRuntimeError.
375

    
376
	* several files: changed throw new cException to throw new
377
	cRuntimeError.
378

    
379
	* new omnetpp.ini entry:
380
	  [General]
381
	  debug-on-errors = true/false  (default: false)
382
	If turned on, errors will cause the program to break into the C++
383
	debugger. More previsely, cRuntimeError's constructor will do
384
	__asm int 3 (debugger interrupt) on Windows, and raise(SIGABRT)
385
	on other platforms (Linux, etc). This makes it possible to
386
	investigate the context (stack frames, variables etc) of a runtime
387
	error.
388

    
389
	* cmessage.cc: setControlInfo(), removeControlInfo(), destructor:
390
	control info isn't supposed to be a cObject, but if it is, call
391
	take() and drop() on it. [reported by Kurtis Kredo II]
392

    
393
2005-03-07  Andras Varga
394

    
395
	* chist.cc: changed to eliminate warnings about converting double to
396
	int
397

    
398
2005-02-06  Andras Varga
399

    
400
	* csimplemodule.cc: send()/sendDelayed() fix: check if output gate is
401
	connected. If we didn't throw error there, msg would be delivered back
402
	to the sender module as a self-message.
403

    
404
2005-01-12  Andras Varga
405

    
406
	csimplemodule.cc, csimul.cc: changed the way scheduled events or sent
407
	messages for deleted or finished (see cSimpleModule::end()) modules
408
	are handled. Before, these messages were deleted by the cSimpleModule
409
	destructor, but this made it very long to clean up large models.
410
	Now, messages are not deleted in the dtor, but left in the FES -- they
411
	will be discarded in cSimulation::selectNextModule() when they're met.
412

    
413
2005-01-10  Andras Varga
414

    
415
	* cscheduler.cc: added cRealTimeScheduler implementation
416

    
417
2005-01-07  Andras Varga
418

    
419
	* cdispstr.cc: getTagArg(): fixed to never return NULL (returns ""
420
	instead)
421

    
422
2005-01-02  Andras Varga
423

    
424
	* cstruct.cc: fix: cStructDescriptor ctor crashed if NULL pointer was
425
	passed to it
426

    
427
2004-12-29  ------ omnetpp-3.0 released ------
428

    
429
2004-12-27  Andras Varga
430

    
431
	* csimplemodule.cc: fix: in Windows, creation of activity() simple
432
	modules crashed if coroutine (win32 Fiber) could not be created.
433

    
434
2004-12-22  Andras Varga
435

    
436
	* chist.cc: cLongHistogram changes to enable num_cells set up
437
	adaptively. See class doc for more info.
438

    
439
2004-12-22  Andras Varga
440

    
441
	* csimplemodule.cc: "scheduleAt(): not owner of message" error message
442
	(and similar messages from send() and sendDirect()) changed to
443
	something hopefully more intuitive for users. One of the following
444
	messages will be displayed:
445
	- "scheduleAt(): message (class)msgname is currently scheduled,
446
	  use cancelEvent() before rescheduling";
447
	-  "scheduleAt(): cannot schedule message (class)msgname: it is
448
	  currently scheduled as self-message for ANOTHER module";
449
	- "scheduleAt(): cannot schedule message (class)msgname: it is
450
	  "currently in scheduled-events, being underway between two modules";
451
	- "scheduleAt(): cannot schedule message (class)msgname: it is
452
	  currently contained/owned by (...)...".
453

    
454
2004-12-19  Andras Varga
455

    
456
	* cstruct.cc: added baseclassname, baseclassdesc
457

    
458
2004-12-16  Andras Varga
459

    
460
	* cgate.cc, cmodule.cc: removed ev.getDisplayString() and support
461
	for display strings in omnetpp.ini (section [DisplayStrings])
462

    
463
	* optimizations
464

    
465
2004-12-10  Andras Varga
466

    
467
	* csimulation.cc: implemented getUniqueNumber()
468

    
469
2004-12-08  Andras Varga
470

    
471
	* cpar.cc: read(): invoke new ev.getParameterUseDefault() function
472

    
473
2004-11-27  Andras Varga
474

    
475
	* nearly all .cc files: forEach() methods ported to cVisitor, see
476
	include/ChangeLog
477

    
478
2004-11-23  Andras Varga
479

    
480
	* cchannel.cc: parameter "disabled" of cSimpleChannel made to work
481

    
482
	* cgate.cc: info() string improved
483

    
484
	* cmodule.cc: displayStringAsParent() renamed to backgroundDisplay-
485
	String()
486

    
487
	* cchannel.cc: cSimpleChannel renamed to cBasicChannel
488

    
489
2004-11-23  ------ omnetpp-3.0b1 released ------
490

    
491
2004-11-08  Andras Varga
492

    
493
	* cmodule.cc: fix: checkInternalConnections() reported error on zero-
494
	size gate vectors too
495

    
496
2004-11-03  ------ omnetpp-3.0a9 released ------
497

    
498
2004-10-27  Andras Varga
499

    
500
        * checked in MersenneTwister.h v1.0 (15 May 2003) from Richard J.Wagner
501
        rjwagner@writeme.com; code is under the BSD license.
502
        http://www-personal.engin.umich.edu/~wagnerr/MersenneTwister.html
503

    
504
        * added cRNG implementations clcg32.cc/h (wraps old OMNeT++ RNG),
505
        cmersennetwister.cc/h (wraps Mersenne Twister, MersenneTwister.h)
506

    
507
	* ctype.cc: added call to ev.getRNGMappingFor(mod) in cModuleType's
508
	create() method.
509

    
510
2004-10-25  Andras Varga
511

    
512
	* all files: info() and fullPath() signature change (see
513
	include/ChangeLog)
514

    
515
2004-10-10  Andras Varga
516

    
517
	* csimul.cc: fix: added preliminary setting of simtime to end of
518
	doOneEvent() -- this fixes bug in Tkenv "run until sim.time" function,
519
	and sim.time display when single-stepping (it used to display time of
520
	last event, should be time of next event)
521

    
522
2004-10-04  ------ omnetpp-3.0a8 released ------
523

    
524
2004-09-24  ------ omnetpp-3.0a7 released ------
525

    
526
2004-09-15  Andras Varga
527

    
528
        * ctopo.cc: implemented 2 new extractByModuleType() functions, see
529
        include/ChangeLog.
530

    
531
        * cmodule.cc: support for zero-sized module gates. A gate vector
532
        is zero size right after creation, and if there's no gatesize declared
533
        in NED (and there's no manual setGateSize() call) it'll remain zero
534
        size. A zero-sized gate vector is represented by a single gate object
535
        whose size() method returns zero, and cannot be connected.
536

    
537
2004-08-11   Andras Varga
538

    
539
        * cchannel.cc: added check for negative delays
540

    
541
2004-07-22  ------ omnetpp-3.0a6 released ------
542

    
543
2004-07-15   Andras Varga
544

    
545
        * csimul.cc: deleteNetwork(): moved flushing event queue after deleting
546
        modules (because module destructors may contain delete cancelEvent(msg)
547
        calls)
548

    
549
2004-07-10   Andras Varga
550

    
551
        * csimul.cc,cmodule.cc,util.cc: added cSimulation::contextType() stuff
552

    
553
2004-07-05   Andras Varga
554

    
555
        * csimplemodule.cc: recordScalar() functions for text and cStatistic
556
        data removed. A cStatistic object can be recorded into the scalar file
557
        by calling its recordScalar() method (below).
558

    
559
        * cstat.cc: added recordScalar() method.
560

    
561
2004-06-24  Andras Varga
562

    
563
        * cpar.cc: implemented support for type M (XML element) in cPar.
564

    
565
2004-06-22  Andras Varga
566

    
567
        * added cxmlelement.cc
568

    
569
2004-06-07  ------ omnetpp-3.0a5 released ------
570

    
571
2004-05-15  ------ omnetpp-3.0a4 released ------
572

    
573
2004-04-16  Andras Varga
574

    
575
        * cpar.cc, cenum.cc: fixed two possible bugs after Johnny's valgrinding
576

    
577
2004-04-13  Andras Varga
578

    
579
        * cmessage.cc: implemented new cMessage methods setControlInfo(),
580
        removeControlInfo(), controlInfo().
581

    
582
2004-04-04  Andras Varga
583

    
584
        * simplemodule.cc: cancelEvent(): don't throw error if message is not
585
        currently scheduled, just return.
586

    
587
2004-03-22  ------ omnetpp-3.0a3 released ------
588

    
589
2004-03-03  ------ omnetpp-3.0a2 released ------
590

    
591
2004-02-23  Andras Varga
592

    
593
        * cmodule.cc: added changeParentTo() to cModule.
594

    
595
2004-02-22  Andras Varga
596

    
597
        * cmodule.cc: added gateSize() to cModule.
598

    
599
2004-02-21  Andras Varga
600

    
601
        * cmodule.cc: setGateSize() made more tolerant; this is needed for
602
        "gate++" NED feature (see nedxml/ChangeLog)
603

    
604
        * cpar.cc: turned type character into English type names in cPar error
605
        messages, e.g. "Cannot cast from type `D' to `S'" became
606
        "Cannot cast from type double (D) to string (S)'".
607

    
608
2004-02-20  Andras Varga
609

    
610
        * ctype.cc, cchannel.cc, cgate.cc: introduced cChannelType which
611
        replaces cLinkType. See include/ChangeLog for more info.
612

    
613
2004-02-12  Andras Varga
614

    
615
        * cmodule.cc, cgate.cc, cchannel.cc: gave a bool return value to
616
        deliver(), "false" meaning that message object should be deleted.
617

    
618
2004-02-11  Andras Varga
619

    
620
        * csimul.cc, cscheduler.cc: semantic change of getNextEvent()'s and
621
        selectNextModule()'s return value (see include/ChangeLog)
622

    
623
2004-02-10  Andras Varga
624

    
625
        * cexception.cc: added storage of module class name (NED type name)
626

    
627
2004-02-09  Andras Varga
628

    
629
        * ctypes.cc: added methods to cModuleInterface so that it's possible
630
        to dynamically assemble it (needed by networkbuilder)
631

    
632
2004-02-07  Andras Varga
633

    
634
        * ctypes.cc: added createOneIfClassIsKnown(const char *classname)
635

    
636
        * cstruct.cc: fix createDescriptorFor() to prepare for missing
637
        descriptor object
638

    
639
2004-02-06  Andras Varga
640

    
641
        * cgate.cc: implemented cGate::disconnect(); revised cGate::connectTo()
642

    
643
        * cchannel.cc: added setDelay(double), setError(double),
644
        setDatarate(double) to cSimpleChannel
645

    
646
2004-02-04  ------ omnetpp-3.0pre1 released ------
647

    
648
2004-01-09  Andras Varga
649

    
650
        * cmodule.cc: implemented bubble()
651

    
652
2004-01-05  Andras Varga
653

    
654
        * HEAVY CHANGES throughout the code, see include/ChangeLog entry with
655
        same date.
656

    
657
        * cDisplayStringParser:
658
        - cDisplayStringParser renamed to cDisplayString
659
        - backslash parsing improved (now recognizes backslash sequences
660
          \t, \n, \r, \f, \b, \x0A with same meaning as in C/C++)
661
        - notify() and assemble() only if needed (there is some change)
662

    
663
2003-11-30  Andras Varga
664

    
665
        * all files: info() no longer contains object name and class
666

    
667
2003-11-22  Andras Varga
668

    
669
        * carray.cc: fixed bug in cBag which caused crash under certain rare
670
        circumstances [reported by Nicolas Betbeder-Matibet]
671

    
672
2003-11-13  Andras Varga
673

    
674
        * distrib.cc: added typecast for MSVC 7.0 compiler [reported by Bob
675
        Scheffler]
676

    
677
2003-11-13  Andras Varga
678

    
679
        * Checked in parallel simulation code that was developed March-May 2003,
680
        during my stay at Monash University. Changes:
681

    
682
        2003-04-20  Andras Varga
683
        * cmodule.cc: setGateSize(): added check for negative vector size
684

    
685
        2003-03-30  Andras Varga
686
        * Makefile.vc uses implicit rules
687

    
688
        2003-03-25  Andras Varga
689
        * cmodule.cc: method isSimple() moved to base class cModule where it
690
        uses dynamic_cast.
691
        * ctypes.cc: cModuleType::create() methods reorganized (see
692
        include/ChangeLog)
693

    
694
        2003-03-23  Andras Varga
695
        * split cmodule.cc: cSimpleModule put into new file csimplemodule.cc
696
        * cobject.cc: type of namestr member changed from char* to opp_string
697
        * added cscheduler.cc, changed csimul.cc: cSimulation::nextModule()
698
        now relies on a scheduler object, subclassed from cScheduler.
699

    
700
        2003-03-20  Andras Varga
701
        * nearly all files: implementations of netPack()/netUnpack() moved
702
        here from MPI/PVM directories. These functions now use the cCommBuffer
703
        interface, so they're no longer specific to the communications library
704
        (ie.MPI.PVM,..)
705

    
706
2003-11-09  Andras Varga
707

    
708
        * csimul.cc: added optional support for dynamic loading of NED files.
709
        If WITH_NETBUILDER was defined (e.g. via -D compiler option) when
710
        compiling the sim. kernel, one can use the cSimulation::loadNedFile()
711
        function to pull in compound modules, channels and network definitions
712
        from NED files at runtime. If the sim. kernel was compiled without
713
        WITH_NETBUILDER, the cSimulation::loadNedFile() throws an exception
714
        when called.
715
           cSimulation::loadNedFile() works by invoking code in src/netbuilder,
716
        which in turn relies on the nedxml library. Thus, when WITH_NETBUILDER
717
        is used, simulation executables must be linked with the nedxml library
718
        (and thus also with an XML parser, if nedxml was compiled to support
719
        XML input). When compiling without WITH_NETBUILDER, nedxml and also
720
        the stuff in src/netbuilder can be left out from the link.
721

    
722
2003-11-01  Andras Varga
723

    
724
        * cdispstr.cc: cDisplayString::setTagArg() now adds the tag if it
725
        doesn't exist yet
726

    
727
2003-10-21  Andras Varga
728

    
729
        * csimul.h: fixed simulation.moduleByPath(): it didn't work when
730
        name of system module (the toplevel module) was included in the path
731
        [reported by Andreas Koepke]
732

    
733
2003-10-02  Andras Varga
734

    
735
        * util.h: added implementation of cContextSwitcher internal class,
736
        needed by the new Enter_Method() and Enter_Method_Silent() macros.
737

    
738
        * ccoroutine.cc: bugfix: DeleteFiber(lpFiber) crashes if lpFiber==0
739
        on Win2003 Server (maybe elsewhere too). [reported by Donald Von]
740

    
741
2003-09-22  Andras Varga
742

    
743
        * cmodule.cc: sendDirect() rules slightly modified, see header file.
744

    
745
2003-06-16  ------ omnetpp-2.3 released ------
746

    
747
2003-06-16  Andras Varga
748

    
749
        * cexception.cc: handle exceptions during initialization:
750
        if cException ctor is invoked before main() has started, we print
751
        the error message and call exit(1).
752

    
753
2003-06-14  Andras Varga
754

    
755
        * cmodule.cc: cModule's addGate(), addPar() return type changed from
756
        void to cGate*/cPar*.
757

    
758
2003-04-15  Andras Varga
759

    
760
        * cmodule.cc: fixed bug introduced in 2.3b1 in deleteModule()
761
        which caused deleting another module (i.e. mod->deleteModule())
762
        to crash.
763

    
764
2003-03-15  ------ omnetpp-2.3b2 released ------
765

    
766
2003-03-15  Andras Varga
767

    
768
        * cchannel.cc, cgate.cc: refined channel attributes handling, isBusy(),
769
        transmissionFinishes().
770

    
771
2003-03-10  Andras Varga
772

    
773
        * ctype.cc: fixed bug (introduced in 2.3b1) in cLinkType constructor
774
        which eventually caused NED channels not to work.
775

    
776
2003-02-15  ------ omnetpp-2.3b1 released ------
777

    
778
2003-02-15  Andras Varga
779

    
780
        * chist.cc: fix: clearResult() now doesn't reset num_cells.
781

    
782
        * To be done in the future: observation count and histogram cell values
783
        should be made unsigned long, and when obs. count would overflow,
784
        issue a warning and ignore further collect() calls. Also TBD:
785
        check for integer overflows in cKSplit and cPSquare.
786

    
787
2003-02-14  Andras Varga
788

    
789
        * cpar.cc: getAsText(): better handling of long string values
790

    
791
2003-02-11  Andras Varga
792

    
793
        * distrib.cc: bugfix in beta()
794
        * cexception.h: added missing includes string.h and stdarg.h
795

    
796
2003-02-10  Andras Varga
797

    
798
        * chist.cc: cEqdHistogramBase: collectTransformed() and pdf() made
799
        safer (floating-point rounding errors could cause addressing out
800
        of cellv[] array)
801

    
802
2003-01-30  Andras Varga
803

    
804
        * added handling of new MathFunc4Args where needed
805

    
806
2003-01-23  Andras Varga
807

    
808
        * NOTE about Fibers, the Win32 API used to implement activity()
809
        on Windows. The number of fibers (that is, the number of modules
810
        using activity() in a network) is limited by the available memory
811
        and the available address space according to the following.
812
        Each fiber has its own stack, by default 1MB (this is the "reserved"
813
        stack space -- i.e. reserved in the address space, but not the full
814
        1MB is actually "committed", i.e. has physical memory assigned to it).
815
        This means that a 2GB address space will run out after 2048 fibers,
816
        which is way too few. (In practice, you won't even be able to create
817
        this many fibers, because physical memory is also a limiting factor).
818
        Therefore, the 1MB reserved stack size (RSS) must be set to a smaller
819
        value: the coroutine stack size requested for the module, plus
820
        extra-stack-for-envir, the sum of the two typically around 32K.
821
        Unfortunately, the CreateFiber() Win32 API doesn't allow the RSS to be
822
        specified. The more advanced CreateFiberEx() API which accepts RSS as
823
        parameter is only available from Windows XP!!!! The alternative is
824
        the stacksize parameter stored in the EXE header, which can be set
825
        via the STACKSIZE .def file parameter, via the /stack linker option,
826
        or on an existing execuable using the editbin /stack utility.
827
        This parameter specifies a common RSS for the main program stack,
828
        fiber and thread stacks. 64K should be enough. This is the way
829
        simulation executable should be created: linked with the /stack:65536
830
        option, or the /stack:65536 parameter applied using editbin later.
831
        For example, after applying the editbin /stacksize:65536 command to
832
        dyna.exe, I was able to successfully run the Dyna sample with 8000
833
        Client modules on my Win2K PC with 256M RAM (that means about 12000
834
        modules at runtime, including about 4000 dynamically created modules.)
835

    
836
2003-01-22  Andras Varga
837

    
838
        * ctypes.cc: increased type safety of Register_Function() and
839
        cFunctionType.
840

    
841
2003-01-20  Andras Varga
842

    
843
        * removed obsolete file cstk.cc
844

    
845
2003-01-19  Andras Varga
846

    
847
        * distrib.cc (new): contains implementations of distributions
848
        contributed by Werner Sandmann (TU Bonn): continuous distributions
849
        gamma_d(), beta(), erlang_k(), chi_square(), student_t(), cauchy(),
850
        triang(),lognormal(), weibull(), pareto_shifted(), and discrete
851
        distributions bernoulli(), binomial(), geometric(), negbinomial(),
852
        hypergeometric(), poisson()
853

    
854
        * random.cc (new), distrib.cc, util.cc: From util.cc, existing
855
        distributions (uniform, normal, exponential, etc) were moved to
856
        distrib.cc, and random number generator functions were moved to
857
        new file random.cc.
858

    
859
2003-01-14  Andras Varga
860

    
861
        * cwatch.cc: added support for 'bool'
862

    
863
        * cmessage.cc: foreach(): include encapsulated msg in traversal
864

    
865
        * cmodule.h: implemented cSimpleModule::waitAndEnqueue(); putAsideQueue
866
        (deprecated) prevented from being displayed in Tkenv.
867

    
868
2002-12-21  Andras Varga
869

    
870
        * cwatch.cc: for 'char *' and 'cObject *' types, cWatch::info()
871
        displays pointer value
872

    
873
2002-12-19  Andras Varga
874

    
875
        * always use <iostream> instead of <iostream.h>
876

    
877
        * module id notation in info() strings changed from '#nnn' to 'id=nnn'
878

    
879
2002-12-07  Andras Varga
880

    
881
        * cmessage.cc: info() now includes names of src/dest modules too;
882
        useful when displayed in Tkenv scheduled events or message window
883

    
884
2002-12-02  Andras Varga
885

    
886
        * cmessage.cc: par() methods to throw cException when object cannot
887
        be cast to cPar using dynamic_cast<cPar *>().
888

    
889
2002-11-14  Andras Varga
890

    
891
        * cmodule.cc: cSimpleModule::end() and deleteModule() are now driven
892
        by exceptions. This also means that activity() and handleMessage()
893
        execution immediately ends after the end() or deleteModule() call.
894
        (This fixes the bug that in previous versions, handleMessage() run
895
        through even after these calls.)
896

    
897
        * csimul.cc: cSimulation::doOneStep() restructured
898

    
899
2002-10-27  Andras Varga
900

    
901
        * object.cc: className() implemented using typeid (C++ RTTI)
902

    
903
        * chead.cc, ctypes.cc: inspectorfactory stuff moved to Tkenv from here
904

    
905
        * CRASH on Cygwin (gcc 2.95.3-5): if we transfer out (ie. by calling
906
        transferToMain()) from a try{..} block inside a coroutine, the
907
        program will crash during exiting (ie sometime on leaving main()).
908
        This is kind of bad, because that's the way activity() can be handled
909
        inside the simulation kernel, in cSimpleModule::activate()...
910

    
911
        To produce the bug, link with Tkenv any simulation that uses
912
        activity() (I tried with Fifo1 and Token). Do one (or more) events
913
        in Tkenv, then exit. Tkenv will crash right after printing
914
        "End run of OMNeT++". Then try the same without doing an event,
915
        or with pure handleMessage() simulation (ie Fifo2): neither will crash.
916
        Strangely enough, there is also no immediate crash if you do
917
        "Rebuild network" in Tkenv several times, crash is always delayed
918
        until program exit.
919

    
920
        To test it's really caused by the try block, modify cSimpleModule::
921
        activate(void *p), around cmodule.cc#575:
922
            try
923
            {
924
                smod->activity();
925
        Insert simulation.transferToMain() just before the try block and
926
        try to reproduce the bug (one step in Tkenv, then exit). Simulation
927
        won't work, but no crash. Then move simulation.transferToMain()
928
        just inside the try block: simulation will (not) work same way
929
        as before, but crashes on exit.
930

    
931
        I only saw this on Cygwin: MSVC and gcc on Linux are OK. Web search
932
        told me that exception handling in Cygwin isn't thread-safe, hence
933
        the crash. According to some, recompiling *GCC* with --disable-shared
934
        and --enable-threads should cure this. I didn't test, converted to
935
        MinGW instead.
936

    
937
2002-10-20  Andras Varga
938

    
939
        * cgate.cc: added isConnectedOutside() and isConnectedInside() methods.
940

    
941
2002-10-19  Andras Varga
942

    
943
        * cmodule.cc, ctypes.cc, csimul.cc: refactoring around buildInside(),
944
        cNetworkType and Define_Network(), see include/ChangeLog.
945

    
946
        * cexception.cc, cmodule.cc, csimul.cc: introduced new cTermination-
947
        Exception, cEndModuleException classes
948

    
949
2002-10-09  Andras Varga
950

    
951
        * refactoring (see include/ChangeLog), cosmetics
952

    
953
2002-10-07  Andras Varga
954

    
955
        * cobject.cc, ctypes.cc, added onstartup.cc: refactoring: global
956
        registration lists now use EXECUTE_ON_STARTUP macro, see
957
        include/ChangeLog for more info.
958

    
959
2002-10-04  Andras Varga
960

    
961
        * error handling with exceptions has been refined.
962

    
963
        * csimul.cc: incEventCount() removed, incrementing event count
964
        was moved into doOneEvent()
965

    
966
        * csimul.h: several methods removed from cSimulation and moved
967
        into the Envir library: timeLimit(), simTimeLimit(), startClock(),
968
        stopClock(), resetClock(), checkTimes().
969

    
970
2002-09-07 Andras Varga
971

    
972
        * added cchannel.cc, modified carray.cc, cgate.cc, cmessage.cc,
973
        cmodule.cc, csimul.cc, mpimod.cc, mpipack.cc, netpack.cc, pvmmod.cc,
974
        pvmpack.cc: introduced channel objects -- see include/ChangeLog for
975
        more details
976

    
977
2002-07-08  Andras Varga
978

    
979
        * coutvect.cc (cOutVector methods): register vector as early as
980
        possible. This is needed by the Akaroa output vector manager because
981
        Akaroa needs to know the total number of parameters before recording
982
        the first value. (This change has the side effect that empty vectors
983
        also get declared in the output vector file, which is redundant.)
984

    
985
2002-07-04  Andras Varga
986

    
987
        * cdispstr.h added: utility class cDisplayString
988

    
989
2002-07-03  Andras Varga
990

    
991
        * csimul.cc (doOneEvent()): bugfix: added missing ev.messageDelivered()
992
        call that could cause a "phantom" message being animated in Tkenv with
993
        handleMessage()-based simple modules
994

    
995
2002-06-27  Andras Varga
996

    
997
        * cexception.cc/h added; most opp_error() calls replaced with
998
        throw new cException(...). Exceptions are caught in
999
        cSimpleModule::activate() (for activity()-based modules) and
1000
        in cSimulation::doOneEvent() (for handleMessage()-based modules),
1001
        and converted to 'conventional' opp_error().
1002

    
1003
        * TBD: rethink error handling wrt exceptions!
1004

    
1005
2002-06-24  Andras Varga
1006

    
1007
        * ccoroutine.h/cc: use Fiber API on Windows
1008

    
1009
2002-06-17  Andras Varga
1010

    
1011
        * cpar.cc: new feature: cPar can use compiled expressions subclassed
1012
        from cDoubleExpression (new class). This is needed for code generated
1013
        by the new, nedxml-based nedc.
1014

    
1015
2002-05-28  Frank Paehlke  <paehlke@tm.uni-karlsruhe.de>
1016

    
1017
        * cdensity.cc, chist.cc, cksplit.cc, cmodule.cc, cobject.cc,
1018
        cpar.cc, cpsquare.cc, csimul.cc, cstat.cc, ctypes.cc, cvarhist.cc:
1019
        do not include iostream.h et.al. directly (already included by
1020
        header files)
1021

    
1022
        * cmessage.cc (decapsulate): added check for encapmsg==0 before
1023
        accessing encapmsg->len
1024

    
1025
2002-05-16  Ulrich Kaage  <kaage@int.uni-karlsruhe.de>
1026

    
1027
        * mpi/mpimod.h (class cNetGate): fixed className() declaration
1028
        (class cMpiMod): dito.
1029

    
1030
        * pvm/pvmmod.h (class cNetGate): fixed className() declaration
1031
        (class cPvmMod): dito.
1032

    
1033
2002-05-04  ------ omnetpp-2.2 released ------
1034

    
1035
2002-04-07  Ulrich Kaage  <kaage@int.uni-karlsruhe.de>
1036

    
1037
        * pvm/pvmpack.cc (upack_object): compile fix: cast from (void*) to
1038
        (cObject*) in call to createOne()
1039

    
1040
2002-03-05  Andras Varga
1041

    
1042
        * cgate.cc (setDisplayString): connection display string changes now
1043
        take effect immediately. Implementation: notify parent module's
1044
        inspector. (This is should not be the final solution though; it would
1045
        be better to add displayStringChanged() methods to cEnvir...)
1046

    
1047
2002-03-04  Andras Varga
1048

    
1049
        * cObject::free(cObject *) renamed to dealloc() throughout to avoid
1050
        misunderstandings
1051

    
1052
        * coutvect.cc: vector registration made on-demand to allow initial
1053
        setName() calls
1054

    
1055
        * cobject.cc, cmodule.cc, cgate.cc, cpar.cc, csimul.cc: fullPath2()
1056
        renamed to fullPath(); see include/ChangeLog for details. fullName()
1057
        methods in cGate and cModule also changed (no longer use static buffer).
1058

    
1059
2002-03-03  Andras Varga
1060

    
1061
        * several delete operators replaced with delete []. [suggestion by
1062
        Johnny Lai]
1063

    
1064
2002-03-03  Andras Varga
1065

    
1066
        * ctypes.cc: cClassRegister can now be used to create instances of
1067
        non-cObject classes too; as part of this change, createOne() return
1068
        value changed from cObject* to void*. (See also include/ChangeLog)
1069

    
1070
        * csimul.cc, coutvect.cc: management of various output files
1071
        (output vector file, output scalar file, snapshot file) was moved
1072
        from cSimulation to the user interface library (behind the ev facade).
1073
        Implementation of cOutVector changed completely. The cOutFileMgr
1074
        class was removed altogether. (See also include/ChangeLog)
1075

    
1076
        * cpar.cc: valueChanges() renamed to beforeChange(); corresponding
1077
        afterChange() method added. Removed parameter change logging code.
1078
        (See also include/ChangeLog)
1079

    
1080
2002-02-24  Andras Varga
1081

    
1082
        * cmodule.cc: bugfix: pause() was allowed for handleMessage() modules
1083
        too.
1084

    
1085
2002-02-22  Ulrich Kaage  <kaage@int.uni-karlsruhe.de>
1086

    
1087
        * cllist.cc (operator=): Same bugs as with cQueue (see items
1088
        2002-02-21 and 2001-10-25). Same bugfixes applied [reported by
1089
        #JIA KE# <P147125331@ntu.edu.sg>]
1090

    
1091
2002-02-21  Ulrich Kaage  <kaage@int.uni-karlsruhe.de>
1092

    
1093
        * cqueue.cc (operator=): Bugfix: iteration order changed from
1094
        head->tail to tail->head. Since unsorted insertion is performed at
1095
        the destination queue's head, this preserves element order. Fix
1096
        provided by Jos? Afonso <jaa@dei.uminho.pt>
1097

    
1098
2002-02-11  Ulrich Kaage  <kaage@int.uni-karlsruhe.de>
1099

    
1100
        * cmodule.cc (moduleByRelativePath): use explicit constructor
1101
        instead of copy constructor for pathbuf (gcc-3 patch)
1102
        * csimul.cc (moduleByPath): ditto
1103

    
1104
2002-01-24  Ulrich Kaage  <kaage@int.uni-karlsruhe.de>
1105

    
1106
        * cenum.cc (insert): Bugfix: iterating to the next larger
1107
        allocation table size failed. New table size was always 0
1108
        (insert): check that enum strings have different keys. Otherwise
1109
        abort
1110
        (insert): use opp_error instead of fprintf for error messages
1111

    
1112
2002-01-23 Andras Varga
1113

    
1114
        * cmodule.cc: bugfix: send..() and scheduleAt() crashed if message
1115
        owner was set to NULL.
1116

    
1117
        * carray.cc: get() methods of cArray and cBag no longer give a warning
1118
        if the slot is empty, but simply return NULL pointer. Warnings remained
1119
        only in the remove() methods.
1120

    
1121
2001-11-06 Andras Varga
1122

    
1123
        * csimul.cc: bugfix: startRun() unnecessarily disabled warnings
1124

    
1125
2001-10-28 Andras Varga
1126

    
1127
        * util.cc: opp_strprettytrunc() added; indexedname() renamed to
1128
        opp_mkindexedname() (old name still exists as macro)
1129
        * cobject.cc, cmodule.cc, csimul.cc, cgate.cc, cpar.cc: added
1130
        fullPath2(buffer,buflen) which produces the result in an external
1131
        buffer; cObject::fullPath() now relies on fullPath2().
1132

    
1133
2001-10-25  Ulrich Kaage  <kaage@int.uni-karlsruhe.de>
1134

    
1135
        * cqueue.cc (operator=): Bugfix for stop condition in iteration
1136
        loop
1137

    
1138
2001-09-14 Andras Varga
1139

    
1140
        * utils.cc: added opp_nextrand(long& seed)
1141
        * cmodule.cc: display string methods reorganized
1142

    
1143
2001-09-06 Andras Varga
1144

    
1145
        * cleanup around object copying (see include/ChangeLog for details)
1146

    
1147
2001-09-01 Andras Varga
1148

    
1149
        * _CONST patches made permanent: _CONST --> const, CONSTCAST() -->
1150
        const_cast<>() replacements
1151

    
1152
        * Makefile.bc: cenum.cc, cstruct.cc added
1153

    
1154
2001-08-30 Andras Varga
1155

    
1156
        * MPI targets added to Makefile.vc too
1157

    
1158
2001-08-11 Andras Varga
1159

    
1160
        * added _CONSTs to all copy constructors, operator=()'s and dup()'s
1161

    
1162
2001-08-06  Ulrich Kaage  <kaage@int.uni-karlsruhe.de>
1163

    
1164
        * cnetmod.cc (isLocalMachineIn): Compile-Fix: changed const to
1165
        _CONST in argument list.
1166

    
1167
2001-08-05 Andras Varga
1168

    
1169
        * added a few dozen new _CONSTs; affects nearly all files
1170

    
1171
2001-07-29 Andras Varga
1172

    
1173
        * added a bunch of _CONSTs (see changelog entry in include/)
1174

    
1175
2001-07-11 Andras Varga
1176

    
1177
        * mpi/* added, Makefile.in: Eric Wu's Tru64/MPI port
1178

    
1179
2001-07-02 Andras Varga
1180

    
1181
        * cenum.cc,cstruct.cc: fixed, added to makefile.in and makefile.vc.
1182
        Dependencies to be updated in both makefiles! Code still untested.
1183

    
1184
2001-06-28  Andras Varga
1185

    
1186
        * cstruct.cc added: classes to support self-describing data structures,
1187
        to be used for implementing message subclassing. UNTESTED. To be added
1188
        to the makefile.
1189

    
1190
        * cenum.cc added: classes to support string mapping of enums. UNTESTED.
1191
        To be added to the makefile.
1192

    
1193
2001-06-20  Ulrich Kaage  <kaage@int.uni-karlsruhe.de>
1194

    
1195
        * Makefile.in (depend): added -I../../include
1196

    
1197
        * carray.cc (): const patches
1198
        added functions:
1199
                const void *cBag::get(int m) const
1200
                const cObject *cArray::get(int m) const
1201
                const cObject *cArray::get(const char *objname) const
1202

    
1203
        * cgate.cc (): const patches
1204

    
1205
        * cmessage.cc (): const patches
1206

    
1207
        * cmodule.cc (): const patches
1208
        added functions:
1209
                cGate *cModule::gate(const char *s, int sn) const
1210

    
1211
        * cobject.cc (): const patches
1212

    
1213
        * cpar.cc (): const patches
1214

    
1215

    
1216
2001-03-10 Andras Varga
1217

    
1218
        * ------ omnetpp-2.1 released ------
1219

    
1220
        * Borland C++ support removed: I deleted the project files
1221
        (*.ide). I added equivalent Makefile.bc files (generated from the
1222
        BC IDE), but they are completely unsupported at the moment. If
1223
        there's interest, it's possible that later I'll add makefiles for
1224
        the free command-line bc5.5 compiler.
1225

    
1226

    
1227
2001-02-27 Andras Varga
1228

    
1229
        * fixed bug which prevented compiling with PVM
1230

    
1231
        * ------ omnetpp-2.0p1 released ------
1232

    
1233
2001-02-06 Andras Varga
1234

    
1235
        * fix: Makefile.vc: 'clean' target didn't delete object files in std/ and pvm/
1236

    
1237
        * ------ omnetpp-2.0 released ------
1238

    
1239
2001-02-05 Andras Varga
1240

    
1241
        * ev<< and ev>> now supports cPar objects too [from Nicky van Foreest]
1242

    
1243
        * old BC3.1 support removed from cenvir.h
1244

    
1245
2001-01-24 Andras Varga
1246

    
1247
        * bugfix: cArray and cBag didn't work properly after clear()
1248

    
1249
        * bugfix: makefile and makefile.vc didn't handle PVM properly
1250
        [reported by Ahmet Sekercioglu]
1251

    
1252
2001-01-16 Andras Varga
1253

    
1254
        * added OMNETPP_VERSION to defs.h (0x0200 for OMNeT++ 2.0)
1255

    
1256
2001-01-15 Andras Varga
1257

    
1258
        * bugfix: cQueue::insertBefore() and cQueue::insertAfter() didn't
1259
        take the ownership of the inserted object [reported by Ulrich
1260
        Kaage]
1261

    
1262
2001-01-03 Andras Varga
1263

    
1264
        * number of cQueue methods made virtual to enable customizing
1265
        cQueue (e.g. adding statistics for maintaining average queue
1266
        length, etc.)  [suggested by Holger Karl]
1267

    
1268
        * added static counters to the cMessage class (total_msgs,
1269
        live_msgs); these variables are incremented/decremented by the
1270
        cMessage constructor and destructor, and displayed in Tkenv. They
1271
        can be very handy at checking for memory leaks.
1272

    
1273
        * changed the place where cSimpleModule's timeoutmsg is created:
1274
        from the constructor to scheduleStart() which is also mandatorily
1275
        called for activity() modules. Reason: "Total msgs" count in Tkenv
1276
        incorrectly displayed zero at the beginning of the simulation,
1277
        while the activation/timeout msg objects already existed)
1278

    
1279
2000-06-04 Andras Varga
1280

    
1281
        * ------ omnetpp-2.0b5 released ------
1282

    
1283
        * fix: cPar::setfunction() improved and made const-correct (for gcc 2.95.2)
1284

    
1285
        * warnings eliminated from cllist.cc & coutvect.cc
1286

    
1287
2000-05-21 Andras Varga
1288

    
1289
        * ------ omnetpp-2.0b4 released ------
1290

    
1291

    
1292
        * added message sending functions which take cGate* pointers
1293
        [suggested by Mark Rahner]:
1294
        int send(cMessage *msg, cGate *outputgate);
1295
        int sendDelayed(cMessage *msg, double delay, cGate *outputgate);
1296
        int sendDirect(cMessage *msg, double delay, cGate *inputgate);
1297

    
1298
        (Mark's original suggestion was to create a single generalized
1299
        send(cMessage *msg, double delay, cGate *gate) function which
1300
        would combine the functionality of all other
1301
        send()/sendDelayed()/sendDirect() variants, and mark other
1302
        functions as 'deprecated'. The gate passed to send() could be that
1303
        of another module [~sendDirect()] and either an input or an output
1304
        gate; the delay argument would be interpreted as propagation delay
1305
        until the msg reaches that gate. I didn't implement it for now
1306
        because I felt such a very general function would cause confusion
1307
        for simulation programmers, but I'd like to hear more opinions
1308
        about this...)
1309

    
1310
        * multi-stage initialization support added. Modules have two new
1311
        functions which can be redefined by the user:
1312

    
1313
        void initialize(int stage);
1314
        int numInitStages();
1315

    
1316
        At the beginning of the simulation, initialize(0) is called for
1317
        all modules, then initialize(1), initialize(2), etc. For each
1318
        module, numInitStages() must be redefined to return the number of
1319
        init stages required, e.g. for a two-stage init, numInitStages()
1320
        should return 2, and initialize(int stage) must be implemented to
1321
        handle the stage=0 and stage=1 cases.  callInitialize() now
1322
        performs the full multi-stage initialization for that module and
1323
        all its submodules.
1324

    
1325
        Multi-stage initialization defaults to the good old single-stage
1326
        initialize() function (without args): the default numInitStages()
1327
        returns 1, and the default initialize(int stage) simply calls
1328
        initialize().
1329

    
1330
2000-05-19 Andras Varga
1331

    
1332
        * fixed a bug in cSimulation::snapshot() which caused segfault if
1333
        snapshot() was called with no 'label' parameter [reported by
1334
        Gy. Pongor]
1335

    
1336
        * fixed a bug which caused double printing of the distribution
1337
        data in histogram classes when snapshot() was called
1338

    
1339
2000-05-07 Andras Varga
1340

    
1341
        * Makefile.vc improvements [from Balazs Kelemen]
1342

    
1343
2000-05-06 Andras Varga
1344

    
1345
        * further char * --> const char * changes
1346

    
1347
        * displayString() added to cMessage. By default it returns an
1348
        empty string; users have to subclass cMessage and redefine
1349
        displayString() to get messages with custom appearance in
1350
        Tkenv. (Not implemented yet in Tkenv!)
1351

    
1352
2000-05-05 Andras Varga
1353

    
1354
        * setDisplayString() now works in Tkenv (sim/cmodule.cc also
1355
        affected)
1356

    
1357
        * setDisplayString() got a new argument, bool immediate.  It
1358
        specifies whether the display string change should take effect
1359
        immediately, or only after processing the current event (default
1360
        is immediate=true).  If several display string changes are going
1361
        to be done within one event, then immediate=false is useful
1362
        because it reduces the number of necessary
1363
        redraws. Immediate=false also uses less stack. But its drawback is
1364
        that a setDisplayString() followed by a send() would actually be
1365
        displayed in reverse order (message animation first), because
1366
        message animations are performed immediately (actually within the
1367
        send() call).
1368

    
1369
        * once we have setDisplayString(), seems like we'll need a display
1370
        string parser/assembler object to be able to easily change
1371
        specific values within the display string without bothering the
1372
        rest of it. Maybe for the some next version; but if you want to
1373
        contribute one, go ahead :-)
1374

    
1375
2000-04-19 Andras Varga
1376

    
1377
        * bugfix: when using datarate and propagation delay at the same
1378
        output gate, the gate's transmissionFinishes() function returned
1379
        incorrect value: one had to substract the propagation delay to get
1380
        the correct number.  Fixed in cGate::deliver(cMessage *msg):
1381
        transmission delay calculation should be done _before_ propagation
1382
        delay.
1383

    
1384
        * in util.h, fastconcat() renamed to opp_concat(); compatibility
1385
        #define added
1386

    
1387
2000-04-10 Andras Varga
1388

    
1389
        * TRUE/FALSE (defines) replaced by true/false (C++ keywords)
1390

    
1391
        * operator=(cXXX& other) functions now include this line: if
1392
        (this==&other) return *this;
1393

    
1394
        * indentation canonized (4 spaces) in most files (where I had the patience)
1395

    
1396
        * remove(cObject *) added to cArray
1397

    
1398
        * cArray error handling improved
1399

    
1400
        * Improved on functions for traversing module hierarchy. [suggestion by Niko]
1401

    
1402
        These functions were removed from cSimulation:
1403
              int find(const char *modulename,int index=-1, int parentmod_id=-1);
1404
              cModule *module(const char *modulename,int index=-1,int parentmod_id=-1);
1405
              bool isUnique(const char *s);  // not needed
1406
              int find(cModule *mod);  // was equivalent to mod->id()
1407

    
1408
        The first two have been replaced by functions in cModule:
1409
              int findSubmodule(const char *submodname, int idx=-1); // moduleID (or -1)
1410
              cModule *submodule(const char *submodname, int idx=-1);
1411

    
1412
        New function in cModule:
1413
              cModule *moduleByRelativePath(const char *path);
1414

    
1415
        moduleByRelativePath() is similar to cSimulation::moduleByPath(),
1416
        except that it starts the search at that module
1417
        (e.g. mymod->moduleByRelativePath( "sub.subsub") returns the
1418
        "subsub" submodule of the "sub" submodule of mymod).
1419

    
1420
        * in printf() statements, all "%lf","%lg","%le" were replaced by "%f","%g","%e"
1421

    
1422
        * in cmodule.h, the old NEW and DELETE macros (for raw memory
1423
        allocation) were renamed to opp_new and opp_free. (Beware when
1424
        using opp_free: it does NOT call the destructor of the passed
1425
        object!)
1426

    
1427
2000-04-06 Andras Varga
1428

    
1429
        * Changes to enable linking a Windows DLL from the library. Note
1430
        that the sim dll and envir.dll mutually depend on each other, so
1431
        first we must build an import library from one to be able to link
1432
        dlls from them. Thus, first we create envir.ilib [ilib=import
1433
        library], then we can link sim_std.dll, and using sim_std.ilib we
1434
        can link envir.dll...
1435

    
1436
        On Unix we don't have this problem: .so files are not linked
1437
        against other libs (they are treated more like a collection of
1438
        object files), and the dynamic loader acts practically as a linker
1439
        and collects the symbols at runtime from the different .so files.
1440

    
1441
        * Remaining problem on Win32: user interface DLL cannot be loaded
1442
        dynamically
1443
        (e.g. with [General]/load-libs= ini file setting); the
1444
        LoadLibrary() call returns error code. The problem is [probably]
1445
        with the static objects in the DLL whose constructors are called
1446
        [probably] during LoadLibrary() from DllMain(); these constructors
1447
        want to write a global variable located outside the DLL. This was
1448
        no problem on Unix but seems like Windows doesn't like it. To be
1449
        verified that the error is really caused by this and not something
1450
        else!!!
1451

    
1452
2000-03-28 Andras Varga
1453

    
1454
        * SIM_API macro added to public classes and functions to export
1455
        them on Windows
1456

    
1457
2000-03-26 Andras Varga
1458

    
1459
        * 'char *' pointers made const-correct (lots of 'char *' -->
1460
        'const char *' replacements throughout the code) -- this will
1461
        affect the UI libraries too
1462

    
1463
        * header files indentation uniformized; other little cleanups,
1464
        e.g. some method parameter names made mode descriptive
1465

    
1466
2000-03-12 Andras Varga
1467

    
1468
        * pvm files really fixed. Debugging done by Gabor Lencse.
1469

    
1470
        * sum() and sqrSum() members added to statistics classes (cStdDev& subclasses)
1471

    
1472
        * cPar fix: boolValue(), longValue() and doubleValue() made rather
1473
        liberal: now they all allow conversion from all of B,L and the
1474
        double types D,T,X,F.  This is necessary because of the way
1475
        parameter assignments in NED are handled. For example, bool and
1476
        long expressions (e.g. "i==0 || i==n") are compiled into cPar X
1477
        expressions which will _need_ to be converted to bool/long after
1478
        evaluation.
1479

    
1480
        * isNumeric() added to cPar
1481

    
1482
2000-02-03 Andras Varga
1483

    
1484
        * some pvm-related bugs fixed.
1485

    
1486
2000-01-25 Andras Varga
1487

    
1488
        * ------ omnetpp-2.0b3 released ------
1489

    
1490
        * cArray functions changed to take and return cArray* instead of
1491
        cArray&.  This affects add(), addAt(), remove(), get() and op[].
1492

    
1493
2000-01-17 Andras Varga
1494

    
1495
        * The +,-,*,/,... operators which take cPar plus a numeric type
1496
        (long/double) were removed from cpar.h. This affects some existing
1497
        code: expressions like msg->par("count")+1 which used to compile
1498
        now cause error ("too many possible conversions") and must be
1499
        disabiguated by adding explicit casts like this:
1500
        (int)msg->par("count")+1.
1501

    
1502
        Assigments (like: cPar p = 1; int i=p;) still work fine and don't
1503
        need to be changed.
1504

    
1505
        The reason is that the ANSI C++ overload resolution rules have
1506
        changed a few years ago, and now that compilers begin to be more
1507
        compliant, it is difficult (~impossible) to write operator*/+-()
1508
        functions with which code will compile well under both the old and
1509
        the new resolution rules (which are likely to coexist for a few
1510
        years to come). Ambiguity comes because cPar supports many
1511
        conversions (double, int, long, unsigned int, unsigned long,
1512
        char * [char* + int is also legal!], void *, etc.)  I feel that it is
1513
        better(results in cleaner code) to use explicit type casts in
1514
        expressions with cPar.
1515

    
1516
        This issue came up while porting to MSVC 6.0, see MSVC error C2666.
1517

    
1518
2000-01-15 Andras Varga
1519

    
1520
        * the 'explicit' keyword was added to a number of constructors,
1521
        most notably cPar(char *name). The reason was that constructs like
1522

    
1523
        cPar p = "foo";
1524

    
1525
        did NOT compile as one would expect (i.e. to a cPar() construction
1526
        followed by an assignment), but to a cPar p("foo") constructor
1527
        call, which is quite different! ("foo" becomes the object's NAME
1528
        instead of its value.)  The explicit keyword is supported to
1529
        prevent this from happening.
1530

    
1531
        * minor change: cSimulation::setErrorCode() added (was needed in
1532
        Tkenv's startup code)
1533

    
1534
2000-01-04 Andras Varga
1535

    
1536
        * cPar::setStringValue() now accepts NULL (and treats it as "")
1537

    
1538
1999-12-19 Andras Varga
1539

    
1540
        * cPar interface cleaned up:
1541

    
1542
        o overloaded setValue(..) functions were renamed to
1543
        setStringValue(..), setLongValue(..), setBoolValue(..), etc., and
1544
        the type character was deleted from their arg list. This was done
1545
        to be consistent with the getter functions which already had the
1546
        names stringValue(), longValue() etc., and to make client code
1547
        more readable by eliminating "magic constants" (the type
1548
        characters). This shouldn't affect much existing code, most users
1549
        prefer assignment operator to these functions.
1550

    
1551
        o redirection handling functions were changed to:
1552
        setRedirection(cPar*), isRedirected(), cPar* redirection(),
1553
        cancelRedirection(). This results in more readable client
1554
        code. These functions are hardly used in any user code.
1555

    
1556
        o the number of constructors was reduced to 3 by deleting the ones
1557
        which set an initial long,string,etc. value. Prior to this cPar
1558
        had 16 constructors which made subclassing very
1559
        cumbersome. Functionality is not lost because the user can write
1560
        code like
1561

    
1562
          cPar par("par") = 5L;
1563
        Existing client code like
1564
          msg->addPar( *new cPar("dest", 'L', dest );
1565
        can be rewritten like
1566
          msg->addPar( *new cPar("dest") = dest );
1567
        or better like
1568
           msg->addPar("dest") = dest;
1569

    
1570
        Note that the two new and better forms have been available for a
1571
        long time, so the change should not affect much existing code.
1572

    
1573
        o  conversons to/from bool were not fully supported
1574

    
1575
        * convenience function hasPar(char*) added to cMessage
1576

    
1577
        * convenience functions hasPar(char*) and hasGate(char*,int) added
1578
        to cModule
1579

    
1580
        * cQueue and cLinkedList interfaces changed:
1581

    
1582
        insertHead(a) --> insert(a) (the name was misleading: cQueue can
1583
        act as priority queue and inserted elements aren't necessarily put
1584
        at the head)
1585

    
1586
        peekTail()    --> tail()
1587
        peekHead()    --> head()     (shorter names are preferred)
1588

    
1589
        get(a)        --> remove(a)  (the "get" word was misleading as it didn't
1590

    
1591
        imply that the element is actually removed from the queue)
1592

    
1593
        getTail()     --> pop()      ("get was misleading, see above;
1594

    
1595
        "pop" is used in other libs such as STL or Java for this operation)
1596

    
1597
        getHead() removed            (it can be expressed as q.remove(q.head()))
1598

    
1599
        Compatibility #defines added to defs.h for insertHead(a),
1600
        peekTail(), peekHead(), getTail().
1601

    
1602
1999-12-18 Andras Varga
1603

    
1604
        * renamed isA() to className() in cObject and derived classes.  A
1605
        compatibility #define was temporarily added to defs.h to ease
1606
        migration.
1607

    
1608
        * in cMessage, isbad() renamed to hasBitError(), isgood() removed,
1609
        and setError() renamed to setBitError()
1610

    
1611
        * macro names in module interface declarations (Interface...End)
1612
        changed to reduce chance of name clashes. This is internal to
1613
        OMNeT++ and does not affect user code.
1614

    
1615
1999-12-05 Andras Varga
1616

    
1617
        * Makefile.vc added
1618

    
1619
1999-12-04 Andras Varga
1620

    
1621
        * compiled with MSVC. Minor changes: changed int to bool, struct
1622
        to class in some places. sim_std.dsp added. NOTE: one has to
1623
        rename all .cc files to .cpp for compiling (ren *.cc *.cpp)!
1624

    
1625
1999-11-09 Andras Varga
1626

    
1627
        * iso c++ compatibility hack: in expressions like return s?s:""
1628
        the "" needs a cast to char* (to cast away constness). Added a
1629
        CONST_CAST() macro until the source is made fully const-correct,
1630
        hopefully in the near future.
1631

    
1632
1999-10-06 Andras Varga
1633

    
1634
        * ------ omnetpp-2.0b2 released ------
1635

    
1636
        * isSelfMessage() member function added to cMessage. It tells if
1637
        the message was sent (using a send..() function) or posted by a
1638
        scheduleAt() call.
1639

    
1640
        * a new void* pointer was added to cMessage. The pointer is
1641
        set/returned by the setContextPointer(void *p) and
1642
        contextPointer() functions, and it can be used for any purpose by
1643
        the simulation programmer. It is not used by the simulation
1644
        kernel, and it is treated as a mere pointer (no memory mgmt is
1645
        done on it). Intended purpose: a module which schedules several
1646
        self-messages (timers) will need to identify a self-message when
1647
        it arrives back to the module, ie. the module will have to
1648
        determine which timer went off and what to do then. The context
1649
        pointer can be made to point at a data structure kept by the
1650
        module which can carry enough "context" information about the
1651
        event.
1652

    
1653
        * Remaining -Wall warnings: "%lf", "%lg", "%le" in printf format strings.
1654

    
1655
1999-09-23 Andras Varga
1656

    
1657
        * callInitialize() and scheduleStart() swapped in cSimulation's
1658
        startRun() to support send()/scheduleAt() in initialize() to
1659
        modules with activity().
1660

    
1661
        * same change made to createInitStart(), and it was renamed to
1662
        createScheduleInit() to reflect the new order of what it does.
1663

    
1664
1999-09-20 Andras Varga
1665

    
1666
        * bug fixed in cWeightedStdDev::collect2(): cStdDev::collect() was
1667
        called with val instead of weight*val.
1668

    
1669
        * bug fixed with misplaced ev.messageDelivered() calls in the
1670
        receiveNewOn() function
1671

    
1672
        * cOutVector::record() corrected: it should update the inspector
1673
        even if it doesn't write to file
1674

    
1675
1999-09-07 Andras Varga
1676

    
1677
        * ------ omnetpp-2.0b released ------
1678

    
1679
        * initialize() and finish() moved to cModule, so you can define
1680
        them also for compound modules
1681

    
1682
        * callInitialize() and callFinish() are also in cModule; they are
1683
        defined in compound modules to recursively call themselves for
1684
        submodules.  callInitialize() for the compound module is called
1685
        _before_, callFinish() is called _after_ the call on submodules.
1686

    
1687
1999-09-06 Andras Varga
1688

    
1689
        * a couple of unsigned<-->signed changes (mostly in the statistics
1690
        classes) to reduce the number of "gcc -Wall" warnings
1691

    
1692
1999-09-05 Andras Varga
1693

    
1694
        * cSimpleModule's initialize(), activity(), handleMessage(),
1695
        finish() made protected members so that they cannot be called
1696
        directly by user code.
1697

    
1698
        * callInitialize() was added to cSimpleModule to enable calling
1699
        initialize() from user code; callInitialize() was also added for
1700
        cModule and cCompoundModule so that it can be used
1701
        polimorphically.
1702

    
1703
        * added cModuleType::createInitStart(char *namestr, cModule
1704
        *parentmod) convenience function to get a module up and running in
1705
        one step.  Does
1706
        create()+buildInside()+callInitialize()+scheduleStart(now).
1707
        Should work for both simple and compound modules.
1708

    
1709
        Not applicable if the module:
1710

    
1711
        - has parameters to be set
1712
        - gate vector sizes to be set
1713
        - gates to be connected before initialize()
1714

    
1715
        Now a simple module can be created on the fly by simply saying:
1716
          mod = modtype->createAndInit("name",this);
1717
          mod->scheduleStart( simTime() );
1718

    
1719
1999-09-01 Andras Varga
1720

    
1721
        * behavior of scheduleStart() changed: now it can be called (and
1722
        does nothing) for modules using handleMessage(). The benefit is
1723
        that this way code that creates simple modules dynamically doesn't
1724
        have to know whether the module is using activity() or
1725
        handleMessage(); the same code (which contains a call to
1726
        scheduleStart()) can be used for both.
1727

    
1728
        * activate() [the boot procedure for simple module activity()] now
1729
        checks if the message that starts the module is really a starter
1730
        message (and not some other msg). This way, bugs caused by leaving
1731
        out scheduleStart() for dynamically created modules can be
1732
        detected.
1733

    
1734
        * wait() now makes sure it is called for a module using activity()
1735
        and not handleMessage().
1736

    
1737
        * cModuleType now caches the cModuleInterface pointer. (Before it
1738
        looked up the interface each time, based on the interface name.)
1739

    
1740
1999-08-30 Andras Varga
1741

    
1742
        * bool isScheduled() member added to cMessage: can be used to
1743
        examine whether the message is in the Future Event Set
1744

    
1745
        * cancelEvent() behaviour changed: now it causes an error if the
1746
        message is not in the Future Event Set. One should write code like
1747
        this:
1748

    
1749
        if (msg->isScheduled())
1750
             delete cancelEvent(msg);
1751
        else
1752
             // ???
1753

    
1754
        Or rather:
1755
         if (msg->isScheduled())
1756
             delete cancelEvent(msg);
1757
         else if (putAsideQueue.contains(msg))
1758
             delete putAsideQueue.get(msg);
1759
         else
1760
             // ???
1761

    
1762
        * cQueue::isEnqueued(cObject *) renamed to cQueue::contains(cObject *)
1763

    
1764
        * cLinkedList::isInList(void *) renamed to cLinkedList::contains(void *)
1765

    
1766
1999-08-02 Andras Varga
1767

    
1768
        * fixed the bug with randseed() [it was an error to call it
1769
        without an argument] and split randseed(long seed=0) into 2
1770
        functions: randseed() and randseed(long seed).
1771

    
1772
        * fixed the bug in intrand(r) and genk_intrand(r) that caused
1773
        division by zero if called with r==0; now r<=0 values cause
1774
        runtime error
1775

    
1776
        * INTRAND_MAX corrected to 2**31-2
1777

    
1778
1999-07-10 Andras Varga
1779

    
1780
        * fixed bug in cQueue and cLinkedList (didn't always increment
1781
        item count on insertion)
1782

    
1783
        * fixed bug in cPar::info(): didn't handle boolean (B) type
1784

    
1785

    
1786
1999-05-21  Andras Varga
1787

    
1788
        * all sources checked in under CVS
1789

    
1790
        * makefile.in modified for use with GNU Autoconf; also renamed to Makefile.in
1791

    
1792
        * version.log renamed to ChangeLog
1793

    
1794
        * removed support for DOS with BC3.1
1795

    
1796

    
1797
1999-02-07  Andras Varga
1798

    
1799
        * stable version
1800

    
1801

    
1802
1999-01-26  Andras Varga
1803

    
1804
        * some cleanup
1805

    
1806
1999-01-26  Andras Varga
1807

    
1808
        * calls to simulation.error() replaced by opp_error() to avoid
1809
        having to #include csimul.cc (and half the sim. kernel with it) in
1810
        each file; similar for opp_warning() and
1811
        opp_terminate(). opp_terminate() is similar to opp_error(), only
1812
        it does not include the word "error" in the message.
1813

    
1814
        * requires updated Envir and user interface libraries
1815

    
1816

    
1817
1999-01-26  Andras Varga
1818

    
1819
        * recordScalar() for recording strings added
1820

    
1821

    
1822
1999-01-25  Andras Varga
1823

    
1824
        * inspector factories added
1825

    
1826

    
1827
1999-01-03  Andras Varga
1828

    
1829
        * stable version
1830

    
1831
1999-01-01  Andras Varga (1-3)
1832

    
1833
        * refinements on the coroutine library; stackSize() added to cCoroutine
1834

    
1835
        * refinements on cPacket
1836

    
1837
        * restart() of c[Simple]Module removed (was not used)
1838

    
1839
        * optimizations around timeoutmsg and receive()
1840

    
1841
        * module state codes reduced to sREADY and sENDED
1842

    
1843
        * protocol.h added
1844

    
1845
        * misc bugfixes
1846

    
1847

    
1848
1998-12-30  Andras Varga
1849

    
1850
        * makefile renamed to makefile.in
1851

    
1852

    
1853
1998-12-27  Andras Varga
1854

    
1855
        * fixes on 170a
1856

    
1857
        * missing bc3make.bat added back (although omnetpp is probably
1858
        _way_ too big for BC 3.1 and DOS real mode to handle...)
1859

    
1860

    
1861
1998-12-27  Andras Varga
1862

    
1863
        Fixes:
1864

    
1865
        * ltoa() eliminated
1866

    
1867
        * vsscanf() replaced by opp_vsscanf()
1868

    
1869
        * defs.h and funcs.cc split to defs.h, util.h+cc, errmsg.h+cc
1870

    
1871
        * serious bug with stddev() corrected
1872

    
1873
        * writes to output vector file and parameter change file are now checked
1874

    
1875
        * string class renamed to opp_string to prevent name clashes with
1876
        other class libs (e.g. STL)
1877

    
1878
        * cSimulation::doOneEvent() function introduced
1879

    
1880
        * runningmod_deleter's stack increased from 8K to 16K
1881

    
1882
        * now cancelEvent won't hang if the message was not actually
1883
        scheduled Improvements:
1884

    
1885
        * coroutine library now detects stack overflows and able to tell
1886
        actually used stack size (stackUsage())
1887

    
1888
        * new alternative message handling mechanism: handleMessage()
1889

    
1890
        * new file fsm.h: finite state machine for handleMessage()
1891

    
1892
        * reserved negative message kind values
1893

    
1894
        * cPacket class added
1895

    
1896
        * MK_INFO and MK_PACKET message kind values defined for cPackets
1897

    
1898
        * wait() and receive() with timeout made faster (now reuses
1899
        timeout message)
1900

    
1901

    
1902
1998-08-22  Andras Varga
1903

    
1904
        * cOutvector::collect() improved
1905

    
1906

    
1907
1998-08-21  Andras Varga
1908

    
1909
        * cStat::collect(double,double) renamed to collect2() (conflicted
1910
        with collect(double))
1911

    
1912

    
1913
1998-08-19  Andras Varga
1914

    
1915
        * some error messages improved
1916

    
1917

    
1918
1998-08-17  Andras Varga
1919

    
1920
        * too many 'simulation cancelled' error msg fixed
1921

    
1922

    
1923
1998-08-14  Andras Varga
1924

    
1925
        * linker bug with cWatch fixed
1926

    
1927

    
1928
1998-08-12  Andras Varga
1929

    
1930
        * project file for Borland C++ 5.0 added (sim_std.ide)
1931

    
1932
        * some code beautifying
1933

    
1934
        * cenvir.h moved here from the envir package
1935

    
1936

    
1937
1998-07-24  Andras Varga
1938

    
1939
        * ASSERT() bug fixed
1940

    
1941
        * display strings can be taken from ini file -- compatible with
1942
        envir120 up
1943

    
1944

    
1945
1998-07-21  Andras Varga
1946

    
1947
        * cOutVector support for 'probes'
1948

    
1949
        * bug fixed in pvm/pvmmod.cc
1950

    
1951

    
1952
1998-07-15  Andras Varga
1953

    
1954
        * eFINISH error code added; other small fixes
1955

    
1956
        * WATCH() made dynamic (new cWatch(...)) instead of auto to
1957
        increase applicability. Old-style watch is retained as LWATCH().
1958

    
1959
1998-07-10  Andras Varga
1960

    
1961
        * cGate::info() corrected
1962

    
1963
        * cPar::info() corrected (now doesn't silently truncate string
1964
        value)
1965

    
1966
        * cMessage::findPar() added
1967

    
1968
        * check for gate connectedness added to cModule::setGateSize()
1969

    
1970
        * modules and gates: vectors of size 1 and scalars made distinct
1971

    
1972

    
1973
1998-07-02  Andras Varga
1974

    
1975
        * improved error messages of send() variants; other small fixes
1976

    
1977

    
1978
1998-06-26  Andras Varga
1979

    
1980
        * small fixes, adjustments
1981

    
1982

    
1983
1998-06-23  Andras Varga
1984

    
1985
        * added bool cSimulation::normalTermination() which examines error
1986
        code
1987

    
1988

    
1989
1998-06-23  Andras Varga
1990

    
1991
        * new: cSimpleModule::error(): generates `user error'
1992

    
1993
        * cSimulation::callFinish() added
1994

    
1995
        * cSimulation's cModule& get() deleted, cModule *module(..) can be
1996
        used instead
1997

    
1998
        * cSimulation's findModuleByPath()-->moduleByPath()
1999

    
2000
        * small fixes
2001

    
2002

    
2003
1998-06-19  Andras Varga
2004

    
2005
        * cMessage::creationTime() added
2006

    
2007
        * mystr...() functions renamed to opp_str...()
2008
        (for compatibility, mystr... names are #defined to opp_str...)
2009

    
2010
        * ASSERT() added (similar to the assert() macro, also disappears
2011
        with NDEBUG)
2012

    
2013
        * scalar file behavior corrected (only writes file if there's
2014
        something to write)
2015

    
2016
        * cPar: new type void* added ('P'), old 'P' type (cObject *) was
2017
        renamed to 'O'. Funcs: cObject *objectValue(), void
2018
        *pointerValue() Memory management of void*: configPointer(...)
2019
        func, similar to cLinkedList's method.
2020

    
2021

    
2022
1998-06-19  Andras Varga
2023

    
2024
        * Now deleteModule() can also delete the currently executing
2025
        module.  The only remaining restriction is that a compound module
2026
        cannot be deleted from one of its submodules.
2027

    
2028

    
2029
1998-06-17  Andras Varga
2030

    
2031
        * bugfixes on 161k
2032

    
2033
        * cMessage::addPar(..) functions' return value changed to cPar&
2034

    
2035
        * setDisplayStringNotify() functions added to cGate and cModule
2036

    
2037

    
2038
1998-06-11  Andras Varga
2039

    
2040
        * class cTopology added
2041

    
2042
        * now gate vectors are guaranteed to be contiguous in the gatev
2043
        array; gate lookup made a lot faster. Note that there can be holes
2044
        in the gate vector.
2045

    
2046
        * cMessage::addLen(long l) added
2047

    
2048

    
2049
1998-06-09  Andras Varga
2050

    
2051
        * class cLinkedList added
2052

    
2053

    
2054
1998-06-09  Andras Varga
2055

    
2056
        * cModule::recordScalar(name,value) and
2057
        recordStats(name,statistic) added
2058

    
2059
        * cSimpleModule::finish() bug fixed
2060

    
2061
        * cPar::equalsTo(cPar *par) added
2062

    
2063

    
2064
1998-06-09  Andras Varga
2065

    
2066
        * return type of cModule::gate(...) changed from cGate& to cGate*
2067

    
2068
        * return type of cModule::moduleType(...) changed from
2069
        cModuleType& to cModuleType*
2070

    
2071
        * cSimulation::find(cModule&) changed to
2072
        cSimulation::find(cModule*)
2073

    
2074
        * cMessage::addPar(char *parname) and cMessage::addPar(cPar *par)
2075
        added
2076

    
2077
        * class cWeightedStdDev added
2078

    
2079

    
2080
1998-06-04  Andras Varga
2081

    
2082
        * bugfixes on histogram classes
2083

    
2084
        * cKSplit::rangeExtension() member function added
2085

    
2086
        * cMessage::encapsulate(msg), decapsulate(), encapsulatedMsg()
2087
        member functions added
2088

    
2089

    
2090
1998-06-01  Andras Varga
2091

    
2092
        * cDensityEstBase added; it greatly simplifies all density
2093
        estimation classes!
2094

    
2095
        * all density estimation classes rewritten with cDensityEstBase
2096

    
2097
        * cVarHistogram added
2098

    
2099
        * underflow/overflow cells removed (but underflow/overflow counts
2100
        still maintained)
2101

    
2102
        * cKSplit cleaned up a little
2103

    
2104
        * saveToFile()/loadFromFile() file formats cleaned up and loading
2105
        made safer. Occasional runtime errors may occur due to fprintf'ing
2106
        uninitialised double vars.
2107

    
2108

    
2109
1998-05-11  Andras Varga
2110

    
2111
        * small improvement on the ksplit files
2112

    
2113

    
2114
1998-04-26  Andras Varga
2115

    
2116
        * makefile can now create shared objects (libsim_std.so,
2117
        libsim_pvm.so)
2118

    
2119

    
2120
1998-04-24  Andras Varga
2121

    
2122
        * 2 bugs fixed
2123

    
2124

    
2125
1998-04-14  Andras Varga
2126

    
2127
        * cModule: setDisplayString(type,str) and displayString(type)
2128
        added.  type: dispSUBMOD or dispENCLOSINGMOD cGate:
2129
        setDisplayString(str) and displayString() correspond to the
2130
        display string of the connection starting from that gate.  The
2131
        values of these strings will come from GNED through NED's
2132
        "display:" phrases, and they will hold information about how the
2133
        module should be displayed in Tkenv or other GUI
2134
        animation/interactive simulation tool.  The exact format of the
2135
        strings are documented in GNED's version.log.
2136

    
2137
        * cModule: gatev, paramv made public (because of the
2138
        inspectors...)
2139

    
2140

    
2141
1998-02-15  Andras Varga
2142

    
2143
        * cSimpleModule::finish() function added -- user can redefine it
2144
        and it will be called at the end of the simulation run
2145

    
2146
        * makefile made compatible with new configure script
2147

    
2148
        * 'lib' prepended to library names under Unix - now they can le
2149
        linked with
2150

    
2151
          *lsim_std or -lsim_pvm option
2152

    
2153
        * pvm3.h deleted from package
2154

    
2155

    
2156
1998-02-08  Andras Varga
2157

    
2158
        * some Define_Functions()'s added to support jar102-compiled
2159
        expressions
2160

    
2161
        * char type, &|! sXElem operators removed from cPar, # sXElem op.
2162
        renamed to !.
2163

    
2164

    
2165
1997-12-29  Andras Varga
2166

    
2167
        * 'cHead members' moved from cSimpleModule to cModule
2168

    
2169
        * cModuleType::create() modified so that it automatically puts
2170
        member objects of module classes to the members list, so there's
2171
        no need to do setOwner(&members) calls from the constructor.
2172
        (However, they do no harm if they are there.)
2173

    
2174
        * module IDs made unique during whole simulation: old IDs are no
2175
        longer reused.
2176

    
2177

    
2178
1997-12-29  Andras Varga
2179

    
2180
        * strToSimtime0() function added
2181

    
2182
        * cPar::setFromText() rewritten: better & more consistent error
2183
        handling, more informative error messages supports writing time
2184
        units in ini files: Net.Gen.stop_at = 1h 30m Net.Gen.ia_time =
2185
        uniform(10s,15s)
2186

    
2187
        * comments added to ctypes.cc
2188

    
2189

    
2190
1997-12-13  Andras Varga
2191

    
2192
        * renamings for clarity:
2193

    
2194
           cModule:
2195
             subscript() --> id()
2196
             setSubscript() --> setId()
2197
           cGate:
2198
             ownerGate --> id()
2199
             setlink --> setLink()
2200
           cMessage:
2201
             sentFromModule() --> senderModuleId()
2202
             sentFromGate() --> senderGateId()
2203
             arrivedInModule() --> arrivalModuleId()
2204
             arrivedOnGate() --> arrivalGateId()
2205
             new functions:
2206
             cGate *senderGate(), cGate *arrivalGate()
2207

    
2208

    
2209
1997-12-13  Andras Varga
2210

    
2211
        * cModuleType split into cModuleInterface and cModuleType;
2212

    
2213
        * Module..End declaration no longer needed for simple module.
2214

    
2215
        * joined Define_Simple_Module and Define_Compound_Module macros to
2216
        Define_Module macro.
2217

    
2218
        * Compatible with jar98 and up
2219

    
2220

    
2221
1997-11-23  Andras Varga
2222

    
2223
        * bugs in cKSplit's copy constructor and ksplitInsert() fixed
2224

    
2225
        * LG's "Bad msg kind" bug fixed in selectNextModule()
2226

    
2227
        * selectNextModule() rewritten
2228

    
2229
        * table of error messages modified
2230

    
2231
        * "not owner of message" error msg improved
2232

    
2233
        * error message for inconsistent module declarations made more
2234
        informative
2235

    
2236
        * cosmetics on pvmmod.cc
2237

    
2238
1997-10-12  Andras Varga
2239

    
2240
        * cKSplit::isa() corrected to isA(); fixed point shift increased to 10000
2241

    
2242
        * stat. classes: cell()'s return value changed from 'unsigned int'
2243
        to 'double'
2244

    
2245
        * cKSplit::transform() added
2246

    
2247
        * corrected cells() in all classes to return 0 if not transformed
2248
        yet
2249

    
2250
1994-10-06  Andras Varga
2251

    
2252
        * small fixes
2253

    
2254
        * To Do: cKSplit: netPack,netUnpack,saveToFile,loadFromFile; clean
2255
        up the rest
2256

    
2257

    
2258
1997-10-06  Andras Varga
2259

    
2260
        * cKSplit added
2261

    
2262
        * contains a new version of cPSquare
2263

    
2264
        * cleaned up & renamed several member functions and classes
2265

    
2266
        * arg.list to snapshot() changed
2267

    
2268
        * arg.list of constructor of histogram classes (cDoubleHistogram,
2269
        cLongHistogram, cHistogramBase) changed. OLD USER CODE WILL STILL
2270
        COMPILE BUT WONT'T WORK!
2271

    
2272

    
2273
1997-10-02  Andras Varga
2274

    
2275
        * cleaned up & renamed several member functions and classes
2276
        Changed class names:
2277

    
2278
         cObj             --> cObject
2279
         cMod             --> cModule
2280
         cSimpleMod       --> cSimpleModule
2281
         cCompoundMod     --> cCompoundModule
2282
         cMsg             --> cMessage
2283
         cMsgHeap         --> cMessageHeap
2284
         cPiSquare        --> cPSquare
2285
         cModPar          --> cModulePar
2286
         cSimpleStatistic --> cStdDev
2287
         cIter            --> cIterator
2288
         cSubmodIter      --> cSubModIterator
2289
         cQueueIter       --> cQueueIterator
2290
         cMsgHeapIter     --> cMessageHeapIterator
2291
         cTDResult        --> cTransientDetection
2292
         cRAResult        --> cAccuracyDetection
2293
         cTDAlg1          --> cTDExpandingWindows
2294
         cRAAlg1          --> cADByStddev
2295

    
2296

    
2297
1997-08-17  Andras Varga
2298

    
2299
        * cMsg::info() changed; now it prints "(starter msg)" for msgs
2300
        that start simple modules at the beg. of simulation
2301

    
2302

    
2303
1997-08-17  Andras Varga
2304

    
2305
        * carray.cc/h split to: carray.cc/h, cqueue.cc/h, chead.cc/h,
2306
        cwatch.cc/h
2307

    
2308
        * ev.extrastack() support
2309

    
2310
        * compatibility: envir101 or later
2311

    
2312

    
2313
1997-08-17  Andras Varga
2314

    
2315
        * cQueue interface changed:
2316
          bool isenqueued(cObj *obj)
2317
          void inserthead(cObj *obj)
2318
          void insertbefore(cObj *p, cObj *obj), void insertafter(cObj *p, cObj *obj);
2319
          cObj *peektail(), cObj *peekhead()
2320
          cObj *get(cObj *obj), cObj *gettail(), gethead()
2321

    
2322

    
2323
1997-08-17  Andras Varga
2324

    
2325
        * insertordr added to cMsg and cMsgHeap. This way messages with
2326
        the same times and priorities can be retreived from the message
2327
        queue in their insertion order.
2328

    
2329
        * netif_check_freq added to cSimulation and nextmodule()
2330

    
2331
        * cObj::lastchildp removed
2332

    
2333

    
2334
1997-08-15  Andras Varga
2335

    
2336
        * cMsgHeap class added and installed as FES
2337
        (new files cmsgheap.h/cc, changes in cmod.cc, csimul.h/cc)
2338

    
2339
        * a bug introduced in #143 into cArray::foreach() fixed
2340

    
2341

    
2342
1997-08-13  Andras Varga
2343

    
2344
        * two bugs fixed in cHistogramBase::operator=()
2345

    
2346
        * cancelsyncpoint() function added
2347

    
2348

    
2349
1997-08-09  Andras Varga
2350

    
2351
        * bug removed from process_netmsg_blocking()
2352

    
2353

    
2354
1997-08-08  Andras Varga
2355

    
2356
        * remaining active waits removed
2357

    
2358
        * added process_netmsgs() calls to cSimulation::setupnetwork()
2359

    
2360
        * small improvements on PVM stuff
2361

    
2362
        * renamed functions:
2363
            signal_startofrun() --> send_runnumber()
2364
            wait_startofrun()   --> receive_runnumber()
2365

    
2366
        * compatible with: envir100
2367

    
2368

    
2369
1997-08-07  Andras Varga
2370

    
2371
        * DEBUG_PVM #define added to pvmmod.cc
2372

    
2373
        * active wait removed from block_on_syncpoint
2374

    
2375
        * several small improvements on PVM stuff
2376

    
2377

    
2378
1997-08-07  Andras Varga
2379

    
2380
        * cleaned-up version of #144; must be tested still
2381

    
2382

    
2383
1997-08-06  Andras Varga
2384

    
2385
        * In defs.h, MAXTIME changed from 1eXXX to HUGE_VAL
2386
          Changed cNetSimpleMod's base class from cSimpleMod to cMod
2387
          Renamed: cNetSimpleMod --> cNetMod,  cPvmSimpleMod --> cPvmMod
2388
          Synchronization mechanism added to PVM stuff.
2389

    
2390
        * new user function: cSimpleMod::syncpoint(t,gate) -- blocks
2391
        destination segment until a cMsg sent at t (or later) through
2392
        specified gate arrives.
2393

    
2394
        * several new functions and changes to cNetMod and cPvmMod to
2395
        implement the above
2396

    
2397
        * cSimulation::nextmodule() rewritten NOT finished, NOT tested!!!
2398

    
2399

    
2400
1997-08-05  Andras Varga
2401

    
2402
        * new function upack_object added to pvmpack.cc;
2403

    
2404
        * net_pack()/net_upack() functions improved
2405

    
2406

    
2407
1997-08-04  Andras Varga
2408

    
2409
        * PVM stuff: all segments of a distributed simulation stops correctly now.
2410
        Affected files:
2411

    
2412
          pvmmod.cc: cPVMSimpleMod's stopallsegments(), request_stopsimulation(),
2413
                     process_pvm_msg()
2414
          csimul.cc: cSimulation's error(), printmsg(), warnings() functions
2415
                     eSTOPSIMRCVD error message added
2416

    
2417

    
2418
1997-07-20  Andras Varga
2419

    
2420
        * Changes in PVM stuff:
2421

    
2422
          - debugged by Gabor Lencse: fixes in csimul.cc and pvm/pvmmod.cc
2423

    
2424
          - SINGLE_HOST #define added to pvmmod.cc: if turned on, OMNeT++
2425
          runs all segments of a distributed simulation on the local host,
2426
          to facilitate debugging. (Needs PVM running though!)
2427

    
2428
          - stopping a distributed simulation doesn't work yet
2429

    
2430

    
2431
1997-07-10  Andras Varga
2432

    
2433
        * makefile modified to work with Cygnus gcc on Win95/NT
2434

    
2435

    
2436
1997-07-06  Andras Varga
2437

    
2438
        * ctype.h/cc changed: consistency check of different module
2439
        interfaces
2440

    
2441
        * handling of CONST module parameters placed in cModType
2442

    
2443

    
2444
1997-07-01  Andras Varga
2445

    
2446
        * simtimeToStr() function modified
2447

    
2448

    
2449
1997-06-30  Andras Varga
2450

    
2451
        * cPar::gettext() bug fixed (didn't work with 'I' (indirection)
2452
        type)
2453

    
2454
        * loop in cQueue::foreach() changed direction (now: tail --> head)
2455

    
2456
        * simtimeToStr() function rewritten
2457

    
2458

    
2459
1997-06-26  Andras Varga
2460

    
2461
        * cMsg::info() changed
2462

    
2463

    
2464
1997-06-23  Andras Varga
2465

    
2466
        * cleaned up things in chist.cc
2467

    
2468

    
2469
1997-06-20  Andras Varga
2470

    
2471
        * a bug in the coroutine package fixed
2472

    
2473
        * cSimpleStatistic::getstddev() changed
2474

    
2475
        * cMsg::info changed
2476

    
2477

    
2478
1997-05-22  Andras Varga
2479

    
2480
        * carray.cc/h: cBag::addat(int, void*)
2481
                 cBag::cBag(..., int esiz=4, ...)
2482

    
2483
        * chist.cc/h: virtual cHistogramBase::deletefirstvals() and other things ...
2484
                virtual cHistogramBase::recreatefirstvals()
2485
                virtual cHistogramBase::putinFirstVal(int, double)
2486

    
2487

    
2488
1997-05-13  Andras Varga
2489

    
2490
        * unsigned long cHistogramBase::getcell{under|over}() added
2491

    
2492

    
2493
1997-05-09  Andras Varga
2494

    
2495
        * double cHistogramBase::pdf(double x) probability density
2496
        function
2497

    
2498

    
2499
1997-04-22  Andras Varga
2500

    
2501
        * event_num, geteventnumber(), incr_eventnumber() added to
2502
        cSimulation
2503

    
2504
        * realtimewait() removed (commented out)
2505

    
2506
        * nextmodule() changed so that it does not have any side effects
2507
        (except for generating error messages)
2508

    
2509
        * name of cMod::stepmode changed to cMod::pause_in_sendmsg which
2510
        is closer to what it does
2511

    
2512
        * compatibility: at least envir90, tkenv30, tvenv79
2513

    
2514

    
2515
1997-04-18  Andras Varga
2516

    
2517
        * histograms: underflowcell_rmin and overflowcell_rmax added to
2518
        pvmpack.cc too
2519

    
2520

    
2521
1997-04-17  Andras Varga
2522

    
2523
        * friend class TOutVectorWindow added to cOutVector
2524

    
2525
        * histograms: underflowcell_rmin and overflowcell_rmax introduced
2526
        (sizes of underflow/overflow cells are now multiples of cellsize)
2527

    
2528

    
2529
1997-04-12  Andras Varga
2530

    
2531
        * more TInspector friend classes added to cMod
2532

    
2533
        * meaningful cGate::info() implemented
2534

    
2535
        * DUMMY_INSPECTOR macro corrected
2536

    
2537

    
2538
1997-04-06  Andras Varga
2539

    
2540
        * iterators (cIter, cQIter, cSubmodIter): added XXX *op() to be
2541
        used instead of XXX& op[0]. Old one kept for compatibility
2542

    
2543
        * cOutVect: inspector support added (as a callback function)
2544

    
2545
        * ev.messagedelivered( msg ) added to getnewmsg()
2546

    
2547
        * STARTUPERROR_MODE return value added to is_started_as_master()
2548

    
2549
        * compatible with: envir88, tkenv21, tvenv77
2550

    
2551

    
2552
1997-04-01  Andras Varga
2553

    
2554
        * added args to cObj::inspector(): inspector(int type, void *data)
2555
        change affects Tvenv & Tkenv
2556

    
2557
        * fixed a bug in cPvmSimpleMod's start_segments()
2558

    
2559

    
2560
1997-03-25  Andras Varga
2561

    
2562
        * bugfixes in cstat, chist and cpsquare
2563

    
2564
        * exit() call after floating point exception was removed
2565

    
2566

    
2567
1997-03-25  Andras Varga
2568

    
2569
        * cPiSquare: basepoints(),counter() fixed; pdfx(), cdfx()
2570
        corrected
2571

    
2572
        * cpvmmod.cc changed
2573

    
2574
        * (histogram interval upper limit...)
2575

    
2576
        * cSimulation::deletenetwork() should do nothing if no network
2577
        exists
2578

    
2579

    
2580
1997-03-24  Andras Varga
2581

    
2582
        Bugfixes
2583

    
2584
        * (histogram interval  upper limit...)
2585

    
2586
        * cSimulation::deletenetwork() should do nothing if no network exists
2587

    
2588

    
2589
1997-03-24  Andras Varga
2590

    
2591
        * range_ext_direction added to cHistogramBase
2592

    
2593
          -1: extend downwards
2594
          +1: extend upwards
2595
          0: symmetric extension (as it was before)
2596
          (also updated in pvm/pvmpack.cc)
2597

    
2598
        * cHistogramBase::fwrite()/fread bug fixes
2599

    
2600

    
2601
1997-03-24  Andras Varga
2602

    
2603
        * eliminated some warnings (implicit double->int conversions etc)
2604

    
2605
        * pvmmod.cc improved: added further informative messages to slave
2606
        mode
2607

    
2608
        * chist.cc added to makefile
2609

    
2610

    
2611
1997-03-21  Andras Varga
2612

    
2613
        * is_started_as_master() function added
2614

    
2615
        * pvmmod.cc improved
2616

    
2617
        * compatible with envir86
2618

    
2619

    
2620
1997-03-21  Andras Varga
2621

    
2622
        * cGate::writecontents() added
2623

    
2624
        * cGate::isconnected() corrected (now checks if module is local or
2625
        not)
2626

    
2627
        * histogram basepoints() bug fixed
2628

    
2629
        * bool isslaveprocess() added to cnetmod.h/.cc, pvmmod.cc
2630

    
2631

    
2632
1997-03-18  Andras Varga
2633

    
2634
        * cLongHistogram::transform() improved
2635

    
2636

    
2637
1997-03-18  Andras Varga
2638

    
2639
        * random() written in histograms
2640

    
2641
        * class string bug fixed
2642

    
2643

    
2644
1997-03-17  Andras Varga
2645

    
2646
        * bugfixes in histogram
2647

    
2648

    
2649
1997-03-17  Andras Varga
2650

    
2651
        * cLongHistogram::transform() rewritten
2652

    
2653

    
2654
1997-03-17  Andras Varga
2655

    
2656
        * separate cstat.h/cc and chist.h/cc files
2657

    
2658

    
2659
1997-03-16  Andras Varga
2660

    
2661
        * bugfixes
2662

    
2663

    
2664
1997-03-15  Andras Varga
2665

    
2666
        * cPvmSimpleMod and cSimulation.setupnetwork() modified
2667

    
2668

    
2669
1997-03-15  Andras Varga
2670

    
2671
        Module parameter logging bug fixed.
2672
        Histogram classes:
2673

    
2674
        * pvmpack.cc updated
2675

    
2676
        * changed names: categorynr --> num_cells
2677
                   precoll_samples_num --> num_firstvals
2678

    
2679
        * basepts(), basepoint(k) finished
2680

    
2681
        PiSquare also updated (because cStatistic interface has changed in #120)
2682

    
2683
        * PiSquare's basepoint(), counter() are not correct!!!
2684

    
2685

    
2686
1997-03-14  Andras Varga
2687

    
2688
        The range of the Histogram will be NOT recalculated
2689

    
2690
        * steps were taken towards this solution....
2691

    
2692
        * cell_under/cell_over is saved/loaded,
2693

    
2694
        * cDoubleHistogram::collectTransformed() is rewritten and may be
2695
        moved to cHistogramBase if everything seems to be OK. (only
2696
        transform() should be different)
2697

    
2698

    
2699
1997-03-14  Andras Varga
2700

    
2701
        The hierarchy of the statistics collecting classes is completely rewritten
2702

    
2703
        * cStatistic : abstract class
2704

    
2705
        * cSimpleStatistic replaces both cLongStat and cDoubleStat and is
2706
        like cDoubleStat was
2707

    
2708
        * cHistogramBase : abstract class, contains all the common parts
2709
        of cLongHistogram and cDoubleHistogram
2710

    
2711

    
2712
1997-03-13  Andras Varga
2713

    
2714
        improvements on histograms:
2715

    
2716
        * precollect_sample_num introduced
2717

    
2718
        * cellwidth -> cellsize
2719

    
2720
        * 1/rangecoeff -> cellsize
2721

    
2722

    
2723
1997-03-13  Andras Varga
2724

    
2725
        improvements on histograms:
2726

    
2727
        * both histograms have a range_ext_factor
2728

    
2729
        * all range calculation and extension (if a sample falls out) are
2730
        rewritten
2731

    
2732
        * histogram calculates the c...Stat values if they are
2733
        missing. (see #109d)
2734

    
2735
1997-03-11  Andras Varga
2736

    
2737
        * improvement on statistics classes
2738

    
2739

    
2740
1997-03-10  Andras Varga
2741

    
2742
        * Define_Simple_Module_Like() macro added
2743

    
2744

    
2745
1997-03-10  Andras Varga
2746

    
2747
        * cLongStat::fwrite/fwrite added
2748

    
2749
        * cLongHistogram::fwrite/fread added
2750

    
2751
        * some bugfixes in cDoubleHistogram::fwrite/fread done
2752

    
2753

    
2754
1997-03-09  Andras Varga
2755

    
2756
        * Bug fixes
2757

    
2758

    
2759
1997-03-08  Andras Varga
2760

    
2761
        * cModType adds missing "default" machine parameter
2762

    
2763
        * put cGate into separate header and cc files
2764

    
2765
        * added: cGate::transm_finishes, busy(), restart() etc.
2766

    
2767

    
2768
1997-03-07  Andras Varga
2769

    
2770
        * minor improvements
2771

    
2772
        * PVM stuff updated; cPiSquare::pvm_pack()/upack() added
2773

    
2774

    
2775
1997-03-06  Andras Varga
2776

    
2777

    
2778
1997-03-05  Andras Varga
2779

    
2780
        * cPiSquare::fwrite(FILE *f) added
2781

    
2782
        * cPiSquare::fread(FILE *f) added
2783

    
2784

    
2785
1997-03-05  Andras Varga
2786

    
2787
        * cDoubleStat::fwrite(FILE *f) added
2788

    
2789
        * cDoubleStat::fread(FILE *f) added
2790

    
2791
        * cDoubleHistogram::fwrite/fread functions use the functions above
2792

    
2793
        * cDoubleHistogram may read two different formats: cDoubleStat
2794
        included or not included. But it still does NOT calculate the
2795
        statistical values!
2796

    
2797
        * some functions of cStatBase were made to be pure virtual
2798

    
2799

    
2800
1997-03-05  Andras Varga
2801

    
2802
        * cPiSquare sources added
2803

    
2804
        * makelib corrected
2805

    
2806

    
2807
1997-03-04  Andras Varga
2808

    
2809
        * cResult renamed to sStatBase
2810

    
2811
        * cDoubleDistrResult renamed to cDoubleHistogram
2812

    
2813
        * cLintDistrResult renamed to cLongHistogram
2814

    
2815
        * cLintResult, cDoubleResult were commented out
2816

    
2817
        * cDoubleStatResult renamed to cDoubleStat
2818

    
2819
        * cLintResult renamed to cLongStat
2820

    
2821
        * cDoubleHistogram::fwrite(FILE *f) added
2822

    
2823
        * cDoubleHistogram::fread(FILE *f) added
2824

    
2825

    
2826
1997-03-03  Andras Varga
2827

    
2828
        * cVarShell renamed to cWatch
2829

    
2830

    
2831
1997-03-03  Andras Varga
2832

    
2833
        * multiple random number generators (genk_xxx functions) added
2834

    
2835
        * added check for seed=0
2836

    
2837

    
2838
1997-02-28  Andras Varga
2839

    
2840
        * info() member functions fixed
2841

    
2842

    
2843
1997-02-28  Andras Varga
2844

    
2845
        * minor changes
2846

    
2847

    
2848
1997-02-28  Andras Varga
2849

    
2850
        * cSimulation: cleaned up network setup/delete stuff
2851

    
2852
           newnetwork() --renamed--> setupnetwork(cNetworkType n, int run_number)
2853
           clear() --renamed--> deletenetwork()
2854
           restart() --renamed--> startrun()
2855
           endrun(): new function
2856
           setsize(n), setrun(n): removed
2857
           getrun() --renamed--> getrunnumber()
2858
           getnetwork() --renamed--> getnetworktype()
2859

    
2860
        * cOutFileMgr: bugfixes
2861

    
2862

    
2863
1997-02-27  Andras Varga
2864

    
2865
        * bugfixes on #103
2866

    
2867
        * intuniform() distribution added
2868

    
2869

    
2870
1997-02-20  Andras Varga
2871

    
2872
        * bugfixes on #102
2873

    
2874

    
2875
1997-02-13  Andras Varga
2876

    
2877
        * cPar cleaned up:
2878
            o  types U,N,E,B,I removed
2879
            o  truncate flag removed
2880
            o  list of allowed type removed
2881
            o  last value preserving removed
2882
            o  parchanges removed
2883
            o  modpar flag removed
2884
            o  in constructor, type string changed to type char
2885
            o  constructor no longer takes prompt as arg
2886
            o  valuechanged() ---renamed to---> valuechanges()
2887
            o  less default conversions (they caused confusion)
2888
            o  settext() simplified
2889

    
2890
        * features added to cPar:
2891
            o  MathFunc w/ 0,1,2,3 constant args added (new: F type)
2892
            o  indirection type (I)
2893
            o  sXElem changed (for example, referto() was removed)
2894

    
2895
        * cModPar:
2896
            o  made to be a cPar descendant
2897
            o  "new" feature: module parameter logging (works thru valuechanges())
2898

    
2899
        * cVal, valuelist, findval() etc. removed
2900

    
2901
        * cMod:
2902
            o  iscompound(), cpd flag removed
2903
            o  issimple() now works through being virtual
2904
            o  precomp flag, isprecomp() removed (no one used it)
2905
            o  added: ancestorpar( char *s );
2906

    
2907
        * cCompMod renamed to cCompoundMod
2908

    
2909
        * cMsg function names changed
2910
            o  setprior() --> setpriority()
2911
            o  setlen() --> setlength()
2912
            o  seterr() --> seterror()
2913

    
2914
        New field: timestamp
2915
         void settimestamp( [simtime_t t] );
2916
         simtime_t timestamp();
2917

    
2918
        * cSimulation:
2919
            o new fields cOutFileMgr parchangefilemgr, bool logparchanges
2920
            o outfilemgr --renamed--> outvectfilemgr
2921

    
2922
        * cOutFileMgr:
2923
            o  interface changed
2924
            o  new: '##'-to-run-number substitution in file names
2925
            o  deletefile() added
2926

    
2927
        * oObj::restore(), cHead::restore() functions deleted (were only used by cVal)
2928

    
2929
        * cObj constructor more optimized, cobj.h commented
2930

    
2931
        * IMPORTANT: operator=() no longer copies object name!!!! It
2932
        should be done separately if needed. Copy constructor DOES copy
2933
        the name.
2934

    
2935

    
2936
1997-02-12  Andras Varga
2937

    
2938
        * data rate support added
2939

    
2940
        * sendmsgdelayed() added
2941

    
2942

    
2943
1996-12-08  Andras Varga
2944

    
2945
        * `members' added to cSimpleMod
2946

    
2947
        * modified cLinkType
2948

    
2949
        * error fixed in cGate::setlink()
2950

    
2951

    
2952
1996-12-06  Andras Varga
2953

    
2954
        * changed: cGate, cLinkType, connect()
2955

    
2956

    
2957
1996-12-06  Andras Varga
2958

    
2959
        * bug fixed which caused double delay on links
2960

    
2961
        * deliver() moved from cMod to cGate
2962