home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 28 / amigaformatcd28.iso / -seriously_amiga- / archivers / mpackppc / src / macicapi.h < prev    next >
C/C++ Source or Header  |  1998-04-27  |  6KB  |  143 lines

  1. /* (C) Copyright 1995 by Carnegie Mellon University
  2.  * All Rights Reserved.
  3.  *
  4.  * Permission to use, copy, modify, distribute, and sell this software
  5.  * and its documentation for any purpose is hereby granted without
  6.  * fee, provided that the above copyright notice appear in all copies
  7.  * and that both that copyright notice and this permission notice
  8.  * appear in supporting documentation, and that the name of Carnegie
  9.  * Mellon University not be used in advertising or publicity
  10.  * pertaining to distribution of the software without specific,
  11.  * written prior permission.  Carnegie Mellon University makes no
  12.  * representations about the suitability of this software for any
  13.  * purpose.  It is provided "as is" without express or implied
  14.  * warranty.
  15.  *
  16.  * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
  17.  * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
  18.  * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
  19.  * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  20.  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
  21.  * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
  22.  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  23.  * SOFTWARE.
  24.  */
  25. /*
  26.     The canonical Internet Config interface is defined in Pascal.  These headers have
  27.     not been thoroughly tested.  If there is a conflict between these headers and the
  28.     Pascal interfaces, the Pascal should take precedence.
  29. */
  30.  
  31. /* ///////////////////////////////////////////////////////////////////////////////// */
  32.  
  33. #ifndef __ICAPI__
  34. #define __ICAPI__
  35.  
  36. #ifndef __TYPES__
  37. #include <Types.h>
  38. #endif
  39.  
  40. #ifndef __FILES__
  41. #include <Files.h>
  42. #endif
  43.  
  44. #ifndef __ICTYPES__
  45. #include <ICTypes.h>
  46. #endif
  47.  
  48. /* ///////////////////////////////////////////////////////////////////////////////// */
  49.  
  50. #ifdef __cplusplus
  51. extern "C" {
  52. #endif
  53.  
  54.     pascal ICError ICStart(ICInstance *inst, OSType creator);
  55.     /* call at application initialisation */
  56.  
  57.     pascal ICError ICStop(ICInstance inst);
  58.     /* call at application termination */
  59.  
  60.     pascal ICError ICFindConfigFile(ICInstance inst, short count, ICDirSpecArrayPtr folders);
  61.     /* count is the number of ICDirSpecs that are valid in folders */
  62.     /* searches the specified folders first, then backs out to preferences folder */
  63.     /* don't you worry about how it finds the file (; */
  64.     /* you can pass nil to folders if count is 0 */
  65.  
  66.     pascal ICError ICSpecifyConfigFile(ICInstance inst, FSSpec *config);
  67.     /* for use *only* by Internet Configuration application */
  68.  
  69.     pascal ICError ICGetSeed(ICInstance inst, long *seed);
  70.     /* returns current seed for prefs file */
  71.     /* this seed changes every time a preference is modified */
  72.     /* poll this to detect preference changes by other applications */
  73.  
  74.     pascal ICError ICGetPerm(ICInstance inst, ICPerm *perm);
  75.     /* returns the permissions currently associated with this file */
  76.     /* mainly used by overriding components, applications normally */
  77.     /* know what permissions they have */
  78.  
  79.     pascal ICError ICBegin(ICInstance inst, ICPerm perm);
  80.     /* start reading/writing the preferences */
  81.     /* must be balanaced by a ICEnd */
  82.     /* do not call WaitNextEvent between this pair */
  83.     /* specify either icReadOnlyPerm or icReadWritePerm */
  84.     /* note that this may open resource files and leave them open until ICEnd */
  85.  
  86.     pascal ICError ICGetPref(ICInstance inst, ConstStr255Param key, ICAttr *attr, Ptr buf, long *size);
  87.     /* this routine may be called without a ICBegin/ICEnd pair, in which case */
  88.     /* it implicitly calls ICBegin(inst, icReadOnlyPerm */
  89.     /* given a key string, returns the attributes and the (optionally) the data for a preference */
  90.     /* key must not be the empty string */
  91.     /* if buf is nil then no data fetched and incoming size is ignored*/
  92.     /* size must be non-negative, is size of allocated space for data at buf */
  93.     /* attr and size and always set on return */
  94.     /* size is actual size of data (if key present); */
  95.     /* attr is pref attributes */
  96.      /* if icTruncatedErr then everything is valid, except you lost some data, size is size of real data*/
  97.     /* on other errors, attr is ICattr_no_change and size is 0 */
  98.  
  99.     pascal ICError ICSetPref(ICInstance inst, ConstStr255Param key, ICAttr attr, Ptr buf, long size);
  100.     /* this routine may be called without a ICBegin/ICEnd pair, in which case */
  101.     /* it implicitly calls ICBegin(inst, icReadWritePerm */
  102.     /* given a key string, sets the attributes and the data for a preference (either is optional); */
  103.     /* key must not be the empty string */
  104.     /* if buf is nil then no data stored and size is ignored, used for setting attr */
  105.     /* size must be non-negative, is size of the data at buf to store */
  106.     /* icPermErr if ICBegin was given icReadOnlyPerm */
  107.     /* icPermErr if current attr is locked, new attr is locked and buf <> nil */
  108.  
  109.     pascal ICError ICCountPref(ICInstance inst, long *count);
  110.     /* count total number of preferences */
  111.     /* if error then count is 0 */
  112.  
  113.     pascal ICError ICGetIndPref(ICInstance inst, long n, Str255 key);
  114.     /* return the key of the Nth preference */
  115.     /* n must be positive */
  116.     /* icPrefNotFoundErr if n is beyond the last preference */
  117.  
  118.     pascal ICError ICDeletePref(ICInstance inst, ConstStr255Param key);
  119.     /* delete the preference specified by key */
  120.     /* key must not be the empty string */
  121.     /* preference specified by key must be present */
  122.     /* icPrefNotFoundErr if it isn't */
  123.  
  124.     pascal ICError ICEnd(ICInstance inst);
  125.     /* stop reading/writing the preferences */
  126.  
  127.     pascal ICError ICDefaultFileName(ICInstance inst, Str63 name);
  128.     /* return the default file name */
  129.     /* the component calls this routine to set up the default internet configuration file name*/
  130.     /* this allows this operation to be intercepted by a component that has captured us */
  131.     /* it currently gets it from the component resource file */
  132.     /* the glue version is hardwired */
  133.  
  134.     pascal ICError ICGetComponentInstance(ICInstance inst, Ptr *component_inst);
  135.     /* returns noErr and the component instance that we're talking to, if we're using the component */
  136.     /* returns an error and nil if we're doing it with glue */
  137.  
  138. #ifdef __cplusplus
  139. }
  140. #endif __cplusplus
  141.  
  142. #endif
  143.