aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/extras/ogl-sample/main/doc/man/macros
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/extras/ogl-sample/main/doc/man/macros')
-rw-r--r--nx-X11/extras/ogl-sample/main/doc/man/macros/GNUmakefile48
-rw-r--r--nx-X11/extras/ogl-sample/main/doc/man/macros/mkhead.awk290
-rw-r--r--nx-X11/extras/ogl-sample/main/doc/man/macros/mkhead.ftn.awk339
-rw-r--r--nx-X11/extras/ogl-sample/main/doc/man/macros/setup36
-rw-r--r--nx-X11/extras/ogl-sample/main/doc/man/macros/setup.ftn31
5 files changed, 744 insertions, 0 deletions
diff --git a/nx-X11/extras/ogl-sample/main/doc/man/macros/GNUmakefile b/nx-X11/extras/ogl-sample/main/doc/man/macros/GNUmakefile
new file mode 100644
index 000000000..231d951e0
--- /dev/null
+++ b/nx-X11/extras/ogl-sample/main/doc/man/macros/GNUmakefile
@@ -0,0 +1,48 @@
+#!gmake
+#
+# License Applicability. Except to the extent portions of this file are
+# made subject to an alternative license as permitted in the SGI Free
+# Software License B, Version 1.1 (the "License"), the contents of this
+# file are subject only to the provisions of the License. You may not use
+# this file except in compliance with the License. You may obtain a copy
+# of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
+# Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
+#
+# http://oss.sgi.com/projects/FreeB
+#
+# Note that, as provided in the License, the Software is distributed on an
+# "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
+# DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
+# CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
+# PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
+#
+# Original Code. The Original Code is: OpenGL Sample Implementation,
+# Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
+# Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
+# Copyright in any portions created by third parties is as indicated
+# elsewhere herein. All Rights Reserved.
+#
+# Additional Notice Provisions: The application programming interfaces
+# established by SGI in conjunction with the Original Code are The
+# OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
+# April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
+# 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
+# Window System(R) (Version 1.3), released October 19, 1998. This software
+# was created using the OpenGL(R) version 1.2.1 Sample Implementation
+# published by SGI, but has not been independently verified as being
+# compliant with the OpenGL(R) version 1.2.1 Specification.
+#
+# $Date: 2004/03/14 08:29:07 $ $Revision: 1.1.1.4 $
+# $Header: /cvs/xorg/xc/extras/ogl-sample/main/doc/man/macros/GNUmakefile,v 1.1.1.4 2004/03/14 08:29:07 eich Exp $
+
+COMMONPREF = standard
+include $(ROOT)/usr/include/make/commondefs
+
+default headers headers_install libs libs_install install apps:
+
+distsi distoss:
+ $(MAKE) $(COMMONPREF)$@
+
+$(COMMONTARGS): % : $(COMMONPREF)%
+
+include $(COMMONRULES)
diff --git a/nx-X11/extras/ogl-sample/main/doc/man/macros/mkhead.awk b/nx-X11/extras/ogl-sample/main/doc/man/macros/mkhead.awk
new file mode 100644
index 000000000..07f6ce39b
--- /dev/null
+++ b/nx-X11/extras/ogl-sample/main/doc/man/macros/mkhead.awk
@@ -0,0 +1,290 @@
+# basename is set on the command line
+# The regexp below is replaced by an expression to do case insensitive
+# searching on the name of a GL function before running this program.
+#
+# Runs on 'gl.h' ('glu.h', 'glx.h') and locates the lines for the specified
+# GL (glu, glx) function, then generates M4 definitions for man page
+#
+BEGIN {
+ found = 0
+ numargs = 0
+ newargs[0] = ""
+ stderr = "cat 1>&2"
+ vee = 0
+ getnames(basename)
+
+ for (j=0; j<numNames; j++)
+ {
+ rexpNames[j] = names[j] regExps[j]
+ head[j] = ""
+ numFound[j] = 0
+ nargs[0] = 0
+ }
+}
+
+/extern/ {
+ cmdfield = 0;
+ # search for the command string
+ for (i = 3; i <= NF; i++)
+ {
+ name = $i;
+ if (index(name,"gl") == 1)
+ {
+ cmdfield = i;
+ # strip the gl, glu, or glX prefix
+ # note that the X of glX is not stripped!
+ if (index(name,"glu") == 1)
+ name = substr(name,4);
+ else
+ name = substr(name,3);
+ truename = name;
+ break;
+ }
+ }
+ if (cmdfield != 0) {
+ for (i=0; i<numNames; i++)
+ {
+ if (name ~ rexpNames[i])
+ { # Found one - $cmdfield is the name, $2 through $(cmdfield-1) is
+ # the return type. The rest is the argument list.
+ match(name,names[i])
+ if ((RLENGTH != length(names[i])) || (match(name,rexpNames[i]) != 1))
+ continue
+ if (RLENGTH != length(name))
+ continue
+ cname = name
+ names[i,numFound[i]] = truename
+ p = index($0,"(")
+ addargs(substr($0,p,length($0)-p-1),i) # Strips trailing semicolon
+ typestr = $2
+ for (j = 3; j < cmdfield; j++)
+ {
+ typestr = typestr " " $j
+ }
+ head[i] = head[i] makeHead(truename,typestr,i)
+ numFound[i]++
+ found++
+ }
+ }
+ }
+}
+
+END {
+ if (found == 0) {
+ if (basename == "xintro") {
+ numNames = 1;
+ numFound[0] = 1;
+ names[0,0] = "XIntro";
+ }
+ else if (basename == "intro") {
+ numNames = 1;
+ numFound[0] = 1;
+ names[0,0] = "Intro";
+ }
+ else {
+ printf "No GL call found that matches '%s'.\n", basename | stderr
+ printf "Edit macros/mkhead.awk to add a special name.\n" | stderr
+ }
+ }
+ printf "_define(_samething,@<.PP\n"
+ printf "The above subroutines are functionally equivalent;\n"
+ printf "they differ only in the specification of their parameters.\n"
+ printf ">@)dnl\n"
+
+ printf "_define(_header,@<dnl\n"
+ printf "_setup()dnl\n"
+ printf "_define(_cname,$1)dnl\n"
+ printf ".TH %s$1 3G\n", prefix
+ printf ".SH NAME\n"
+ printf ".B \""
+ for (i=0; i<numNames; i++)
+ for (j=0; j<numFound[i]; j++)
+ if ((i == (numNames-1)) && (j == (numFound[i]-1)))
+ printf "%s%s\n", prefix, names[i,j]
+ else
+ printf "%s%s, ", prefix, names[i,j]
+ printf "\\- $2\n"
+ printf ">@)dnl\n"
+
+ printf "_define(_names,@<dnl\n"
+ printf "_ifelse($3,@<>@,.SH C SPECIFICATION\n)"
+ printf "_ifelse("
+ for (i=0; i<numNames; i++)
+ {
+ printf "_namenum,@<%d>@,@<%s>@,dnl\n",i,head[i]
+ }
+ printf "ERROR)dnl\n"
+ printf "_define(@<_namenum>@,_incr(_namenum))>@)dnl\n"
+
+# if (found > 1)
+# {
+# printf "_samething()\n"
+# }
+ maxArgs = 0
+ for (i=0; i<numNames; i++)
+ if (maxArgs < nargs[i])
+ maxArgs = nargs[i]
+ long = ""
+ for (j=1; j<=maxArgs; j++)
+ {
+ printf "_define(_param%d,@<",j
+ printf "_define(@<_tmpnum>@,_ifelse($#,0,_namenum,$1))dnl\n"
+ printf "_ifelse("
+ for (i=0; i<numNames; i++)
+ {
+ printf "_tmpnum,@<%d>@,\\f2%s\\fP,dnl\n",i+1,args[j,i]
+ if (length(args[j,i]) > length(long))
+ long = args[j,i]
+ }
+ printf "???)>@)dnl\n"
+ }
+# next loop same as above, except does not italicize
+# resulting definitions can be used in equations
+ for (j=1; j<=maxArgs; j++)
+ {
+ printf "_define(_eqnparam%d,@<",j
+ printf "_define(@<_tmpnum>@,_ifelse($#,0,_namenum,$1))dnl\n"
+ printf "_ifelse("
+ for (i=0; i<numNames; i++)
+ {
+ printf "_tmpnum,@<%d>@,\"%s\",dnl\n",i+1,args[j,i]
+ if (length(args[j,i]) > length(long))
+ long = args[j,i]
+ }
+ printf "???)>@)dnl\n"
+ }
+# The following stuff is designed to find the longest argument so that
+# the '.TP' indentation can be set in the first instaciation of _phead
+# (thus the use of the '_first' macro as a flag). Things are complicated
+# by the possibility of multiple arguments in the call to _phead.
+# This is what _makelist is for: to turn a space separted multiple
+# argument list into a comma separated one (commas can't be used in
+# the original list because they have special meaning to m4).
+# Unfortunately, this means that (currently) if the longest string is
+# a multiple argument, the indentation will only be right if it occurs
+# in the first _phead. This is because only the API file is scanned
+# for arguments, and not the man page file, so this script can't know
+# which instance of phead has the longest (multiple) argument.
+
+ long = "\\fI" long "\\fP"
+ printf "_define(_phead,@<dnl\n"
+ printf "_ifdef(@<_first>@,@<.TP>@,@<.TP \\w'"
+ printf "_ifelse(_eval(_len(%s)>_len(_makelist($1))),1,",long
+ printf "%s,translit(_makelist($1),@<+>@,@<\\>@))\\ \\ 'u dnl\n", long
+ printf "_define(_first,first)>@)\n"
+ printf "translit(_makelist($1),@<+>@,@<,>@)>@)dnl\n"
+ printf "_define(_cmnd,@<\\%%_ifelse($1,@<>@,\\f3" prefix "@<>@_cname\\fP,dnl\n"
+ printf "\\f3" prefix "$1\\fP)>@)dnl\n"
+ printf "_define(_glcmnd,@<_ifelse($1,@<>@,\\f3gl@<>@_cname\\fP,dnl\n"
+ printf "\\f3gl$1\\fP)>@)dnl\n"
+ printf "_define(_glucmnd,@<_ifelse($1,@<>@,\\f3glu@<>@_cname\\fP,dnl\n"
+ printf "\\f3glu$1\\fP)>@)dnl\n"
+ printf "_define(_xcmnd,@<_ifelse($1,@<>@,\\f3X@<>@_cname\\fP,dnl\n"
+ printf "\\f3X$1\\fP)>@)dnl\n"
+# printf "syscmd(@<${maCdIr}/mkname.awk>@ ${maCdIr}/pglspec >_tmpnam)dnl\n"
+# printf "_include(_tmpnam)syscmd(rm -f _tmpnam)>@))dnl\n"
+}
+
+
+
+#
+# function to make the troff to typeset the function header
+#
+function makeHead(fname,type,i)
+{
+ fname = prefix fname
+ headString = sprintf("%s \\f3%s\\fP(",type,fname)
+ if (numargs > 0)
+ {
+ headString = headString "\n"
+ if (numargs > 1)
+ {
+ headString = headString sprintf("%s,\n",targs[1,i])
+ headString = headString ".nf\n"
+ headString = headString sprintf(".ta \\w'\\f3%s \\fP%s( 'u\n",type,fname)
+ for (j=2; j<=numargs-1; j++)
+ headString = headString sprintf("\t%s,\n",targs[j,i])
+ headString = headString sprintf("\t%s )\n",targs[numargs,i])
+ headString = headString ".fi\n"
+ }
+ else
+ headString = headString sprintf("%s )\n.nf\n.fi\n",targs[numargs,i])
+ }
+ else
+ headString = headString " void )\n.nf\n.fi\n"
+ return headString
+}
+
+# Generates 'args' of untyped argument names
+# Also generates 'targs' of typed argument names and 'nargs', the number
+# of arguments.
+
+function addargs(arglist,i)
+{
+#
+# First strip leading '(' and trailing ')'
+#
+ if (substr(arglist,1,1) == "(")
+ arglist = substr(arglist,2,length(arglist))
+ while (substr(arglist,1,1) == " ")
+ arglist = substr(arglist,2,length(arglist))
+
+ if (substr(arglist,length(arglist),1) == ")")
+ arglist = substr(arglist,1,length(arglist)-1)
+ while (substr(arglist,length(arglist),1) == " ")
+ arglist = substr(arglist,1,length(arglist)-1)
+
+ numargs = split(arglist,newargs, ",[ \t]")
+ if (newargs[1] == "void")
+ {
+ numargs = 0;
+ targs[1,i] = newargs[1];
+ args[1,i] = newargs[1];
+ }
+ if (nargs[i] < numargs)
+ nargs[i] = numargs;
+
+ for (j=1; j<=numargs; j++)
+ {
+# targs[j,i] italicizes the argument but not the type
+ targs[j,i] = newargs[j]
+ numWords = split(targs[j,i],words,"[ \t]")
+ args[j,i] = words[numWords]
+ targs[j,i] = words[1]
+ for (k=2; k<=numWords-1; k++)
+ targs[j,i] = targs[j,i] " " words[k]
+ targs[j,i] = targs[j,i] " \\fI" words[numWords] "\\fP"
+ sub(/\[.*\]/,"",args[j,i])
+ gsub("[*()]","",args[j,i])
+ }
+}
+
+#
+# Parse and save away the _names(name,regexp) declarations in the file
+# for later use in matching the entries in the API file.
+#
+
+function getnames(file)
+{
+ numNames = 0
+ fname = file ".gl"
+ while (getline < fname)
+ {
+ if (index($0,"_names(") != 0)
+ {
+ start = index($0,"_names(") + 7
+ stuff = substr($0,start,length($0)-start)
+ split(stuff,things,",")
+ names[numNames] = things[1]
+ regExps[numNames] = things[2]
+ numNames++
+ }
+ }
+ close(fname)
+ if (numNames == 0)
+ {
+ names[0] = file
+ regExps[0] = "[1-9]*u*[lbsifd]*v*"
+ numNames++
+ }
+}
diff --git a/nx-X11/extras/ogl-sample/main/doc/man/macros/mkhead.ftn.awk b/nx-X11/extras/ogl-sample/main/doc/man/macros/mkhead.ftn.awk
new file mode 100644
index 000000000..669a41d8f
--- /dev/null
+++ b/nx-X11/extras/ogl-sample/main/doc/man/macros/mkhead.ftn.awk
@@ -0,0 +1,339 @@
+# FORTRAN version
+#
+# Scans the source text for a manual page and locates "_names" macro
+# invocations. Looks up the names in gl.h (or glu.h or glx.h) and generates
+# definitions for the OpenGL m4 man page macros (_cmnd, _param1, etc.)
+# Extracts machine dependencies for the names and stores them in a file
+# for later inclusion in the man page. (See glman shell script.)
+#
+# basename, prefix, machdeps, and machdepsout are set on the command line.
+# The regexp below is replaced by an expression to do case insensitive
+# searching on the name of a GL function before running this program.
+#
+BEGIN {
+ FS = " |\t|\\("
+ basename = substr(basename,2,length(basename)-1) # strip leading 'f'
+ prefix = "f" prefix
+ found = 0
+ numargs = 0
+ newargs[0] = ""
+ stderr = "cat 1>&2"
+ vee = 0
+ getnames("f" basename)
+
+ for (j=0; j<numNames; j++)
+ {
+ rexpNames[j] = names[j] regExps[j]
+ head[j] = ""
+ numFound[j] = 0
+ nargs[0] = 0
+ }
+}
+
+/extern/ {
+ cmdfield = 0;
+ # search for the command string
+ for (i = 3; i <= NF; i++)
+ {
+ name = $i;
+ if (index(name,"gl") == 1)
+ {
+ cmdfield = i;
+ # strip the gl, glu, or glX prefix
+ if (index(name,"glu") == 1 || index(name,"glX") == 1)
+ name = substr(name,4);
+ else
+ name = substr(name,3);
+ truename = name;
+ break;
+ }
+ }
+ if (cmdfield != 0) {
+ for (i=0; i<numNames; i++)
+ {
+ if (name ~ rexpNames[i])
+ { # Found one - $cmdfield is the name, $2 through $(cmdfield-1) is
+ # the return type. The rest is the argument list.
+ match(name,names[i])
+ if ((RLENGTH != length(names[i])) || (match(name,rexpNames[i]) != 1))
+ continue
+ if (RLENGTH != length(name))
+ continue
+ cname = name
+ names[i,numFound[i]] = truename
+ p = index($0,"(")
+ addargs(substr($0,p,length($0)-p-1),i) # Strips trailing semicolon
+ typestr = $2
+ for (j = 3; j < cmdfield; j++)
+ {
+ typestr = typestr " " $j
+ }
+ head[i] = head[i] makeHead(truename,typestr,i)
+ numFound[i]++
+ found++
+ }
+ }
+ }
+}
+
+END {
+ if (found == 0) {
+ if (basename == "glxintro") {
+ numNames = 1;
+ numFound[0] = 1;
+ names[0,0] = "Intro";
+ }
+ else if (basename == "intro") {
+ numNames = 1;
+ numFound[0] = 1;
+ names[0,0] = "Intro";
+ }
+ else {
+ printf "No GL call found that matches '%s'.\n", basename | stderr
+ printf "Edit macros/mkhead.awk to add a special name.\n" | stderr
+ }
+ }
+ printf "_define(_samething,@<.PP\n"
+ printf "The above subroutines are functionally equivalent;\n"
+ printf "they differ only in the specification of their parameters.\n"
+ printf ">@)dnl\n"
+
+ printf "_define(_header,@<dnl\n"
+ printf "_setup()dnl\n"
+ printf "_define(_cname,$1)dnl\n"
+ printf ".TH %s$1 \n", prefix
+ printf ".SH NAME\n"
+ printf ".B \""
+ for (i=0; i<numNames; i++)
+ for (j=0; j<numFound[i]; j++)
+ if ((i == (numNames-1)) && (j == (numFound[i]-1)))
+ printf "%s%s\n", prefix, names[i,j]
+ else
+ printf "%s%s, ", prefix, names[i,j]
+ printf "\\- $2\n"
+ printf ">@)dnl\n"
+
+ printf "_define(_names,@<dnl\n"
+ printf "_ifelse($3,@<>@,.SH FORTRAN SPECIFICATION\n)"
+ printf "_ifelse("
+ for (i=0; i<numNames; i++)
+ {
+ printf "_namenum,@<%d>@,@<%s>@,dnl\n",i,head[i]
+ }
+ printf "ERROR)dnl\n"
+ printf "_define(@<_namenum>@,_incr(_namenum))>@)dnl\n"
+
+# Define the _machdeps macro to include the machine dependencies
+# extracted earlier:
+
+ printf "_define(@<_machdeps>@,@<_sinclude(@<%s>@)>@)dnl\n", machdepsout
+
+# if (found > 1)
+# {
+# printf "_samething()\n"
+# }
+ maxArgs = 0
+ for (i=0; i<numNames; i++)
+ if (maxArgs < nargs[i])
+ maxArgs = nargs[i]
+ long = ""
+ for (j=1; j<=maxArgs; j++)
+ {
+ printf "_define(_param%d,@<",j
+ printf "_define(@<_tmpnum>@,_ifelse($#,0,_namenum,$1))dnl\n"
+ printf "_ifelse("
+ for (i=0; i<numNames; i++)
+ {
+ printf "_tmpnum,@<%d>@,\\f2%s\\fP,dnl\n",i+1,args[j,i]
+ if (length(args[j,i]) > length(long))
+ long = args[j,i]
+ }
+ printf "???)>@)dnl\n"
+ }
+# next loop same as above, except does not italicize
+# resulting definitions can be used in equations
+ for (j=1; j<=maxArgs; j++)
+ {
+ printf "_define(_eqnparam%d,@<",j
+ printf "_define(@<_tmpnum>@,_ifelse($#,0,_namenum,$1))dnl\n"
+ printf "_ifelse("
+ for (i=0; i<numNames; i++)
+ {
+ printf "_tmpnum,@<%d>@,\"%s\",dnl\n",i+1,args[j,i]
+ if (length(args[j,i]) > length(long))
+ long = args[j,i]
+ }
+ printf "???)>@)dnl\n"
+ }
+# The following stuff is designed to find the longest argument so that
+# the '.TP' indentation can be set in the first instaciation of _phead
+# (thus the use of the '_first' macro as a flag). Things are complicated
+# by the possibility of multiple arguments in the call to _phead.
+# This is what _makelist is for: to turn a space separted multiple
+# argument list into a comma separated one (commas can't be used in
+# the original list because they have special meaning to m4).
+# Unfortunately, this means that (currently) if the longest string is
+# a multiple argument, the indentation will only be right if it occurs
+# in the first _phead. This is because only the API file is scanned
+# for arguments, and not the man page file, so this script can't know
+# which instance of phead has the longest (multiple) argument.
+
+ long = "\\fI" long "\\fP"
+ printf "_define(_phead,@<dnl\n"
+ printf "_ifdef(@<_first>@,@<.TP>@,@<.TP \\w'"
+ printf "_ifelse(_eval(_len(%s)>_len(_makelist($1))),1,",long
+ printf "%s,translit(_makelist($1),@<+>@,@<\\>@))\\ \\ 'u dnl\n", long
+ printf "_define(_first,first)>@)\n"
+ printf "translit(_makelist($1),@<+>@,@<,>@)>@)dnl\n"
+ printf "_define(_cmnd,@<_ifelse($1,@<>@,\\f3" prefix "@<>@_cname\\fP,dnl\n"
+ printf "\\f3" prefix "$1\\fP)>@)dnl\n"
+ printf "_define(_glcmnd,@<_ifelse($1,@<>@,\\f3gl@<>@_cname\\fP,dnl\n"
+ printf "\\f3gl$1\\fP)>@)dnl\n"
+ printf "_define(_glucmnd,@<_ifelse($1,@<>@,\\f3glu@<>@_cname\\fP,dnl\n"
+ printf "\\f3glu$1\\fP)>@)dnl\n"
+ printf "_define(_xcmnd,@<_ifelse($1,@<>@,\\f3X@<>@_cname\\fP,dnl\n"
+ printf "\\f3X$1\\fP)>@)dnl\n"
+# printf "syscmd(@<${maCdIr}/mkname.awk>@ ${maCdIr}/pglspec >_tmpnam)dnl\n"
+# printf "_include(_tmpnam)syscmd(rm -f _tmpnam)>@))dnl\n"
+}
+
+
+
+#
+# function to make the troff to typeset the function header
+#
+function makeHead(fname,type,i)
+{
+ fname = prefix fname
+ headString = sprintf("%s \\f3%s\\fP(",fortranize(type,0),fname)
+ if (numargs > 0)
+ {
+ headString = headString "\n"
+ if (numargs > 1)
+ {
+ headString = headString sprintf("%s,\n",fortranize(targs[1,i],1))
+ headString = headString ".nf\n"
+ headString = headString sprintf(".ta \\w'\\f3%s \\fP%s( 'u\n",fortranize(type,0),fname)
+ for (j=2; j<=numargs-1; j++)
+ headString = headString sprintf("\t%s,\n",fortranize(targs[j,i],1))
+ headString = headString sprintf("\t%s )\n",fortranize(targs[numargs,i],1))
+ headString = headString ".fi\n"
+ }
+ else
+ headString = headString sprintf("%s )\n.nf\n.fi\n",fortranize(targs[numargs,i],1))
+ }
+ else
+ headString = headString " )\n.nf\n.fi\n"
+ return headString
+}
+
+
+# Convert a gl C type to the FORTRAN equivalent
+# If flag = 1, then convert a function argument;
+# else, convert a function return type.
+
+function fortranize(typedArg,flag)
+{
+ item = typedArg;
+ if (flag == 0) { # return type
+ sub(/void/,"SUBROUTINE",item)
+ }
+ # function argument or return type
+ if (item ~ /\*/) {
+ sub(/\*/,"",item);
+ sub(/const /,"",item)
+ if (item ~ /GLubyte/)
+ sub(/GLubyte/,"CHARACTER*256",item)
+ else
+ sub(/GL[^ ]*/,"CHARACTER*8",item)
+ }
+ else {
+ sub(/GLu*byte/,"INTEGER*1",item)
+ sub(/GLu*short/,"INTEGER*2",item)
+ sub(/GLu*int/,"INTEGER*4",item)
+ sub(/GLsizei/,"INTEGER*4",item)
+ sub(/GLfloat/,"REAL*4",item)
+ sub(/GLclampf/,"REAL*4",item)
+ sub(/GLdouble/,"REAL*8",item)
+ sub(/GLclampd/,"REAL*4",item)
+ sub(/GLboolean/,"LOGICAL*1",item)
+ sub(/GLenum/,"INTEGER*4",item)
+ sub(/GLbitfield/,"INTEGER*4",item)
+ }
+ return item
+}
+
+
+# Generates 'args' of untyped argument names
+# Also generates 'targs' of typed argument names and 'nargs', the number
+# of arguments.
+
+function addargs(arglist,i)
+{
+#
+# First strip leading '(' and trailing ')'
+#
+ if (substr(arglist,1,1) == "(")
+ arglist = substr(arglist,2,length(arglist))
+ while (substr(arglist,1,1) == " ")
+ arglist = substr(arglist,2,length(arglist))
+
+ if (substr(arglist,length(arglist),1) == ")")
+ arglist = substr(arglist,1,length(arglist)-1)
+ while (substr(arglist,length(arglist),1) == " ")
+ arglist = substr(arglist,1,length(arglist)-1)
+
+ numargs = split(arglist,newargs, ",[ \t]")
+ if (newargs[1] == "void")
+ {
+ numargs = 0;
+ targs[1,i] = newargs[1];
+ args[1,i] = newargs[1];
+ }
+ if (nargs[i] < numargs)
+ nargs[i] = numargs;
+
+ for (j=1; j<=numargs; j++)
+ {
+# targs[j,i] italicizes the argument but not the type
+ targs[j,i] = newargs[j]
+ numWords = split(targs[j,i],words,"[ \t]")
+ args[j,i] = words[numWords]
+ targs[j,i] = words[1]
+ for (k=2; k<=numWords-1; k++)
+ targs[j,i] = targs[j,i] " " words[k]
+ targs[j,i] = targs[j,i] " \\fI" words[numWords] "\\fP"
+ sub(/\[.*\]/,"",args[j,i])
+ gsub("[*()]","",args[j,i])
+ }
+}
+
+#
+# Parse and save away the _names(name,regexp) declarations in the file
+# for later use in matching the entries in the API file.
+#
+
+function getnames(file)
+{
+ numNames = 0
+ fname = file ".gl"
+ while (getline < fname)
+ {
+ if (index($0,"_names(") != 0)
+ {
+ start = index($0,"_names(") + 7
+ stuff = substr($0,start,length($0)-start)
+ split(stuff,things,",")
+ names[numNames] = things[1]
+ regExps[numNames] = things[2]
+ numNames++
+ }
+ }
+ close(fname)
+ if (numNames == 0)
+ {
+ names[0] = file
+ regExps[0] = "[1-9]*u*[lbsifd]*v*"
+ numNames++
+ }
+}
diff --git a/nx-X11/extras/ogl-sample/main/doc/man/macros/setup b/nx-X11/extras/ogl-sample/main/doc/man/macros/setup
new file mode 100644
index 000000000..74a69369c
--- /dev/null
+++ b/nx-X11/extras/ogl-sample/main/doc/man/macros/setup
@@ -0,0 +1,36 @@
+define(`_define',defn(`define'))dnl
+define(`_ifdef',defn(`ifdef'))dnl
+define(`_ifelse',defn(`ifelse'))dnl
+define(`_eval',defn(`eval'))dnl
+define(`_len',defn(`len'))dnl
+define(`_incr',defn(`incr'))dnl
+changecom()dnl
+define(`_C_',defn(`dnl'))dnl
+undefine(`define')undefine(`ifdef')dnl
+undefine(`shift')undefine(`divert')undefine(`incr')dnl
+undefine(`decr')undefine(`eval')undefine(`len')undefine(`index')dnl
+undefine(`substr')undefine(`include')dnl
+changequote(@<,>@)dnl
+_define(_makelist,@<_dolist(translit($1,@< >@,@<,>@))>@)dnl
+_define(_dolist,@<dnl
+_ifelse($#,1,$1,$#,2,$1@<+ >@$2,$#,3,$1@<+ >@$2@<+ >@$3,$#,dnl
+4,$1@<+ >@$2@<+ >@$3@<+ >@$4)>@)dnl
+_define(_namenum,@<0>@)dnl
+_define(_tmpnam,maketemp)dnl
+_define(_const,@<\%\f3GL_$1\fP>@)dnl
+_define(_arbconst,@<\%\f3GL_$1_ARB\fP>@)dnl
+_define(_arbconstidx,@<\%\f3GL_$1\fP$i$\f3_ARB\fP>@)dnl
+_define(_xconst,@<\%\f3$1\fP>@)dnl
+_define(_extname,@<\%\f3$1\fP>@)dnl
+_define(_arbstring,@<\%\f3GL_ARB_$1\fP>@)dnl
+_define(_extstring,@<\%\f3GL_$1\fP>@)dnl
+_define(_glxextstring,@<\%\f3GLX_$1\fP>@)dnl
+_define(_glxconst,@<\%\f3GLX_$1\fP>@)dnl
+_define(_glxerror,@<\%\f3GLX$1\fP>@)dnl
+_define(_gluconst,@<\%\f3GLU_$1\fP>@)dnl
+_define(_econst,@<bold \%GL_$1>@)dnl
+_define(_hex,@<\%0x$1>@)dnl
+_define(_setup,@<_ifdef(@<_filters>@,@<'\"! _filters() | mmdoc
+>@)dnl
+'\"macro stdmacro
+>@)dnl
diff --git a/nx-X11/extras/ogl-sample/main/doc/man/macros/setup.ftn b/nx-X11/extras/ogl-sample/main/doc/man/macros/setup.ftn
new file mode 100644
index 000000000..b7ed065e9
--- /dev/null
+++ b/nx-X11/extras/ogl-sample/main/doc/man/macros/setup.ftn
@@ -0,0 +1,31 @@
+define(`_define',defn(`define'))dnl
+define(`_ifdef',defn(`ifdef'))dnl
+define(`_ifelse',defn(`ifelse'))dnl
+define(`_eval',defn(`eval'))dnl
+define(`_len',defn(`len'))dnl
+define(`_incr',defn(`incr'))dnl
+define(`_sinclude',defn(`sinclude'))dnl
+changecom()dnl
+define(`_C_',defn(`dnl'))dnl
+undefine(`define')undefine(`ifdef')dnl
+undefine(`shift')undefine(`divert')undefine(`incr')dnl
+undefine(`decr')undefine(`eval')undefine(`len')undefine(`index')dnl
+undefine(`substr')undefine(`include')undefine(`sinclude')dnl
+changequote(@<,>@)dnl
+_define(_makelist,@<_dolist(translit($1,@< >@,@<,>@))>@)dnl
+_define(_dolist,@<dnl
+_ifelse($#,1,$1,$#,2,$1@<+ >@$2,$#,3,$1@<+ >@$2@<+ >@$3,$#,dnl
+4,$1@<+ >@$2@<+ >@$3@<+ >@$4)>@)dnl
+_define(_namenum,@<0>@)dnl
+_define(_tmpnam,maketemp)dnl
+_define(_const,@<\f3GL_$1\fP>@)dnl
+_define(_xconst,@<\f3$1\fP>@)dnl
+_define(_glxconst,@<\f3GLX_$1\fP>@)dnl
+_define(_glxerror,@<\f3GLX$1\fP>@)dnl
+_define(_gluconst,@<\f3GLU_$1\fP>@)dnl
+_define(_econst,@<bold GL_$1>@)dnl
+_define(_hex,@<@<$>@$1>@)dnl
+_define(_setup,@<_ifdef(@<_filters>@,@<'\"! _filters() | mmdoc
+>@)dnl
+'\"macro stdmacro
+>@)dnl