source: trunk/src/user32/gen_object.cpp@ 2912

Last change on this file since 2912 was 2804, checked in by sandervl, 26 years ago

Added new logging feature

File size: 3.0 KB
Line 
1/* $Id: gen_object.cpp,v 1.5 2000-02-16 14:34:19 sandervl Exp $ */
2/*
3 * Generic Object Class for OS/2
4 *
5 * Allocated in shared memory, so other processes can access the objects
6 *
7 * NOTE: Requires safety precautions to use objects in multiple threads or processes
8 *
9 * Copyright 1999 Sander van Leeuwen (sandervl@xs4all.nl)
10 *
11 */
12#define INCL_DOSSEMAPHORES
13#include <os2.h>
14#include <os2wrap.h>
15#include <stdlib.h>
16#include <win32type.h>
17#include <gen_object.h>
18#include <misc.h>
19#include <vmutex.h>
20
21#define DBG_LOCALLOG DBG_gen_object
22#include "dbglocal.h"
23
24VMutex genMutex[OBJTYPE_MAX];
25
26//******************************************************************************
27//******************************************************************************
28GenericObject::GenericObject(GenericObject **head, DWORD objType)
29{
30 this->objType = objType;
31 this->head = head;
32 this->next = NULL;
33
34 genMutex[objType].enter();
35 if(*head == NULL) {
36 *head = this;
37 }
38 else {
39 GenericObject *cur = *head;
40 while(cur->next)
41 {
42 cur = cur->next;
43 }
44 cur->next = this;
45 }
46 genMutex[objType].leave();
47}
48//******************************************************************************
49//******************************************************************************
50GenericObject::~GenericObject()
51{
52 //remove from linked list
53 genMutex[objType].enter();
54 if(*head == this) {
55 *head = next;
56 }
57 else {
58 GenericObject *cur = *head;
59 while(cur->next != this)
60 {
61 cur = cur->next;
62 if(cur == NULL) {
63 dprintf(("GenericObject dtor: cur == NULL!!"));
64 DebugInt3();
65 }
66 }
67 cur->next = next;
68 }
69 genMutex[objType].leave();
70}
71//******************************************************************************
72//******************************************************************************
73void GenericObject::DestroyAll(GenericObject *head)
74{
75 GenericObject *cur, *next;
76
77 cur = head;
78 while(cur) {
79 next = cur->next;
80 delete cur;
81 cur = next;
82 }
83}
84//******************************************************************************
85//******************************************************************************
86void GenericObject::enterMutex()
87{
88 genMutex[objType].enter();
89}
90//******************************************************************************
91//******************************************************************************
92void GenericObject::leaveMutex()
93{
94 genMutex[objType].leave();
95}
96//******************************************************************************
97//******************************************************************************
98void GenericObject::enterMutex(DWORD objType)
99{
100 genMutex[objType].enter();
101}
102//******************************************************************************
103//******************************************************************************
104void GenericObject::leaveMutex(DWORD objType)
105{
106 genMutex[objType].leave();
107}
108//******************************************************************************
109//******************************************************************************
Note: See TracBrowser for help on using the repository browser.