/usr/include/snacc/c++/asn-list.h is in libsnacc-dev 1.3bbn-11ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 156 157 158 | // file: .../c++-lib/inc/asn-list.h
//
// **** NOTE - this is not used or tested due to problems with gcc ****
//
// Mike Sample
// 92/07/02
// Copyright (C) 1992 Michael Sample and the University of British Columbia
//
// This library is free software; you can redistribute it and/or
// modify it provided that this copyright/license information is retained
// in original form.
//
// If you modify this file, you must clearly indicate your changes.
//
// This source code 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.
//
// $Header: /usr/app/odstb/CVS/snacc/c++-lib/inc/asn-list.h,v 1.6 1997/02/16 20:25:38 rj Exp $
// $Log: asn-list.h,v $
// Revision 1.6 1997/02/16 20:25:38 rj
// check-in of a few cosmetic changes
//
// Revision 1.5 1995/07/24 17:46:54 rj
// operator == and != return bool instead of int.
//
// #if TCL ... #endif wrapped into #if META ... #endif
//
// changed `_' to `-' in file names.
//
// Revision 1.4 1995/02/18 14:06:09 rj
// #pragma interface/implementation are GNU specific and need to be wrapped.
//
// Revision 1.3 1994/10/08 04:18:05 rj
// code for meta structures added (provides information about the generated code itself).
//
// code for Tcl interface added (makes use of the above mentioned meta code).
//
// virtual inline functions (the destructor, the Clone() function, BEnc(), BDec() and Print()) moved from inc/*.h to src/*.C because g++ turns every one of them into a static non-inline function in every file where the .h file gets included.
//
// made Print() const (and some other, mainly comparison functions).
//
// several `unsigned long int' turned into `size_t'.
//
// Revision 1.2 1994/08/28 10:00:51 rj
// comment leader fixed.
//
// Revision 1.1 1994/08/28 09:20:37 rj
// first check-in. for a list of changes to the snacc-1.1 distribution please refer to the ChangeLog.
#ifndef _asn_list_h_
#define _asn_list_h_
#ifdef __GNUG__
#pragma interface
#endif
#ifdef _IBM_ENC_
#include "shmmgr.h" // Guido Grassel 5.8.93
#endif /* _IBM_ENC_ */
template <class T>
#ifndef _IBM_ENC_
class AsnList
#else
class AsnList: public MemMgr // Guido Grassel 12.8.93
#endif /* _IBM_ENC_ */
{
protected:
unsigned long int count;
struct AsnListElmt
{
T elmt;
AsnListElmt *next, *prev;
} *first, *curr, *last;
#ifdef _IBM_ENC_
AsnListElmt *first, *curr, *last;
#endif /* _IBM_ENC_ */
public:
AsnList():
count (0),
first (NULL),
curr (NULL),
last (NULL)
{}
friend std::ostream &operator << (std::ostream &os, AsnList &l);
void SetCurrElmt (unsigned long int index);
void SetCurrToFirst() { curr = first; }
void SetCurrToLast() { curr = last; }
// reading member fcns
int Count() { return count; }
T *First() { return count > 0 ? &first->elmt : NULL; }
T *Last() { return count > 0 ? &last->elmt : NULL; }
T *Curr() { return curr ? &curr->elmt : NULL; }
T *Next() { return curr && curr->next ? &curr->next->elmt : NULL; }
T *Prev() { return curr && curr->prev ? &curr->prev->elmt : NULL; }
// routines that move the curr elmt
T *GoNext() { if (curr) curr = curr->next; return Curr(); }
T *GoPrev() { if (curr) curr = curr->prev; return Curr(); }
// write & alloc fcns - returns new elmt
T &Append(); // add elmt to end of list
T &Prepend(); // add elmt to begginning of list
// T &InsertBefore(); insert elmt before current elmt
// T &InsertAfter(); insert elmt after current elmt
// write & alloc & copy - returns list after copying elmt
AsnList &AppendAndCopy (T &elmt); // add elmt to end of list
AsnList &PrependAndCopy (T &elmt); // add elmt to begginning of list
// AsnList &InsertBeforeAndCopy (T &elmt); insert elmt before current elmt
// AsnList &InsertAfterAndCopy (T &elmt); insert elmt after current elmt
// encode and decode routines
AsnLen BEncContent (BUF_TYPE b);
void BDecContent (BUF_TYPE b, AsnTag tagId, AsnLen elmtLen, AsnLen &bytesDecoded, ENV_TYPE env);
AsnLen BEnc (BUF_TYPE b);
void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
PDU_MEMBER_MACROS
#if META
static const AsnTypeDesc _desc;
const AsnTypeDesc *_getdesc() const;
#if TCL
int TclGetVal (Tcl_Interp *) const;
int TclSetVal (Tcl_Interp *, const char *val);
#endif /* TCL */
#endif /* META */
};
// This causes gcc2 on C++ to choke
#if 0
template <class T, class U>
int ListsEquiv (AsnList<T> &l1, AsnList<U> &l2);
template <class T, class U>
inline bool operator == (AsnList<T> &l1, AsnList<U> &l2)
{
return ListsEquiv (l1, l2);
}
template <class T, class U>
inline bool operator != (AsnList<T> &l1, AsnList<U> &l2)
{
return !ListsEquiv (l1,l2);
}
#endif
#endif /* conditional include */
|