File: PajeEvent.h

package info (click to toggle)
paje.app 1.98-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,428 kB
  • sloc: objc: 24,517; ansic: 6,998; makefile: 134; sh: 42; java: 31
file content (155 lines) | stat: -rw-r--r-- 4,373 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/*
    Copyright (c) 1998, 1999, 2000, 2001, 2003, 2004 Benhur Stein
    
    This file is part of Pajé.

    Pajé is free software; you can redistribute it and/or modify it under
    the terms of the GNU Lesser General Public License as published by the
    Free Software Foundation; either version 2 of the License, or (at your
    option) any later version.

    Pajé is distributed in the hope that it will be useful, but WITHOUT ANY
    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
    for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with Pajé; if not, write to the Free Software Foundation, Inc.,
    59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef _PajeEvent_h_
#define _PajeEvent_h_

/* PajeEvent.h
 *
 *
 * 20021112 BS creation (from A0Event)
 */

#include <Foundation/Foundation.h>
#include <AppKit/AppKit.h>

#include "Protocols.h"

#define PE_MAX_NFIELDS 20

typedef struct {
    char *word[PE_MAX_NFIELDS];
    int word_count;
} line;


typedef enum {
    PajeStartTraceEventId,
    PajeDefineContainerTypeEventId,
    PajeDefineEventTypeEventId,
    PajeDefineStateTypeEventId,
    PajeDefineVariableTypeEventId,
    PajeDefineLinkTypeEventId,
    PajeDefineEntityValueEventId,
    PajeCreateContainerEventId,
    PajeDestroyContainerEventId,
    PajeNewEventEventId,
    PajeSetStateEventId,
    PajePushStateEventId,
    PajePopStateEventId,
    PajeSetVariableEventId,
    PajeAddVariableEventId,
    PajeSubVariableEventId,
    PajeStartLinkEventId,
    PajeEndLinkEventId,
    PajeEventIdCount,
    PajeUnknownEventId = -1
} PajeEventId;

typedef enum {
    PajeIntFieldType,
    PajeHexFieldType,
    PajeDateFieldType,
    PajeDoubleFieldType,
    PajeStringFieldType,
    PajeColorFieldType,
    PajeUnknownFieldType
} PajeFieldType;
    
typedef enum {
    PajeEventIdFieldId,
    PajeTimeFieldId,
    PajeNameFieldId,
    PajeAliasFieldId,
    //PajeContainerTypeFieldId,
    //PajeEntityTypeFieldId,
    PajeTypeFieldId,
    PajeContainerFieldId,
    PajeStartContainerTypeFieldId,
    PajeEndContainerTypeFieldId,
    PajeStartContainerFieldId,
    PajeEndContainerFieldId,
    PajeColorFieldId,
    PajeValueFieldId,
    PajeKeyFieldId,
    PajeFileFieldId,
    PajeLineFieldId,
    PajeFieldIdCount
} PajeFieldId;

PajeEventId pajeEventIdFromName(const char *name);
PajeFieldId pajeFieldIdFromName(const char *name);
PajeFieldType pajeFieldTypeFromName(const char *name);

@interface PajeEventDefinition : NSObject
{
@public
    char *eventId;
    PajeEventId pajeEventId;
    PajeFieldType fieldTypes[PE_MAX_NFIELDS]; // fieldType of each field
    PajeFieldId fieldIds[PE_MAX_NFIELDS];     // fieldId of each field
    short fieldCount; // number of fields for events with this definition
    NSArray *fieldNames;
    short fieldIndexes[PajeFieldIdCount]; // index in fieldIds for known PjFiId
    PajeFieldId extraFieldIds[PE_MAX_NFIELDS]; // non-obligatory fieldIds in ev
    short extraFieldCount;
    NSArray *extraFieldNames;
}

+ (PajeEventDefinition *)definitionWithPajeEventId:(PajeEventId)anId
                                        internalId:(const char *)internalId;
- (id)initWithPajeEventId:(PajeEventId)anId
               internalId:(const char *)internalId;

- (void)addFieldId:(PajeFieldId)fieldId
         fieldType:(PajeFieldType)fieldType;

- (int)fieldCount;
@end

@interface PajeEvent : NSObject
{
    //char *fieldValues[PE_MAX_NFIELDS];
    line *valueLine;
    PajeEventDefinition *pajeEventDefinition;
}

+ (PajeEvent *)eventWithDefinition:(PajeEventDefinition *)definition
                              line:(line *)line;
- (id)initWithDefinition:(PajeEventDefinition *)definition
                    line:(line *)line;

- (id)valueForFieldId:(PajeFieldId)fieldId;
- (NSColor *)colorForFieldId:(PajeFieldId)fieldId;
- (NSString *)stringForFieldId:(PajeFieldId)fieldId;
- (const char *)cStringForFieldId:(PajeFieldId)fieldId;
- (int)intForFieldId:(PajeFieldId)fieldId;
- (double)doubleForFieldId:(PajeFieldId)fieldId;
- (NSDate *)timeForFieldId:(PajeFieldId)fieldId;
- (NSDate *)time;

- (PajeEventId)pajeEventId;

- (NSArray *)fieldNames;
- (id)valueOfFieldNamed:(NSString *)fieldName;

- (NSDictionary *)extraFields;
@end

#endif