This is DBAttribute.h in view mode; [Download] [Up]
/* ** DBAttribute.h ** Database Kit, Release 3.0 ** Copyright (c) 1992, NeXT Computer, Inc. All rights reserved. */ #import <objc/Object.h> #import <dbkit/protocols.h> /* ** DBAttribute can be thought of as a "pointer to an external datum". In ** the context of a DBDataPath, it both knows where to find that datum, ** and "how to speak the language" in order to retrieve its value(s). ** ** You can have a database manufacture DBAttributes for you, by using ** its native query language and letting it specify the returned results, ** if any. You may also alloc and init your own attributes, or use ** the attributes provided by a DBDatabase. This last method is the one ** to use if using the InterfaceBuilder to hook to a database. ** ** The associate: calls in the binder can be used to associate ** the ivars or methods of an object with DBAttributes; this will cause the ** type information in those attributes to reflect the types in the object ** or methods. ** ** Another useful thing about DBAttributes is that "data dictionary" ** information is returned in them. If you perform a selectNoFetch:, and ** then examine the dataDescription, you will find that it describes the ** results of the query, with both an external and an objc types. It also ** may have useful field length info, and will contain the names of fields ** (in the event of a select *, let's say.) ** ** Since we are assuming the objective-C runtime system as our target typing ** system, null values are handled using the "designated value" system rather ** than the "indicator variable" system. The designated null value is a ** reserved value -- NULL, nil, MININT, or NaN (found in ansi/math.h). ** Nulls will print as "" or zero, if not checked for. */ @interface DBAttribute : Object <DBProperties, DBTypes, DBExpressionValues> { id entity; @private id _propertyNameExpr; id _internalNameExpr; id _aliasedNameExpr; id _typeExpr; id _dbTypeExpr; const char *_classname; const char *_format; struct { BOOL aggregate:1; /* attr is aggregate */ BOOL readOnly:1; /* is this attribute read only? */ BOOL key:1; /* is attr part of the primary key? */ BOOL hidden:1; /* is attr invisible in browsers? */ int _RESERVED:12; } _flags; } + initialize; - initWithName:(const char*)aName andType:(const char*)type forEntity:(id<DBEntities>)anEntity; - copyFromZone:(NXZone*)z; - free; - (BOOL)isAggregate; - (BOOL)isHidden; - setReadOnly:(BOOL)yn; - setKey:(BOOL)yn; - setAggregate:(BOOL)yn; - setHidden:(BOOL)yn; - (const char*)format; - setDatabaseType:(const char*)aDBType; - setFormat:(const char*)aFormat; /* ** In order to produce aggregate or compound attributes, such as count(), ** avg(), or emp.salary / emp.age in SQL, the _internalNameExpression of the ** attribute must represent the string and the isAggregate flag MUST be set ** to YES. Please note that by replacing the _internalNameExpression with ** an ExpressionList, multiple dataPaths can be embedded within the ** "derived" attribute while preserving the automatic joining features of ** a DataDictionary. */ - setInternalName:(const char*)newInternalName; - (const char*)internalName; - read:(NXTypedStream*)ts; - write:(NXTypedStream*)ts; @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.